diff --git a/.gitignore b/.gitignore
index 8a22032a69cd44fa5d0d099386be83914563dc16..542c58b6cec9e77f38ba4d0fcef43b14b0db0fcd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,7 @@ _site
 .jekyll-cache
 .bundle
 public
-
+Gemfile.lock
 *~
 \#*\#
 /.emacs.desktop
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 549766ef9e6736fd1e6b08f35b27df57db16d952..c7cc76dfbd8b085d1cfb7468e1bd97f160bc9b71 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,12 +30,11 @@ build_production:
         - cp _layouts/presentation_production.html _layouts/presentation.html
         - bundle exec jekyll build -d public
     variables:
-        quarter: eg21sp
-        course: egcse340
+        quarter: yyqq
+        course: csep590b
         source_path: public
     only:
-        refs:
-           - egCSE340-SP21
+        - CSEP590a-YYQQ
     artifacts:
         paths:
             - public/
@@ -49,12 +48,11 @@ pre_deploy_production:
     script:
         - /www/utils/deploycourseweb.sh
     variables:
-        quarter: eg21sp
-        course: egcse340
+        quarter: yyqq
+        course: csep590b
         source_path: public
     only:
-        refs:
-           - egCSE340-SP21
+        - CSEP590a-YYQQ
 
 generate_pdf:
     stage: generatepdf
@@ -67,12 +65,11 @@ generate_pdf:
         - bundle install --path vendor
         - script/deployslidepdf
     variables:
-        quarter: eg21sp
-        course: egcse340
+        quarter: yyqq
+        course: csep590b
         source_path: public
     only:
-        refs:
-           - egCSE340-SP21
+        - CSEP590a-YYQQ
     artifacts:
         paths:
             - public/
@@ -86,9 +83,8 @@ after_deploy_production:
     script:
         - /www/utils/deploycourseweb.sh
     variables:
-        quarter: 21wi
-        course: cse340
+        quarter: 23wi
+        course: csep590b
         source_path: public
     only:
-        refs:
-            - egCSE340-WI21
+        - CSEP590a-YYQQ
diff --git a/Gemfile b/Gemfile
index 1e2d8910c870b02d62d7134ad14af0276cfbcd88..ce7212766c6d8cb4c96e34ddfa152ee52ca85002 100644
--- a/Gemfile
+++ b/Gemfile
@@ -11,6 +11,7 @@ source "https://rubygems.org"
 
 
 gem "jekyll", "< 4.0"
+gem 'sassc', '~> 2.4.0'
 
 # If you have any plugins, put them here!
 group :jekyll_plugins do
@@ -22,12 +23,12 @@ group :jekyll_plugins do
   gem "jekyll-contentblocks"
   gem "jekyll-assets"
   gem 'jekyll-font-awesome-sass'
+  gem "font-awesome-sass"
   gem "sprockets", "~> 3.7"
   gem "kramdown-parser-gfm"
   gem 'remark'
   gem 'jekyll-mermaid'
   gem 'uglifier'
-  gem 'therubyracer'
 end
 
 # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
diff --git a/README.md b/README.md
index aa0e727dac296d00d05f2447908ed5e8652b9684..c6bc146be556ca5d3e1565e189dbef8ca561f5b1 100644
--- a/README.md
+++ b/README.md
@@ -31,6 +31,19 @@ To use this website, the following steps are necessary:
 
 # Basic use:
 
-rvm use ruby 2.6
+rvm use ruby 2.7 # on M1 install with rvm install 2.7
+
+bundle install # if needed
+
 bundle exec jekyll build
+
 bundle exec jekyll serve  &
+
+# Updates
+
+There are generic names and XXX and such in 
+- _config.yml
+- _config_production.yml
+- _data/navigation.yml
+
+You'll need to update them once you merge this in
diff --git a/_config.yml b/_config.yml
index f0582e946561e5a392ee52cb8045b64866f78780..14fc1667867beaee231ede1ed99b609a7cc017db 100644
--- a/_config.yml
+++ b/_config.yml
@@ -41,9 +41,6 @@ reveal_theme: black.css
 markdown: kramdown
 theme: jekyll-theme-cayman
 
-gems:
-  - jekyll-font-awesome-sass
-
 plugins:
   - jekyll-feed
   - jekyll-seo-tag
@@ -73,8 +70,7 @@ sass:
 kramdown:
   toc_levels: '1'
 
-mermaid:
-  src: 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'
+mermaid: 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'
 
 remarkConfig:
   # possible highlight options:
diff --git a/_config_production.yml b/_config_production.yml
index be06d6c26f2bdc4d4a68cf48ff3f111adeeb7a25..68b4d53abef9f4da82b6fd6e8d5cb0528405bb60 100644
--- a/_config_production.yml
+++ b/_config_production.yml
@@ -4,26 +4,26 @@
 # You can create any custom variable you would like, and they will be accessible
 # in the templates via {{ site.myvariable }}.
 
-title: Interaction Programming (CSE 340)
-description: Interactive Tech is changing society. Help invent the future!
+title: The Future of Access Technology
+description: Learn about app accessibility; how accessibility can be incorporated into cutting edge computer science topics like machine learning; VR/AR and fabrication; and the interaction of accessibilty technology and society
 
-baseurl: "/courses/cse340/21wi"
+baseurl: "/courses/cseXXX/yyqq"
 url: https://courses.cs.washington.edu # the base hostname & protocol for your site, e.g. http://example.com
-twitter_username: username
-git_username:  username
-git_url: https://gitlab.cs.washington.edu/jmankoff/class-website-core
-git_branch: CSExxx-xxQQ
-discussion: https://us.edstem.org/courses/xxx/discussion/
-canvas: https://canvas.uw.edu/courses/xxxxx
-gitlab: https://gitlab.cs.washington.edu/students-group-for-assignments
-gitgrade: https://gitgrade.cs.washington.edu/student/summary/xxxx
-gradescope: https://www.gradescope.com/courses/250076
-hcibook: "No HCI Textbook, just readings"
-androidbook: "No Android Textbook, just readings"
+twitter_username: jcmankoff
+git_username:  jmankoff
+git_url: https://gitlab.cs.washington.edu/teaching-materials/website
+git_branch: main
+discussion: TBD
+staff_email: mailto:pmp-accessibility-staff@u.washington.edu
+canvas: https://canvas.uw.edu/course/TBD
+canvas_course: xxxxxxx
+gitlab: NA
+gitgrade: https://gitlab.cs.washington.edu/students-group-for-assignments
 paginate:            5
-quarter: "Winter 2021"
+quarter: "Quarter 20XX"
+classnum: "CSE XXX"
 copydate: "3/30/20"
-status: final
+status: published
 warning: old
 
 author:
@@ -69,8 +69,7 @@ sass:
 kramdown:
   toc_levels: '1'
 
-mermaid:
-  src: 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'
+mermaid: 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'
 
 remarkConfig:
   # possible highlight options:
diff --git a/_data/navigation.yml b/_data/navigation.yml
index e04f51584b5648cfe0061fe5c321e7aaa3c9eb03..9ed80271c17642a48e91d93dda7f119aff88f753 100644
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -1,4 +1,4 @@
-nav_list_title: CSE 340
+nav_list_title: CSE XXX
 nav_list:
 - title: Syllabus
   url: /
@@ -12,5 +12,9 @@ nav_list:
   url: canvas
 - title: Ed
   url: discussion
-- title: Zoom
-  url: /docs/zoom
+- title: COVID-19
+  url: /docs/covid/index.html
+- title: Accessibility
+  url: /docs/accessibility.html
+- title: Academic Conduct
+  url: /academic-conduct.html
\ No newline at end of file
diff --git a/_includes/header.html b/_includes/header.html
index 9fec4a01d434f30f223d164b7dccad4a2cb7bd0e..89f48b47e56af74f4ae51f507291a03b1bd42cb9 100644
--- a/_includes/header.html
+++ b/_includes/header.html
@@ -1,9 +1,8 @@
 <header class="page-header" role="banner">
   {% include navigation.html %}
-  <br>  <br>  <br>  <br>  <br>
-  <h1 class="project-name">{{ site.title | default: site.github.repository_name }}</h1>
-  <h2 class="project-tagline">{{ site.description | default: site.github.project_tagline }}</h2>
-
+  <br>  <br>  <br>  <br>
+  <h1 class="project-name">{{ page.title | default: site.title }}</h1>
+  <h2 class="project-tagline">{{ page.description | default: site.description }}</h2>
 
 <script type="text/javascript">
   var menubar = new Menubar(document.getElementById('menubar1'));
diff --git a/_layouts/assignment.html b/_layouts/assignment.html
index ef921a8b0907b942d86eb5771d3bed16e76d332d..28efdfaace4ea9663f28a1ac5d2ac5586cfddaf8 100644
--- a/_layouts/assignment.html
+++ b/_layouts/assignment.html
@@ -43,22 +43,11 @@
 
 <br>
 <div class="learning-goals">
-        <div id="android-goals">
-          <h3>Android Goals:</h3>
-          <ul>
-            {% for goal in page.android_goals %}
-              <li>{{goal}}</li>
-            {% endfor %}
-          </ul>
-        </div>
-        <div id="hci-goals">
-          <h3>HCI Goals:</h3>
           <ul>
             {% for goal in page.hci_goals %}
               <li>{{goal}}</li>
             {% endfor %}
           </ul>
-        </div>
       </div>
 
       {{ content }}
@@ -66,7 +55,7 @@
       {% include footer.html %}
     </main>
 
-    <script type="text/javascript" src="{{'assets/js/mermaid.8.8.2.js' | relative_url}}"></script>
+    <script type="text/javascript" src="{{site.mermaid}}"></script>
   <link rel="stylesheet" href="{{ '/assets/css/mermaid.css' | relative_url }}">
   <link rel="stylesheet" href="{{ '/assets/css/assignment.css' | relative_url }}">
   <script>
diff --git a/_layouts/default.html b/_layouts/default.html
index f33e4f67ee5e3119d2d893627857cac8d9005860..31a9cbf66f2b020c2f3408dc3c58604d32d80e4a 100755
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -24,7 +24,7 @@
 
   <script src="{{ '/assets/js/bootstrap.min.js' | relative_url}}"></script>
 
-    <script type="text/javascript" src="{{'assets/js/mermaid.8.8.2.js' | relative_url}}"></script>
+    <script type="text/javascript" src="{{site.mermaid}}"></script>
   <link rel="stylesheet" href="{{ '/assets/css/mermaid.css' | relative_url }}">
   <script>
         var config = {
diff --git a/_layouts/presentation.html b/_layouts/presentation.html
index 14c78e8f93c10e37f350cf28b5d2928b9f92871b..5023f295408e5d39890848035e85ba2fb0be38e3 100644
--- a/_layouts/presentation.html
+++ b/_layouts/presentation.html
@@ -7,7 +7,7 @@
     <link
         rel="stylesheet"
     href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"  />	
-    
+
     <style type="text/css">
       @import url({{'/assets/css/ubuntu.css' | relative_url}});
       @import url({{'/assets/css/ubuntu-mono.css' | relative_url}});
@@ -45,7 +45,7 @@
     <script type="text/javascript" src="{{'assets/js/mathjax-sre.js' | relative_url}}"></script>
     <script type="text/javascript" src="{{'assets/js/html2canvas.min.js' | relative_url}}"></script>
     <script type="text/javascript" src="{{'assets/js/presentation-export.js' | relative_url}}"></script>
-    <script type="text/javascript" src="{{'assets/js/mermaid.8.8.2.js' | relative_url}}"></script>
+    <script type="text/javascript" src="{{site.mermaid}}"></script>
 
     <script type="text/javascript">
       var slideshow = remark.create({
@@ -53,7 +53,8 @@
           ratio: "16:9",
           highlightStyle: 'androidstudio',
           highlightLines: 'true',
-          slideNumberFormat: 'Slide %current% of %total%'
+          slideNumberFormat: '(%current% of %total%)',
+	  countIncrementalSlides: false
       });
 
       var config = {
@@ -75,17 +76,9 @@
       mermaid.initialize(config);
     </script>
 
-    <!-- CSE 340 icon -->
     <div class="my-header">
         <img src="{{site.baseurl}}/assets/img/favicon.ico" style="height: 30px;"/> 
     </div>
 
  </body>
 
-<!--
-class center middle
-class center middle inverse
-```html
-```ruby
-als erste Zeilen in Slide
--->
diff --git a/_layouts/presentation_production.html b/_layouts/presentation_production.html
index 14c78e8f93c10e37f350cf28b5d2928b9f92871b..a285b4bb215ebfc284c98945bc2f90c1ff6c9893 100644
--- a/_layouts/presentation_production.html
+++ b/_layouts/presentation_production.html
@@ -7,7 +7,7 @@
     <link
         rel="stylesheet"
     href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"  />	
-    
+
     <style type="text/css">
       @import url({{'/assets/css/ubuntu.css' | relative_url}});
       @import url({{'/assets/css/ubuntu-mono.css' | relative_url}});
@@ -45,7 +45,7 @@
     <script type="text/javascript" src="{{'assets/js/mathjax-sre.js' | relative_url}}"></script>
     <script type="text/javascript" src="{{'assets/js/html2canvas.min.js' | relative_url}}"></script>
     <script type="text/javascript" src="{{'assets/js/presentation-export.js' | relative_url}}"></script>
-    <script type="text/javascript" src="{{'assets/js/mermaid.8.8.2.js' | relative_url}}"></script>
+    <script type="text/javascript" src="{{site.mermaid}}"></script>
 
     <script type="text/javascript">
       var slideshow = remark.create({
diff --git a/_plugins/details.rb b/_plugins/details.rb
new file mode 100644
index 0000000000000000000000000000000000000000..04ca904e39c2ec5e8f9f28aed5f16131f7a938b2
--- /dev/null
+++ b/_plugins/details.rb
@@ -0,0 +1,26 @@
+# _plugins/details_tag.rb -- copied 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)
+        # below Jekyll 3.x use this:
+        # converter = site.getConverterImpl(::Jekyll::Converters::Markdown)
+        caption = converter.convert(@caption).gsub(/<\/?p[^>]*>/, '').chomp
+        body = converter.convert(super(context))
+        "<details><summary>#{caption}</summary>#{body}</details>"
+      end
+
+    end
+  end
+end
+
+Liquid::Template.register_tag('details', Jekyll::Tags::DetailsTag)
diff --git a/academic-conduct.md b/academic-conduct.md
index 8aca35ca0f72c35717b17d51b650b025cdf16afe..28360019678c9cafd339fd3fba02fa53b7012bfc 100644
--- a/academic-conduct.md
+++ b/academic-conduct.md
@@ -1,24 +1,25 @@
 ---
 layout: default
+title: Academic Conduct
+description: Expectations regarding plagiarism, LLM use and so on
 (no)warning: old
 ---
 
-
----
-
 Integrity is a crucial part of your character and is essential for
 a successful career. We expect you to demonstrate integrity in
-CSE 154 and elsewhere.
-
-The Paul G Allen School has an entire page on
-[Academic Misconduct](https://www.cs.washington.edu/academics/misconduct)
-within the context of Computer Science, and the University of
-Washington has an entire page on how
-[Academic Misconduct](https://www.washington.edu/cssc/for-students/academic-misconduct/)
-[Community Standards and Student Conduct Page](https://www.washington.edu/cssc/).
-Please acquaint yourself with both of those pages, and in
-particular how academic misconduct will be reported to the
-University.
+this class and elsewhere.
+
+The Paul G Allen School has an [Academic
+Misconduct](https://www.cs.washington.edu/academics/misconduct)
+policy, and the University of Washington an [Academic
+Misconduct](https://www.washington.edu/cssc/for-students/academic-misconduct/)
+and [Community Standards and Student Conduct
+Page](https://www.washington.edu/cssc/) policy. Please acquaint
+yourself with those pages, and in particular how academic misconduct
+will be reported to the University. Knowingly violating any of these principles of academic conduct,
+privacy or copyright may result in University disciplinary action
+under the Student Code of Conduct.
+
 
 Your academic conduct in this course is evaluated in at least the
 four areas described in detail below.
@@ -26,160 +27,110 @@ four areas described in detail below.
 * TOC
 {:toc}
 
-# Honesty in Communications
+# Honesty and Respect in Communications
 
 Individuals are expected to be honest and forthcoming
-in communications with TAs and the instructor.
+in communications with TAs and the instructor. 
+
+In addition, individuals are expected to show respect for the
+intellectual contributions of others through citation. The essence of
+academic life revolves around respect not only for the ideas of
+others, but also their rights to those ideas. It is therefore
+essential that we take the utmost care that the ideas (and the
+expressions of those ideas) of others always be handled appropriately,
+and, where necessary, cited. This is an issue of [Citational
+Justice](nature.com/articles/d41586-022-00793-1), and a core value of
+this course. It is also in line with the disability justice values of the course. 
+
+When ideas or materials of others are
+used (particularly in your creative projects), they must be cited. The
+citation format is not that important - as long as the source material
+can be located and the citation verified, it's OK. In any situation,
+if you have a question, please feel free to ask. Here are some examples of how you might use (and cite) different types of content:
+
+- Media you have created or generated yourself (i.e. pictures you have created or taken yourself, text you have written yourself) do generally not require citation. However if you have published them (on a blog, in an article etc), they may belong to the publisher and require citation.
+-  Images that are in the public domain (something from Wikipedia), or with a creative commons license that allows for reuse without explicit permission of the owner, require citation based on their license. Instructions on how to search for images that are fair use are [here](https://support.google.com/websearch/answer/29508?hl=en). [Creative Commons Kiwi](https://creativecommons.org/about/videos/creative-commons-kiwi/) is a really informative video on Creative Commons licensing; and here are [best practices](https://wiki.creativecommons.org/wiki/Best_practices_for_attribution) for citing Creative Commons works.
+- If you are writing some text (a paper, analysis, etc), you can use quotes as long as you give attribution to the sources of the quote. You can not write an entire document out of the quotes of others, or include copied text with no citations. The citation format is not that important - as long as the source material can be located and the citation verified (a url in a comment is generally fine), it's OK. 
+- If you are writing code, clearly indicate (e.g. with comments) which portions of your code are completely original and which are used or modified from external sources, if any code is used that builds off of/is inspired by external sources (e.g. adaption of an example exercise, online tutorial you find). Note that solely changing identifier names or rearranging other source material is not considered your original work - see the examples of appropriate use below for details.
 
-# Application Content
-
-## School Appropriateness of Content
+Some examples of appropriate use:
+- A student finds a blog post explaining why and how to address WCAG guidelines. They rewrite much of it in their own words, but for a few sections that are particularly clear, they copy the information, put it in quotations, and name the source and provide a link to it right next to the quote.
+- A student closely follows a tutorial to understand a new concept in  Android Development (e.g.  animations). The student cites the tutorial they used in the file header then substantially modifies the tutorial code to include what is specified for the creative portion of the assignment, documenting which portions of the code are their own so TAs know which portions to grade (and to determine whether the material cited as being learned from the tutorial is sufficiently adapted to be considered the student’s own work).
+- A student is having difficulty generating audio from text for an accessibility feature of an app they are building. They look for a solution and find an app very similar to the one they intend to build. They fork it, and modify it for their final project, and documents this with a comment that includes where it was found. When grading the app, the instructional staff may weight features that were provided by the original source  less than features that the student added themselves.
 
-Recall that one of our course policies is to engender an
-inclusive environment. As such it is important that you are thoughtful about
-what you choose to post on your page. Please make sure that the
-images and text you are using are “school appropriate” and follow
-the guidelines of expected behavior. If you have any questions,
-please do not hesitate to ask a TA or your instructor. Inappropriate work
-submitted may be ineligible for credit on that assignment.
+Students with questions about any specific situation should ask the instructor for clarification.
 
+# Collaboration Policies
 
-## Copyright and Citations
+In this class, are encouraged to  discuss class material, including
+assignments, lecture material and readings with your classmates. Even
+better if this takes place on Ed where other students can benefit and
+we can guide you as to what is supportive and what crosses the line to
+too much sharing.
+
+Some assignments are individual. Even when as assignment is
+individual, you **may discuss homework assignments with other
+students** (i.e. provide advice, brainstorm) as long your writing
+and/or implementation is entirely your own, and you document what you
+do. You may also look at other sources online to learn how to achieve
+new things, but we expect you to document this, and it may impact the
+credit you get for your work. You should never copy (plagiarize) from
+another person in this school (past or present) or from material that
+you find online directly and submit it as your own work.
+
+To facilitate this, and to be very clear 
+- You **may not use code or writing directly from any external
+  sources** (including copying lecture/lab material directly into an
+  assignment) without appropriately crediting the source as described above in <q>Honesty and Respect in Communications</q>
+- You must credit a classmate when their advice had a significant intellectual impact on what you did
+
+# Privacy and Fair Use
 
-All of the expressions of ideas in this class that are fixed in
-any tangible medium such as digital and physical documents are
+To support an academic environment of rigorous discussion and open
+expression of personal thoughts and feelings, we, as members of the
+academic community, must be committed to the inviolate right of
+privacy of our student and instructor colleagues. As a result, we must
+forego sharing personally identifiable information about any member of
+our community including information about the ideas they express,
+their families, lifestyles and their political and social
+affiliations. If you have any questions regarding whether a disclosure
+you wish to make regarding anyone in this course or in the university
+community violates that person's privacy interests, please feel free
+to ask the instructor for guidance.
+
+In addition, out of respect for each other, and in accordance with
+federal guidelines such as FERPA, we will not share each other's
+discussion posts or assignments without permission. As instructors, we will 
+ask you before sharing an assignment with a community sponser, for example.
+Similarly, you should not share your fellow classmates' work without permission, and credit.
+We also ask that you not share the ideas ideas presented in this class without credit.
+While the class website is public, we ask that you do not take things out of context.
+
+In addition, any tangible medium such as digital and physical documents are
 protected by copyright law as embodied in title 17 of the United
 States Code. These expressions include the work product of both:
 (1) your student colleagues (e.g., any assignments published here
 in the course environment or statements committed to text in a
 discussion forum); and, (2) your instructor (e.g., the syllabus,
-assignments, reading lists, and lectures). Within the constraints
-of &quot;fair use,&quot; you may copy these copyrighted
-expressions for your personal intellectual use in support of your
-education here in the UW. Such fair use by you does not include
-further distribution by any means of copying, performance or
-presentation beyond the circle of your close acquaintances,
-student colleagues in this class and your family. If you have any
-questions regarding whether a use to which you wish to put one of
-these expressions violates the creator's copyright interests,
-please feel free to ask the instructor for guidance.
-
-The essence of academic life revolves around respect not only for
-the ideas of others, but also their rights to those ideas. It is
-therefore essential that we take the utmost care that the ideas
-(and the expressions of those ideas) of others always be handled
-appropriately, and, where necessary, cited. When ideas or
-materials of others are used (particularly in your creative
-projects), they must be cited. The citation format is not that important -
-as long as the source material can be located and the citation
-verified, it's OK. In any situation, if you have a question,
-please feel free to ask.
-
-You must have the right to publish any of the images, videos,
-text, or other media on your creative sites. This means you may
-use:
-
-- Media you have created or generated yourself (i.e. pictures you have created or taken yourself, text you have written yourself.)
--  Images that are in the public domain (something from Wikipedia), or something with a creative commons license that allows for reuse without explicit permission of the owner.
-  - [Creative Commons Kiwi](https://creativecommons.org/about/videos/creative-commons-kiwi/) is a really informative video on Creative Commons licensing.
-  - Instructions on how to search for images that are fair use are [here](https://support.google.com/websearch/answer/29508?hl=en).
-  - You must cite any works that you use that you did not generate yourself (although technically you only need to cite things that are [CC Attribution](https://creativecommons.org/licenses/by/2.0/). A handy site for knowing how to add your citations is
-  [here](https://wiki.creativecommons.org/wiki/Best_practices_for_attribution).
+assignments, reading lists, and lectures). 
 
+Within the constraints of <q>fair use,</q> you may copy these
+copyrighted expressions for your personal intellectual use in support
+of your education here in the UW. Such fair use by you does not
+include further distribution by any means of copying, performance or
+presentation beyond the circle of your close acquaintances, student
+colleagues in this class and your family. If you have any questions
+regarding whether a use to which you wish to put one of these
+expressions violates the creator's copyright interests, please feel
+free to ask the instructor for guidance.
 
-# Collaboration Policies
-
->      As a teacher, it’s not my goal in life to read a class’ worth of
->      programs on a topic that all basically look the same. My goal is
->      to assess whether you understand the material that we’ve taught in
->      class enough, and you demonstrate that to me through the work you
->      do. I can not assess that if you are turning in someone else’s
->      work.
->      - Dr. Tom Butler, Lakeside H.S.
-
-Computer science education is odd in that we expect you to turn in
-work that you do completely independently when in the
-&quot;real world&quot; that’s not how it works at all. In the real
-world, co-workers collaborate, bounce ideas off each other, they
-look up parts of solutions on the internet. But in the &quot;real
-world&quot; the people doing the work have years of experience,
-they have proved themselves to their teachers, co-workers and
-bosses to where they are at that moment and most importantly, they
-know <strong>how to evaluate which of the solutions they are
-receiving is an appropriate one to solve the task at hand.</strong>
-
-As your instructor, I need to be able to evaluate
-<strong>your</strong> work. Thus, unless otherwise specified all
-work in this and other CS classes must be your own. We realize you
-may look at other sources online to learn how to achieve new things, but we expect
-you to synthesize this information and not copy it directly. You
-should never copy (plagiarize) homework or code from another person
-in this school (past or present) or that you find online directly
-and submit it as your own work.
-
-All programming assignments must be completed individually. However,
-you **may discuss homework assignments with other students**
-(i.e. provide advice on difficult concepts, *etc*) and are encouraged
-to discuss class material, such as section exercises, lecture
-material, readings, etc. Even better if this takes place on Ed where other students can benefit and we can guide you as to what is supportive and what crosses the line to too much sharing.  You may also discuss Creative Projects with
-other students, as long as the code you write is entirely your own,
-and discussion with students on Creative Projects should never involve
-details of how to code a solution. Specifically, you must abide by the
-following:
-
-- You **may not use code directly from any external sources** (including copying lecture/lab material directly into a programming assignments).
-- You may not post your homework solutions on a publicly accessible (non-password-protected) web server or Git repository, during the course or after it has been completed. Please see the course website for acceptable ways to show your work to others.
-- You may not look at or use prior solutions from any source.
-- You must document substantive discussions (i.e. when a classmate's advice helped you with a difficult concept) 
-- You may not provide a classmate with actual code or with step-by-step instructions
-
-In short: you should think of most assignments in this class as assessments and as such, complete them independently - unless otherwise told.
-
-Under our policy, a student who gives inappropriate help is
-equally guilty with one who receives it. Instead of providing such
-help to a classmate, point them to other class resources such as
-lecture examples, OH, or a TA. You must take reasonable steps
-to ensure that your work is not copied by others, such as making
-sure to log out or lock shared computers, not leaving printouts of
-your code in public places, and not emailing code to other
-students or posting it on the web or public forums.
-
-We enforce our policies by running detection software during the
-quarter over all programs, including ones from past quarters.
-Please contact us if you are unsure whether a particular behavior
-falls within our policy.
-
-## If you make use of a source, or advice from a classmate
-
-Some portions of our projects will have a creative aspect to them. On occasion students may wish to use portions of sample code that has been obtained on our course website or others. In order to avoid academic misconduct for a Creative portion of your CSE 340 projects you must:
-
-- Ensure that substantive original work is submitted that can be evaluated by the course staff.
-- Cite the ideas or materials of others that are used. The citation format is not that important - as long as the source material can be located and the citation verified (a url in a comment is generally fine), it's OK.
-- Clearly indicate (e.g. with comments) which portions of your code are completely original and which are used or modified from external sources, if any code is used that builds off of/is inspired by external sources (e.g. adaption of an example CSE 340 exercise, online tutorial you find). We will only grade your original work. Note that solely changing identifier names or rearranging other source material is not considered your original work - see the examples of appropriate use below for details.
-
-A good analogy to this is if you were writing a history paper: You can use quotes in your paper as long as you give attribution to the sources of the quote, but you can not write a history paper out of the quotes of others (particularly with no citations).
-
-Some examples of appropriate use:
-
-- A student closely follows a tutorial to understand a new concept in Android Development (e.g.  animations). The student cites the tutorial they used in the file header then substantially modifies the tutorial code to include what is specified for the creative portion of the assignment, documenting which portions of the code are their own so TAs know which portions to grade (and to determine whether the material cited as being learned from the tutorial is sufficiently adapted to be considered the student’s own work).
-- A student is having difficulty styling their website. They look for a solution and find one on a site such as Stack Overflow. The student uses the code they find in their solution, documents that small piece of code was not their own with a comment that includes where it was found. The TAs will not use that portion of the code in grading.
-
-Students with questions about any specific situation should ask the instructor for clarification.
+# Appropriateness
 
-# Privacy
+Recall that one of our course policies is to engender an
+inclusive environment. As such it is important that you are thoughtful about
+what you say or write. Please make sure that 
+images and text you are using are <q>school appropriate</q> and follow
+the guidelines of expected behavior. If you have any questions,
+please do not hesitate to ask the TA or your instructor. Inappropriate work
+submitted may be ineligible for credit on that assignment.
 
-To support an academic environment of rigorous discussion and open
-expression of personal thoughts and feelings, we, as members of
-the academic community, must be committed to the inviolate right
-of privacy of our student and instructor colleagues. As a result,
-we must forego sharing personally identifiable information about
-any member of our community including information about the ideas
-they express, their families, lifestyles and their political and
-social affiliations. If you have any questions regarding whether a
-disclosure you wish to make regarding anyone in this course or in
-the university community violates that person's privacy interests,
-please feel free to ask the instructor for guidance.
-
-Knowingly violating any of these principles of academic conduct,
-privacy or copyright may result in University disciplinary action
-under the Student Code of Conduct.
diff --git a/assets/css/fontawesome.all.min.css b/assets/css/fontawesome.all.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..84dbeb861799040de7a65a74dd7bc507323e2abb
--- /dev/null
+++ b/assets/css/fontawesome.all.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2022 Fonticons, Inc.
+ */
+.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
\ No newline at end of file
diff --git a/assets/css/my-remark.scss b/assets/css/my-remark.scss
index 0eae0860651a5029e1c479f1b72550dd8b6fd897..48600c2922d40d7c8cd08f12661d47a345272424 100644
--- a/assets/css/my-remark.scss
+++ b/assets/css/my-remark.scss
@@ -1,9 +1,8 @@
-
 ---
 # This is the custom style sheet for remark
 ---
 $fa-font-path: "../fonts/font-awesome/";
-@import 'fontawesome.min.css';
+@import 'fontawesome.all.min.css';
 @import "remark-base";
 $body-font: 22pt;
 $list-font: 20pt;
@@ -29,8 +28,32 @@ $dark: #333;
 $darkest: #222222;
 $highlight:  #5c8a8a;
 
+@page {
+  size: 1210px 681px;
+  margin: 0;
+}
+
+@media print {
+  .remark-slide-scaler {
+    width: 100% !important;
+    height: 100% !important;
+    transform: scale(1) !important;
+    top: 0 !important;
+    left: 0 !important;
+  }
+}
+
+a {
+    color: $red;
+    text-decoration: underline;
+}
+
+.remark-slide-content {
+    background-size: contain;
+}
+
 strong {
-    color: $highlight;
+    color: $mediumdark;
 }
 
 .comment{
@@ -121,16 +144,14 @@ table tbody td {
 table thead {
     background: $dark;
     color: $light;
-    border-bottom: 4px solid $dark;
     border-left: none;
     border-right: none;
 }
 
-table thead th {
+table thead tr {
   font-size: 0.7em;
   font-weight: bold;
   color: $light;
-  border-left: 2px solid $dark;
 }
 table thead th:first-child {
   border-left: none;
@@ -146,33 +167,55 @@ table tfoot td {
   font-size:0.7em;
 }
 
-blockquote {
-  background: #f9f9f9;
-  border-left: 10px solid #ccc;
-  margin: 1.5em 10px;
-  padding: 0.5em 10px;
-  quotes: "\201C""\201D""\2018""\2019";
+blockquote{
+    background:#f9f9f9;
+    border-left:1em solid #eee;
+    margin:1.5em 1em;
+    padding:.5em 1em;
+    quotes:"\201C""\201D";
 }
-blockquote:before {
-  color: #ccc;
-  content: open-quote;
-  font-size: 4em;
-  line-height: 0.1em;
-  margin-right: 0.25em;
-  vertical-align: -0.4em;
+blockquote:before{
+    color:#808080;
+    content:open-quote;
+    font-size:4em;
+    line-height:.1em;
+    margin-right:.25em;
+    vertical-align:-.4em;
 }
+blockquote :first-child{display:inline;}
+blockquote :last-child{margin-bottom:0;}
 blockquote p {
   display: inline;
 }
 
-.quote {
-  background: #f9f9f9;
-  border-left: 10px solid #ccc;
-  margin: 1.5em 10px;
-  padding: 0.5em 10px;
-  quotes: "\201C""\201D""\2018""\2019";
+.quote{
+    background:#f9f9f9;
+    border-left:1em solid #eee;
+    margin: .5em 0 .5em;
+    padding: 0 1em 0 .5em;
+    position:relative;
+}
+.quote:before{
+    content: "\201C";
+    font-size:4em;
+    line-height:.1em;
+    margin-right:.05em;
+    vertical-align:-.4em;
+}
+.quote:after{
+    font-size: 5em;
+    position:absolute;
+    right:3px;
+    bottom: 0em;
+    line-height: 0.1em;
+}
+.quote :first-child{display:inline;}
+.quote :last-child{margin-bottom:0;}
+.quote p {
+  display: inline;
 }
 
+
 .inverse {
   background:  $dark;
   color:  $medium;
@@ -241,9 +284,6 @@ body.compact {
     font-size: $footnote-font !important;
 }
 
-.bold{
-    font-weight: bold;
-}
 
 .blue {
   color: $blue;
diff --git a/assets/css/site.scss b/assets/css/site.scss
index a5ed8db201622ef1a94e2b1e38ec72e8e6ed1ad1..0e64b8c74487f00b3a281ff9a3f2a9a8eee50356 100644
--- a/assets/css/site.scss
+++ b/assets/css/site.scss
@@ -4,7 +4,7 @@
 @charset "utf-8";
 
 $fa-font-path: "../fonts/font-awesome/";
-@import 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css';
+@import 'fontawesome.all.min.css';
 @import "{{site.theme}}";
 
 $font-size-base: 1rem;
diff --git a/assets/css/style.scss b/assets/css/style.scss
index d1c737725ee0e08e2c5bf6a526960fab6c8c4865..845e441e0a9df78b2a7725136fb63bde27a2ac3c 100644
--- a/assets/css/style.scss
+++ b/assets/css/style.scss
@@ -13,21 +13,37 @@ $lab-background:#d8e6c9;
 $background: #d8e6c9;
 $highlight-dark: red;
 $highlight-light: lightcoral;
+$break-color: #ddeeee;
+$topic-color:   #EAE4EE;
+$activity-color:   #f0f4f2;
 $highlight-darkest: #660000;
 $white: white;
 
+details {
+    summary {
+	font-weight:bold;
+	font-size: large;
+	background-color:   $background;
+	color: $dark-color;
+	padding:5px;
+    }
+    padding:1em;
+}
+
 a {
     color: $link-color;
+    text-decoration: underline;
 }
 
 a:visited {
     color: $link-visited-color;
-    text-decoration: none;
+    text-decoration: underline;
 }
 
 
 a:hover, a:active, a:focus {
     color: $link-hover-color;
+    text-decoration: underline;
 }
 
 .navbar .navbar-expand-lg .navbar-dark {
@@ -104,6 +120,7 @@ h1.week{
     background-image:  linear-gradient(to right, $gradient-dark, $gradient-dark,  $gradient-light);
     color: $white;
     padding:5px;
+    font-size: 1.8em;
 }
 
 dl dt.lecture {
@@ -115,6 +132,50 @@ dl dt.lecture {
     margin-top: 1em !important;
 }
 
+dl dt.homework {
+    &::before {
+            font-family: FontAwesome;
+            font-size: 1.2em;
+            content: "\e066";
+            float: left;
+            margin-right: 0.4em;
+        }
+    style:bold;
+    font-size: large;
+    background-color:   $activity-color;
+    color: $dark-color;
+    padding:5px;
+    margin-top: 1em !important;
+    margin-left: 1em !important;
+}
+
+dl dt.activity {
+    style:bold;
+    font-size: large;
+    background-color:   $activity-color;
+    color: $dark-color;
+    padding:5px;
+    margin-top: 1em !important;
+}
+
+dl dt.topic {
+    style:bold;
+    font-size: large;
+    background-color:   $topic-color;
+    color: $dark-color;
+    padding:5px;
+    margin-top: 1em !important;
+}
+
+dl dt.break {
+    style:bold;
+    font-size: large;
+    background-color:   $break-color;
+    color: $dark-color;
+    padding:5px;
+    margin-top: 1em !important;
+}
+
 dl dt.demonstration {
     style:bold;
     font-size: large;
@@ -123,10 +184,35 @@ dl dt.demonstration {
     padding:5px;
 }
 
+dl dt.module {
+    style:bold;
+    font-size: 2em;
+    background-color: $gradient-light;
+    color:   $white;
+    padding:5px;
+}
+
+
+dl dt.prepare {
+    style:bold;
+    font-size: large;
+    background-color: $highlight-dark;
+    color:   $background;
+    padding:5px;
+}
+
+
 dl dt.holiday {
     style:bold;
     font-size: large;
-    background-color: $gradient-dark;
+    background-color: $highlight-dark;
+    color:   $background;
+    padding:5px;
+}
+dl dt.alert {
+    style:bold;
+    font-size: large;
+    background-color: $highlight-dark;
     color:   $background;
     padding:5px;
 }
@@ -221,6 +307,7 @@ table.schedule tfoot td {
 .page-header {
   background-image: linear-gradient(-120deg, $gradient-light, $gradient-dark, $gradient-dark);
   padding-top: 1rem;
+  padding-bottom: 1rem;
 }
 
 .project-tagline {
@@ -236,6 +323,60 @@ img.ta-picture {
   display: block;
 }
 
+img.page-picture {
+  width: 50%;
+  max-width: unset;
+  margin-left: auto;
+  margin-right: auto;
+  display: block;
+}
+
 .font-14pt {
     font-size: 12pt;
 }
+
+
+blockquote{
+    background:#f9f9f9;
+    border-left:1em solid #eee;
+    margin:1.5em 1em;
+    padding:.5em 1em;
+    quotes:"\201C""\201D";
+}
+blockquote:before{
+    color:#808080;
+    content:open-quote;
+    font-size:4em;
+    line-height:.1em;
+    margin-right:.25em;
+    vertical-align:-.4em;
+}
+blockquote p {
+  display: inline;
+}
+
+.quote{
+    background:#f9f9f9;
+    border-left:1em solid #eee;
+    margin: .5em 0 .5em;
+    padding: 0 1em 0 .5em;
+    position:relative;
+}
+.quote:before{
+    content: "\201C";
+    font-size:4em;
+    line-height:.1em;
+    margin-right:.05em;
+    vertical-align:-.4em;
+}
+.quote:after{
+    font-size: 5em;
+    position:absolute;
+    right:3px;
+    bottom: 0em;
+    line-height: 0.1em;
+}
+.quote p {
+  display: inline;
+}
+
diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.eot b/assets/fonts/bootstrap/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64
Binary files /dev/null and b/assets/fonts/bootstrap/glyphicons-halflings-regular.eot differ
diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.svg b/assets/fonts/bootstrap/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000000000000000000000000000000000000..94fb5490a2ed10b2c69a4a567a4fd2e4f706d841
--- /dev/null
+++ b/assets/fonts/bootstrap/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf b/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b
Binary files /dev/null and b/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf differ
diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.woff b/assets/fonts/bootstrap/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35
Binary files /dev/null and b/assets/fonts/bootstrap/glyphicons-halflings-regular.woff differ
diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0
Binary files /dev/null and b/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 differ
diff --git a/assets/fonts/font-awesome/fa-brands-400.eot b/assets/fonts/font-awesome/fa-brands-400.eot
deleted file mode 100644
index cdef69f09be0ba253b6a8fcf74a683b2849424fd..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-brands-400.eot and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-brands-400.svg b/assets/fonts/font-awesome/fa-brands-400.svg
deleted file mode 100644
index 54da424a7c65170b964e2ba65edeae2064d62b06..0000000000000000000000000000000000000000
--- a/assets/fonts/font-awesome/fa-brands-400.svg
+++ /dev/null
@@ -1,3717 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
-<metadata>
-Created by FontForge 20200314 at Wed Jan 13 11:57:55 2021
- By Robert Madole
-Copyright (c) Font Awesome
-</metadata>
-<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
-<font id="FontAwesome5Brands-Regular" horiz-adv-x="448" >
-  <font-face 
-    font-family="Font Awesome 5 Brands Regular"
-    font-weight="400"
-    font-stretch="normal"
-    units-per-em="512"
-    panose-1="2 0 5 3 0 0 0 0 0 0"
-    ascent="448"
-    descent="-64"
-    bbox="-0.200195 -66.9505 641.5 448.3"
-    underline-thickness="25"
-    underline-position="-50"
-    unicode-range="U+0020-F8E8"
-  />
-    <missing-glyph />
-    <glyph glyph-name="firefox-browser" unicode="&#xe007;" horiz-adv-x="512" 
-d="M130.63 324.51c0.160156 -0.00976562 0.0800781 -0.00976562 0 0zM482.05 279.16c15.2803 -36.7598 20.6709 -80.748 15.8213 -122.578c-0.370117 -3.15039 -0.700195 -6.29004 -1.11035 -9.41016c-19.6094 -115.04 -119.79 -202.62 -240.43 -202.62
-c-134.71 0 -243.92 109.19 -243.92 243.891v1.23926c0.149414 2.70996 0.30957 5.41016 0.490234 8.12012c0.0498047 0.240234 0.0498047 0.480469 0.0498047 0.719727c0.439453 6.29004 0.870117 10.3105 1.43945 14c0.240234 1.91309 0.5 3.82617 0.780273 5.73926
-c1.66992 12.2705 3.94043 22.21 4 22.4805c5.99219 26.8799 17.3516 52.1084 32.7305 73.8994v0c6.86816 9.79785 14.3965 18.8301 22.7695 27.3301c7.36719 7.53418 15.2451 14.2881 23.8398 20.4307c0.930664 0.629883 8.03027 4.83984 8.15039 4.30957
-c-0.570312 -8.42969 -1.24023 -48.8301 8.42969 -61.0801h0.120117c14.1602 15.9199 33.6504 33.96 58.71 45.3701c-2.38477 -9.13379 -3.64844 -18.6562 -3.64844 -28.5332c0 -10.7832 1.51367 -21.2158 4.33887 -31.0967
-c2.20508 -1.47852 4.29199 -3.05566 6.30957 -4.77051c3.71973 -3.14941 7.91992 -7.34961 16.7705 -16.0596c16.5498 -16.3096 59 -33.1797 59.0898 -35.1797c-0.400391 -6.08008 -21.8301 -27 -29.3301 -27c-69.3701 0 -80.6201 -41.9502 -80.6201 -41.9502
-c3.07031 -35.3301 27.6699 -64.4102 57.5098 -79.75c1.36035 -0.730469 2.74023 -1.37012 4.12012 -2c2.36035 -1.04004 4.74023 -2.02051 7.16016 -2.92969c9.95996 -3.52539 20.6885 -5.66895 31.7402 -6.12012c121.569 -5.7002 145.13 145.34 57.3896 189.199
-c22.4697 3.91016 45.8203 -5.12988 58.8203 -14.2793c-10.374 18.1104 -24.9414 33.167 -42.6602 44.1299c-0.993164 0.620117 -1.99316 1.21973 -3 1.7998c-1.55957 0.913086 -3.13965 1.79004 -4.74023 2.62988c-0.75 0.390625 -1.5 0.759766 -2.25 1.12988
-c-1.65332 0.813477 -3.32031 1.59668 -5.00098 2.34961c-1.07031 0.469727 -2.16016 0.910156 -3.25 1.34961c-1.33984 0.580078 -2.68945 1.08008 -4.0498 1.58008c-1.86035 0.669922 -3.73047 1.2998 -5.62012 1.87012c-0.679688 0.209961 -1.33008 0.429688 -2 0.629883
-c-10.8193 3.12793 -22.2139 4.82422 -34.0352 4.82422c-0.338867 0 -0.676758 -0.00195312 -1.01465 -0.00390625c-2 -0.0205078 -4 -0.100586 -6 -0.220703l-1.41992 -0.0996094c-14.8984 -1.04102 -29.2461 -4.92383 -42.1104 -11l-0.519531 -0.209961
-c-0.625977 -0.21582 -1.29688 -0.335938 -1.99609 -0.335938c-2.68164 0 -4.96289 1.72559 -5.79395 4.12598c-0.246094 0.669922 -0.388672 1.39258 -0.388672 2.14746c0 2.4541 1.41797 4.58008 3.47852 5.60254c14.7295 6.98535 31.1982 11.3564 48.3301 12.3301
-c5.7793 35.3994 28.2695 91.0098 82.5 122.78l-0.100586 -0.140625l0.180664 0.100586l0.120117 0.0693359c0.0732422 0.0195312 0.149414 0.0302734 0.229492 0.0302734c0.0791016 0 0.15625 -0.0107422 0.230469 -0.0302734
-c0.30957 -0.0390625 0.550781 -0.303711 0.550781 -0.624023c0 -0.0117188 -0.000976562 -0.0244141 -0.000976562 -0.0361328c0.84375 -3.34961 2.08887 -6.61523 3.63965 -9.61914c0.830078 -1.70996 1.69043 -3.40039 2.69043 -5.05078
-c1.87988 -3.21973 3.80957 -6.2793 5.73926 -9.33008c38.2002 -60.3594 84.9707 -88.0791 112.551 -156.829c-0.0507812 0.269531 -0.0507812 0.40918 -0.0507812 0.40918c-3.0293 20.1201 -10.9795 47.1104 -24.6992 74
-c16.8594 -8.72949 38.3301 -36.2295 48.9395 -61.7295z" />
-    <glyph glyph-name="ideal" unicode="&#xe013;" horiz-adv-x="576" 
-d="M125.61 282.52c27.0713 -0.0107422 49.0488 -21.9873 49.0596 -49.0596v-0.00976562c0 -27.083 -21.9873 -49.0703 -49.0703 -49.0703c-27.082 0 -49.0693 21.9873 -49.0693 49.0703c0 27.082 21.9873 49.0693 49.0693 49.0693h0.0107422zM86.1504 22.1602v140.52
-h78.9395v-140.52h-78.9395zM237.61 233.76c0 -20.4502 -8.99023 -23.2598 -18.7402 -23.2598h-14.0498v45.79h14.0498c8.74023 0 18.7402 -2.53027 18.7402 -22.5303zM439.3 187.76h57.0898c-1.7793 -98.4795 -52.1094 -165.64 -196.72 -165.64h-94.8301v165.62h14
-c25.9805 0 41.5 17.1895 41.5 46c0 27.9102 -15.8994 45.2598 -41.5 45.2598h-14v82.8096h94.8301c88.9404 0 186.83 -26.8896 196.07 -151.31h-33.6904v68.5703h-22.75v-91.3105zM329.55 187.76l-0.0400391 22.7402h-33.5098v12.5h30v22.6904h-30v10.5791h31.7305v22.7305
-h-54.4307v-91.2402h56.25zM404.21 187.76l23.6699 -0.0195312l-27.5303 91.3398h-32.3496l-27.5303 -91.3203h23.6602l5.17969 17.6699h29.7402zM299.65 416c218.35 0 250.97 -140 251 -223.48c0 -144.789 -89.1504 -224.52 -251 -224.52h-267.65v448h267.65z
-M299.65 -10.9199c148.899 0 229.899 69.3496 229.899 203.439c0 137.801 -87.7998 202.41 -229.899 202.41h-246.58v-405.85h246.58zM383.51 253.93h1.37012l7.52051 -25.8096h-16.4004z" />
-    <glyph glyph-name="microblog" unicode="&#xe01a;" 
-d="M399.36 85.7695l0.149414 0.0605469c-13.5439 -15.3408 -21.7432 -35.5967 -21.7432 -57.6494c0 -19.957 6.73438 -38.3545 18.0537 -53.041c0.589844 -0.745117 0.944336 -1.68652 0.944336 -2.71094c0 -0.311523 -0.0322266 -0.615234 -0.0947266 -0.90918
-c-0.416992 -2.00684 -2.19434 -3.52051 -4.32422 -3.52051c-0.306641 0 -0.606445 0.03125 -0.895508 0.0908203c-32.2803 7.17969 -61.3105 24.8301 -79.8906 49.9199c-1.30566 1.78906 -3.41699 2.94434 -5.7998 2.94434
-c-0.811523 0 -1.5918 -0.135742 -2.31934 -0.383789c-24.7363 -8.66016 -51.3818 -13.4404 -79.0586 -13.4404h-0.381836c-122.86 0 -222.46 91.4805 -222.46 204.43c0 112.95 99.5996 204.44 222.46 204.44s222.46 -91.4902 222.46 -204.44
-c0 -47.4492 -17.6104 -91.0996 -47.0996 -125.79zM329.52 235.6c1.56738 1.18652 2.57324 3.03516 2.57324 5.15039c0 3.57227 -2.88672 6.47461 -6.45312 6.5l-71.8799 1.50977l-23.6602 67.9199c-0.882812 2.54199 -3.29688 4.36914 -6.1377 4.36914
-s-5.25879 -1.82715 -6.1416 -4.36914l-23.6602 -67.9199l-71.8799 -1.50977c-3.5293 -0.0673828 -6.38086 -2.95117 -6.38086 -6.49609c0 -2.11523 1.01367 -3.99707 2.58105 -5.18359l57.2998 -43.4902l-20.79 -68.8604
-c-0.178711 -0.59375 -0.269531 -1.21875 -0.269531 -1.87109c0 -3.59277 2.91699 -6.50977 6.50977 -6.50977c1.37793 0 2.65723 0.429688 3.70996 1.16113l59.0596 41.0801l59.0596 -41.0498c1.05371 -0.735352 2.33984 -1.1709 3.71973 -1.1709
-c3.58789 0 6.5 2.91211 6.5 6.5c0 0.657227 -0.0976562 1.29199 -0.279297 1.89062l-20.7803 68.8604z" />
-    <glyph glyph-name="pied-piper-square" unicode="&#xe01e;" 
-d="M32 29l-32 -60.2002l0.799805 328c0 65.9004 53.2002 119.2 119.2 119.2h327.2c-93 -28.9004 -189.9 -94.2002 -253.9 -168.6c-70.5996 -81.4004 -110.7 -137.4 -161.3 -218.4zM448 416c0 0 0 -328.8 0.0996094 -328.8c0 -65.9004 -53.2998 -119.2 -119.3 -119.2
-h-328.399c18.5 25.5 61.6992 54 84.8994 66c35.5 18.0996 76.4004 28.5 105.3 56.2998c42.1006 40.5 47.8008 105 71 158.601c43.6006 100.3 186.4 167.1 186.4 167.1z" />
-    <glyph glyph-name="unity" unicode="&#xe049;" horiz-adv-x="576" 
-d="M498.11 241.6l-30 -49.5996l30 -49.6299l-52.8008 -191.62l-197.079 51.3604l-29.2402 50l-59.1699 -0.430664l-144.28 140.32l144.26 140.29l59.2002 -0.429688l29.2002 50.0596l197.109 51.3604zM223.77 323.8l-108.899 -108.13h173.13l86.5498 145.82zM223.77 60.1699
-l150.78 -37.6895l-86.5498 145.81h-173.13zM416.77 46.1699l41.79 145.83l-41.8096 145.84l-86.5801 -145.84z" />
-    <glyph glyph-name="dailymotion" unicode="&#xe052;" 
-d="M298.93 181c7.14062 -4 12.9844 -9.85254 16.9727 -17c3.86426 -6.83691 6.10059 -14.7783 6.10059 -23.1865c0 -0.0947266 0 -0.188477 -0.000976562 -0.283203c-0.0332031 -13.6602 -4.58691 -25.084 -13.6602 -34.2705s-20.4434 -13.7793 -34.1104 -13.7793
-c-13.4336 0 -24.5771 4.47949 -33.4307 13.4395s-13.2803 20.4932 -13.2803 34.5996c0 13.4336 4.53711 24.5742 13.6104 33.4209s20.2197 13.2695 33.4395 13.2695c0.214844 0.00292969 0.469727 -0.0263672 0.685547 -0.0263672
-c8.59668 0 16.6738 -2.24609 23.6738 -6.18359zM0.00195312 416h448v-448h-448v448zM374.712 42.7402l-0.0302734 264.349l-55.79 -12.0898v-77.9199c-7.81348 7.86035 -16.1465 13.5273 -25 17.001c-8.87695 3.35352 -18.5127 5.21875 -28.5576 5.21875
-c-0.394531 0 -0.789062 -0.00292969 -1.18164 -0.00878906c-17.6934 -0.00683594 -33.6006 -4.37305 -47.7207 -13.0996c-14.0625 -8.68066 -25.4102 -20.9805 -32.9297 -35.7803c-7.83984 -15.1064 -11.7598 -31.8467 -11.7598 -50.2197
-c-0.00683594 -18.8066 3.85645 -35.7705 11.5898 -50.8906c7.45215 -14.8447 18.8232 -27.1611 32.9395 -35.7695c14.2197 -8.7334 30.5166 -13.1006 48.8906 -13.1006c26.6602 0 45.2539 8.7334 55.7803 26.2002h0.669922v-23.8896h53.0996z" />
-    <glyph glyph-name="instagram-square" unicode="&#xe055;" 
-d="M224 245.34c29.4385 -0.0107422 53.3379 -23.9043 53.3604 -53.3398c0 -29.4395 -23.9004 -53.3398 -53.3398 -53.3398s-53.3398 23.9004 -53.3398 53.3398c0 29.4326 23.8896 53.3291 53.3193 53.3398zM348.71 286.34
-c8.34961 -21.0703 6.46973 -71.0596 6.46973 -94.3398s1.91992 -73.3301 -6.42969 -94.3301c-5.4834 -13.8955 -16.5146 -24.9268 -30.4102 -30.4102c-21.0596 -8.35938 -70.9902 -6.42969 -94.2998 -6.42969s-73.3096 -1.86035 -94.3096 6.42969
-c-13.8955 5.4834 -24.9277 16.5146 -30.4102 30.4102c-8.32031 21.0703 -6.4707 71.0605 -6.4707 94.3398c0 23.2803 -1.84961 73.3301 6.43066 94.3301c5.48242 13.8955 16.5146 24.9268 30.4102 30.4102c21.0596 8.36035 71.0098 6.42969 94.3096 6.42969
-s73.2998 1.86035 94.2998 -6.42969c13.8955 -5.4834 24.9268 -16.5146 30.4102 -30.4102zM224 110c0.0341797 0 0.0664062 -0.00195312 0.0996094 -0.00195312c45.2021 0 81.9004 36.6982 81.9004 81.9004v0.101562c0 45.2568 -36.7432 82 -82 82s-82 -36.7432 -82 -82
-s36.7432 -82 82 -82zM309.38 258.3c10.5371 0.00585938 19.1299 8.52051 19.1299 19.0586v0.0820312c0 10.5635 -8.57617 19.1396 -19.1396 19.1396c-10.5645 0 -19.1406 -8.57617 -19.1406 -19.1396c0 -10.5645 8.57617 -19.1406 19.1406 -19.1406h0.00976562zM400 416
-c26.4922 0 48 -21.5078 48 -48v-352c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352zM382.88 126c1.49023 26.4404 1.49023 105.56 0 131.88c-1.21973 25.6299 -7.17969 48.3506 -25.8496 67.0498
-c-18.6699 18.7002 -41.3701 24.5605 -67 25.8506c-26.4102 1.48926 -105.59 1.48926 -132 0c-25.5303 -1.2207 -48.2207 -7.12012 -67 -25.7803c-18.7803 -18.6602 -24.5605 -41.3701 -25.8506 -67c-1.48926 -26.3896 -1.48926 -105.58 0 -132
-c1.2207 -25.5801 7.11035 -48.2998 25.8506 -67c18.7393 -18.7002 41.3701 -24.5596 67 -25.8496c26.4102 -1.49023 105.59 -1.49023 132 0c25.5996 1.21973 48.29 7.18945 67 25.8496s24.5596 41.3701 25.8496 67z" />
-    <glyph glyph-name="mixer" unicode="&#xe056;" horiz-adv-x="512" 
-d="M114.57 371.93l128.319 -172.399c1.44531 -1.99805 2.29785 -4.47461 2.29785 -7.12598c0 -2.65234 -0.852539 -5.10645 -2.29785 -7.10449l-128.89 -173.24c-8.33594 -11.1826 -21.6582 -18.3877 -36.666 -18.3877c-11.877 0 -22.7031 4.54004 -30.834 11.9785
-c-17.8496 16.1797 -18.9697 43.5195 -4.74023 62.7695l92.3301 124.15l-91.7803 123c-14.25 19.25 -12.8291 46.5898 4.75 62.7695c8.13281 7.44141 18.9551 12.0264 30.8359 12.0264c15.0088 0 28.3389 -7.25 36.6748 -18.4365zM470.24 68.4199
-c14.2295 -19.25 13.1094 -46.5898 -4.73047 -62.7695c-8.13184 -7.44141 -18.9551 -12.0264 -30.835 -12.0264c-15.0098 0 -28.3389 7.25 -36.6748 18.4355l-128.57 173.5c-1.44434 1.99805 -2.29688 4.47461 -2.29688 7.12598c0 2.65234 0.852539 5.10645 2.29688 7.10449
-l128 172.12c8.33594 11.1855 21.6602 18.3926 36.6699 18.3926c11.8809 0 22.708 -4.54199 30.8408 -11.9824c17.5791 -16.1807 18.9697 -43.5205 4.75 -62.7705l-91.7803 -123z" />
-    <glyph glyph-name="shopify" unicode="&#xe057;" 
-d="M388.32 343.9c0.399414 -2.40039 54.4395 -367.9 54.4395 -367.9l-125.689 -31.2002v432.73c8.00977 -8.01074 29.6201 -28.8301 29.6201 -28.8301s35.2295 -0.799805 37.2295 -0.799805c2.25 -0.103516 4.08887 -1.81055 4.40039 -4zM288.65 377.53
-c9.20996 2.7998 13.3604 4.18945 14.8096 4.39941c1.4502 0.209961 2.90625 0.34375 4.40039 0.400391v-438.33l-302.58 52.4805s36.7998 281.819 38 291.819c1.58984 13.2002 2 13.6006 16 18c0.399414 0.400391 19.6094 6.41016 47.2295 14.8105
-c2.82031 21.2197 13.21 48.4395 26.8203 70.0596c19.25 30.8301 43.25 48.0303 67.25 48.8301c12.4199 0.370117 22.8203 -3.62988 30.8203 -12.4004c0.399414 -0.799805 1.19922 -1.19922 1.59961 -2c1.11914 0.267578 2.27051 0.40918 3.4707 0.40918
-c0.176758 0 0.353516 -0.00292969 0.529297 -0.00878906c18.4199 0 34 -10.8496 44.4404 -30.8604c2.84082 -5.58887 5.28809 -11.5479 7.20996 -17.6094zM233.41 360.31c0.399414 13.21 -1.2002 32.8301 -8.00977 47.2002
-c-6.80078 -3.2002 -12.8105 -8.41016 -17.21 -12.8096c-11.21 -12.3701 -20.8203 -31.1807 -25.6201 -50c17.21 5.20996 34.8398 10.8096 50.8398 15.6094zM200.58 423.56c-36.8301 -0.799805 -69.25 -58.8398 -78.0098 -97.2295c13.1699 4 27.5801 8.40039 42 12.8096
-c4.7998 24.4502 16.4102 50.0303 31.6201 66.4502c6 6 12.4092 11.21 18.8096 14.4102c-3.99414 2.26367 -8.625 3.57422 -13.54 3.57422c-0.293945 0 -0.587891 -0.00488281 -0.879883 -0.0146484zM154.15 203.39c-0.400391 4.81055 0 23.6104 29.6191 25.6201
-c20.4209 1.60059 37.6309 -6.39941 37.6309 -6.39941l15.21 57.5996s-13.2305 6.41016 -39.2305 4.80957c-67.25 -4.40918 -97.6699 -51.2393 -94.4697 -97.6797c3.59961 -55.2402 58.8398 -53.2402 60.8398 -86.8594
-c0.410156 -8.01074 -4.80957 -19.6201 -18.8096 -20.4209c-21.6201 -1.59961 -48.4404 18.8203 -48.4404 18.8203l-10.4004 -44s26.8203 -28.8203 75.6504 -25.6201c40.4297 2.41016 68.4502 34.8301 65.6504 82.4707c-4 60.4395 -71.6504 66.0498 -73.25 91.6592z
-M249.42 365.12c8.80664 2.7998 16.8135 5.2002 24.0205 7.2002c-4.01074 12.4297 -12.8105 32.8301 -31.2305 36.4297c5.61035 -14.4102 7.20996 -31.6299 7.20996 -43.6299z" />
-    <glyph glyph-name="deezer" unicode="&#xe077;" horiz-adv-x="576" 
-d="M451.46 203.29v72.71h124.54v-72.71h-124.54zM451.46 377.18h124.54v-72.6699h-124.54v72.6699zM451.46 102.12v72.6797h124.54v-72.6797h-124.54zM0 0.910156v72.6699h124.54v-72.6699h-124.54zM150.47 0.910156v72.6699h124.53v-72.6699h-124.53zM300.99 0.910156
-l0.00976562 72.6699h124.53v-72.6699h-124.54zM451.46 0.910156v72.6699h124.54v-72.6699h-124.54zM301 102.12v72.6797h124.53v-72.6797h-124.53zM150.48 102.12l-0.0107422 72.6797h124.53v-72.6797h-124.52zM150.48 203.29l-0.0107422 72.71h124.53v-72.71h-124.52z" />
-    <glyph glyph-name="edge-legacy" unicode="&#xe078;" horiz-adv-x="512" 
-d="M25.71 219.84l0.349609 0.480469c0 -0.160156 0 -0.320312 -0.0693359 -0.480469h-0.280273zM486.29 204.33v-52.0703h-314.08c1.38965 -128.49 191.39 -124.06 272.26 -67.5693v-104.431c-47.3594 -28.5293 -156.779 -53.1699 -240.13 -21.3301
-c-70.6201 27.1602 -119.92 100.551 -120.75 172c-1.09961 92.2207 45.7002 153.42 120.75 188.32c-15.79 -19.9297 -27.9697 -41.54 -34.3398 -78.9297h175.85c10.25 105 -99.4199 105 -99.4199 105c-103.3 -3.62012 -177.949 -63.6904 -220.37 -125
-c14.5605 114.47 92.9404 219.96 232.83 219.68c85.0205 0 157.61 -39.8799 198.591 -113.27c21.0498 -37.9404 28.8096 -78.4004 28.8096 -122.4z" />
-    <glyph glyph-name="google-pay" unicode="&#xe079;" horiz-adv-x="640" 
-d="M105.72 233h99.6602c1.1543 -7.06152 1.75 -14.1768 1.75 -21.5635v-0.216797c0 -32.7598 -11.4102 -60.2998 -31.4102 -78.9102c-17.4502 -16.3799 -41.5293 -25.9092 -70 -25.9092c-41.4531 0.103516 -77.2598 24.0869 -94.3799 59v0.149414
-c-7.21582 14.4512 -11.2773 30.957 -11.2773 48.1943c0 17.2383 4.06152 33.5352 11.2773 47.9863c17.1172 34.9355 52.9199 58.9502 94.3799 59.1094c0.344727 0.00390625 0.699219 0.00585938 1.04492 0.00585938c27 0 51.5469 -10.5928 69.7051 -27.8457
-l-30.2793 -30.6201c-10.1777 9.95508 -24.0938 16.0898 -39.4404 16.0898c-0.357422 0 -0.713867 -0.00292969 -1.07031 -0.00976562c-27.5996 0 -50.9297 -18.9102 -59.2998 -44.3701v0c-2.12109 -6.44824 -3.26855 -13.3545 -3.26855 -20.5088
-s1.14746 -14.043 3.26855 -20.4912c8.37012 -25.3096 31.7002 -44.2197 59.2998 -44.2197c14.2803 0 26.46 3.72949 36 10.2803c10.9629 7.39648 18.7705 19.0664 21.1406 32.5996h-57.1006v41.25zM495.13 237c10.1299 -9.33984 15.1201 -22.4502 15.0498 -39v-78.7002
-h-22.6094v17.7197h-1c-9.79004 -14.5898 -22.71 -21.8896 -39 -21.8896c-13.79 0 -25.54 4.16992 -34.79 12.5098c-8.55078 7.29199 -13.9541 18.1143 -13.9541 30.2207c0 0.350586 0.00488281 0.701172 0.0136719 1.0498c0 13.25 4.98047 23.6699 14.8203 31.5596
-c9.83984 7.89062 23.0498 11.7705 39.4902 11.7705c14.0898 0 25.54 -2.68066 34.6396 -7.75v5.50977c-0.00488281 8.47461 -3.75098 16.0723 -9.69043 21.2305c-6.02051 5.44141 -14.0078 8.76855 -22.75 8.78906c-13.2061 0 -23.626 -5.66699 -31.2598 -17
-l-20.8496 13.2607c11.1602 16.5195 28.04 24.8594 50.5 24.8594c17.46 0 31.2598 -4.75977 41.3896 -14.1396zM475.9 147.7c7.7793 7.4502 11.7393 16.2295 11.7393 26.3594c-7.33984 5.94043 -17.6396 8.94043 -30.7998 8.78027c-9.54004 0 -17.75 -2.38965 -24.0703 -7
-c-6.31934 -4.60938 -9.53906 -10.4199 -9.53906 -17.4199c-0.000976562 -0.0332031 -0.0166016 -0.0546875 -0.0166016 -0.0878906c0 -6.35449 3.05957 -12 7.78613 -15.542c4.8916 -3.90625 11.1035 -6.25391 17.8447 -6.25391
-c0.162109 0 0.324219 0.000976562 0.485352 0.00390625c10.3965 0.0126953 19.8076 4.2793 26.5703 11.1602zM382.25 289.7c10.4268 -9.92188 16.9102 -23.9102 16.9102 -39.4248c0 -14.166 -5.4209 -27.0752 -14.2998 -36.7656
-c-0.890625 -0.889648 -1.77051 -1.79004 -2.65039 -2.67969c-11.0098 -10.5703 -24.5098 -15.9297 -40.5098 -15.9297h-39v-75.6406h-23.6299v186.74h62.6699c0.379883 0.0078125 0.749023 0.0185547 1.13086 0.0185547c15.3701 0 29.2949 -6.23828 39.3789 -16.3184z
-M365.67 227.47c5.5957 5.94141 9.03223 13.9971 9.03223 22.7939c0 9.18164 -3.7373 17.4961 -9.77246 23.5059c-5.78027 5.70801 -13.7236 9.23047 -22.4814 9.23047h-0.118164h-39.6299v-65.21h39.6299c0.328125 -0.0107422 0.640625 -0.0253906 0.970703 -0.0253906
-c8.82031 0 16.7754 3.7334 22.3691 9.70508zM614.31 247h25.6904l-79 -183.87h-24.3496l29.3496 64.3203l-51.79 119.55h25.6904l37.4199 -91.7002h0.449219z" />
-    <glyph glyph-name="rust" unicode="&#xe07a;" horiz-adv-x="512" 
-d="M508.52 198.25c2.09375 -1.2959 3.44043 -3.60449 3.44043 -6.24512c0 -2.6416 -1.39648 -4.95898 -3.49023 -6.25488l-21.8193 -13.5098c-0.169922 -1.95996 -0.34082 -3.91992 -0.550781 -5.87012l18.7207 -17.5c1.43457 -1.3418 2.33203 -3.24805 2.33203 -5.36523
-c0 -3.15039 -1.98535 -5.83984 -4.77246 -6.88477l-24 -9c-0.540039 -1.88965 -1.08008 -3.78027 -1.66992 -5.65039l15 -20.8301c0.865234 -1.20508 1.37207 -2.68945 1.37207 -4.28516c0 -3.65234 -2.66992 -6.68555 -6.16211 -7.25488l-25.4199 -4.14941
-c-0.900391 -1.71973 -1.79004 -3.4502 -2.73047 -5.15039l10.6807 -23.4199c0.420898 -0.925781 0.655273 -1.96875 0.655273 -3.05176c0 -1.50781 -0.455078 -2.91113 -1.23535 -4.07812c-1.29199 -1.97168 -3.51172 -3.26758 -6.04297 -3.26758
-c-0.109375 0 -0.21875 0.00292969 -0.327148 0.0078125l-25.8203 0.910156c-1.18652 -1.4873 -2.38965 -2.9541 -3.60938 -4.40039l5.92969 -25.1602c0.125977 -0.538086 0.196289 -1.0957 0.196289 -1.67188c0 -4.0625 -3.29785 -7.36035 -7.35938 -7.36035
-c-0.577148 0 -1.13867 0.0664062 -1.67676 0.192383l-25.1504 5.92969c-1.45312 -1.21289 -2.91992 -2.41602 -4.39941 -3.60938l0.90918 -25.8203c0.00390625 -0.0878906 -0.000976562 -0.167969 -0.000976562 -0.256836c0 -4.05664 -3.29395 -7.34961 -7.34961 -7.34961
-c-1.08398 0 -2.1123 0.235352 -3.03906 0.65625l-23.4199 10.6807c-1.7002 -0.94043 -3.42969 -1.83008 -5.15039 -2.73047l-4.14941 -25.4199c-0.56543 -3.49121 -3.60254 -6.16309 -7.25293 -6.16309c-1.59961 0 -3.08105 0.512695 -4.28711 1.38281l-20.8203 15
-c-1.87012 -0.599609 -3.75977 -1.12988 -5.64941 -1.67969l-9 -24c-1.05078 -2.7832 -3.7373 -4.7627 -6.88574 -4.7627c-2.11426 0 -4.02148 0.892578 -5.36426 2.32227l-17.5 18.7305c-1.9502 -0.219727 -3.88086 -0.390625 -5.88086 -0.560547l-13.5098 -21.8193
-c-1.2959 -2.09375 -3.60352 -3.49023 -6.24512 -3.49023s-4.95898 1.39648 -6.25488 3.49023l-13.5098 21.8193c-1.95996 0.169922 -3.92969 0.34082 -5.87988 0.550781l-17.5 -18.7207c-1.34277 -1.42969 -3.24707 -2.32422 -5.36133 -2.32422
-c-3.14844 0 -5.83789 1.98145 -6.88867 4.76465l-9 24c-1.88965 0.549805 -3.79004 1.08008 -5.65039 1.67969l-20.8301 -15c-1.20605 -0.870117 -2.69434 -1.37988 -4.29395 -1.37988c-3.64941 0 -6.68066 2.66895 -7.24609 6.16016l-4.14941 25.4199
-c-1.71973 0.900391 -3.4502 1.79004 -5.14062 2.73047l-23.4297 -10.6807c-0.925781 -0.420898 -1.96094 -0.664062 -3.04492 -0.664062c-4.05664 0 -7.34961 3.29297 -7.34961 7.34961c0 0.0888672 0.00195312 0.176758 0.00488281 0.264648l0.919922 25.8203
-c-1.4873 1.18652 -2.95703 2.38965 -4.41016 3.60938l-25.1602 -5.92969c-0.538086 -0.125977 -1.0957 -0.196289 -1.67188 -0.196289c-4.0625 0 -7.36035 3.29785 -7.36035 7.35938c0 0.577148 0.0664062 1.13867 0.192383 1.67676l5.92969 25.1602
-c-1.21973 1.45312 -2.41992 2.91992 -3.59961 4.40039l-25.8301 -0.910156c-0.125977 -0.00683594 -0.243164 -0.0175781 -0.371094 -0.0175781c-2.5166 0 -4.72949 1.30664 -5.99902 3.27734c-0.776367 1.16504 -1.23047 2.57812 -1.23047 4.08301
-c0 1.08691 0.236328 2.11816 0.660156 3.04688l10.6309 23.4297c-0.94043 1.69043 -1.83008 3.4209 -2.73047 5.14062l-25.4199 4.14941c-3.49219 0.569336 -6.16504 3.60938 -6.16504 7.26172c0 1.5957 0.509766 3.07324 1.375 4.27832l15 20.8301
-c-0.599609 1.87012 -1.12988 3.76074 -1.67969 5.65039l-24 9c-2.78711 1.04492 -4.77148 3.73145 -4.77148 6.88184c0 2.11719 0.896484 4.02637 2.33105 5.36816l18.7197 17.5c-0.209961 1.9502 -0.379883 3.87012 -0.549805 5.87012l-21.8193 13.5098
-c-2.09473 1.2959 -3.49023 3.60449 -3.49023 6.24512c0 2.6416 1.39551 4.95898 3.49023 6.25488l21.8594 13.5c0.169922 1.96973 0.339844 3.92969 0.549805 5.87988l-18.7197 17.5c-1.43457 1.3418 -2.33203 3.24805 -2.33203 5.36523
-c0 3.15039 1.98535 5.83984 4.77246 6.88477l24 9c0.549805 1.88965 1.08984 3.79004 1.67969 5.66016l-15 20.8203c-0.865234 1.20508 -1.37207 2.68945 -1.37207 4.28516c0 3.65234 2.66992 6.68555 6.16211 7.25488l25.4102 4.13965
-c0.899414 1.72949 1.79004 3.45996 2.72949 5.16016l-10.6602 23.4102c-0.423828 0.927734 -0.65918 1.97363 -0.65918 3.06055c0 1.50391 0.453125 2.90332 1.22949 4.06934c1.33398 1.97266 3.58398 3.26367 6.14258 3.26367
-c0.0761719 0 0.152344 -0.00195312 0.227539 -0.00390625l25.8096 -0.910156c1.19043 1.48047 2.39062 2.95996 3.62012 4.41016l-5.92969 25.1602c-0.125977 0.538086 -0.196289 1.0957 -0.196289 1.67188c0 4.0625 3.29785 7.36035 7.35938 7.36035
-c0.577148 0 1.13867 -0.0664062 1.67676 -0.192383l25.1504 -5.96973c1.41992 1.21973 2.92969 2.41992 4.41992 3.60938l-0.919922 25.8105c-0.00488281 0.104492 -0.000976562 0.201172 -0.000976562 0.307617c0 4.05566 3.29395 7.34961 7.35059 7.34961
-c1.08398 0 2.11328 -0.235352 3.04004 -0.657227l23.4004 -10.6299c1.70996 0.939453 3.42969 1.83008 5.16016 2.72949l4.14941 25.4102c0.569336 3.49219 3.60938 6.16504 7.26172 6.16504c1.5957 0 3.07324 -0.509766 4.27832 -1.375l20.8203 -15
-c1.87012 0.599609 3.76953 1.12988 5.66016 1.67969l9 24c1.04492 2.78711 3.73145 4.77148 6.88184 4.77148c2.11719 0 4.02637 -0.896484 5.36816 -2.33105l17.5 -18.7197c1.94922 0.209961 3.87988 0.379883 5.87988 0.549805l13.5098 21.8193
-c1.2959 2.09473 3.60449 3.49023 6.24512 3.49023c2.6416 0 4.95898 -1.39551 6.25488 -3.49023l13.4805 -21.8398c1.96973 -0.169922 3.92969 -0.339844 5.87988 -0.549805l17.5 18.7197c1.3418 1.43457 3.24805 2.33301 5.36523 2.33301
-c3.14941 0 5.83984 -1.98535 6.88477 -4.77246l9 -24c1.88965 -0.540039 3.7793 -1.08008 5.63965 -1.66992l20.8604 14.9697c1.20508 0.865234 2.68945 1.37207 4.28516 1.37207c3.65234 0 6.68555 -2.66992 7.25488 -6.16211l4.14941 -25.4199
-c1.71973 -0.889648 3.4502 -1.79004 5.15039 -2.73047l23.4199 10.7305c0.926758 0.421875 1.96289 0.666016 3.04688 0.666016c4.05664 0 7.34961 -3.29395 7.34961 -7.35059c0 -0.105469 -0.00195312 -0.210938 -0.00683594 -0.31543l-0.910156 -25.8203
-c1.4873 -1.18652 2.9541 -2.38965 4.40039 -3.60938l25.1602 5.92969c0.538086 0.125977 1.0957 0.196289 1.67188 0.196289c4.0625 0 7.36035 -3.29785 7.36035 -7.35938c0 -0.577148 -0.0664062 -1.13867 -0.192383 -1.67676l-5.87988 -25.1602
-c1.21387 -1.45312 2.41699 -2.91992 3.61035 -4.40039l25.8193 0.910156c0.0878906 0.00292969 0.167969 -0.000976562 0.256836 -0.000976562c4.05664 0 7.34961 -3.29395 7.34961 -7.35059c0 -1.08301 -0.234375 -2.1123 -0.65625 -3.03809l-10.6797 -23.4199
-c0.939453 -1.7002 1.83008 -3.41992 2.72949 -5.15039l25.4199 -4.14941c3.49219 -0.569336 6.16504 -3.60938 6.16504 -7.26172c0 -1.5957 -0.509766 -3.07324 -1.375 -4.27832l-15 -20.8301c0.589844 -1.86035 1.12988 -3.76074 1.66992 -5.64062l24 -9
-c2.78711 -1.04492 4.77148 -3.73145 4.77148 -6.88184c0 -2.11719 -0.896484 -4.02637 -2.33105 -5.36816l-18.7197 -17.5c0.209961 -1.94922 0.379883 -3.87988 0.549805 -5.87988zM357.52 69.1699l32.1406 -6.87988c6.28125 6.3125 12.0029 12.9395 17.3398 20.0898
-h-79.0498c-12.5 0 -24.21 17.6396 -27.1006 26.46c-2.88965 7.86035 -7.14941 32.4502 -9.05957 40c-6.12988 24.5898 -25.3799 25.8701 -29.79 25.8701h-48.4805l-0.0498047 -34.3496h44.8301c1.71973 0 2.89062 -0.34082 2.89062 -1.91016v-54.1904
-c0 -1.62012 -1.1709 -1.91016 -2.89062 -1.91016h-153.17c5.01953 -6.80957 10.3848 -13.1465 16.2598 -19.21l31.5107 6.76074c0.935547 0.199219 1.89746 0.294922 2.89258 0.294922c6.66211 0 12.2344 -4.70801 13.5674 -10.9756l7.63965 -35.6602
-c23.9688 -11.1318 50.9941 -17.3506 79.1416 -17.3506c27.5205 0 53.665 5.94141 77.2188 16.6113l7.63965 35.6699c1.34668 6.27246 6.91797 10.9893 13.5908 10.9893c1.00488 0 1.98438 -0.106445 2.92871 -0.30957zM383.29 34.6797
-c0 0.00585938 -0.0576172 0.0107422 -0.0576172 0.0166016c0 8.25977 -6.58887 14.9922 -14.792 15.2236h-0.44043c-8.3877 -0.0273438 -15.1904 -6.8457 -15.1904 -15.2402c0 -8.41113 6.8291 -15.2393 15.2402 -15.2393s15.2402 6.82812 15.2402 15.2393zM157.67 35.3604
-c0 0.00195312 -0.0576172 0.00488281 -0.0576172 0.0078125c0 8.24707 -6.56055 14.9736 -14.7422 15.2422h-0.450195c-8.40625 -0.00585938 -15.2295 -6.83203 -15.2295 -15.2402c0 -8.41113 6.82812 -15.2402 15.2393 -15.2402c8.4082 0 15.2344 6.82324 15.2402 15.2305z
-M69.5703 213.85c-0.725586 -6.69922 -1.0625 -13.2754 -1.0625 -20.167c0 -17.8242 2.49023 -35.0713 7.14258 -51.4131h53.5996v119.73h-26.5596l6.76953 -15.2197c0.765625 -1.7207 1.20801 -3.62988 1.20801 -5.63281c0 -5.66406 -3.39941 -10.54 -8.26758 -12.6973z
-M58.3096 249.91c0.00292969 -8.4082 6.84375 -15.2236 15.2529 -15.2236c8.41113 0 15.2402 6.82812 15.2402 15.2393c0 8.26562 -6.59375 15.0029 -14.8027 15.2344h-0.459961c-8.40625 -0.00585938 -15.2305 -6.83203 -15.2305 -15.2402v-0.00976562zM213.47 225.42
-h58.7002c12.4902 0 27.6797 4.41016 27.6797 16.7002c0 14.8496 -19.79 18.6201 -23.0693 18.6201h-63.2607zM399 141.29c10.3096 1.12988 22 5.70996 22.0195 26.46v8.82031c0 1.85938 0.780273 3.12988 2.69043 3.12988h19.2803
-c0.349609 4.6709 0.529297 9.02832 0.529297 13.7891c0 6.32812 -0.314453 12.583 -0.929688 18.751l-34.5898 15.3301c-4.86621 2.19434 -8.23828 7.0918 -8.23828 12.7725c0 1.97363 0.410156 3.85352 1.14844 5.55762l18 40.5693
-c-26.8047 47.0127 -73.3965 81.1328 -128.37 91.4307l-26.2598 -25c-2.48535 -2.39062 -5.86523 -3.86523 -9.58203 -3.86523c-3.94141 0 -7.5 1.6543 -10.0186 4.30469l-23.4697 24.6006c-41.29 -7.80371 -77.9434 -29.083 -104.89 -59.1904h198.899
-c4.99023 0 23.5107 -2.23047 40.2705 -13.2305c11.9102 -7.88965 29.3994 -23.96 29.3994 -49.4795c0 -23.6201 -19.5996 -41.3096 -38.46 -53.2598c15.1807 -12 24.79 -18.9102 30.5703 -51.4004c1.37012 -5.96973 12.2002 -11.2197 22 -10.0898zM240 387.79
-c0 -0.0078125 -0.00683594 -0.015625 -0.00683594 -0.0244141c0 -8.41113 6.82812 -15.2393 15.2402 -15.2393c8.41113 0 15.2393 6.82812 15.2393 15.2393c0 8.26855 -6.59863 15.0078 -14.8125 15.2344h-0.450195c-8.38672 -0.0166016 -15.1934 -6.82324 -15.21 -15.21z
-M436.84 234c0.0742188 -0.000976562 0.141602 -0.00195312 0.21582 -0.00195312c8.41211 0 15.2422 6.83008 15.2422 15.2422c0 8.33691 -6.70898 15.1201 -15.0176 15.2402h-0.44043c-8.41113 0 -15.2402 -6.8291 -15.2402 -15.2402s6.8291 -15.2402 15.2402 -15.2402z" />
-    <glyph glyph-name="tiktok" unicode="&#xe07b;" 
-d="M448 238.09h-0.512695c-45.5098 0 -87.8428 14.6162 -122.257 39.25v-178.72c-0.0332031 -89.6855 -72.8574 -162.489 -162.551 -162.489c-89.7139 0 -162.55 72.8359 -162.55 162.55s72.8359 162.55 162.55 162.55c7.62891 0 14.9697 -0.521484 22.3203 -1.54004
-v-89.8906c-7.06836 2.22363 -14.5889 3.42285 -22.3877 3.42285c-41.1836 0 -74.6201 -33.4365 -74.6201 -74.6201c0 -41.1846 33.4365 -74.6201 74.6201 -74.6201c41.1846 0 74.6182 33.4541 74.6182 74.6377v349.38h88
-c-0.00292969 -0.337891 -0.00488281 -0.676758 -0.00488281 -1.01562c0 -7.25977 0.638672 -14.2441 1.86426 -21.1543v0c6.28613 -33.5771 26.1982 -62.3613 53.9102 -80.2197c19.1787 -12.6816 42.1592 -20.0674 66.8506 -20.0674
-c0.00878906 0 0.140625 -0.0732422 0.149414 -0.0732422v-87.3799z" />
-    <glyph glyph-name="unsplash" unicode="&#xe07c;" 
-d="M448 217.83v-249.83h-448v249.83h141.13v-124.92h165.74v124.92h141.13zM306.87 416v-124.91h-165.74v124.91h165.74z" />
-    <glyph glyph-name="cloudflare" unicode="&#xe07d;" horiz-adv-x="640" 
-d="M407.906 128.087c12.1836 -0.574219 22.2178 -5.50977 28.2334 -13.9023c6.54883 -9.09961 8 -21.5 4.10059 -34.8994l-3.27344 -11.2656c-0.681641 -2.28125 -2.7793 -3.95508 -5.27051 -4c-0.0419922 -0.000976562 -0.0791016 -0.0195312 -0.12207 -0.0195312
-l-426.101 0.0507812c-2.26172 0.00878906 -4.13379 1.69238 -4.44434 3.87109c-0.676758 4.58691 -1.02637 9.18457 -1.0293 13.958c0 52.3926 41.9238 95.0137 94.2002 96.5303c-1.37402 5.39062 -2.05469 10.9785 -2.05469 16.7939
-c0 37.5967 30.5234 68.1201 68.1201 68.1201c15.3838 0 29.583 -5.11035 40.9912 -13.7246c20.542 59.582 77.085 102.308 143.607 102.308c72.1562 0 132.629 -50.417 148.085 -117.914c0.107422 -0.513672 0.164062 -1.03906 0.164062 -1.58398v-0.046875
-c0 -0.0332031 -0.00292969 -0.0683594 -0.00292969 -0.101562c0 -0.998047 -0.18457 -1.9541 -0.521484 -2.83496l-13.2861 -34.542c-10.4756 -27.21 -40.3906 -49.5234 -68.0215 -50.7842l-232.94 -2.93555c-2.48145 -0.173828 -4.5625 -1.82227 -5.36035 -4.07617
-c-0.178711 -0.493164 -0.275391 -1.03223 -0.275391 -1.58691c0 -0.945312 0.283203 -1.8252 0.768555 -2.55957c0.8125 -1.14258 2.13379 -1.89355 3.63281 -1.92676zM513.856 226.9c69.668 0 126.144 -56.2002 126.147 -125.533
-c0 -0.0458984 -0.0175781 -0.0644531 -0.0175781 -0.110352c0 -11.7441 -1.62598 -23.1123 -4.66406 -33.8896c-0.571289 -1.94629 -2.37012 -3.37012 -4.5 -3.37012h-0.0390625h-175.91c-0.0478516 0 -0.0898438 0.0166016 -0.135742 0.0166016
-c-1.44727 0.0595703 -2.60449 1.25391 -2.60449 2.71484c0 0.339844 0.0634766 0.666016 0.176758 0.96582l3.69531 9.60547c10.4766 27.21 40.3916 49.5146 68.1455 50.7842l51.125 2.93945c2.47559 0.179688 4.55078 1.82617 5.35059 4.07422
-c0.177734 0.492188 0.274414 1.03027 0.274414 1.58301c0 0.957031 -0.291016 1.84766 -0.788086 2.58594c-0.785156 1.11035 -2.06152 1.84375 -3.51074 1.89453l-49.1992 2.93848c-12.1846 0.577148 -22.2188 5.5 -28.2383 13.9004
-c-6.54883 9.10352 -8 21.4902 -4.09961 34.8896l9.07617 31.1934c0.447266 1.45508 1.75391 2.53613 3.32422 2.65332c2.12012 0.101562 4.25 0.164062 6.3916 0.164062z" />
-    <glyph glyph-name="guilded" unicode="&#xe07e;" 
-d="M443.427 384c0.00195312 -0.518555 0.0253906 -0.367188 0.0253906 -0.885742c0 -29.1934 -2.00293 -57.9229 -5.87891 -86.0576h-336.147s0.366211 -52.0498 27.0918 -105.883c27.458 -51.8174 65.3164 -85.1025 96.5488 -98.3623
-c32.2695 15.082 63.4434 41.2695 80.4561 69.4824h-88.5898c-22.9229 18.998 -40.96 50.5146 -45.0996 86.9443h259.889c-12.8154 -58.5713 -40.0088 -111.838 -65.916 -145.762c-35.8154 -46.7773 -84.2695 -82.8105 -140.55 -103.477
-c-1.25586 0 -113.21 33.8652 -177.267 161.642c-21.2266 42.2988 -43.418 119.099 -43.418 222.358h438.855z" />
-    <glyph glyph-name="hive" unicode="&#xe07f;" horiz-adv-x="512" 
-d="M260.353 193.122c0.191406 -0.329102 0.300781 -0.716797 0.300781 -1.12402c0 -0.404297 -0.107422 -0.783203 -0.294922 -1.11133l-127.412 -221.777c-0.380859 -0.666992 -1.09473 -1.11621 -1.91602 -1.11621c-0.818359 0 -1.53223 0.445312 -1.91406 1.10645
-l-128.816 221.778c-0.189453 0.328125 -0.297852 0.713867 -0.297852 1.12012s0.108398 0.787109 0.297852 1.11523l127.409 221.777c0.380859 0.666016 1.09473 1.11523 1.91602 1.11523c0.817383 0 1.53125 -0.445312 1.91309 -1.10547zM299.431 218.835l-110.624 193.824
-c-0.189453 0.327148 -0.298828 0.709961 -0.298828 1.11523c0 1.21973 0.983398 2.21094 2.19922 2.22559h66.5078c0.81543 -0.00195312 1.52539 -0.447266 1.90039 -1.11133l110.625 -193.823c0.189453 -0.328125 0.298828 -0.709961 0.298828 -1.11523
-c0 -1.21973 -0.983398 -2.21191 -2.19922 -2.22656h-66.5088c-0.81543 0.00292969 -1.52441 0.448242 -1.90039 1.11133zM511.7 193.114c0.1875 -0.328125 0.294922 -0.711914 0.294922 -1.11621c0 -0.405273 -0.107422 -0.78418 -0.294922 -1.1123l-126.808 -221.773
-c-0.376953 -0.664062 -1.08887 -1.11035 -1.90527 -1.1123h-66.6006c-1.21875 0.0117188 -2.20312 1.00684 -2.20312 2.22852c0 0.404297 0.108398 0.78418 0.297852 1.11133l126.171 220.66l-126.168 220.66c-0.189453 0.327148 -0.298828 0.708984 -0.298828 1.11426
-c0 1.2207 0.985352 2.21387 2.2041 2.22559h66.6006c0.818359 -0.000976562 1.53125 -0.447266 1.91016 -1.1123zM366.016 163.083c1.2168 -0.0136719 2.19922 -1.00879 2.19922 -2.22852c0 -0.405273 -0.108398 -0.785156 -0.297852 -1.1123l-108.8 -190.631
-c-0.375 -0.664062 -1.08496 -1.10938 -1.90039 -1.11133h-66.5088c-1.21582 0.0146484 -2.19824 1.00879 -2.19824 2.22852c0 0.405273 0.108398 0.785156 0.297852 1.1123l108.801 190.631c0.374023 0.664062 1.08398 1.10938 1.89941 1.11133h66.5078z" />
-    <glyph glyph-name="innosoft" unicode="&#xe080;" 
-d="M422.559 288.29l0.00292969 -190.955c0.0253906 -12.4102 -5.87793 -22.8965 -16.623 -29.5283l-164.527 -94.9951c-5.08008 -3.04102 -11.0938 -4.79004 -17.4404 -4.79004c-6.11523 0 -11.8545 1.62402 -16.8096 4.46387l-118.794 68.583l247.049 142.627v-56
-l-150.051 -86.627l32.7227 -18.9004c1.74805 -0.97168 3.78613 -1.52441 5.92676 -1.52441c2.18457 0 4.23633 0.576172 6.01074 1.58691l138.111 79.7441c3.54883 2.08008 5.91992 5.92578 5.91992 10.332v0.0361328v138.281l-308.407 -178.066
-c-3.94629 -2.25293 -8.57129 -3.54102 -13.4365 -3.54102c-4.83301 0 -9.37207 1.27051 -13.2998 3.49609c-8.39453 4.75586 -13.3037 13.293 -13.4736 23.4287v191.5c0.518555 12.7334 6.65527 23.0039 17.2891 29.124l164.601 95.0254
-c11.5 5.98535 22.8076 5.85938 33.7998 -0.269531l118.513 -68.4072l-247.061 -142.637v56l150.062 86.6367l-32.6553 18.8525c-1.76367 0.998047 -3.82715 1.56738 -5.99609 1.56738c-2.15137 0 -4.17285 -0.55957 -5.92578 -1.54199l-138.076 -79.7129
-c-3.60352 -2.04785 -6.02734 -5.90723 -6.04688 -10.3398v-138.387l308.539 178.142c3.88281 2.24414 8.44531 3.5293 13.25 3.5293c4.70801 0 9.13086 -1.23438 12.9609 -3.39648c8.16406 -4.63184 13.6914 -13.3291 13.8652 -23.3369z" />
-    <glyph glyph-name="instalod" unicode="&#xe081;" horiz-adv-x="512" 
-d="M153.384 -32l50.8447 146.789l298.325 57.4463l-115.44 -204.235h-233.729zM504.726 207.922l-144.495 -27.8223l-204.562 235.9h231.444zM124.386 399.191l101.241 -116.752l-102.391 -295.594l-115.962 205.154z" />
-    <glyph glyph-name="octopus-deploy" unicode="&#xe082;" horiz-adv-x="512" 
-d="M455.6 98.7998c12.4395 -10.5996 42.6348 -26.4775 42.5244 -45.2666c-0.15332 -24.6084 -48.4248 5.24121 -53.8184 9.51953c6.13965 -10.7275 66.998 -74.1787 28.2627 -78.6943c-35.6562 -4.1582 -67.1406 45.6416 -88.5615 67.0225
-c-36 35.9082 -29.7373 -43.5332 -29.8994 -59.9443c-0.257812 -25.9082 -18.5586 -78.4209 -51.4121 -44.2207c-27.1387 28.2314 -16.873 73.2607 -35.7383 104.622c-20.6641 34.3535 -55.0361 -34.3535 -63.627 -46.9258
-c-9.59668 -14.042 -57.6094 -82.041 -76.709 -45.8125c-15.499 29.4004 9.2793 75.5127 21.4629 102.103c-4.44336 -9.65723 -35.9297 -23.9414 -45.1299 -28.5879c-20.7871 -10.4971 -41.8867 -16.7256 -65.2646 -15.0449
-c-27.8916 2.00098 -38.3789 11.6572 8.42773 41.8574c38.5615 24.8389 83.8613 67.4209 66.6621 117.582c-9.37305 27.3301 -22.3574 50.7568 -24.0898 80.2998c-0.209961 3.56152 -0.25 7.08008 -0.25 10.6924c0 22.0957 3.9707 43.2715 11.2373 62.8516
-c34.5752 92.8066 137.363 136.747 230.253 108.848c86.0371 -25.8398 145.23 -125.74 109.575 -212.79c-20.5752 -50.2334 -29.7959 -89.0205 16.0947 -128.11z" />
-    <glyph glyph-name="perbyte" unicode="&#xe083;" 
-d="M305.314 163.422c15.9307 0.000976562 28.5732 -4.5 37.9277 -13.5059s14.0322 -20.7842 14.0322 -35.335c0 -14.8936 -4.58984 -26.9307 -13.7705 -36.1113c-9.17969 -9.17969 -21.9111 -13.7695 -38.1934 -13.7695h-58.7109v98.7217h58.7148zM149.435 319.301
-c15.9346 0.00488281 28.5791 -4.49609 37.9316 -13.5039s14.0283 -20.7871 14.0283 -35.3379c0 -14.8896 -4.58984 -26.9258 -13.7695 -36.1084c-9.17969 -9.18164 -21.9102 -13.7725 -38.1904 -13.7725h-58.7109v98.7227h58.7109zM366.648 416.002
-c22.4385 -0.0253906 41.5996 -7.98145 57.4854 -23.8672s23.8418 -35.0479 23.8672 -57.4854v-285.296c-0.0253906 -22.4375 -7.98145 -41.5996 -23.8672 -57.4854s-35.0479 -23.8418 -57.4854 -23.8672h-285.295c-22.4385 0.0253906 -41.6006 7.98145 -57.4863 23.8672
-s-23.8418 35.0479 -23.8672 57.4863v285.296c0.0253906 22.4375 7.98145 41.5996 23.8672 57.4854s35.0479 23.8408 57.4863 23.8662h285.295zM430.282 49.3535l-0.000976562 285.296c-0.0195312 17.5518 -6.24219 32.54 -18.668 44.9658s-27.4141 18.6484 -44.9648 18.668
-h-285.295c-17.5508 -0.0195312 -32.5391 -6.24219 -44.9648 -18.668s-18.6484 -27.4141 -18.668 -44.9658v-285.296c0.0195312 -17.5508 6.24219 -32.5391 18.668 -44.9648s27.4141 -18.6484 44.9648 -18.668h285.295c17.5518 0.0195312 32.54 6.24219 44.9658 18.668
-s18.6484 27.4141 18.668 44.9648zM305.313 319.301c15.9307 0.00488281 28.5732 -4.49609 37.9277 -13.5039s14.0322 -20.7871 14.0322 -35.3379c0 -14.8896 -4.58984 -26.9258 -13.7705 -36.1084c-9.17969 -9.18164 -21.9111 -13.7725 -38.1934 -13.7725h-58.7109v98.7227
-h58.7148z" />
-    <glyph glyph-name="uncharted" unicode="&#xe084;" 
-d="M171.73 215.187c-0.0605469 -0.00195312 -0.12207 -0.000976562 -0.183594 -0.000976562c-0.673828 0 -1.3125 0.148438 -1.88672 0.414062l-115.933 67.9004v-85.2891c-0.0830078 -2.71289 -1.16895 -5.18555 -2.89941 -7.03906
-c-1.6748 -1.54297 -3.91113 -2.4873 -6.36621 -2.4873c-0.0859375 0 -0.172852 0.000976562 -0.258789 0.00390625c-0.146484 -0.0078125 -0.296875 -0.00585938 -0.444336 -0.00585938c-1.65332 0 -3.2002 0.455078 -4.52344 1.24707l-22.3584 12.835
-c-2.9541 1.50684 -4.9707 4.57031 -4.9707 8.1123c0 0.0566406 0.000976562 0.112305 0.00195312 0.168945v115.107c0.118164 3.54102 2.08105 6.61523 4.96875 8.28027l100.2 57.9668c1.40625 0.787109 3.04688 1.23535 4.77148 1.23535s3.3457 -0.448242 4.75098 -1.23535
-l22.3584 -12.8389c2.9541 -1.50586 4.96973 -4.56934 4.96973 -8.11035c0 -0.0566406 -0.000976562 -0.113281 -0.00195312 -0.169922c-0.117188 -3.54199 -2.08008 -6.61523 -4.96777 -8.28125l-74.5293 -43.4727l116.757 -68.3184
-c1.16016 -0.680664 1.96191 -1.89941 2.07129 -3.31152c0 -1.65723 -0.414062 -3.31348 -1.65723 -4.1416c-7.34473 -6.5459 -12.6475 -15.3301 -14.8994 -25.2559c-0.810547 -1.94629 -2.72949 -3.31348 -4.96777 -3.31348h-0.00195312zM323.272 70.2695
-c4.96777 0 9.52734 -4.55469 10.3506 -9.1084v-26.085c-0.117188 -3.54199 -2.08105 -6.61523 -4.96777 -8.28125l-100.2 -57.5527c-1.48633 -0.772461 -3.18359 -1.22363 -4.96875 -1.24219c-0.146484 -0.00683594 -0.296875 -0.00488281 -0.444336 -0.00488281
-c-1.65332 0 -3.2002 0.455078 -4.52441 1.24707l-100.199 57.5527c-2.95508 1.50586 -4.9707 4.56934 -4.9707 8.11035c0 0.0576172 0 0.114258 0.000976562 0.170898v26.085c0.0585938 5.22852 4.29492 9.46484 9.52344 9.52246
-c0.146484 0.0078125 0.296875 0.00585938 0.444336 0.00585938c1.65332 0 3.20117 -0.456055 4.52441 -1.24707l74.5293 -43.0615v133.323c0.0615234 2.62891 2.21387 4.74609 4.85742 4.74609c0.469727 0 0.922852 -0.0673828 1.35254 -0.191406
-c4.39453 -1.18066 8.99414 -1.80664 13.7588 -1.80664c5.29102 0 10.4023 0.776367 15.2256 2.2207c3.31055 1.24512 6.21094 -1.65527 6.21094 -4.55469v-134.152l74.5273 43.0625c1.50684 0.730469 3.2002 1.17383 4.96973 1.24121zM286.007 370
-c-12.6943 0 -23 10.3057 -23 23s10.3057 23 23 23s23 -10.3057 23 -23s-10.3057 -23 -23 -23zM349.634 380.086c12.6943 0 23 -10.3057 23 -23s-10.3057 -23 -23 -23c-12.6934 0 -23 10.3057 -23 23s10.3066 23 23 23zM412.816 296.4c-12.6943 0 -23 10.3057 -23 23
-c0 12.6934 10.3057 23 23 23c12.6934 0 23 -10.3066 23 -23c0 -12.6943 -10.3066 -23 -23 -23zM349.634 305.6c12.6943 0 23 -10.3057 23 -23c0 -12.6934 -10.3057 -23 -23 -23c-12.6934 0 -23 10.3066 -23 23c0 12.6943 10.3066 23 23 23zM286.007 222.356
-c-12.6943 0 -23 10.3018 -23 22.9951v0.00488281c0 12.6934 10.3057 23 23 23s23 -10.3066 23 -23c0 -12.6943 -10.3057 -23 -23 -23zM223.933 185.998c-12.6934 0 -23 10.3018 -23 22.9961v0.00390625c0 12.6943 10.3066 23 23 23c12.6943 0 23 -10.3057 23 -23
-s-10.3057 -23 -23 -23zM412.816 268.356c12.6924 0 22.9971 -10.3086 23 -23c0 -12.6943 -10.3066 -23 -23 -23c-12.6943 0 -23 10.3057 -23 23c0 12.6934 10.3057 23 23 23zM412.816 196.084c12.6924 0 22.9971 -10.3076 23 -23c0 -12.6943 -10.3066 -23 -23 -23
-c-12.6943 0 -23 10.3057 -23 23s10.3057 23 23 23z" />
-    <glyph glyph-name="watchman-monitoring" unicode="&#xe087;" horiz-adv-x="512" 
-d="M256 432c132.548 0 240 -107.452 240 -240s-107.452 -240 -240 -240s-240 107.452 -240 240s107.452 240 240 240zM121.69 18.8779l27.6846 204.861l-9.46777 7.39941c-2.98242 2.34082 -4.89062 5.9668 -4.89062 10.0479
-c0 0.100586 0.000976562 0.201172 0.00292969 0.301758c0 7.04883 0.144531 19.5488 0.144531 19.5488l13.9434 2.0127l0.120117 10.9668l-102.899 -17.8945c-6.20508 -20.251 -9.58691 -41.7412 -9.58691 -64.0137v-0.108398c0 -70.3223 33.3145 -132.972 84.9492 -173.122
-zM227.382 302.148l0.0400391 -3.61816l193.512 37.7002c-40.1152 46.0273 -99.1426 75.0244 -164.934 75.0244c-74.4863 0 -140.374 -37.3623 -180.018 -94.2998l73.5068 -19.1758l0.0478516 4.36914l-8.48145 7.61719s-6.93359 5.38086 0.144531 9.34473
-c7.18652 4.02539 39.5283 34.5 39.5283 34.5c7.20312 7.34668 10.1123 5.47656 15.4609 0c0 0 32.3418 -30.4766 39.5293 -34.5c7.07715 -3.96387 0.143555 -9.34473 0.143555 -9.34473zM261.445 -27.1211c118.386 2.90918 213.813 100.047 213.813 219.121
-c-0.0107422 17.2881 -2.04297 33.9951 -5.85059 50.1299l-241.711 31.3916l0.116211 -10.4746l13.9424 -2.0127s0.144531 -12.5049 0.144531 -19.5488c0.00195312 -0.100586 0.0126953 -0.19043 0.0126953 -0.290039c0 -4.08203 -1.91797 -7.71973 -4.90137 -10.0596
-l-9.4668 -7.39941z" />
-    <glyph glyph-name="wodu" unicode="&#xe088;" horiz-adv-x="640" 
-d="M178.414 108.294h-37.3145l-28.9336 116.231h-0.477539l-28.4609 -116.231h-38.0273l-45.2002 170.76h37.5479l27.0264 -116.23h0.477539l29.6553 116.23h35.1572l29.1777 -117.667h0.479492l27.9785 117.667h36.8311zM271.4 235.287
-c38.9834 0 64.0996 -25.8281 64.0996 -65.291c0 -39.2217 -25.1113 -65.0498 -64.0996 -65.0498c-38.7432 0 -63.8555 25.8281 -63.8555 65.0498c0.00195312 39.4629 25.1143 65.291 63.8555 65.291zM271.4 130.534c23.1992 0 30.1328 19.8516 30.1328 39.4619
-c0 19.8516 -6.93457 39.7002 -30.1328 39.7002c-27.7002 0 -29.8945 -19.8506 -29.8945 -39.7002c0.00195312 -19.6104 6.9375 -39.4619 29.8945 -39.4619zM435.084 124.078h-0.477539c-7.89355 -13.3926 -21.7656 -19.1318 -37.5488 -19.1318
-c-37.3096 0 -55.4844 32.0449 -55.4844 66.2461c0 33.2422 18.415 64.0947 54.7666 64.0947c14.5889 0 28.9385 -6.21777 36.8311 -18.416h0.240234v62.1826h33.96v-170.76h-32.2871v15.7842zM405.428 209.7c-22.2393 0 -29.8936 -19.1338 -29.8936 -39.4629
-c0 -19.3711 8.84766 -39.7002 29.8936 -39.7002c22.4824 0 29.1787 19.6133 29.1787 39.9395c0 20.0879 -7.1748 39.2236 -29.1787 39.2236zM592.96 108.294h-32.2871v17.2188h-0.717773c-8.60938 -13.8701 -23.4365 -20.5664 -37.7861 -20.5664
-c-36.1133 0 -45.2002 20.3281 -45.2002 50.9404v76.0527h33.959v-69.8398c0 -20.3281 5.97949 -30.3721 21.7656 -30.3721c18.415 0 26.3057 10.2832 26.3057 35.3936v64.8184h33.9609v-123.646zM602.453 145.124h37.5469v-36.8301h-37.5469v36.8301z" />
-    <glyph glyph-name="twitter-square" unicode="&#xf081;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM351.1 257.2c12.8008 9.2998 24 20.8994 32.9004 34c-11.7998 -5.10059 -24.5996 -8.7998 -37.7998 -10.2002
-c13.5996 8.09961 23.8994 20.9004 28.7998 36.0996c-12.5996 -7.5 -26.7998 -13 -41.5996 -15.7998c-12 12.7998 -29 20.7002 -47.9004 20.7002c-40 0 -73.2998 -36.0996 -64 -80.5996c-54.4004 2.7998 -102.9 28.7998 -135.2 68.5996
-c-5.7002 -9.7002 -8.89941 -20.9004 -8.89941 -33.0996c0 -0.0371094 -0.0664062 -0.0322266 -0.0664062 -0.0683594c0 -22.749 11.6309 -42.8018 29.2656 -54.5322c-10.6992 0.400391 -20.8994 3.40039 -29.5996 8.2998v-0.799805c0 -31.8994 22.5 -58.2998 52.5 -64.3994
-c-10.4004 -2.7002 -19.5 -2.7002 -29.5996 -1.2002c8.2998 -26 32.5 -44.9004 61.2998 -45.5c-22.5 -17.6006 -50.7002 -28 -81.4004 -28c-5.39941 0 -10.5 0.200195 -15.7998 0.799805c29 -18.5996 63.5 -29.4004 100.7 -29.4004c120.6 0 186.6 99.9004 186.6 186.601
-c0 2.7998 0 5.7002 -0.200195 8.5z" />
-    <glyph glyph-name="facebook-square" unicode="&#xf082;" 
-d="M400 416c26.4922 0 48 -21.5078 48 -48v-352c0 -26.4922 -21.5078 -48 -48 -48h-137.25v152.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4199 38.7305h31.2705v61s-28.3809 4.83984 -55.5205 4.83984
-c-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63v-152.31h-137.25c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352z" />
-    <glyph glyph-name="linkedin" unicode="&#xf08c;" 
-d="M416 416c17.5996 0 32 -14.5 32 -32.2998v-383.4c0 -17.7998 -14.4004 -32.2998 -32 -32.2998h-384.1c-17.6006 0 -31.9004 14.5 -31.9004 32.2998v383.4c0 17.7998 14.2998 32.2998 31.9004 32.2998h384.1zM135.4 32h0.0996094v213.8h-66.5v-213.8h66.4004zM102.2 275
-c21.2998 0 38.5 17.2002 38.5 38.5c0 21.2002 -17.2998 38.5 -38.5 38.5c-21.2998 0 -38.5 -17.2998 -38.5 -38.5s17.2002 -38.5 38.5 -38.5zM384.3 32v117.2c0 57.5996 -12.5 101.899 -79.7002 101.899c-32.2998 0 -54 -17.6992 -62.8994 -34.5h-0.900391v29.2002h-63.7002
-v-213.8h66.4004v105.8c0 27.9004 5.2998 54.9004 39.9004 54.9004c34 0 34.5 -31.9004 34.5 -56.7002v-104h66.3994z" />
-    <glyph glyph-name="github-square" unicode="&#xf092;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM277.3 32.2998c66 22 110.8 84.9004 110.7 158.3c0 91.8008 -74.4004 161.5 -166.2 161.5s-162 -69.6992 -162 -161.5
-c0 -73.3994 46.2002 -136.199 112.2 -158.3c8.5 -1.5 11.5 3.7002 11.5 8c0 4.10059 -0.200195 26.7002 -0.200195 40.6006c0 0 -46.3994 -10 -56.0996 19.6992c0 0 -7.60059 19.2002 -18.4004 24.2002c0 0 -15.0996 10.4004 1.10059 10.2002
-c0 0 16.3994 -1.2998 25.5 -17.0996c14.5 -25.6006 38.7998 -18.2002 48.2998 -13.9004c1.5 10.5996 5.7998 18 10.5996 22.2998c-37 4.10059 -74.2998 9.5 -74.2998 73.1006c0 18.1992 5 27.2998 15.5996 39c-1.7998 4.39941 -7.39941 22.0996 1.7002 45
-c13.9004 4.2998 45.7002 -17.9004 45.7002 -17.9004c13.2002 3.7002 27.5 5.59961 41.5996 5.59961c14.1006 0 28.4004 -1.89941 41.6006 -5.59961c0 0 31.7998 22.2002 45.7002 17.9004c9.09961 -23 3.39941 -40.7002 1.69922 -45
-c10.6006 -11.7002 17.1006 -20.8008 17.1006 -39c0 -63.9004 -39 -69 -76 -73.1006c6.09961 -5.2002 11.2998 -15.0996 11.2998 -30.7002c0 -22.2998 -0.200195 -49.8994 -0.200195 -55.2998c0 -4.2998 3.10059 -9.5 11.5 -8zM179.2 93.4004
-c-1.90039 -0.400391 -3.7002 0.399414 -3.90039 1.69922c-0.200195 1.5 1.10059 2.80078 3 3.2002c1.90039 0.200195 3.7002 -0.599609 3.90039 -1.89941c0.299805 -1.30078 -1 -2.60059 -3 -3zM169.7 94.2998c0 1.5 -1.7998 2.60059 -3.7002 2.40039
-c-2 0 -3.5 -1.10059 -3.5 -2.40039c0 -1.5 1.5 -2.59961 3.7002 -2.39941c2 0 3.5 1.09961 3.5 2.39941zM156 95.4004c-0.400391 -1.30078 -2.40039 -1.90039 -4.09961 -1.30078c-1.90039 0.400391 -3.2002 1.90039 -2.80078 3.2002
-c0.400391 1.2998 2.40039 1.90039 4.10059 1.5c2 -0.599609 3.2998 -2.09961 2.7998 -3.39941zM143.7 100.8c0.899414 0.799805 0.399414 2.7998 -0.900391 4.10059c-1.5 1.5 -3.39941 1.69922 -4.2998 0.599609c-1 -0.900391 -0.599609 -2.7998 0.900391 -4.09961
-c1.5 -1.5 3.39941 -1.7002 4.2998 -0.600586zM134.6 109.9c1.10059 0.799805 1.10059 2.59961 0 4.09961c-0.899414 1.5 -2.59961 2.2002 -3.69922 1.2998c-1.10059 -0.700195 -1.10059 -2.39941 0 -3.89941c1.09961 -1.5 2.7998 -2.10059 3.69922 -1.5zM128.1 119.6
-c0.900391 0.700195 0.700195 2.2002 -0.399414 3.5c-1.10059 1 -2.60059 1.5 -3.5 0.600586c-0.900391 -0.700195 -0.700195 -2.2002 0.399414 -3.5c1.10059 -1 2.60059 -1.5 3.5 -0.600586zM121.4 127c0.399414 0.799805 -0.200195 1.90039 -1.5 2.59961
-c-1.30078 0.5 -2.40039 0.200195 -2.80078 -0.399414c-0.399414 -0.900391 0.200195 -2 1.5 -2.60059c1.10059 -0.699219 2.40039 -0.5 2.80078 0.400391z" />
-    <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="512" 
-d="M459.37 296.284c0.325195 -4.54785 0.325195 -9.09766 0.325195 -13.6455c0 -138.72 -105.583 -298.558 -298.559 -298.558c-59.4521 0 -114.68 17.2188 -161.137 47.1055c8.44727 -0.973633 16.5684 -1.29883 25.3398 -1.29883
-c49.0547 0 94.2129 16.5684 130.274 44.832c-46.1318 0.975586 -84.792 31.1885 -98.1123 72.7725c6.49805 -0.974609 12.9951 -1.62402 19.8184 -1.62402c9.4209 0 18.8428 1.2998 27.6133 3.57324c-48.0811 9.74707 -84.1426 51.9795 -84.1426 102.984v1.29883
-c13.9688 -7.79688 30.2139 -12.6699 47.4307 -13.3184c-28.2637 18.8428 -46.7803 51.0049 -46.7803 87.3906c0 19.4922 5.19629 37.3604 14.2939 52.9541c51.6543 -63.6748 129.3 -105.258 216.364 -109.807c-1.62402 7.79688 -2.59863 15.918 -2.59863 24.04
-c0 57.8271 46.7822 104.934 104.934 104.934c30.2139 0 57.502 -12.6699 76.6709 -33.1367c23.7148 4.54785 46.4551 13.3193 66.5986 25.3398c-7.79785 -24.3662 -24.3662 -44.833 -46.1318 -57.8271c21.1172 2.27344 41.584 8.12207 60.4258 16.2432
-c-14.292 -20.791 -32.1611 -39.3086 -52.6279 -54.2529z" />
-    <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="512" 
-d="M504 192c0 -123.78 -90.6904 -226.38 -209.25 -245v173.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4102 38.7305h31.2803v61s-28.3809 4.83984 -55.5205 4.83984c-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63
-v-173.31c-118.56 18.6201 -209.25 121.22 -209.25 245c0 137 111 248 248 248s248 -111 248 -248z" />
-    <glyph glyph-name="github" unicode="&#xf09b;" horiz-adv-x="496" 
-d="M165.9 50.5996c0 -2 -2.30078 -3.59961 -5.2002 -3.59961c-3.2998 -0.299805 -5.60059 1.2998 -5.60059 3.59961c0 2 2.30078 3.60059 5.2002 3.60059c3 0.299805 5.60059 -1.2998 5.60059 -3.60059zM134.8 55.0996c0.700195 2 3.60059 3 6.2002 2.30078
-c3 -0.900391 4.90039 -3.2002 4.2998 -5.2002c-0.599609 -2 -3.59961 -3 -6.2002 -2c-3 0.599609 -5 2.89941 -4.2998 4.89941zM179 56.7998c2.90039 0.299805 5.59961 -1 5.90039 -2.89941c0.299805 -2 -1.7002 -3.90039 -4.60059 -4.60059
-c-3 -0.700195 -5.59961 0.600586 -5.89941 2.60059c-0.300781 2.2998 1.69922 4.19922 4.59961 4.89941zM244.8 440c138.7 0 251.2 -105.3 251.2 -244c0 -110.9 -67.7998 -205.8 -167.8 -239c-12.7002 -2.2998 -17.2998 5.59961 -17.2998 12.0996
-c0 8.2002 0.299805 49.9004 0.299805 83.6006c0 23.5 -7.7998 38.5 -17 46.3994c55.8994 6.30078 114.8 14 114.8 110.5c0 27.4004 -9.7998 41.2002 -25.7998 58.9004c2.59961 6.5 11.0996 33.2002 -2.60059 67.9004c-20.8994 6.59961 -69 -27 -69 -27
-c-20 5.59961 -41.5 8.5 -62.7998 8.5s-42.7998 -2.90039 -62.7998 -8.5c0 0 -48.0996 33.5 -69 27c-13.7002 -34.6006 -5.2002 -61.4004 -2.59961 -67.9004c-16 -17.5996 -23.6006 -31.4004 -23.6006 -58.9004c0 -96.1992 56.4004 -104.3 112.3 -110.5
-c-7.19922 -6.59961 -13.6992 -17.6992 -16 -33.6992c-14.2998 -6.60059 -51 -17.7002 -72.8994 20.8994c-13.7002 23.7998 -38.6006 25.7998 -38.6006 25.7998c-24.5 0.300781 -1.59961 -15.3994 -1.59961 -15.3994c16.4004 -7.5 27.7998 -36.6006 27.7998 -36.6006
-c14.7002 -44.7998 84.7002 -29.7998 84.7002 -29.7998c0 -21 0.299805 -55.2002 0.299805 -61.3994c0 -6.5 -4.5 -14.4004 -17.2998 -12.1006c-99.7002 33.4004 -169.5 128.3 -169.5 239.2c0 138.7 106.1 244 244.8 244zM97.2002 95.0996
-c1.2998 1.30078 3.59961 0.600586 5.2002 -1c1.69922 -1.89941 2 -4.19922 0.699219 -5.19922c-1.2998 -1.30078 -3.59961 -0.600586 -5.19922 1c-1.7002 1.89941 -2 4.19922 -0.700195 5.19922zM86.4004 103.2c0.699219 1 2.2998 1.2998 4.2998 0.700195
-c2 -1 3 -2.60059 2.2998 -3.90039c-0.700195 -1.40039 -2.7002 -1.7002 -4.2998 -0.700195c-2 1 -3 2.60059 -2.2998 3.90039zM118.8 67.5996c1.2998 1.60059 4.2998 1.30078 6.5 -1c2 -1.89941 2.60059 -4.89941 1.2998 -6.19922
-c-1.2998 -1.60059 -4.19922 -1.30078 -6.5 1c-2.2998 1.89941 -2.89941 4.89941 -1.2998 6.19922zM107.4 82.2998c1.59961 1.2998 4.19922 0.299805 5.59961 -2c1.59961 -2.2998 1.59961 -4.89941 0 -6.2002c-1.2998 -1 -4 0 -5.59961 2.30078
-c-1.60059 2.2998 -1.60059 4.89941 0 5.89941z" />
-    <glyph glyph-name="pinterest" unicode="&#xf0d2;" horiz-adv-x="496" 
-d="M496 192c0 -137 -111 -248 -248 -248c-25.5996 0 -50.2002 3.90039 -73.4004 11.0996c10.1006 16.5 25.2002 43.5 30.8008 65c3 11.6006 15.3994 59 15.3994 59c8.10059 -15.3994 31.7002 -28.5 56.7998 -28.5c74.8008 0 128.7 68.8008 128.7 154.301
-c0 81.8994 -66.8994 143.199 -152.899 143.199c-107 0 -163.9 -71.7998 -163.9 -150.1c0 -36.4004 19.4004 -81.7002 50.2998 -96.0996c4.7002 -2.2002 7.2002 -1.2002 8.2998 3.2998c0.800781 3.39941 5 20.2998 6.90039 28.0996
-c0.599609 2.5 0.299805 4.7002 -1.7002 7.10059c-10.0996 12.5 -18.2998 35.2998 -18.2998 56.5996c0 54.7002 41.4004 107.6 112 107.6c60.9004 0 103.6 -41.5 103.6 -100.899c0 -67.1006 -33.8994 -113.601 -78 -113.601c-24.2998 0 -42.5996 20.1006 -36.6992 44.8008
-c7 29.5 20.5 61.2998 20.5 82.5996c0 19 -10.2002 34.9004 -31.4004 34.9004c-24.9004 0 -44.9004 -25.7002 -44.9004 -60.2002c0 -22 7.40039 -36.7998 7.40039 -36.7998s-24.5 -103.801 -29 -123.2c-5 -21.4004 -3 -51.6006 -0.900391 -71.2002
-c-92.1992 36.0996 -157.6 125.9 -157.6 231c0 137 111 248 248 248s248 -111 248 -248z" />
-    <glyph glyph-name="pinterest-square" unicode="&#xf0d3;" 
-d="M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-245.6c9.7998 16.4004 22.3994 40 27.3994 59.2998c3 11.5 15.2998 58.4004 15.2998 58.4004c8 -15.2998 31.4004 -28.2002 56.3008 -28.2002c74.0996 0 127.399 68.0996 127.399 152.7
-c0 81.0996 -66.2002 141.8 -151.399 141.8c-106 0 -162.2 -71.0996 -162.2 -148.6c0 -36 19.2002 -80.8008 49.7998 -95.1006c4.7002 -2.2002 7.09961 -1.2002 8.2002 3.2998c0.799805 3.40039 5 20.1006 6.7998 27.8008c0.599609 2.5 0.299805 4.59961 -1.7002 7
-c-10.0996 12.2998 -18.2998 34.8994 -18.2998 56c0 54.1992 41 106.6 110.9 106.6c60.2998 0 102.6 -41.0996 102.6 -99.9004c0 -66.3994 -33.5 -112.399 -77.2002 -112.399c-24.0996 0 -42.0996 19.8994 -36.3994 44.3994c6.89941 29.2002 20.2998 60.7002 20.2998 81.8008
-c0 53 -75.5 45.6992 -75.5 -25c0 -21.7002 7.2998 -36.5 7.2998 -36.5c-31.4004 -132.801 -36.0996 -134.5 -29.5996 -192.601l2.19922 -0.799805h-88.5996c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48z" />
-    <glyph glyph-name="google-plus-square" unicode="&#xf0d4;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM164 92c57.7002 0 96 40.5 96 97.5996c0 6.5 -0.599609 11.6006 -1.59961 16.6006h-94.4004v-34.4004h56.9004
-c-2.40039 -14.5996 -17.2002 -43.0996 -56.8008 -43.0996c-34.0996 0 -61.8994 28.2998 -61.8994 63.2002c0 35 27.7998 63.1992 61.8994 63.1992c19.5 0 32.4004 -8.2998 39.8008 -15.3994l27.0996 26.0996c-17.5 16.4004 -40 26.2002 -67 26.2002
-c-55.2998 0 -100 -44.7002 -100 -100s44.7002 -100 100 -100zM384 173.8v29.2002h-29v29h-29.2002v-29h-29v-29.2002h29v-29h29.2002v29h29z" />
-    <glyph glyph-name="google-plus-g" unicode="&#xf0d5;" horiz-adv-x="640" 
-d="M386.061 219.504c1.83398 -9.69238 3.14355 -19.3838 3.14355 -31.9561c0 -109.753 -73.6055 -187.548 -184.404 -187.548c-106.084 0 -192 85.915 -192 192s85.916 192 192 192c51.8643 0 95.083 -18.8594 128.611 -50.292l-52.126 -50.0303
-c-14.1455 13.6211 -39.0283 29.5996 -76.4854 29.5996c-65.4834 0 -118.92 -54.2217 -118.92 -121.277s53.4365 -121.277 118.92 -121.277c75.9609 0 104.514 54.7451 108.965 82.7734h-108.965v66.0088h181.261v-0.000976562zM571.467 213.067h55.7334v-56.001h-55.7334
-v-55.7334h-56.001v55.7334h-55.7324v56.001h55.7324v55.7324h56.001v-55.7324z" />
-    <glyph glyph-name="linkedin-in" unicode="&#xf0e1;" 
-d="M100.28 0h-92.8799v299.1h92.8799v-299.1zM53.79 339.9c-29.7002 0 -53.79 24.5996 -53.79 54.2998c0 29.6875 24.1025 53.79 53.79 53.79s53.79 -24.1025 53.79 -53.79c0 -29.7002 -24.0996 -54.2998 -53.79 -54.2998zM447.9 0h-92.6807v145.6
-c0 34.7002 -0.700195 79.2002 -48.29 79.2002c-48.29 0 -55.6895 -37.7002 -55.6895 -76.7002v-148.1h-92.7803v299.1h89.0801v-40.7998h1.2998c12.4004 23.5 42.6904 48.2998 87.8799 48.2998c94 0 111.28 -61.8994 111.28 -142.3v-164.3h-0.0996094z" />
-    <glyph glyph-name="github-alt" unicode="&#xf113;" horiz-adv-x="480" 
-d="M186.1 119.3c0 -20.8994 -10.8994 -55.0996 -36.6992 -55.0996c-25.8008 0 -36.7002 34.2002 -36.7002 55.0996c0 20.9004 10.8994 55.1006 36.7002 55.1006c25.7998 0 36.6992 -34.2002 36.6992 -55.1006zM480 169.8c0 -31.8994 -3.2002 -65.7002 -17.5 -95
-c-37.9004 -76.5996 -142.1 -74.7998 -216.7 -74.7998c-75.7998 0 -186.2 -2.7002 -225.6 74.7998c-14.6006 29 -20.2002 63.1006 -20.2002 95c0 41.9004 13.9004 81.5 41.5 113.601c-5.2002 15.7998 -7.7002 32.3994 -7.7002 48.7998
-c0 21.5 4.90039 32.2998 14.6006 51.7998c45.2998 0 74.2998 -9 108.8 -36c29 6.90039 58.7998 10 88.7002 10c27 0 54.1992 -2.90039 80.3994 -9.2002c34 26.7002 63 35.2002 107.8 35.2002c9.80078 -19.5 14.6006 -30.2998 14.6006 -51.7998
-c0 -16.4004 -2.60059 -32.7002 -7.7002 -48.2002c27.5 -32.4004 39 -72.2998 39 -114.2zM415.7 119.3c0 43.9004 -26.7002 82.6006 -73.5 82.6006c-18.9004 0 -37 -3.40039 -56 -6c-14.9004 -2.30078 -29.7998 -3.2002 -45.1006 -3.2002
-c-15.1992 0 -30.0996 0.899414 -45.0996 3.2002c-18.7002 2.59961 -37 6 -56 6c-46.7998 0 -73.5 -38.7002 -73.5 -82.6006c0 -87.7998 80.4004 -101.3 150.4 -101.3h48.1992c70.3008 0 150.601 13.4004 150.601 101.3zM333.1 174.4
-c25.8008 0 36.7002 -34.2002 36.7002 -55.1006c0 -20.8994 -10.8994 -55.0996 -36.7002 -55.0996c-25.7998 0 -36.6992 34.2002 -36.6992 55.0996c0 20.9004 10.8994 55.1006 36.6992 55.1006z" />
-    <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="512" 
-d="M461.1 5.2998h-97.3994l51.8994 242.7c2.30078 10.2002 0.900391 19.5 -4.39941 25.7002c-5 6.09961 -13.7002 9.59961 -24.2002 9.59961h-49.2998l-59.5 -278h-97.4004l59.5 278h-83.3994l-59.5 -278h-97.4004l59.5 278l-44.5996 95.4004h372.1
-c39.4004 0 75.2998 -16.2998 98.2998 -44.9004c23.2998 -28.5996 31.7998 -67.3994 23.6006 -105.899z" />
-    <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="384" 
-d="M0 416h384l-34.9004 -395.8l-157.6 -52.2002l-156.6 52.2002zM308.2 288.1l4.39941 47.7002h-241.1l12.7998 -145.6h166.9l-6 -62.2002l-53.7002 -14.5l-53.5 14.5l-3.5 38.0996h-47.7002l6 -75.7998l98.7002 -27.2998h1.09961v0.299805l97.9004 27l13.5996 148.4h-175.6
-l-4.09961 49.3994h183.8z" />
-    <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="512" 
-d="M480 416l-64 -368l-223.3 -80l-192.7 80l19.5996 94.7998h82l-8 -40.5996l116.4 -44.4004l134.1 44.4004l18.8008 97.0996h-333.4l16 82h333.7l10.5 52.7002h-333.4l16.2998 82h407.4z" />
-    <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="384" 
-d="M310.204 205.362c46.0059 -11.0283 74.9971 -38.4443 69.3262 -99.8906c-7.24805 -76.5723 -61.5967 -97.0547 -142.896 -101.467v-68.0049h-48.5273v66.7451c-12.29 0 -25.21 0 -38.4443 0.314453v-67.0596h-48.5283v68.0049s-8.88867 0.31543 -97.3701 0.31543
-l9.76758 57.666c34.7305 -0.614258 50.3301 -3.4209 53.2549 16.0703v217.43c-4.60645 24.5664 -24.709 22.1045 -63.0234 21.4268v51.6777c58.748 -0.275391 79.5283 -0.539062 97.3701 0v79.4092h48.5283v-77.833c12.9189 0.31543 25.8389 0.629883 38.4443 0.629883
-v77.2031h48.5273v-79.4092c62.3926 -5.35547 109.492 -24.5781 114.851 -81.9287c4.09668 -41.9102 -13.5508 -67.1201 -41.2803 -81.2998zM150.608 313.447v-96.7402c27.416 0 113.126 -6.30273 113.126 48.2119c0 57.0352 -85.7109 48.5283 -113.126 48.5283z
-M150.608 61.6709c32.7715 0 133.126 -6.93262 133.127 53.2529c0 62.3936 -100.355 53.2549 -133.127 53.2549v-106.508z" />
-    <glyph glyph-name="youtube" unicode="&#xf167;" horiz-adv-x="576" 
-d="M549.655 323.917c11.4121 -42.8672 11.4121 -132.305 11.4121 -132.305s0 -89.4385 -11.4121 -132.306c-6.28125 -23.6494 -24.7871 -41.5 -48.2842 -47.8203c-42.5908 -11.4863 -213.371 -11.4863 -213.371 -11.4863s-170.78 0 -213.371 11.4863
-c-23.4971 6.32031 -42.0029 24.1709 -48.2842 47.8203c-11.4121 42.8672 -11.4121 132.306 -11.4121 132.306s0 89.4375 11.4121 132.305c6.28125 23.6504 24.7871 42.2754 48.2842 48.5967c42.5908 11.4863 213.371 11.4863 213.371 11.4863s170.781 0 213.371 -11.4863
-c23.4971 -6.32031 42.0029 -24.9463 48.2842 -48.5967zM232.145 110.409l142.739 81.2012l-142.739 81.2051v-162.406z" />
-    <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="384" 
-d="M162.7 238c-1.7998 -3.2998 -25.2002 -44.4004 -70.1006 -123.5c-4.89941 -8.2998 -10.7998 -12.5 -17.6992 -12.5h-65.1006c-7.7002 0 -12.0996 7.5 -8.5 14.4004l69 121.3c0.200195 0 0.200195 0.0996094 0 0.299805l-43.8994 75.5996
-c-4.30078 7.80078 0.299805 14.1006 8.5 14.1006h65.0996c7.2998 0 13.2998 -4.10059 18 -12.2002zM382.6 401.9l-144 -253v-0.300781l91.6006 -166.6c3.89941 -7.09961 0.200195 -14.0996 -8.5 -14.0996h-65.2002c-7.59961 0 -13.5996 4 -18 12.1992l-92.4004 168.5
-c3.30078 5.80078 51.5 90.8008 144.801 255.2c4.59961 8.10059 10.3994 12.2002 17.5 12.2002h65.6992c8 0 12.3008 -6.7002 8.5 -14.0996z" />
-    <glyph glyph-name="xing-square" unicode="&#xf169;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM140.4 127.8c4.89941 0 9.09961 2.90039 12.5996 9.10059c32.0996 56.5 48.7998 85.8994 50.0996 88.1992l-31.8994 55.3008
-c-3.40039 5.7998 -7.7002 8.69922 -12.9004 8.69922h-46.5996c-5.7998 0 -9 -4.5 -6 -10.0996l31.3994 -54c0.100586 -0.0996094 0.100586 -0.200195 0 -0.200195l-49.2998 -86.7002c-2.7002 -5 0.5 -10.2998 6 -10.2998h46.6006zM360.1 341.9
-c2.80078 5.2998 -0.299805 10.0996 -6 10h-46.8994c-5.10059 0 -9.2002 -2.90039 -12.5 -8.7002c-66.6006 -117.4 -101.101 -178.2 -103.4 -182.3l66 -120.301c3.2002 -5.7998 7.40039 -8.69922 12.9004 -8.69922h46.5996c6.10059 0 8.7998 5 6 10.0996l-65.5 119v0.200195z
-" />
-    <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="528" 
-d="M264.4 331.7l-132 -84.2998l132 -84.3008l-132 -84.2998l-132.4 85.1006l132.3 84.2998l-132.3 83.5l132.3 84.2998zM131.6 52.2998l132 84.2998l132 -84.2998l-132 -84.2998zM264.4 163.9l132 84.2998l-132 83.5996l131.3 84.2002l132.3 -84.2998l-132.3 -84.2998
-l132.3 -84.2002l-132.3 -84.2998z" />
-    <glyph glyph-name="stack-overflow" unicode="&#xf16c;" horiz-adv-x="384" 
-d="M290.7 137l-8.2002 -39l-195.7 41l8.2002 39.2998zM341.7 224l-25.5 -30.7998l-153.5 128.3l25.5 30.7998zM310.5 184.3l-16.7998 -36.2998l-181.2 84.5l16.7002 36.5zM262 416l119.3 -160.3l-32 -24l-119.3 160.3zM282.5 88v-39.7002h-200v39.7002h200zM322.2 8v120h40
-v-160h-359.5v160h40v-120h279.5z" />
-    <glyph glyph-name="instagram" unicode="&#xf16d;" 
-d="M224.1 307c63.6006 0 114.9 -51.2998 114.9 -114.9c0 -63.5996 -51.2998 -114.899 -114.9 -114.899c-63.5996 0 -114.899 51.2998 -114.899 114.899c0 63.6006 51.2998 114.9 114.899 114.9zM224.1 117.4c41.1006 0 74.7002 33.5 74.7002 74.6992
-c0 41.2002 -33.5 74.7002 -74.7002 74.7002c-41.1992 0 -74.6992 -33.5 -74.6992 -74.7002c0 -41.1992 33.5996 -74.6992 74.6992 -74.6992zM370.5 311.7c0 -14.9004 -12 -26.7998 -26.7998 -26.7998c-14.9004 0 -26.7998 12 -26.7998 26.7998s12 26.7998 26.7998 26.7998
-s26.7998 -12 26.7998 -26.7998zM446.6 284.5c2.10059 -37 2.10059 -147.8 0 -184.8c-1.7998 -35.9004 -10 -67.7002 -36.1992 -93.9004c-26.2002 -26.2998 -58 -34.5 -93.9004 -36.2002c-37 -2.09961 -147.9 -2.09961 -184.9 0
-c-35.8994 1.80078 -67.5996 10 -93.8994 36.2002s-34.5 58 -36.2002 93.9004c-2.09961 37 -2.09961 147.899 0 184.899c1.7998 35.9004 9.90039 67.7002 36.2002 93.9004s58.0996 34.4004 93.8994 36.0996c37 2.10059 147.9 2.10059 184.9 0
-c35.9004 -1.7998 67.7002 -10 93.9004 -36.1992c26.2998 -26.2002 34.5 -58 36.1992 -93.9004zM398.8 60c11.7002 29.4004 9 99.5 9 132.1c0 32.6006 2.7002 102.601 -9 132.101c-7.89941 19.7002 -23 34.7998 -42.5996 42.5996c-29.4004 11.6006 -99.5 9 -132.101 9
-c-32.5996 0 -102.6 2.7002 -132.1 -9c-19.7002 -7.89941 -34.7998 -23 -42.5996 -42.5996c-11.6006 -29.4004 -9 -99.5 -9 -132.101c0 -32.5996 -2.7002 -102.6 9 -132.1c7.89941 -19.7002 23 -34.7998 42.5996 -42.5996c29.4004 -11.6006 99.5 -9 132.1 -9
-c32.6006 0 102.601 -2.7002 132.101 9c19.7002 7.89941 34.7998 23 42.5996 42.5996z" />
-    <glyph glyph-name="flickr" unicode="&#xf16e;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM144.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z
-M303.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z" />
-    <glyph glyph-name="adn" unicode="&#xf170;" horiz-adv-x="496" 
-d="M248 280.5l64.9004 -98.7998h-129.801zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248s248 -111.1 248 -248zM396.2 109.3l-148.2 223.2l-148.2 -223.2h30.4004l33.5996 51.7002h168.601l33.5996 -51.7002h30.2002z" />
-    <glyph glyph-name="bitbucket" unicode="&#xf171;" horiz-adv-x="512" 
-d="M22.2002 416l466.8 -0.200195c0.954102 -0.0136719 1.875 -0.0800781 2.7998 -0.200195c7.58789 -1.25 13.3994 -7.83203 13.3994 -15.7715c0 -0.860352 -0.0683594 -1.7041 -0.199219 -2.52832l-67.9004 -416.8c-1.24902 -7.58887 -7.84277 -13.4014 -15.7832 -13.4014
-c-0.0722656 0 -0.144531 0 -0.216797 0.000976562h-325.699c-10.7129 0.0869141 -19.5967 7.94727 -21.3008 18.2002l-67.8994 412.101c-0.116211 0.924805 -0.182617 1.84668 -0.200195 2.7998c0.108398 8.7373 7.23242 15.8008 15.9951 15.8008
-c0.0683594 0 0.136719 0 0.205078 -0.000976562zM308.1 118.2l25.2002 147h-157.3l28.0996 -147h104z" />
-    <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="320" 
-d="M309.8 -32.2998c-13.5996 -14.5 -50 -31.7002 -97.3994 -31.7002c-120.801 0 -147 88.7998 -147 140.6v144h-47.5c-5.5 0 -10 4.5 -10 10v68c0 7.2002 4.5 13.6006 11.2998 16c62 21.8008 81.5 76 84.2998 117.101c0.799805 11 6.5 16.2998 16.0996 16.2998h70.9004
-c5.5 0 10 -4.5 10 -10v-115.2h83c5.5 0 10 -4.39941 10 -9.89941v-81.7002c0 -5.5 -4.5 -10 -10 -10h-83.4004v-133.2c0 -34.2002 23.7002 -53.5996 68 -35.7998c4.80078 1.89941 9 3.2002 12.7002 2.2002c3.5 -0.900391 5.7998 -3.40039 7.40039 -7.90039l22 -64.2998
-c1.7998 -5 3.2998 -10.6006 -0.400391 -14.5z" />
-    <glyph glyph-name="tumblr-square" unicode="&#xf174;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM317.7 51.7998c2.2998 2.40039 1.2998 5.90039 0.299805 9.10059l-13.7998 40.1992c-1 2.80078 -2.40039 4.40039 -4.60059 4.90039
-c-2.39941 0.599609 -5 -0.200195 -8 -1.40039c-27.6992 -11.0996 -42.5 1 -42.5 22.4004v83.2998h52.1006c3.39941 0 6.2002 2.7998 6.2002 6.2002v51.0996c0 3.40039 -2.80078 6.2002 -6.2002 6.2002h-51.9004v72c0 3.40039 -2.7998 6.2002 -6.2002 6.2002h-44.2998
-c-5.89941 0 -9.5 -3.2998 -10 -10.2002c-1.7998 -25.7002 -13.8994 -59.5 -52.7002 -73.2002c-4.2998 -1.5 -7.09961 -5.5 -7.09961 -10v-42.5c0 -3.39941 2.7998 -6.19922 6.2002 -6.19922h29.7002v-90c0 -32.4004 16.3994 -87.9004 91.8994 -87.9004
-c29.7002 0 52.4004 10.7002 60.9004 19.7998z" />
-    <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="384" 
-d="M318.7 179.3c0 -1.89941 -3.5 -61.2002 61.7002 -91.8994c-12.2002 -36.8008 -54 -118.601 -102.601 -119.301c-28.0996 0 -44.5996 17.9004 -76.3994 17.9004c-32.8008 0 -50.6006 -17.2998 -75.8008 -17.9004c-48.1992 -1.5 -94.3994 88.5 -107.199 125.2
-c-9.60059 27.9336 -14.4004 55 -14.4004 81.2002c0 88.7002 59.2998 132.3 115.1 133.2c27 0 61.4004 -19.7002 76.4004 -19.7002c14.2002 0 53 23.5 88.5 20.7002c37.5 -2.90039 65.9004 -17.7002 84.7002 -44.6006c-33.6006 -20.3994 -50.2002 -48.0996 -50 -84.7998z
-M262.1 343.5c-19.5996 -22.9004 -43.3994 -36.2998 -69.5 -34.2998c-2.19922 27.5996 8.10059 52.0996 25.6006 71.8994c15.8994 18.5 43.7998 33.5 67.8994 34.9004c0.800781 -10.5996 3.30078 -40.0996 -24 -72.5z" />
-    <glyph glyph-name="windows" unicode="&#xf17a;" 
-d="M0 354.3l183.6 25.2998v-177.399h-183.6v152.1zM0 29.7002v149.899h183.6v-175.199zM203.8 1.7002v177.899h244.2v-211.6zM203.8 382.3l244.2 33.7002v-213.8h-244.2v180.1z" />
-    <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="576" 
-d="M420.55 146.07c-13.2461 0 -24 10.7539 -24 24s10.7539 24 24 24s24 -10.7539 24 -24s-10.7539 -24 -24 -24zM155.45 146.07c-13.2461 0 -24 10.7539 -24 24s10.7539 24 24 24s24 -10.7539 24 -24s-10.7539 -24 -24 -24zM429.15 290.55l47.9395 83
-c1.06738 1.59082 1.69043 3.50391 1.69043 5.5625c0 5.51855 -4.48047 10 -10 10c-3.93359 0 -7.32812 -2.25684 -8.95996 -5.5625v0l-48.54 -84.0693c-37.5742 16.8516 -79.2197 26.2266 -123.037 26.2266c-43.8164 0 -85.9492 -9.375 -123.523 -26.2266l-48.54 84.0693
-c-1.63184 3.30566 -5.03809 5.58203 -8.97168 5.58203c-5.51953 0 -10 -4.48145 -10 -10c0 -2.05859 0.634766 -3.99121 1.70215 -5.58203v0l47.9395 -83c-82.3193 -44.7695 -138.609 -128.1 -146.85 -226.55h576c-8.24023 98.4502 -64.54 181.78 -146.85 226.55z" />
-    <glyph glyph-name="linux" unicode="&#xf17c;" 
-d="M220.8 324.7c-1.09961 0.599609 -3.09961 0.399414 -3.39941 1.7002c-0.200195 0.399414 0.199219 0.899414 0.599609 1.09961c1.59961 0.900391 3.7998 0.599609 5.5 -0.0996094c1.2998 -0.600586 3.40039 -1.5 3.2002 -2.90039
-c-0.100586 -1.09961 -1.7998 -1.5 -2.90039 -1.5c-1.2002 0 -2 1.2002 -3 1.7002zM198.9 323c-1 -0.0996094 -2.7002 0.400391 -2.80078 1.40039c-0.199219 1.39941 1.90039 2.2998 3.2002 2.89941c1.7002 0.700195 3.90039 1 5.5 0.100586
-c0.400391 -0.200195 0.799805 -0.700195 0.600586 -1.10059c-0.400391 -1.2002 -2.40039 -1 -3.5 -1.59961c-1 -0.5 -1.80078 -1.7002 -3 -1.7002zM420 44.2002c11.0996 -12.4004 15.9004 -21.5 15.5 -29.7002c-0.5 -8.2002 -6.5 -13.7998 -13.9004 -18.2998
-c-14.8994 -9 -37.2998 -15.7998 -50.8994 -32.2002c-14.2002 -16.9004 -31.7002 -26.5996 -48.2998 -27.9004c-16.5 -1.2998 -32 6.30078 -40.3008 23v0.100586c-1.09961 2.09961 -1.89941 4.39941 -2.5 6.7002c-21.5 -1.2002 -40.1992 5.2998 -55.0996 4.09961
-c-22 -1.2002 -35.7998 -6.5 -48.2998 -6.59961c-4.7998 -10.6006 -14.2998 -17.6006 -25.9004 -20.2002c-16 -3.7002 -36.0996 0 -55.8994 10.3994c-18.5 9.80078 -42 8.90039 -59.3008 12.5c-8.69922 1.80078 -16.2998 5 -20.0996 12.3008
-c-3.7002 7.2998 -3 17.2998 2.2002 31.6992c1.7002 5.10059 0.399414 12.7002 -0.799805 20.8008c-0.600586 3.89941 -1.2002 7.89941 -1.2002 11.7998c0 4.2998 0.700195 8.5 2.7998 12.3994c4.5 8.5 11.7998 12.1006 18.5 14.5c6.7002 2.40039 12.7998 4 17 8.30078
-c5.2002 5.5 10.0996 14.3994 16.5996 20.1992c-2.59961 17.2002 0.200195 35.4004 6.2002 53.3008c12.6006 37.8994 39.2002 74.1992 58.1006 96.6992c16.0996 22.9004 20.7998 41.3008 22.5 64.7002c1.09961 31.7998 -24.5 135.4 77.8994 135.2
-c80.9004 -0.0996094 76.2998 -85.4004 75.7998 -131.3c-0.299805 -30.1006 16.3008 -50.5 33.4004 -72c15.2002 -18 35.0996 -44.2998 46.5 -74.4004c9.2998 -24.5996 12.9004 -51.7998 3.7002 -79.0996c1.39941 -0.5 2.7998 -1.2002 4.09961 -2
-c1.40039 -0.799805 2.7002 -1.7998 4 -2.90039c6.60059 -5.59961 8.7002 -14.2998 10.5 -22.3994c1.90039 -8.10059 3.60059 -15.7002 7.2002 -19.7002zM223.7 360.7c-3.2002 -7.2002 -3.90039 -14.9004 -2.90039 -21.7998c3.60059 -0.900391 8.90039 -2.40039 13 -4.40039
-c-2.09961 12.2002 4.5 23.5 11.7998 23c8.90039 -0.299805 13.9004 -15.5 9.10059 -27.2998c-0.799805 -1.90039 -2.7998 -3.40039 -3.90039 -4.60059c6.7002 -2.2998 11 -4.09961 12.6006 -4.89941c7.89941 9.5 10.7998 26.2002 4.2998 40.3994
-c-9.7998 21.4004 -34.2002 21.8008 -44 -0.399414zM183 372.2c-18.9004 0 -24 -37.5 -8.40039 -52.1006c7.80078 5.7002 6.90039 4.7002 5.90039 5.5c-8 6.90039 -6.59961 27.4004 1.7998 28.1006c6.2998 0.5 10.7998 -10.7002 9.60059 -19.6006
-c3.09961 2.10059 6.69922 3.60059 10.1992 4.60059c1.7002 19.2998 -9 33.5 -19.0996 33.5zM169.4 311.5c-4.2002 -3.2998 -5.60059 -7.40039 -4.2002 -12.2998c1.5 -4.90039 6.09961 -10.5 14.7002 -15.2998c7.7998 -4.60059 12 -11.5 20 -15
-c2.59961 -1.10059 5.69922 -1.90039 9.59961 -2.10059c18.4004 -1.09961 27.0996 11.2998 38.2002 14.9004c11.7002 3.7002 20.0996 11 22.7002 18.0996c3.19922 8.5 -2.10059 14.7002 -10.5 18.2002c-11.3008 4.90039 -16.3008 5.2002 -22.6006 9.2998
-c-10.2998 6.60059 -18.7998 8.90039 -25.8994 8.90039c-14.4004 0 -23.2002 -9.7998 -27.9004 -14.2002c-0.5 -0.5 -7.90039 -5.90039 -14.0996 -10.5zM172.7 -22.5c2.09961 20.5 -31.5 49 -41 68.9004l-19.6006 35.5996c-6.7998 9.2002 -13.7998 14.7998 -21.8994 16
-c-7.7002 1.2002 -12.6006 -1.40039 -17.7002 -6.90039c-4.7998 -5.09961 -8.7998 -12.2998 -14.2998 -18c-7.7998 -6.5 -9.2998 -6.19922 -19.6006 -9.89941c-6.2998 -2.2002 -11.2998 -4.60059 -14.7998 -11.2998c-2.7002 -5 -2.09961 -12.2002 -0.899414 -20
-c1.19922 -7.90039 3 -16.3008 0.599609 -23.9004v-0.200195c-5 -13.7002 -5 -21.7002 -2.59961 -26.3994c7.89941 -15.4004 46.5996 -6.10059 76.5 -21.9004c31.3994 -16.4004 72.5996 -17.0996 75.2998 18zM171.3 3.40039c37.6006 -25.7002 82.2002 -15.7002 114.3 7.19922
-c3.2002 11 6.30078 21.3008 6.80078 29c0.799805 15.2002 1.59961 28.7002 4.39941 39.9004c3.10059 12.5996 9.2998 23.0996 21.4004 27.2998c2.2998 21.1006 18.7002 21.1006 38.2998 12.5c18.9004 -8.5 26 -16 22.7998 -26.0996c1 0 2 0.0996094 4.2002 0
-c5.2002 16.8994 -14.2998 28 -30.7002 34.7998c2.90039 12 2.40039 24.0996 -0.399414 35.7002c-6 25.2998 -22.6006 47.7998 -35.2002 59c-2.2998 0.0996094 -2.10059 -1.90039 2.59961 -6.5c11.6006 -10.7002 37.1006 -49.2002 23.2998 -84.9004
-c-3.89941 1 -7.59961 1.5 -10.8994 1.40039c-5.2998 29.0996 -17.5 53.2002 -23.6006 64.5996c-11.5 21.4004 -29.5 65.2998 -37.1992 95.7002c-4.5 -6.40039 -12.4004 -11.9004 -22.3008 -15c-4.69922 -1.5 -9.69922 -5.5 -15.8994 -9
-c-13.9004 -8 -30 -8.7998 -42.4004 1.2002c-4.5 3.59961 -8 7.59961 -12.5996 10.2998c-1.60059 0.900391 -5.10059 3.2998 -6.2002 4.09961c-2 -37.7998 -27.2998 -85.2998 -39.2998 -112.699c-8.2998 -19.7002 -13.2002 -40.8008 -13.7998 -61.5
-c-21.8008 29.0996 -5.90039 66.2998 2.59961 82.3994c9.5 17.6006 11 22.5 8.7002 20.7998c-8.60059 -14 -22 -36.2998 -27.2002 -59.1992c-2.7002 -11.9004 -3.2002 -24 0.299805 -35.2002s11.1006 -21.5 24.6006 -29.9004c0 0 24.7998 -14.2998 38.2998 -32.5
-c7.39941 -10 9.7002 -18.7002 7.39941 -24.8994c-2.5 -6.7002 -9.59961 -8.90039 -16.6992 -8.90039c4.7998 -6 10.2998 -13 14.3994 -19.5996zM428.7 14.9004c0.299805 5.09961 -3.10059 13 -13.7002 24.5996c-10 11.2998 -7.2002 33.0996 -17.0996 41.5996
-c-6.90039 6 -13.6006 5.40039 -22.6006 5.10059c-7.7002 -8.7998 -25.7998 -19.6006 -38.3994 -16.2998c-11.5 2.89941 -18 16.2998 -18.8008 29.5c-0.299805 -0.200195 -0.699219 -0.300781 -1 -0.5c-7.09961 -3.90039 -11.0996 -10.8008 -13.6992 -21.1006
-c-2.5 -10.2002 -3.40039 -23.5 -4.2002 -38.7002c-0.700195 -11.7998 -6.2002 -26.3994 -9.90039 -40.5996c-3.5 -13.2002 -5.7998 -25.2002 -1.09961 -36.2998c7.2002 -14.5 19.5 -20.4004 33.7002 -19.2998c14.1992 1.09961 30.3994 9.7998 43.5996 25.5
-c22 26.5996 62.2998 29.6992 63.2002 46.5zM173.3 299.3c-3.5 2.7998 -3.09961 6.60059 -1.7002 6.5c2.40039 -0.299805 2.80078 -3.5 4.30078 -4.89941c2 -1.90039 4.59961 -4.40039 7.69922 -6.90039c6.2002 -4.90039 14.5 -9.7002 24.9004 -9.7002
-s22.5 6 29.9004 10.2002c4.19922 2.40039 9.5 6.59961 13.8994 9.7998c3.40039 2.5 3.2002 5.40039 6 5.10059c2.7998 -0.300781 0.799805 -3.2002 -3.09961 -6.60059c-3.90039 -3.39941 -9.90039 -7.7998 -14.7998 -10.3994
-c-9.30078 -4.90039 -20.2002 -10.8008 -31.8008 -10.8008c-11.5 0 -20.6992 5.40039 -27.2998 10.6006c-3.2998 2.59961 -6 5.2002 -8 7.09961z" />
-    <glyph glyph-name="dribbble" unicode="&#xf17d;" horiz-adv-x="512" 
-d="M256 440c136.748 0 248 -111.252 248 -248s-111.252 -248 -248 -248s-248 111.252 -248 248s111.252 248 248 248zM419.97 325.634c-4.46582 -6.04102 -39.9629 -51.5459 -118.284 -83.5225c7.43652 -15.2217 12.8652 -27.5732 18.6172 -41.6143
-c70.4844 8.86426 140.519 -5.34082 147.502 -6.81836c-0.46582 49.998 -18.332 95.9092 -47.835 131.955zM396.421 350.13c-52.0947 46.2188 -122.885 63.6816 -190.061 47.4893c5.85449 -7.83984 44.3281 -60.2324 79.04 -124.008
-c75.3232 28.2324 107.211 71.0918 111.021 76.5186zM165.941 383.38c-59.2637 -27.9531 -103.562 -82.585 -117.298 -148.318c9.47461 -0.125 96.7471 -0.503906 195.834 25.8096c-35.0986 62.3926 -72.9512 114.85 -78.5361 122.509zM44.1699 191.677
-c0 -54.4072 20.624 -104.082 54.457 -141.636c34.3369 58.7793 103.932 120.731 180.531 142.306c-5.31738 12.0342 -11.1104 24.0811 -17.1738 35.9492c-105.786 -31.6592 -208.438 -30.3359 -217.706 -30.1455c-0.0654297 -2.15137 -0.108398 -4.30762 -0.108398 -6.47363
-zM125.977 24.5645c62.7539 -48.9355 144.656 -56.8955 212.769 -27.8828c-3.15039 18.585 -15.4492 83.3555 -45.1895 160.639c-85.4004 -29.1348 -145.452 -87.5234 -167.579 -132.756zM374.357 16.0752c47.5215 32.1338 81.3525 83.0371 90.7949 141.978
-c-7.24707 2.28711 -65.5674 19.6816 -131.947 9.05566c27.7061 -76.1367 38.9805 -138.147 41.1523 -151.033z" />
-    <glyph glyph-name="skype" unicode="&#xf17e;" 
-d="M424.7 148.2c14.5996 -18.9004 23.2998 -42.5 23.2002 -68.1006c0 -61.7998 -50.2002 -112 -112 -112c-25.6006 0 -49.2002 8.7002 -68.2002 23.3008c-14.1006 -3 -28.9004 -4.7002 -43.7998 -4.7002c-113.4 0 -205.301 91.7998 -205.301 205.3
-c0 14.9004 1.80078 29.7998 4.7002 43.7998c-14.5996 18.9004 -23.2998 42.5 -23.2998 68.2002c0 61.7998 50.2002 112 112 112c25.7002 0 49.2998 -8.7002 68.2998 -23.4004c14.1006 3 28.9004 4.7002 43.7998 4.7002c113.4 0 205.301 -91.7998 205.301 -205.3
-c0 -14.9004 -1.80078 -29.7998 -4.7002 -43.7998zM230.1 56.7002c54.9004 0 112 27.3994 112 86.5c0 50.7998 -49.2998 68.2998 -90.6992 77.5996c-48.3008 11.2002 -69.1006 13.2002 -69.1006 33c0 15.5 16.2998 22.5 42 22.5c45.7998 0 46.7002 -33.5 75 -33.5
-c18.9004 0 30.2998 14.9004 30.2998 31.7998c0 33.5 -55.6992 55.4004 -110.8 55.4004c-50.5 0 -109.1 -21.9004 -109.1 -81.0996c0 -65.2002 55.2998 -71.8008 117.8 -87.2002c26 -6.40039 42 -9.2998 42 -28c0 -14.9004 -16.5996 -26.2998 -42.2998 -26.2998
-c-54 0 -56.9004 44.8994 -88.1006 44.8994c-20.5 0 -29.5 -14.5996 -29.5 -30.5996c0 -35.7998 54.9004 -65 120.5 -65z" />
-    <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="368" 
-d="M323.1 445c40 0 50.7002 -22.7998 42.2002 -65.2002l-48.5996 -243c-3.7002 -14.5 -9.2002 -39.7002 -44.2998 -39.7002h-83.4004c-3.40039 0 -3.7002 0.300781 -6.7998 -3.09961c0 0 -2.2002 -2.5 -131.101 -151.9
-c-10.0996 -11.6992 -26.6992 -9.59961 -32.8994 -7.09961c-6.10059 2.40039 -18.2002 9.7998 -18.2002 30.0996v433.801c0 17.7998 12.4004 46.0996 49.9004 46.0996h273.199zM306.8 371.2c2.10059 9.7998 -5.2998 17.5 -13.5 17.5h-219
-c-9.7998 0 -16.5996 -8.90039 -16.5996 -16.6006v-338.8c0 -0.899414 0.899414 -1.2002 1.7998 -0.299805c80.5996 96.9004 89.5 108.3 89.5 108.3c9.2998 10.7998 13 12.6006 26.5 12.6006h73.5c10.0996 0 16 8.59961 16.9004 13.5
-c0.899414 5 9.59961 49.8994 11.3994 58.7998c1.7998 9 -6.5 18.2002 -14.7998 18.2002h-90.4004c-12 0 -20.5996 8.59961 -20.5996 20.5996v13c0 12 8.59961 20.2998 20.5996 20.2998h106.4c7.40039 0 15.7002 6.7002 16.9004 13.2002z" />
-    <glyph glyph-name="trello" unicode="&#xf181;" 
-d="M392.3 416c30.7998 -0.200195 55.7002 -25.2002 55.6006 -56v-336c0 -30.7998 -24.9004 -55.7998 -55.7002 -56h-336.2c-30.9004 0 -56 25.0996 -56 56c0 340 -0.0996094 336 0 336c0 30.9004 25.0996 56 56.0996 56h336.2zM197 76.7002h0.0996094v254.2
-c0 14.8994 -12.0996 26.8994 -26.8994 26.8994h-82.9004c-14.8994 0 -26.8994 -12.0996 -26.8994 -26.8994v-254.2c0.0996094 -14.7998 12.1992 -26.7002 27 -26.6006h82.6992c14.8008 0 26.7002 11.9004 26.9004 26.6006zM390.1 188.7v142.1
-c0 14.9004 -12.0996 26.9004 -26.8994 26.9004h-81.1006c-14.7998 0 -26.7998 -12.1006 -26.7998 -26.9004v-142.1c0 -14.9004 12.1006 -26.9004 26.9004 -26.9004h81c14.8994 0 26.8994 12.1006 26.8994 26.9004z" />
-    <glyph glyph-name="gratipay" unicode="&#xf184;" horiz-adv-x="496" 
-d="M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM362.6 213.6c8.80078 12 19.1006 50.4004 -13.7998 72c-27.7002 18.1006 -54.2002 4.2002 -68.0996 -11.8994c-15.1006 -16.9004 -45.7998 -17.9004 -61.7002 0
-c-13.9004 16.0996 -40.4004 30 -68.5 11.8994c-32.7002 -21.5996 -22.2998 -60.0996 -13.5996 -72l112.699 -152.699z" />
-    <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="576" 
-d="M545 330.3c-7.40039 -34.2998 -79.2998 -135.5 -79.4004 -135.6c-6.19922 -10 -8.69922 -15 0 -26.2002c3.40039 -4.7998 79.1006 -76.5996 90.3008 -111.5c4.89941 -16.5996 -3.60059 -25 -20.4004 -25h-58.9004c-22.3994 0 -29 17.9004 -69 57.9004
-c-35 33.6992 -50 38.0996 -58.6992 38.0996c-18.8008 0 -15.4004 -6.2998 -15.4004 -73.0996c0 -14.5 -4.59961 -22.9004 -42.0996 -22.9004c-62.4004 0 -131 37.9004 -179.7 107.8c-73.1006 102.4 -93.1006 179.9 -93.1006 195.5c0 8.7998 3.40039 16.7002 20.2002 16.7002
-h58.9004c15.0996 0 20.7998 -6.59961 26.5996 -22.9004c28.7998 -84 77.4004 -157.399 97.4004 -157.399c7.5 0 10.8994 3.5 10.8994 22.5v86.7998c-2.19922 40 -23.3994 43.2998 -23.3994 57.5c0 6.5 5.59961 13.5 15 13.5h92.5996
-c12.4004 0 16.6006 -6.7002 16.6006 -21.7002v-116.7c0 -12.5 5.69922 -16.8994 9.39941 -16.8994c7.5 0 13.7998 4.39941 27.5 18.0996c42.4004 47.4004 72.4004 120.5 72.4004 120.5c3.7002 8.7998 10.5996 16.7002 25.5996 16.7002h58.9004
-c17.7998 0 21.5 -9.2002 17.7998 -21.7002z" />
-    <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="512" 
-d="M407 270.4c7.59961 24 -13.4004 46.7998 -37.4004 41.6992c-22 -4.7998 -28.7998 28.1006 -7.09961 32.8008c50.0996 10.8994 92.2998 -37.1006 76.5 -84.8008c-6.7998 -21.1992 -38.7998 -10.7998 -32 10.3008zM214.8 1.2998c-106.3 0 -214.8 51.4004 -214.8 136.3
-c0 44.3008 28 95.4004 76.2998 143.7c99.7002 99.7002 203.2 100.9 173.601 5.7002c-4 -13.0996 12.2998 -5.7002 12.2998 -6c79.5 33.5996 140.5 16.7998 114 -51.4004c-3.7002 -9.39941 1.09961 -10.8994 8.2998 -13.0996c135.7 -42.2998 34.7998 -215.2 -169.7 -215.2z
-M358.5 147.6c-5.40039 55.7002 -78.5 94 -163.4 85.7002c-84.7998 -8.59961 -148.8 -60.2998 -143.399 -116c5.39941 -55.7002 78.5 -94 163.399 -85.7002c84.8008 8.60059 148.801 60.3008 143.4 116zM347.9 412.9c102.3 21.5996 189.3 -74.5 157.399 -174.301
-c-8.2998 -25 -44.7998 -12.1992 -37.3994 12c23.0996 71.2002 -39.4004 139.2 -111.7 124c-25.1006 -5.39941 -34.2002 32.7002 -8.2998 38.3008zM269.4 101.9c-17.1006 -38.8008 -66.8008 -60 -109.101 -46.3008c-40.7998 13.1006 -58 53.4004 -40.2998 89.7002
-c17.7002 35.4004 63.0996 55.4004 103.4 45.1006c42 -10.8008 63.0996 -50.2002 46 -88.5zM183.1 131.9c-12.8994 5.39941 -30 -0.300781 -38 -12.9004c-8.2998 -12.9004 -4.2998 -28 8.60059 -34c13.0996 -6 30.7998 -0.299805 39.0996 12.9004
-c8 13.0996 3.7002 28.2998 -9.7002 34zM215.7 145.3c-5.10059 1.7002 -11.4004 -0.599609 -14.2998 -5.39941c-2.90039 -5.10059 -1.40039 -10.6006 3.69922 -12.9004c5.10059 -2 11.7002 0.299805 14.6006 5.40039c2.7998 5.19922 1.09961 10.8994 -4 12.8994z" />
-    <glyph glyph-name="renren" unicode="&#xf18b;" horiz-adv-x="512" 
-d="M214 278.9c0 -110.4 -61 -205.4 -147.6 -247.4c-36.4004 43.2998 -58.4004 98.7998 -58.4004 159.9c0 122.699 89.0996 224.399 206 244.1v-156.6zM255 -56c-42.9004 0 -83.2998 11 -118.5 30.4004c57.2002 36.0996 103.4 90.6992 118.5 154.6
-c15.5 -63.9004 61.7002 -118.5 118.8 -154.7c-35.0996 -19.2998 -75.5 -30.2998 -118.8 -30.2998zM445.6 31.5c-86.5996 42 -147.6 136.9 -147.6 247.4v156.6c116.9 -19.7002 206 -121.4 206 -244.1c0 -61.1006 -22 -116.601 -58.4004 -159.9z" />
-    <glyph glyph-name="pagelines" unicode="&#xf18c;" horiz-adv-x="384" 
-d="M384 135.3c-55.0996 -136.7 -187.1 -54 -187.1 -54c-40.5 -81.7998 -107.4 -134.399 -184.601 -134.7c-16.0996 0 -16.5996 24.4004 0 24.4004c64.4004 0.299805 120.5 42.7002 157.2 110.1c-41.0996 -15.8994 -118.6 -27.8994 -161.6 82.2002
-c109 44.9004 159.1 -11.2002 178.3 -45.5c9.89941 24.4004 17 50.9004 21.5996 79.7002c0 0 -139.7 -21.9004 -149.5 98.0996c119.101 47.9004 152.601 -76.6992 152.601 -76.6992c1.59961 16.6992 3.2998 52.5996 3.2998 53.3994c0 0 -106.3 73.7002 -38.1006 165.2
-c124.601 -43 61.4004 -162.4 61.4004 -162.4c0.5 -1.59961 0.5 -23.7998 0 -33.3994c0 0 45.2002 89 136.4 57.5c-4.2002 -134 -141.9 -106.4 -141.9 -106.4c-4.40039 -27.3994 -11.2002 -53.3994 -20 -77.5c0 0 83 91.7998 172 20z" />
-    <glyph glyph-name="stack-exchange" unicode="&#xf18d;" 
-d="M17.7002 115.7h412.7v-22c0 -37.7002 -29.3008 -68 -65.3008 -68h-19l-86.7998 -89.7002v89.7002h-176.3c-36 0 -65.2998 30.2998 -65.2998 68v22zM17.7002 139.3v85h412.7v-85h-412.7zM17.7002 248.7v85h412.7v-85h-412.7zM365 448
-c36 0 65.2998 -30.2998 65.4004 -67.7002v-22.2998h-412.7v22.2998c0 37.4004 29.2998 67.7002 65.2998 67.7002h282z" />
-    <glyph glyph-name="vimeo-square" unicode="&#xf194;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM383.8 266.4c1.90039 41.5996 -13.5996 63 -46.5 64c-44.2998 1.39941 -74.3994 -23.6006 -90.0996 -75.1006
-c19.5996 8.40039 48.5996 10.6006 45.2002 -22.2002c-0.900391 -11.0996 -8.10059 -27.0996 -21.5 -48.2998c-37.2002 -58.7002 -46.3008 -39.0996 -66.8008 90.5c-5.7998 36.5 -21.0996 53.5 -46 51.1006c-22 -2 -57.1992 -38 -94.0996 -70.4004l15 -19.4004
-c14.2998 10.1006 22.7002 15.1006 25.0996 15.1006c20.8008 0 31.5 -54.1006 56.7002 -146.4c12.9004 -34.3994 28.6006 -51.5996 47.2998 -51.5996c30.1006 0 66.9004 28.2998 110.4 84.7998c42.0996 54.0996 63.9004 96.7998 65.2998 127.9z" />
-    <glyph glyph-name="slack" unicode="&#xf198;" 
-d="M94.1201 132.9c0 -25.9004 -21.1602 -47.0605 -47.0605 -47.0605c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h47.0605v-47.0596zM117.84 132.9c0 25.8994 21.1602 47.0596 47.0605 47.0596
-c25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-117.841c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596c-25.9004 0 -47.0605 21.1602 -47.0605 47.0596v117.841zM164.9 321.88c-25.9004 0 -47.0605 21.1602 -47.0605 47.0605c0 25.8994 21.1602 47.0596 47.0605 47.0596
-c25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-47.0605h-47.0596zM164.9 298.16c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-117.841c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596
-c0 25.9004 21.1602 47.0605 47.0596 47.0605h117.841zM353.88 251.1c0 25.9004 21.1602 47.0605 47.0605 47.0605c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-47.0605v47.0596zM330.16 251.1
-c0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v117.841c0 25.8994 21.1602 47.0596 47.0596 47.0596c25.9004 0 47.0605 -21.1602 47.0605 -47.0596v-117.841zM283.1 62.1201c25.9004 0 47.0605 -21.1602 47.0605 -47.0605
-c0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v47.0605h47.0596zM283.1 85.8398c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h117.841
-c25.8994 0 47.0596 -21.1602 47.0596 -47.0596c0 -25.9004 -21.1602 -47.0605 -47.0596 -47.0605h-117.841z" />
-    <glyph glyph-name="wordpress" unicode="&#xf19a;" horiz-adv-x="512" 
-d="M61.7002 278.6l101.5 -278c-71 34.4004 -119.9 107.2 -119.9 191.4c0 30.9004 6.60059 60.0996 18.4004 86.5996zM399.6 202.7c0 -18.2002 -7 -39.2998 -16 -68.7002l-21.1992 -70.9004l-76.9004 228.7c12.7998 0.700195 24.2998 2 24.2998 2
-c11.4004 1.2998 10.1006 18.2002 -1.39941 17.5c0 0 -34.5 -2.7002 -56.7002 -2.7002c-20.9004 0 -56 2.7002 -56 2.7002c-11.4004 0.700195 -12.7998 -16.7998 -1.2998 -17.5c0 0 10.7998 -1.2998 22.2998 -2l33.0996 -90.7998l-46.5996 -139.6l-77.5 230.399
-c12.7998 0.700195 24.2998 2 24.2998 2c11.4004 1.2998 10.0996 18.2002 -1.40039 17.5c0 0 -34.5 -2.7002 -56.6992 -2.7002c-4 0 -8.7002 0.100586 -13.7002 0.300781c38.0996 57.7998 103.5 95.8994 177.8 95.8994c55.4004 0 105.8 -21.2002 143.7 -55.8994
-c-1 0.0996094 -1.90039 0.199219 -2.7998 0.199219c-20.9004 0 -35.7002 -18.1992 -35.7002 -37.7998c0 -17.5 10.0996 -32.3994 20.8994 -49.8994c8.10059 -14.2002 17.5 -32.4004 17.5 -58.7002zM259.7 173.4l65.3994 -179.2c0.400391 -1 0.900391 -2 1.5 -2.90039
-c-22.0996 -7.7998 -45.7998 -12.0996 -70.5996 -12.0996c-20.9004 0 -41 3.09961 -60.0996 8.7002zM442.7 294.1c16.5996 -30.2998 26 -65.0996 26 -102.1c0 -78.5 -42.5 -147 -105.8 -183.9l65 187.9c12.1992 30.4004 16.1992 54.5996 16.1992 76.2002
-c0 7.89941 -0.5 15.0996 -1.39941 21.8994zM504 192c0 -136.8 -111.3 -248 -248 -248c-136.8 0 -248 111.3 -248 248c0 136.8 111.2 248 248 248c136.7 0 248 -111.2 248 -248zM492.6 192c0 130.5 -106.199 236.6 -236.6 236.6c-130.5 0 -236.6 -106.1 -236.6 -236.6
-s106.199 -236.6 236.6 -236.6c130.5 0 236.6 106.1 236.6 236.6z" />
-    <glyph glyph-name="openid" unicode="&#xf19b;" 
-d="M271.5 16l-68 -32c-115 10.2998 -203.5 71.5 -203.5 145.8c0 71.5 82.5 131 191.7 144.3v-43c-71.5 -12.5 -124 -53 -124 -101.3c0 -51 58.5 -93.2998 135.7 -103v340l68 33.2002v-384h0.0996094zM448 157l-131.3 28.5l36.7998 20.7002c-19.5 11.5 -43.5 20 -70 24.7998
-v43c46.2002 -5.5 87.7002 -19.5 120.3 -39.2998l35 19.7998z" />
-    <glyph glyph-name="yahoo" unicode="&#xf19e;" horiz-adv-x="512" 
-d="M223.69 306.94h93.5791l-140.909 -338.94h-94.1699l38.5693 89.8096l-105.83 249.131h96.0703l56 -143.171zM329.09 171.15c32.1328 0 58.2197 -26.0879 58.2197 -58.2207c0 -32.1318 -26.0869 -58.2197 -58.2197 -58.2197s-58.2197 26.0879 -58.2197 58.2197
-c0 32.1328 26.0869 58.2207 58.2197 58.2207zM394.65 416h104.42l-92.6299 -223.47h-104.79z" />
-    <glyph glyph-name="google" unicode="&#xf1a0;" horiz-adv-x="488" 
-d="M488 186.2c0 -141.5 -96.9004 -242.2 -240 -242.2c-137.2 0 -248 110.8 -248 248s110.8 248 248 248c66.7998 0 123 -24.5 166.3 -64.9004l-67.5 -64.8994c-88.2998 85.2002 -252.5 21.2002 -252.5 -118.2c0 -86.5 69.1006 -156.6 153.7 -156.6
-c98.2002 0 135 70.3994 140.8 106.899h-140.8v85.2998h236.1c2.30078 -12.6992 3.90039 -24.8994 3.90039 -41.3994z" />
-    <glyph glyph-name="reddit" unicode="&#xf1a1;" horiz-adv-x="512" 
-d="M201.5 142.5c-13.7998 0 -24.9004 11.0996 -24.9004 24.5996c0 13.8008 11.1006 24.9004 24.9004 24.9004c13.5996 0 24.5996 -11.0996 24.5996 -24.9004c0 -13.5996 -11.0996 -24.5996 -24.5996 -24.5996zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248
-s111 248 248 248s248 -111 248 -248zM371.7 233.2c-9.40039 0 -17.7002 -3.90039 -23.7998 -10c-22.4004 15.5 -52.6006 25.5 -86.1006 26.5996l17.4004 78.2998l55.3994 -12.5c0 -13.5996 11.1006 -24.5996 24.6006 -24.5996c13.7998 0 24.8994 11.2998 24.8994 24.9004
-c0 13.5996 -11.0996 24.8994 -24.8994 24.8994c-9.7002 0 -18 -5.7998 -22.1006 -13.7998l-61.1992 13.5996c-3 0.800781 -6.10059 -1.39941 -6.90039 -4.39941l-19.0996 -86.4004c-33.2002 -1.39941 -63.1006 -11.2998 -85.5 -26.7998
-c-6.10059 6.40039 -14.7002 10.2002 -24.1006 10.2002c-34.8994 0 -46.2998 -46.9004 -14.3994 -62.7998c-1.10059 -5 -1.7002 -10.2002 -1.7002 -15.5c0 -52.6006 59.2002 -95.2002 132 -95.2002c73.0996 0 132.3 42.5996 132.3 95.2002
-c0 5.2998 -0.599609 10.7998 -1.90039 15.7998c31.3008 16 19.8008 62.5 -14.8994 62.5zM302.8 117c2.2002 2.2002 6.10059 2.2002 8.2998 0c2.5 -2.5 2.5 -6.40039 0 -8.59961c-22.8994 -22.8008 -87.3994 -22.8008 -110.199 0c-2.5 2.19922 -2.5 6.09961 0 8.59961
-c2.19922 2.2002 6.09961 2.2002 8.2998 0c17.5 -17.9004 75.3994 -18.2002 93.5996 0zM310.5 192c13.9004 0 24.9004 -11.0996 24.9004 -24.9004c0 -13.5 -11.1006 -24.5996 -24.9004 -24.5996c-13.5 0 -24.5996 11 -24.5996 24.5996c0 13.8008 11 24.9004 24.5996 24.9004z
-" />
-    <glyph glyph-name="reddit-square" unicode="&#xf1a2;" 
-d="M283.2 102.5c2.7002 -2.7002 2.7002 -6.7998 0 -9.2002c-24.5 -24.5 -93.7998 -24.5996 -118.4 0c-2.7002 2.40039 -2.7002 6.5 0 9.2002c2.40039 2.40039 6.5 2.40039 8.90039 0c18.7002 -19.2002 81 -19.5996 100.5 0c2.39941 2.2998 6.59961 2.2998 9 0zM191.9 156.3
-c0 -14.5996 -11.9004 -26.5 -26.5 -26.5c-14.9004 0 -26.8008 11.9004 -26.8008 26.5c0 14.9004 11.9004 26.7998 26.8008 26.7998c14.5996 0 26.5 -11.8994 26.5 -26.7998zM282.6 183.1c14.9004 0 26.8008 -11.8994 26.8008 -26.7998
-c0 -14.5996 -11.9004 -26.5 -26.8008 -26.5c-14.5996 0 -26.5 11.9004 -26.5 26.5c0 14.9004 11.9004 26.7998 26.5 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM348.3 227.4
-c-10.0996 0 -19 -4.2002 -25.5996 -10.7002c-24.1006 16.7002 -56.5 27.3994 -92.5 28.5996l18.7002 84.2002l59.5 -13.4004c0 -14.5996 11.8994 -26.5 26.5 -26.5c14.8994 0 26.7998 12.2002 26.7998 26.8008c0 14.5996 -11.9004 26.7998 -26.7998 26.7998
-c-10.4004 0 -19.3008 -6.2002 -23.8008 -14.9004l-65.6992 14.6006c-3.30078 0.899414 -6.5 -1.5 -7.40039 -4.80078l-20.5 -92.7998c-35.7002 -1.5 -67.7998 -12.2002 -91.9004 -28.8994c-6.5 6.7998 -15.7998 11 -25.8994 11c-37.5 0 -49.7998 -50.4004 -15.5 -67.5
-c-1.2002 -5.40039 -1.7998 -11 -1.7998 -16.7002c0 -56.5 63.6992 -102.3 141.899 -102.3c78.5 0 142.2 45.7998 142.2 102.3c0 5.7002 -0.599609 11.5996 -2.09961 17c33.5996 17.2002 21.1992 67.2002 -16.1006 67.2002z" />
-    <glyph glyph-name="stumbleupon-circle" unicode="&#xf1a3;" horiz-adv-x="496" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 262.5c9.7998 0 17.7998 -8 17.7002 -17.5996v-20.6006l22.8994 -10.7002l34.1006 10.1006v23.7002c0 40.2998 -34 72.5996 -74.7002 72.5996
-c-40.5 0 -74.7002 -32.0996 -74.7002 -72.0996v-108.4c0 -9.90039 -8 -17.7998 -17.7998 -17.7998s-17.7998 7.7998 -17.7998 17.7998v45.7998h-57.2998v-46.5c0 -41.3994 33.5 -74.8994 74.8994 -74.8994c41 0 74.9004 33 74.9004 73.8994v106.9
-c0 9.7998 8 17.7998 17.7998 17.7998zM423.6 138.9c0 0 0 0.5 0.100586 46.3994h-57.2998v-48c0 -9.7002 -8 -17.5996 -17.8008 -17.5996c-9.7998 0 -17.7998 7.7998 -17.7998 17.5996v47.1006l-34.0996 -10.1006l-22.9004 10.7002v-46.7998
-c0 -41 33.7002 -74.2002 74.9004 -74.2002c41.3994 0 74.8994 33.5 74.8994 74.9004z" />
-    <glyph glyph-name="stumbleupon" unicode="&#xf1a4;" horiz-adv-x="512" 
-d="M502.9 182v-69.7002c0 -62.0996 -50.3008 -112.399 -112.4 -112.399c-61.7998 0 -112.4 49.7998 -112.4 111.3v70.2002l34.3008 -16l51.0996 15.1992v-70.5996c0 -14.7002 12 -26.5 26.7002 -26.5s26.7998 11.7998 26.7998 26.5v72h85.9004zM278.2 240.2v30.8994
-c0 14.7002 -12 26.7002 -26.7002 26.7002s-26.7002 -12 -26.7002 -26.7002v-160.3c0 -61.2998 -50.7998 -110.8 -112.399 -110.8c-62.1006 0 -112.4 50.2998 -112.4 112.3v69.7002h86v-68.5996c0 -14.9004 12 -26.7002 26.7002 -26.7002s26.7002 11.7998 26.7002 26.7002
-v162.399c0 60 51.2998 108.2 112.1 108.2c61 0 112.1 -48.5 112.1 -109v-35.5996l-51.0996 -15.2002z" />
-    <glyph glyph-name="delicious" unicode="&#xf1a5;" 
-d="M446.5 380c1 -3.7998 1.5 -7.90039 1.59961 -12v-352.1c0 -26.5 -21.5 -48 -48 -48h-352c-4.09961 0 -8.19922 0.5 -12 1.5c-7.69922 2 -14.5996 5.7998 -20.2998 11c-1.2002 1.09961 -2.2998 2.19922 -3.2998 3.2998c-5.2002 5.7002 -9 12.5996 -11 20.2998
-c-1 3.7998 -1.5 7.90039 -1.5 12v352c0 26.5 21.5 48 48 47.9004h352c4.09961 0 8.2002 -0.5 12 -1.5c1.90039 -0.400391 3.7002 -1 5.40039 -1.7002c1.89941 -0.700195 3.69922 -1.5 5.5 -2.5c1.39941 -0.700195 2.69922 -1.5 4 -2.40039
-c1.09961 -0.799805 2.19922 -1.59961 3.2998 -2.5c2.5 -2 4.7998 -4.2998 6.89941 -6.7998c1.7002 -2.09961 3.30078 -4.5 4.7002 -6.90039c1.2998 -2.2998 2.40039 -4.59961 3.2998 -7.09961c0.5 -1.5 1 -3 1.40039 -4.5zM416 16v176h-192v192h-176
-c-8.7998 0 -16 -7.2002 -16 -16v-176h192v-192h176c8.7998 0 16 7.2002 16 16z" />
-    <glyph glyph-name="digg" unicode="&#xf1a6;" horiz-adv-x="512" 
-d="M81.7002 275.7v76.2998h51v-250.7h-132.7v174.4h81.7002zM81.7002 142.3v92.2998h-30.7998v-92.2998h30.7998zM378.9 275.7h133.1v-243.7h-133.1v40.7998h81.7998v28.5h-81.7998v174.4zM460.7 142.3v92.2998h-30.7998v-92.2998h30.7998zM225.1 101.3v174.4h133.301
-v-243.7h-133.301v40.7998h82.1006v28.5h-82.1006zM276.3 234.6v-92.2998h30.7998v92.2998h-30.7998zM153.3 352h51.2998v-51h-51.2998v51zM153.3 275.7h51.2998v-174.4h-51.2998v174.4z" />
-    <glyph glyph-name="pied-piper-pp" unicode="&#xf1a7;" 
-d="M205.3 273.4c0 -21.1006 -14.2002 -38.1006 -31.7002 -38.1006c-7.09961 0 -12.7998 1.2002 -17.1992 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.1992 4.2002c17.5 0 31.7002 -16.9004 31.7002 -37.7998zM257.9 206.4c17.3994 0 31.6992 -17 31.6992 -38.1006
-c0 -20.8994 -14.2998 -37.7998 -31.6992 -37.7998c-7.10059 0 -12.8008 1.2002 -17.2002 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.2002 4.2002zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352
-c26.5 0 48 -21.5 48 -48zM185 192.9c41 0 74.2002 35.5996 74.2002 79.5996s-33.2002 79.5996 -74.2002 79.5996c-12 0 -24.0996 -3.19922 -34.5996 -8.7998h-45.7002v-206.3l51.7998 10.0996v50.6006c8.59961 -3.10059 18.0996 -4.7998 28.5 -4.7998zM343.4 167.6
-c0 44 -33.2002 79.6006 -73.9004 79.6006c-3.2002 0 -6.40039 -0.200195 -9.59961 -0.700195c-3.7002 -12.5 -10.1006 -23.7998 -19.2002 -33.4004c-13.7998 -15 -32.2002 -23.7998 -51.7998 -24.7998v-156.3l51.7998 10.0996v50.6006
-c8.59961 -3.2002 18.2002 -4.7002 28.7002 -4.7002c40.7998 0 74 35.5996 74 79.5996z" />
-    <glyph glyph-name="pied-piper-alt" unicode="&#xf1a8;" horiz-adv-x="576" 
-d="M244 202l-27.7002 -5.7002l-1.7002 4.90039c6.7002 0.5 12.7002 3.7002 19.3008 3.7002c3.7998 0 6.89941 -0.900391 10.0996 -2.90039zM379.9 4.09961c9.5 0 28.1992 -45.0996 33 -55.0996c-35.9004 -13.4004 -70.3008 -15.9004 -106 -9.7998l-6.90039 45.0996
-c15.7998 10.2998 60.9004 19.7998 79.9004 19.7998zM340.8 271c-7.59961 3.5 -63.8994 6.40039 -98.7998 -10c6.2998 11.7998 13.2002 17 25.9004 21.7998c27.2998 10.2998 40.1992 30.5 58.8994 51.1006c11.9004 -8.40039 12 -24.6006 31.6006 -23v-21.8008
-l6.2998 -0.299805c37.3994 14.4004 74.7002 30.2002 106.6 54.6006c48.2998 36.7998 52.9004 50 81.2998 100l2 2.59961c-0.599609 -14.0996 -6.2998 -27.2998 -12.3994 -39.9004c-30.5 -63.7998 -78.7002 -100.3 -146.8 -116.699
-c-12.4004 -2.90039 -26.4004 -3.2002 -37.6006 -8.90039c1.40039 -9.7998 13.2002 -18.0996 13.2002 -23c0 -3.40039 -5.5 -7.2002 -7.5 -8.59961c-11.2002 12.8994 -16.0996 19.2998 -22.7002 22.0996zM555.5 448l-0.299805 -1.40039l-0.600586 -0.599609
-l0.300781 0.900391zM496.3 65.9004c20.1006 -34.2002 43.7002 -54.3008 72.7002 -79.9004c-31 -19.2998 -70.4004 -32.2002 -103.5 -47.2002c-55.2002 46.2998 -23 229.9 -111.5 229.9c-3.5 -0.700195 -2.40039 -0.299805 -4.59961 -1.7002
-c1.09961 -1.40039 2.59961 -2.90039 3.69922 -4c23.9004 -20.0996 33.4004 -24.4004 34.8008 -58.5996l0.299805 -9.5c0.799805 -21.6006 -5.5 -42.5 -9.7998 -63.5c-25.9004 0.699219 -51.2002 -11 -77.9004 -2.90039c-0.700195 5.90039 -1.09961 30.9004 0.299805 41.0996
-c1.40039 9.5 33.6006 29.9004 33 43.7002c-5.5 0.600586 -9.2002 -2.59961 -12.3994 -6.89941c-13.3008 -19.5 -47.2002 -41.9004 -71.3008 -41.9004c-16.5996 0 -56.2998 71.5 -76.3994 85.9004c-3.2002 2.2998 -5.2002 5.39941 -7.7998 8.59961
-c-16.1006 -3.7998 -139.4 -32.2002 -147.4 -32.2002c-6 0 -11.5 4.90039 -11.5 10.9004c0 5.5 3.40039 10.7002 8.90039 11.7998l139.6 30.4004c-9.5 17.1992 12.2998 17.5 21.5 20.0996c3.2002 0.799805 6.2998 4 9.5 4c6.2998 0 11.7998 -8.90039 13.7998 -14.0996
-c6.2998 1.39941 45.7002 10.5996 49.4004 10.5996c15.2002 0 15.8994 -20.0996 2.89941 -22.7002l-52.2998 -11.5l-0.299805 -4.59961c-0.299805 -10.1006 45.4004 -60.1006 53.4004 -60.1006c18.0996 0 54.8994 41.7002 54.8994 60.1006
-c0 30.7002 -42.7998 12.5996 -42.7998 33.5996c0 3.5 1.2002 6.60059 2.90039 9.7998l-19.5 5.5c13.0996 13.6006 13.7998 31.7002 10.8994 50.3008c14.7002 2.89941 26.7002 4.59961 41.4004 4.59961c56.8994 0 45.7002 -8.59961 65.5 -54.2998l14.3994 7.2002
-c-2.2998 -34.2002 -36.1992 -17.5 -35.0996 -31l0.299805 -6c74.7002 2.89941 116.101 -58.6006 150 -115.5zM300.1 19.7998h8.90039l2.90039 -23.7998l-11.8008 -3.40039v27.2002zM231.4 170.2l13.7998 3.5l31.2998 -50.9004l-21 -13.7998zM315.8 15.2998
-c22.6006 2.5 32.7002 6.2998 59.5 6.2998c0.299805 -1.39941 0.900391 -3.19922 0.900391 -4.59961c0 -7.5 -49.4004 -12.5996 -58.4004 -14.0996z" />
-    <glyph glyph-name="drupal" unicode="&#xf1a9;" 
-d="M319.5 333.3c13.5 -8.2998 96.5 -67 96.5 -179.3c0 -112 -88.5 -186 -190.2 -186c-102 0 -193.8 80.2998 -193.8 189.5c0 109 85 167.5 100.8 175.8c18.7002 10.1006 32.2002 15.2998 53.5 32.2998c10.5 8.30078 19.2998 20.2002 22 49.5
-c15.2002 -18.2998 33.5 -39.5 46.5 -48.2998c21.2002 -14 42.5 -19.5 64.7002 -33.5zM322 7.7002c4.2002 4.2002 1.90039 13.0996 -4.2002 8.5c-8.5 -6.2998 -27.5 -14 -54.5 -14c-34.5 0 -51.5 13.2998 -51.5 13.2998c-6.2002 0 -11.2998 -7.2002 -6.5 -12
-c26.6006 -24.5 96.6006 -15.9004 116.7 4.2002zM267.5 60.2998c-6.5 -2.7002 -28.4004 -16.7998 -22.4004 -25c2.40039 -3.2998 5.2002 -1.2998 12.2002 4.7002c7.2002 5.7998 12 11 26.7002 11c25.2998 0 18.0996 -19.9004 26.5 -15.7002
-c9.90039 4.90039 -2.09961 20.9004 -6.2002 23.7002c-7.7998 5.09961 -28.0996 4.90039 -36.7998 1.2998zM360 43c39.0996 -3.2998 64.5 106 15.7998 106c-20 0 -60.5 -41.5 -81.7998 -41.7998c-24.7002 -0.5 -59 49 -108.5 48.5
-c-66.4004 -0.400391 -90.5996 -78.6006 -51.7998 -105.2c57.2002 -38.7002 130.399 42.9004 161.3 42c19.5 -0.700195 49.7998 -48.5 65 -49.5z" />
-    <glyph glyph-name="joomla" unicode="&#xf1aa;" 
-d="M0.599609 355.9c0 33.2998 26.8008 60.0996 59.8008 60.0996c30 0 54.5 -21.9004 59.1992 -50.2002c32.6006 7.60059 67.1006 -0.599609 96.5 -30l-44.2998 -44.2998c-20.5 20.5 -42.5996 16.2998 -55.3994 3.5c-14.3008 -14.2998 -14.3008 -37.9004 0 -52.2002
-l99.5 -99.5l-44 -44.2998c-87.7002 87.2002 -49.7002 49.7002 -99.8008 99.7002c-26.7998 26.5 -35 64.7998 -24.7998 98.8994c-26.8994 5.80078 -46.7002 29.7002 -46.7002 58.3008zM130.1 239.5c28.5 28.4004 81.3008 80.7998 99.6006 99.9004
-c26.5996 26.5996 64.5 35 98.2998 25.0996c4.09961 29.0996 29.2002 51.5996 59.5 51.5996c33 0 59.7998 -26.8994 59.7998 -60.0996c0 -30.2998 -22.7002 -55.4004 -51.8994 -59.5c9.59961 -33.5996 2.2998 -70 -28.9004 -101.2l-44 44.2998
-c20.5 20.4004 16.2998 42.6006 3.5 55.4004c-14.2998 14.2998 -37.5996 14.2998 -51.9004 0c-10 -10.0996 -89.6992 -89.7998 -99.6992 -99.7998zM396.4 87.2998c29.0996 -4.09961 51.5996 -28.8994 51.5996 -59.0996c0 -33.2998 -26.7998 -60.1006 -59.7998 -60.1006
-c-29.2002 0 -53.4004 20.7002 -58.9004 48.1006c-34.7002 -10.7998 -75.0996 -2.2002 -102.7 28l44 44.2998c20.4004 -20.5 42.6006 -16.2998 55.4004 -3.5c14.2998 14.2998 14.2998 37.5996 0 51.9004l-99.7002 99.6992l44.2998 44.3008
-c104.5 -104.4 87.7002 -87.5 99.5 -99.7002c25.4004 -25.4004 34.5 -61.2002 26.3008 -93.9004zM312.1 140.4c-87.2998 -87.3008 -67.3994 -67.7002 -99.5 -99.7002c-25.6992 -25.4004 -61.5 -34.2002 -94.1992 -26c-6.10059 -26.9004 -30 -46.7002 -58.6006 -46.7002
-c-33 0 -59.7998 26.7998 -59.7998 60.0996c0 28.3008 19.5 52.2002 46.2002 58.2002c-8.5 33.1006 -0.700195 68.1006 29.5 98.2998l44 -44.2998c-20.1006 -20.0996 -16.2998 -42 -3.2002 -55.3994c14.2998 -14.3008 37.5996 -14.3008 51.9004 0
-c49.2998 49.3994 12.6992 13.3994 99.6992 99.7998z" />
-    <glyph glyph-name="behance" unicode="&#xf1b4;" horiz-adv-x="576" 
-d="M232 210.8c43.5996 -12.2998 64.7002 -45.2002 64.7002 -89.7002c0 -72 -60.5 -102.899 -124.9 -102.899h-171.8v354.399h167.1c60.7002 0 113.301 -17.1992 113.301 -87.7998c0 -35.7998 -16.6006 -58.7998 -48.4004 -74zM77.9004 312.1v-82.6992h79
-c27.7998 0 47.5 12.0996 47.5 42.1992c0 32.6006 -25.3008 40.5 -53.4004 40.5h-73.0996zM161.2 78.4004c31.7002 0 57.5996 11.1992 57.5996 47c0 36.2998 -21.7002 50.5996 -56 50.5996h-84.8994v-97.5996h83.2998zM519.7 319.1h-143.7v34.9004h143.7v-34.9004zM576 142.8
-c0 -4.5 -0.299805 -9 -0.599609 -13.2002h-185.101c0 -41.0996 21.7002 -65.2998 63 -65.2998c21.4004 0 49 11.6006 55.7002 33.5h62.2002c-19.1006 -58.7002 -58.7998 -86.2998 -120.101 -86.2998c-81 0 -131.3 54.7998 -131.3 134.7c0 77 53.1006 135.8 131.3 135.8
-c80.5 0 124.9 -63.2998 124.9 -139.2zM390.4 174h114.699c-3 34 -20.7998 54.7998 -56.1992 54.7998c-33.8008 0 -56.2002 -21.0996 -58.5 -54.7998z" />
-    <glyph glyph-name="behance-square" unicode="&#xf1b5;" 
-d="M186.5 155c0 -19.2998 -14 -25.4004 -31.2002 -25.4004h-45.0996v52.9004h46c18.5996 -0.0996094 30.2998 -7.7998 30.2998 -27.5zM178.8 237.3c0 -16.2998 -10.7002 -22.8994 -25.7998 -22.8994h-42.7002v44.7998h39.6006c15.1992 0 28.8994 -4.2002 28.8994 -21.9004z
-M311.1 214.1c19.2002 0 28.8008 -11.1992 30.5 -29.6992h-62.1992c1.19922 18.2998 13.3994 29.6992 31.6992 29.6992zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM271.7 263h77.7998
-v18.9004h-77.7998v-18.9004zM228.7 152.7c0 24.0996 -11.4004 44.8994 -35 51.5996c17.2002 8.2002 26.2002 17.7002 26.2002 37c0 38.2002 -28.5 47.5 -61.4004 47.5h-90.5v-192h93.0996c34.9004 0.200195 67.6006 16.9004 67.6006 55.9004zM380 167.5
-c0 41.0996 -24.0996 75.4004 -67.5996 75.4004c-42.4004 0 -71.1006 -31.8008 -71.1006 -73.6006c0 -43.2998 27.2998 -73 71.1006 -73c33.1992 0 54.6992 14.9004 65.0996 46.7998h-33.7002c-3.7002 -11.8994 -18.5996 -18.0996 -30.2002 -18.0996
-c-22.3994 0 -34.0996 13.0996 -34.0996 35.2998h100.2c0.0996094 2.2998 0.299805 4.7998 0.299805 7.2002z" />
-    <glyph glyph-name="steam" unicode="&#xf1b6;" horiz-adv-x="496" 
-d="M496 192c0 -137 -111.2 -248 -248.4 -248c-113.8 0 -209.6 76.2998 -239 180.4l95.2002 -39.3008c6.40039 -32.0996 34.9004 -56.3994 68.9004 -56.3994c39.2002 0 71.8994 32.3994 70.2002 73.5l84.5 60.2002c52.0996 -1.30078 95.7998 40.8994 95.7998 93.5
-c0 51.5996 -42 93.5 -93.7002 93.5s-93.7002 -42 -93.7002 -93.5v-1.2002l-59.2002 -85.7002c-15.5 0.900391 -30.6992 -3.40039 -43.5 -12.0996l-133.1 55c10.2002 127.699 117.1 228.1 247.6 228.1c137.2 0 248.4 -111 248.4 -248zM155.7 63.7002
-c19.7998 -8.2002 42.5 1.09961 50.7998 21c8.2998 19.7998 -1.09961 42.5 -20.9004 50.7002l-31.5 13c12.2002 4.59961 26 4.7998 38.9004 -0.600586c13 -5.39941 23.0996 -15.5996 28.5 -28.5996s5.2998 -27.2998 -0.0996094 -40.2998
-c-11.2002 -26.8008 -42.1006 -39.6006 -69 -28.4004c-11.9453 4.99414 -21.6055 14.1826 -27.2002 25.7998zM329.5 193.6c-34.4004 0 -62.4004 28 -62.4004 62.3008c0 34.2998 28 62.2998 62.4004 62.2998s62.4004 -28 62.4004 -62.2998
-c0 -34.3008 -27.9004 -62.3008 -62.4004 -62.3008zM329.6 209.2c25.9004 0 46.9004 21 46.9004 46.7998c0 25.9004 -21 46.7998 -46.9004 46.7998c-25.8994 0 -46.8994 -21 -46.8994 -46.7998c0.0996094 -25.7998 21.0996 -46.7998 46.8994 -46.7998z" />
-    <glyph glyph-name="steam-square" unicode="&#xf1b7;" 
-d="M185.2 91.5c7.7002 18.5 -1 39.7002 -19.6006 47.4004l-29.5 12.1992c11.4004 4.30078 24.3008 4.5 36.4004 -0.5c12.2002 -5.09961 21.5996 -14.5996 26.7002 -26.6992c5 -12.2002 5 -25.6006 -0.100586 -37.7002c-10.5 -25.1006 -39.3994 -37 -64.5996 -26.5
-c-11.5996 4.7998 -20.4004 13.5996 -25.4004 24.2002l28.5 -11.8008c18.6006 -7.7998 39.9004 0.900391 47.6006 19.4004zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v112.8l89.0996 -36.8994
-c6 -30 32.7002 -52.7002 64.5 -52.7002c36.6006 0 67.3008 30.2998 65.7002 68.7998l79 56.2998c48.7002 -1.2002 89.6006 38.2998 89.6006 87.5c0 48.2002 -39.3008 87.5 -87.6006 87.5s-87.5996 -39.2998 -87.5996 -87.5v-1.09961l-55.4004 -80.2002
-c-14.5 0.799805 -28.7002 -3.09961 -40.7002 -11.2998l-116.6 48.0996v160.7c0 26.5 21.5 48 48 48h352zM300.3 193.5c-32.2002 0 -58.3994 26.0996 -58.3994 58.2998s26.1992 58.2998 58.3994 58.2998s58.4004 -26.1992 58.4004 -58.2998
-c0 -32.0996 -26.2002 -58.2998 -58.4004 -58.2998zM300.4 208.1c24.1992 0 43.8994 19.6006 43.8994 43.8008c0 24.1992 -19.5996 43.7998 -43.8994 43.7998c-24.2002 0 -43.9004 -19.6006 -43.9004 -43.7998c0 -24.2002 19.7002 -43.8008 43.9004 -43.8008z" />
-    <glyph glyph-name="spotify" unicode="&#xf1bc;" horiz-adv-x="496" 
-d="M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM348.7 75.0996c8.09961 0 15.2002 6.30078 15.2002 15.4004s-3.60059 12.5996 -9.7002 16.5c-71.4004 42.7002 -155.101 44.2998 -237 26.2002
-c-7.5 -1.60059 -13.6006 -6.5 -13.6006 -16.7998c0 -8.10059 6.10059 -15.8008 15.8008 -15.8008c2.89941 0 8 1.60059 11.8994 2.60059c71.7002 14.7002 144.3 13.0996 206.7 -24.5c3.90039 -2.2998 6.5 -3.60059 10.7002 -3.60059zM375.6 140.7
-c10.9004 0 19.3008 8.7002 19.4004 19.5c0 8.7002 -3.2002 14.8994 -11.2998 19.7002c-49.4004 29.3994 -112.101 45.5 -177 45.5c-41.6006 0 -70 -5.80078 -97.7998 -13.6006c-10.3008 -2.89941 -15.5 -10 -15.5 -20.7002c0 -10.6992 8.69922 -19.3994 19.3994 -19.3994
-c4.5 0 7.10059 1.2998 11.9004 2.59961c82.8994 22.5 176.1 7.60059 238.6 -29.3994c3.60059 -1.90039 7.10059 -4.2002 12.2998 -4.2002zM406.6 216.9c12.2002 0 23.2002 9.69922 23.2002 23.2998c0 11.8994 -5.09961 18.0996 -12.8994 22.5996
-c-55.9004 32.6006 -132.4 47.7998 -205.4 47.7998c-42.9004 0 -82.2998 -4.89941 -117.5 -15.1992c-9 -2.60059 -17.4004 -10.3008 -17.4004 -23.9004c0 -13.2998 10.1006 -23.5996 23.3008 -23.5996c4.7998 0 9.2998 1.59961 12.8994 2.59961
-c82.4004 23 209.7 12.7998 280.9 -29.7002c4.5 -2.59961 7.7002 -3.89941 12.8994 -3.89941z" />
-    <glyph glyph-name="deviantart" unicode="&#xf1bd;" horiz-adv-x="320" 
-d="M320 354.8l-98.2002 -179.1l7.40039 -9.5h90.7998v-127.7h-160.9l-13.5 -9.2002l-43.6992 -84c-0.300781 0 -8.60059 -8.59961 -9.2002 -9.2002h-92.7002v93.2002l93.2002 179.4l-7.40039 9.2002h-85.7998v127.6h156l13.5 9.2002l43.7002 84
-c0.299805 0 8.59961 8.59961 9.2002 9.2002h97.5996v-93.1006z" />
-    <glyph glyph-name="soundcloud" unicode="&#xf1be;" horiz-adv-x="640" 
-d="M111.4 191.7l5.7998 -65l-5.7998 -68.2998c-0.300781 -2.5 -2.2002 -4.40039 -4.40039 -4.40039s-4.2002 1.90039 -4.2002 4.40039l-5.59961 68.2998l5.59961 65c0 2.2002 1.90039 4.2002 4.2002 4.2002c2.2002 0 4.09961 -2 4.40039 -4.2002zM132.8 237.3
-c2.5 0 4.7002 -2.2002 4.7002 -5l5.7998 -105.6l-5.7998 -68.2998c0 -2.80078 -2.2002 -5 -4.7002 -5c-2.7998 0 -4.7002 2.19922 -5 5l-5 68.2998l5 105.6c0.299805 2.7998 2.2002 5 5 5zM158.3 261.4c2.7998 0 5.2998 -2.2002 5.2998 -5.30078l5.30078 -130
-l-5.30078 -67.7998c0 -3.09961 -2.5 -5.2998 -5.2998 -5.2998c-3.09961 0 -5.2998 2.2002 -5.59961 5.2998l-4.40039 67.7998l4.40039 130c0.299805 3.10059 2.5 5.30078 5.59961 5.30078zM7.2002 164.8c1.39941 0 2.2002 -1.09961 2.5 -2.5l5.59961 -35.5996l-5.59961 -35
-c-0.299805 -1.40039 -1.10059 -2.5 -2.5 -2.5c-1.40039 0 -2.2002 1.09961 -2.5 2.5l-4.7002 35l4.7002 35.5996c0.299805 1.40039 1.09961 2.5 2.5 2.5zM30.7998 186.7c1.40039 0 2.5 -1.10059 2.7998 -2.5l7.2002 -57.5l-7.2002 -56.4004
-c-0.299805 -1.39941 -1.39941 -2.5 -2.7998 -2.5c-1.39941 0 -2.5 1.10059 -2.5 2.7998l-6.39941 56.1006l6.39941 57.5c0 1.39941 1.10059 2.5 2.5 2.5zM56.0996 198.1c1.7002 0 3.10059 -1.39941 3.10059 -3.2998l6.89941 -68.0996l-6.89941 -65.7998
-c0 -1.7002 -1.40039 -3.10059 -3.10059 -3.10059c-1.59961 0 -3 1.40039 -3.2998 3.10059l-5.7998 65.7998l5.7998 68.0996c0.200195 1.90039 1.60059 3.2998 3.2998 3.2998zM81.4004 200.3c1.89941 0 3.59961 -1.39941 3.89941 -3.59961l6.40039 -70l-6.40039 -67.7998
-c-0.299805 -2.2002 -2 -3.60059 -3.89941 -3.60059c-1.90039 0 -3.60059 1.40039 -3.60059 3.60059l-5.7998 67.7998l5.7998 70c0 2.2002 1.7002 3.59961 3.60059 3.59961zM322.8 311.2c2.5 -1.40039 4.10059 -4.2002 4.5 -7.2002l3.90039 -177.5l-3.90039 -64.2002
-c0 -4.7002 -3.89941 -8.59961 -8.59961 -8.59961s-8.60059 3.89941 -8.90039 8.59961l-1.7002 31.7002l-1.69922 32.5l3.2998 176.7v0.799805c0.200195 2.5 1.39941 5 3.2998 6.7002c1.40039 1.09961 3.40039 1.89941 5.59961 1.89941
-c1.40039 0 3.10059 -0.599609 4.2002 -1.39941zM296.1 295.9c2.2002 -1.40039 3.60059 -3.90039 3.90039 -6.7002l3.2998 -162.8l-3.09961 -58.6006l-0.299805 -6.7002c0 -2.2998 -0.800781 -4.19922 -2.5 -5.59961c-1.40039 -1.40039 -3.40039 -2.5 -5.60059 -2.5
-c-2.5 0 -4.7002 1.2002 -6.39941 3.09961c-1.10059 1.40039 -1.7002 3 -1.7002 4.7002v0.299805c-3.10059 65.3008 -3.10059 65.6006 -3.10059 65.6006l2.80078 160.8l0.299805 1.7002c0 2.7998 1.39941 5.2998 3.59961 6.7002
-c1.2998 0.799805 2.7998 1.39941 4.40039 1.39941c1.59961 0 3 -0.599609 4.39941 -1.39941zM184.7 273.4c3.39941 0 5.89941 -2.80078 6.09961 -6.10059l5 -140.6l-5 -67.2002c-0.299805 -3.2998 -2.7998 -5.7998 -6.09961 -5.7998c-3 0 -5.5 2.5 -5.7998 5.7998
-l-4.40039 67.2002l4.40039 140.6c0 3.2998 2.69922 6.10059 5.7998 6.10059zM561.4 210.6c43.2998 0 78.5996 -35.2998 78.5 -78.8994c0 -43.2998 -35.3008 -78.2998 -78.6006 -78.2998h-218.3c-4.7002 0.599609 -8.59961 4.19922 -8.59961 9.19922v249.7
-c0 4.7998 1.69922 7 7.7998 9.2002c15.2998 6.09961 32.5 9.40039 50.2998 9.40039c72.5 0 131.9 -55.6006 138.3 -126.4c9.5 3.90039 19.7998 6.09961 30.6006 6.09961zM264.7 270.9c4.2002 0 7.2002 -3.30078 7.5 -7.80078l3.89941 -136.699l-3.89941 -65.6006
-c0 -4.2002 -3.2998 -7.5 -7.5 -7.5s-7.5 3.2998 -7.7998 7.5l-3.30078 65.6006l3.30078 136.699c0.299805 4.5 3.59961 7.80078 7.7998 7.80078zM211.1 278.7c3.60059 0 6.40039 -3.10059 6.7002 -6.7002l4.40039 -145.3l-4.40039 -66.9004
-c-0.299805 -3.59961 -3.09961 -6.39941 -6.7002 -6.39941c-3.2998 0 -6.09961 2.7998 -6.39941 6.39941l-3.90039 66.9004l3.90039 145.3c0 3.59961 3.09961 6.7002 6.39941 6.7002zM237.8 275.3c3.90039 0 6.90039 -3 6.90039 -6.89941l4.2002 -141.7l-4.2002 -66.4004
-c0 -3.7998 -3.10059 -6.89941 -6.90039 -6.89941s-6.59961 3 -6.89941 6.89941l-3.90039 66.4004l3.90039 141.7c0 3.7998 3 6.89941 6.89941 6.89941z" />
-    <glyph glyph-name="vine" unicode="&#xf1ca;" horiz-adv-x="384" 
-d="M384 193.3v-52.0996c-18.4004 -4.2002 -36.9004 -6.10059 -52.0996 -6.10059c-36.9004 -77.3994 -103 -143.8 -125.101 -156.199c-14 -7.90039 -27.0996 -8.40039 -42.7002 0.799805c-27.0996 16.2998 -129.899 100.6 -164.1 365.6h74.5
-c18.7002 -159.1 64.5 -240.7 114.8 -301.8c27.9004 27.9004 54.7998 65.0996 75.6006 106.9c-49.8008 25.2998 -80.1006 80.8994 -80.1006 145.6c0 65.5996 37.7002 115.1 102.2 115.1c114.9 0 106.2 -127.899 81.5996 -181.5c0 0 -46.3994 -9.19922 -63.5 20.5
-c3.40039 11.3008 8.2002 30.8008 8.2002 48.5c0 31.3008 -11.2998 46.6006 -28.3994 46.6006c-18.2002 0 -30.8008 -17.1006 -30.8008 -50c0.100586 -79.2002 59.4004 -118.7 129.9 -101.9z" />
-    <glyph glyph-name="codepen" unicode="&#xf1cb;" horiz-adv-x="512" 
-d="M502.285 288.296c6.00098 -3.99902 9.71484 -11.1426 9.71582 -18.2852v-155.999c0 -7.14258 -3.71484 -14.2871 -9.71484 -18.2861l-234 -156.021c-8.06055 -4.95996 -16.584 -4.91504 -24.5713 0l-234 156.021c-6.00098 4 -9.71484 11.1436 -9.71484 18.2861v155.999
-c0 7.14258 3.71387 14.2861 9.71387 18.2852l234 156c8.06055 4.95996 16.584 4.91504 24.5713 0zM278 384.869v-102.572l95.4287 -63.7148l76.8574 51.4287zM234 384.869l-172.286 -114.858l76.8574 -51.4287l95.4287 63.7148v102.572zM44 228.868v-73.7139
-l55.1426 36.8564zM234 -0.84668v102.571l-95.4287 63.7158l-76.8574 -51.4297zM256 140.011l77.7148 52l-77.7148 52l-77.7148 -52zM278 -0.84668l172.286 114.857l-76.8574 51.4297l-95.4287 -63.7158v-102.571zM468 155.154v73.7139l-55.1426 -36.8574z" />
-    <glyph glyph-name="jsfiddle" unicode="&#xf1cc;" horiz-adv-x="576" 
-d="M510.634 210.538c45.6885 -25.334 68.3721 -74.5605 56.832 -122.634c-12.1035 -50.4199 -55.5479 -86.6592 -108.212 -87.293c-84.0303 -1.01172 -168.079 -0.458984 -252.12 -0.480469c-30.3223 -0.00683594 -60.668 -0.492188 -90.959 0.539062
-c-48.0938 1.63672 -91.7764 35.8643 -105.607 81.4326c-14.1289 46.5508 2.18945 94.623 41.9014 124.615c2.54688 1.92383 4.86914 6.52051 4.51465 9.54492c-3.74609 31.8604 7.14453 57.6709 32.6758 76.4082c26.2822 19.2881 55.2285 21.5879 85.3311 9.16699
-c2.36621 -0.975586 4.63965 -2.17773 7.82422 -3.68555c16.5215 27.5332 38.1221 48.6523 65.4922 63.9023c92.8594 51.7402 210.954 8.31152 246.85 -91.6455c5.55762 -15.4766 6.74512 -32.6074 9.09668 -49.0947c0.716797 -5.02832 1.6543 -8.15527 6.38086 -10.7764z
-M531.741 53.6582c39.3135 48.375 22.418 117.668 -35.1426 144.497c-7.43555 3.46582 -9.72559 7.74414 -9.84766 15.8936c-1.87012 125.129 -132.78 187.063 -230.24 132.697c-26.1133 -14.5674 -46.4492 -34.8955 -60.6709 -61.2939
-c-7.59082 -14.0908 -11.9287 -7.97754 -22.1982 -2.52734c-24.6113 13.0635 -49.0469 12.6406 -72.0332 -3.08301c-21.9678 -15.0244 -31.9102 -36.6201 -26.4199 -62.9805c2.4082 -11.5703 -0.914062 -17.0635 -10.0967 -23.1367
-c-38.1895 -25.2578 -53.0879 -74.8604 -34.1855 -116.105c18.4355 -40.2295 51.3135 -59.6631 95.1748 -59.9951c0.700195 -0.00488281 163.728 -0.545898 163.728 0.154297c56.8857 0 113.778 -0.551758 170.652 0.229492
-c28.9375 0.397461 53.0498 13.2178 71.2803 35.6504zM443.952 134.157c-5.84863 -31.1572 -34.6221 -55.0967 -66.666 -55.0957c-16.9531 0.00195312 -32.0586 6.5459 -44.0791 17.7051c-27.6973 25.7139 -71.1406 74.9805 -95.9375 93.3877
-c-20.0557 14.8877 -41.9893 12.333 -60.2715 -3.78223c-49.9961 -44.0713 15.8594 -121.775 67.0625 -77.1885c4.54883 3.95996 7.84082 9.54297 12.7441 12.8447c8.18457 5.50879 20.7666 0.883789 13.168 -10.6221c-17.3574 -26.2842 -49.3301 -38.1973 -78.8623 -29.3008
-c-28.8975 8.70312 -48.8408 35.9678 -48.626 70.1787c1.22461 22.4844 12.3633 43.0596 35.4141 55.9648c22.5742 12.6377 46.3682 13.1455 66.9902 -2.47363c50.791 -38.4756 75.5781 -81.7451 107.296 -101.245c24.5586 -15.0996 54.2549 -7.36328 68.8232 17.5059
-c28.8301 49.209 -34.5918 105.016 -78.8682 63.46c-3.98828 -3.74414 -6.91699 -8.93164 -11.4092 -11.7197c-10.9756 -6.81152 -17.333 4.1123 -12.8096 10.3525c20.7031 28.5537 50.4639 40.4404 83.2715 28.2139c31.4287 -11.7139 49.1074 -44.3662 42.7598 -78.1855z
-" />
-    <glyph glyph-name="rebel" unicode="&#xf1d0;" horiz-adv-x="512" 
-d="M256.5 -56c-139.3 0 -247.5 116.2 -243.3 254.1c2.7998 79.2002 43.2002 152.2 116.5 200.4c0.299805 0 1.89941 0.599609 1.09961 -0.799805c-5.7998 -5.5 -111.3 -129.8 -14.0996 -226.4c49.7998 -49.5 90 -2.5 90 -2.5c38.5 50.1006 -0.600586 125.9 -0.600586 125.9
-c-10 24.8994 -45.6992 40.0996 -45.6992 40.0996l28.7998 31.7998c24.3994 -10.5 43.2002 -38.6992 43.2002 -38.6992c0.799805 29.5996 -21.9004 61.3994 -21.9004 61.3994l44.5996 50.7002l44.3008 -50.0996c-20.5 -28.8008 -21.9004 -62.6006 -21.9004 -62.6006
-c13.7998 23 43.5 39.2998 43.5 39.2998l28.5 -31.7998c-27.4004 -8.89941 -45.4004 -39.8994 -45.4004 -39.8994c-15.7998 -28.5 -27.0996 -89.4004 0.600586 -127.301c32.3994 -44.5996 87.7002 2.80078 87.7002 2.80078c102.699 91.8994 -10.5 225 -10.5 225
-c-6.10059 5.5 0.799805 2.7998 0.799805 2.7998c50.0996 -36.5 114.6 -84.4004 116.2 -204.8c2 -145.601 -99.9004 -249.4 -242.4 -249.4z" />
-    <glyph glyph-name="empire" unicode="&#xf1d1;" horiz-adv-x="496" 
-d="M287.6 393.8c-10.7998 2.2002 -22.0996 3.2998 -33.5 3.60059v18.1992c78.1006 -2.19922 146.101 -44 184.601 -106.6l-15.7998 -9.09961c-6.10059 9.69922 -12.7002 18.7998 -20.2002 27.0996l-18 -15.5c-26 29.5996 -61.4004 50.7002 -101.9 58.4004zM53.4004 125.6
-c3.89941 -10.7998 8.2998 -21.0996 13.5996 -31.0996l-15.7998 -9.09961c-17.1006 31.5996 -27.1006 68.0996 -27.1006 106.6s9.90039 75 27.1006 106.5l15.7998 -9.09961c-5.2998 -9.7002 -10 -20.2002 -13.5996 -31l22.6992 -7.7002
-c-6.39941 -18.2998 -9.69922 -38.2002 -9.69922 -58.7002s3.59961 -40.4004 10 -58.7002zM213.1 14l-4.69922 -23.7998c10.7998 -1.90039 22.1992 -3.2998 33.5 -3.60059v-18.2998c-78.1006 2.2998 -146.4 44.2998 -184.9 106.601l16 9.39941
-c5.7998 -9.7002 12.7002 -18.7998 20.2002 -27.3994l18 15.7998c26.0996 -29.6006 61.5 -50.7002 101.899 -58.7002zM93.2998 327.1c-7.5 -8.2998 -14.0996 -17.5 -20.0996 -27.1992l-15.7998 9.09961c38.5 62.5996 106.5 104.4 184.6 106.6v-18.1992
-c-11.4004 -0.300781 -22.7002 -1.40039 -33.5 -3.60059l4.7002 -23.7998c-40.5 -7.7002 -75.9004 -28.7998 -101.9 -58.4004zM402.7 56.9004c7.5 8.59961 14.3994 17.6992 20.0996 27.3994l16.1006 -9.39941c-38.5 -62.3008 -106.801 -104.4 -184.9 -106.601v18.2998
-c11.4004 0.300781 22.7002 1.7002 33.5 3.60059l-4.7002 23.7998c40.5 8 75.9004 29.0996 101.9 58.7002zM496 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM483.8 192c0 130.1 -105.7 235.8 -235.8 235.8
-s-235.8 -105.7 -235.8 -235.8s105.7 -235.8 235.8 -235.8s235.8 105.7 235.8 235.8zM444.8 298.6c17.2002 -31.5996 27.1006 -68.0996 27.1006 -106.6s-9.90039 -75 -27.1006 -106.4l-15.7998 9.10059c5.2998 10 9.7002 20.2002 13.5996 31l-23 7.7002
-c6.40039 18.2998 10 38.1992 10 58.6992s-3.2998 40.4004 -9.69922 58.7002l22.6992 7.7002c-3.59961 10.7998 -8.2998 21.2998 -13.5996 31zM261.8 120.9l13.2998 -66.7002c-8.59961 -1.7002 -17.6992 -2.7998 -27.0996 -2.7998s-18.5 1.09961 -27.0996 2.7998
-l13.2998 66.7002c-16.2998 3.2998 -30.5 11.5996 -40.7002 23.5l-51.2002 -44.8008c-11.8994 13.6006 -21.2998 29.4004 -27.0996 46.8008l64.2002 22.0996c-2.5 7.40039 -3.90039 15.2002 -3.90039 23.5s1.40039 16 3.90039 23.5l-64.5 22.0996
-c6.09961 17.5 15.5 33.2002 27.3994 46.8008l51.2002 -44.8008c10.2998 11.9004 24.4004 20.5 40.7002 23.8008l-13.2998 66.3994c8.59961 2 17.6992 2.7998 27.0996 2.7998s18.5 -0.899414 27.0996 -2.7998l-13.2998 -66.3994
-c16.2998 -3.30078 30.5 -11.9004 40.7002 -23.8008l51.2002 44.8008c11.8994 -13.6006 21.2998 -29.4004 27.3994 -46.8008l-64.5 -22.0996c2.5 -7.40039 3.90039 -15.2002 3.90039 -23.5s-1.40039 -16 -3.90039 -23.5l64.2002 -22.0996
-c-5.7998 -17.5 -15.2002 -33.2002 -27.0996 -46.8008l-51.2002 44.8008c-10.2998 -11.9004 -24.4004 -20.2002 -40.7002 -23.5z" />
-    <glyph glyph-name="git-square" unicode="&#xf1d2;" 
-d="M100.59 113.76c48.5703 -3.30957 58.9502 -2.10938 58.9502 -11.9395c0 -20 -65.5498 -20.0605 -65.5498 -1.52051c0.00976562 5.08984 3.29004 9.40039 6.59961 13.46zM128.54 230.4c30.96 0 31.7598 -44.4707 -0.75 -44.4707c-33 0 -31.54 44.4707 0.75 44.4707z
-M448 368v-352c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352c26.4922 0 48 -21.5078 48 -48zM221 298.69c0 -14.4902 8.37988 -22.8809 22.8604 -22.8809c14.7393 0 23.1299 8.39062 23.1299 22.8809
-c0 14.4893 -8.37012 22.3096 -23.1104 22.3096c-14.4795 0 -22.8799 -7.83984 -22.8799 -22.3096zM199.18 253h-49.5498c-25 6.5498 -81.5596 4.84961 -81.5596 -46.75c0 -18.7998 9.39941 -32 21.8496 -38.1104c-15.6895 -14.3701 -23.1201 -21.1396 -23.1201 -30.7393
-c0 -6.87012 2.79004 -13.2207 11.1807 -16.7607c-8.90039 -8.39941 -14 -14.4795 -14 -25.9199c0.0195312 -20.0693 17.5498 -31.7197 63.5391 -31.7197c44.2207 0 69.8701 16.5098 69.8701 45.7305c0 36.6699 -28.2295 35.3193 -94.7695 39.3799l8.37988 13.4297
-c17 -4.74023 74.1904 -6.23047 74.1904 42.4297c0 11.6904 -4.83008 19.8203 -9.40039 25.6699l23.3799 1.78027zM283.52 143.16l-13 1.78027c-3.81934 0.509766 -4.06934 1 -4.06934 5.08984v105.45h-52.6006l-2.79004 -20.5703c15.75 -5.5498 17 -4.86035 17 -10.1699
-v-74.7402c0 -5.62012 -0.30957 -4.58008 -17 -6.87012v-20.0596h72.4209zM384 133l-6.87012 22.3701c-40.9297 -15.3701 -37.8496 12.4102 -37.8496 16.7295v60.7207h37.8496v25.4102h-35.8203c-2.86914 0 -2 -2.52051 -2 38.6299h-24.1797
-c-2.79004 -27.7002 -11.6797 -38.8799 -34 -41.4199v-22.6201c20.4697 0 19.8203 0.849609 19.8203 -2.54004v-66.5703c0 -28.7197 11.4297 -40.9102 41.6699 -40.9102c14.4502 0 30.4502 4.83008 41.3799 10.2002z" />
-    <glyph glyph-name="git" unicode="&#xf1d3;" horiz-adv-x="512" 
-d="M216.29 289.61l0.0400391 -34.5508l-37.4102 -2.83984c7.27051 -9.35938 15 -22.3701 15 -41.0693c0 -77.8906 -91.4297 -75.4707 -118.7 -67.8906l-13.4297 -21.5498c106.47 -6.5 151.63 -4.33984 151.63 -63c0 -46.7598 -41.04 -73.1797 -111.79 -73.1797
-c-73.5801 0 -101.63 18.71 -101.63 50.8193c0 18.3008 8.12988 28.04 22.4004 41.4502c-13.4199 5.66992 -17.8906 15.8105 -17.8906 26.8105c0 15.3594 11.9004 26.21 37 49.21c-20 9.76953 -35 30.9102 -35 61c0 82.5498 90.4902 85.2793 130.49 74.79h79.29z
-M152.87 47.71c0 15.7402 -16.6104 13.8096 -94.3203 19.1104c-5.2998 -6.54004 -10.5693 -13.4004 -10.5693 -21.54c0 -29.6699 104.89 -29.6299 104.89 2.42969zM102.06 182.29c52.0205 0 50.7402 71.1602 1.2002 71.1602c-51.6602 0 -54 -71.1602 -1.2002 -71.1602z
-M235.36 81.7803v32.0996c26.75 3.66016 27.2393 2 27.2393 11v119.51c0 8.5 -2.0498 7.37988 -27.2393 16.2607l4.46973 32.9199h84.1699v-168.71c0 -6.51074 0.400391 -7.32031 6.50977 -8.14062l20.7305 -2.83984v-32.0996h-115.88zM287.81 326.09
-c-23.1699 0 -36.5898 13.4297 -36.5898 36.6104c0 23.1797 13.4199 35.7695 36.5898 35.7695c23.5801 0 37 -12.6201 37 -35.7695c0 -23.1504 -13.4199 -36.6104 -37 -36.6104zM512 97.54c-17.4902 -8.53027 -43.0996 -16.2598 -66.2803 -16.2598
-c-48.3799 0 -66.6699 19.5 -66.6699 65.46v106.51c0 5.41992 1.0498 4.05957 -31.71 4.05957v36.1904c35.7803 4.07031 50 22 54.4697 66.2695h38.6309c0 -65.8291 -1.34082 -61.8096 3.25977 -61.8096h57.2998v-40.6504h-60.5596v-97.1494
-c0 -6.91992 -4.9209 -51.4102 60.5693 -26.8398z" />
-    <glyph glyph-name="hacker-news" unicode="&#xf1d4;" 
-d="M0 416h448v-448h-448v448zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391zM239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6
-c-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z" />
-    <glyph glyph-name="tencent-weibo" unicode="&#xf1d5;" horiz-adv-x="384" 
-d="M72.2998 -47.7998c1.40039 -19.9004 -27.5996 -22.2002 -29.7002 -2.90039c-11.5996 129.9 31.1006 239.5 101.4 313.2c-15.5996 34 9.2002 77.0996 50.5996 77.0996c30.3008 0 55.1006 -24.5996 55.1006 -55.0996c0 -44 -49.5 -70.7998 -86.9004 -45.0996
-c-65.7002 -71.3008 -101.399 -169.801 -90.5 -287.2zM192 447.9c92 0 166.6 -74.6006 166.6 -166.5c0 -102.301 -93.2998 -185.5 -204 -162.301c-19 4.7002 -12.5 33.2002 6.60059 29.1006c80.7998 -20.7998 167.7 42.2998 167.7 133.1c0 75.5 -61.5 136.9 -136.9 136.9
-c-101 0 -168.3 -106.601 -122 -199.2c9 -17.9004 -17.5996 -30.7998 -26.2998 -13.4004c-56 108.101 22.3994 242.301 148.3 242.301z" />
-    <glyph glyph-name="qq" unicode="&#xf1d6;" 
-d="M433.754 27.5547c-11.5264 -1.39258 -44.8604 52.7412 -44.8604 52.7412c0 -31.3447 -16.1357 -72.2471 -51.0508 -101.786c16.8418 -5.19141 54.8428 -19.167 45.8037 -34.4209c-7.31641 -12.3428 -125.511 -7.88086 -159.633 -4.03711
-c-34.1221 -3.84375 -152.315 -8.30566 -159.632 4.03711c-9.04492 15.25 28.918 29.2139 45.7832 34.415c-34.9199 29.5391 -51.0586 70.4453 -51.0586 101.792c0 0 -33.334 -54.1338 -44.8594 -52.7412c-5.37012 0.650391 -12.4238 29.6445 9.34668 99.7041
-c10.2617 33.0244 21.9951 60.4785 40.1445 105.779c-3.05566 116.898 45.2441 214.956 160.262 214.962c113.737 -0.00585938 163.156 -96.1328 160.264 -214.963c18.1182 -45.2227 29.9121 -72.8506 40.1445 -105.778c21.7676 -70.0596 14.7158 -99.0527 9.3457 -99.7041z
-" />
-    <glyph glyph-name="weixin" unicode="&#xf1d7;" horiz-adv-x="576" 
-d="M385.2 280.4c-92.4004 0 -165.4 -69.1006 -165.3 -154c0 -14.2002 2.19922 -27.9004 6.19922 -40.8008c-6.19922 -0.5 -12.0996 -0.799805 -18.2998 -0.799805c-24.3994 0 -43.7998 4.90039 -68.2002 9.7002l-68 -34.0996l19.3008 58.5996
-c-48.6006 34.0996 -77.9004 78.2002 -77.9004 131.6c0 92.6006 87.5 165.4 194.7 165.4c95.5996 0 179.7 -58.2998 196.3 -136.7c-6.2002 0.799805 -12.4004 1.10059 -18.7998 1.10059zM280.7 333.3c-14.7002 0 -29.2002 -9.7002 -29.2998 -24.3994
-c0 -14.5 14.5 -24.2002 29.2998 -24.2002c14.5 0 24.2002 9.7002 24.2002 24.2002c0 14.6992 -9.7002 24.3994 -24.2002 24.3994zM144.3 284.7c14.7998 0 24.4004 9.59961 24.4004 24.2002c0 14.6992 -9.60059 24.3994 -24.4004 24.3994
-c-14.5 0 -29.2998 -9.59961 -29.2998 -24.3994c0 -14.5 14.7998 -24.2002 29.2998 -24.2002zM563 128.6c0 -43.7998 -29 -82.6992 -68.2002 -112.1l14.7998 -48.5996l-53.3994 29.2998c-19.7002 -4.7998 -39.2998 -9.90039 -58.6006 -9.90039
-c-92.5996 0 -165.399 63.4004 -165.399 141.3c0 77.9004 72.7002 141.301 165.399 141.301c87.5 0 165.4 -63.4004 165.4 -141.301zM343.9 153.1c14.6992 0 24.3994 9.60059 24.3994 19.6006c0 9.59961 -9.59961 19.2998 -24.3994 19.2998
-c-9.60059 0 -19.3008 -9.59961 -19.3008 -19.2998c0 -9.90039 9.60059 -19.6006 19.3008 -19.6006zM451 153.1c14.5 0 24.5 9.60059 24.4004 19.6006c0 9.59961 -9.90039 19.2998 -24.4004 19.2998c-9.59961 0 -19.2998 -9.59961 -19.2998 -19.2998
-c0 -9.90039 9.59961 -19.6006 19.2998 -19.6006z" />
-    <glyph glyph-name="slideshare" unicode="&#xf1e7;" horiz-adv-x="512" 
-d="M187.7 294.3c34 0 61.7002 -25.7002 61.7002 -57.7002c0 -31.6992 -27.7002 -57.6992 -61.7002 -57.6992s-61.7002 26 -61.7002 57.6992c0 32 27.7002 57.7002 61.7002 57.7002zM331.1 294.3c34.3008 0 61.8008 -25.7002 61.7002 -57.7002
-c0 -31.6992 -27.3994 -57.6992 -61.7002 -57.6992c-34 0 -61.6992 26 -61.6992 57.6992c0 32 27.6992 57.7002 61.6992 57.7002zM487.7 204.3c15.2002 10.5 25.2002 -4 16.0996 -17.7998c-18.2998 -22.5996 -53.2002 -50.2998 -106.3 -72
-c56.2998 -191.7 -137.4 -222.3 -134.3 -124c0 0.700195 -0.299805 53.7998 -0.299805 93.5c-4.30078 0.799805 -8.60059 2 -13.7002 3.09961c0 -40 -0.299805 -95.8994 -0.299805 -96.5996c3.09961 -98.2002 -190.601 -67.5996 -134.301 124.1
-c-53.1992 21.7002 -88 49.4004 -106.3 72c-9.09961 13.7002 0.900391 28.3008 16 17.7002c2 -1.39941 4.2998 -2.89941 6.2998 -4.2998v198.3c0 27.4004 20.6006 49.7002 46 49.7002h359.101c25.3994 0 46 -22.2998 46 -49.7002v-198.3zM457.2 185.1h0.0996094v190.601
-c0 32.7998 -10.5996 45.7002 -40.8994 45.7002h-317.7c-31.7002 0 -40.6006 -10.8008 -40.6006 -45.7002v-192.4c67.7002 -35.3994 125.7 -29.0996 157.4 -28c13.4004 0.299805 22 -2.2998 27.0996 -7.7002c1.7002 -1.59961 10 -9.39941 20.3008 -17.0996
-c1.09961 15.7998 10 25.7998 33.6992 24.9004c32.3008 -1.40039 91.7002 -7.7002 160.601 29.6992z" />
-    <glyph glyph-name="twitch" unicode="&#xf1e8;" horiz-adv-x="512" 
-d="M391.17 344.53v-109.7h-38.6299v109.7h38.6299zM285 345v-109.75h-38.6299v109.75h38.6299zM120.83 448h366.86v-256l-173.771 -164.58h-77.25l-96.5303 -91.4199v91.4199h-115.83v329.16zM449.07 210.25v201.17h-308.931v-274.29h86.8701v-64l67.6006 64h77.2393z" />
-    <glyph glyph-name="yelp" unicode="&#xf1e9;" horiz-adv-x="384" 
-d="M42.9004 207.68l99.6191 -48.6094c19.2002 -9.40039 16.2002 -37.5107 -4.5 -42.71l-107.52 -26.8105c-1.78223 -0.448242 -3.64746 -0.685547 -5.56738 -0.685547c-11.7246 0 -21.3848 8.89453 -22.6426 20.2861c-0.853516 7.44141 -1.29297 15.0078 -1.29297 22.6768
-c0 21.9561 3.65723 42.9111 10.293 62.6426c3.03906 9.02148 11.5723 15.5264 21.6133 15.5264c3.5791 0 6.98145 -0.84375 9.99707 -2.31641zM86.9004 -31.5703c-6.01172 4.1123 -9.9248 11.0195 -9.9248 18.8457c0 5.85742 2.21191 11.2021 5.84473 15.2441l74.21 82.4004
-c14.3096 15.8105 40.5098 5.2002 39.8096 -16.0996l-3.89941 -110.82c-0.414062 -12.21 -10.4365 -22.0088 -22.7461 -22.0088c-1.32129 0 -2.61523 0.112305 -3.87402 0.329102c-28.9365 4.90039 -56.1416 16.1621 -79.4199 32.1094zM232.24 78.3496
-c-11.2998 18.1104 6.2002 40.4102 26.5098 33.9102l105.42 -34.2598c9.14453 -3.04102 15.7305 -11.6855 15.7305 -21.8447c0 -3.46289 -0.767578 -6.74805 -2.14062 -9.69531c-12.5361 -26.3281 -30.4697 -49.2246 -52.71 -67.6104
-c-3.96191 -3.26465 -9.03809 -5.25781 -14.5674 -5.25781c-8.18555 0 -15.375 4.29785 -19.4326 10.7578zM380.57 210.58c1.21289 -2.79883 1.93359 -5.89941 1.93359 -9.1416c0 -10.4385 -6.96875 -19.2627 -16.5039 -22.0684l-106.64 -30.5098
-c-20.5 -5.90039 -37.1006 17.0098 -25.2002 34.71l62 91.9199c4.10742 6.08398 11.0635 10.0615 18.9502 10.0615c5.76172 0 11.0283 -2.1377 15.0498 -5.66211c21.5781 -19.0479 38.7783 -42.5518 50.4102 -69.3096zM62.1104 417.82
-c34.3301 16.3438 72.6104 26.9434 112.33 30.0996c0.610352 0.0498047 1.20703 0.078125 1.83008 0.078125c12.5127 0 22.6709 -10.1582 22.6709 -22.6699c0 -0.0693359 -0.000976562 -0.138672 -0.000976562 -0.208008v-208.34
-c0 -23.2998 -30.9102 -31.6006 -42.6104 -11.4004l-104.12 180.44c-1.92871 3.35059 -3.06738 7.24805 -3.06738 11.3887c0 9.07422 5.29883 16.9199 12.9678 20.6113z" />
-    <glyph glyph-name="paypal" unicode="&#xf1ed;" horiz-adv-x="384" 
-d="M111.4 152.1c-3.5 -19.1992 -17.4004 -108.699 -21.5 -134c-0.300781 -1.7998 -1 -2.5 -3 -2.5h-74.6006c-7.59961 0 -13.0996 6.60059 -12.0996 13.9004l58.5996 371.9c1.5 9.59961 10.1006 16.8994 20 16.8994c152.3 0 165.101 3.7002 204 -11.3994
-c60.1006 -23.3008 65.6006 -79.5 44 -140.301c-21.5 -62.5996 -72.5 -89.5 -140.1 -90.2998c-43.4004 -0.700195 -69.5 7 -75.2998 -24.2002zM357.1 296c28.4004 -21.2002 30.3008 -57.7998 23.8008 -92.5996c-16.5 -83.5 -71.9004 -112.301 -142.9 -112.301
-c-15 0 -24.7002 2.30078 -29.2998 -19.6992c-15.5 -97.4004 -13.7002 -85.9004 -14.4004 -91.3008c-1.7002 -8.59961 -8.7998 -14.8994 -17.3994 -14.8994h-63.5c-7.10059 0 -11.6006 5.7998 -10.6006 12.8994c0 0 4.5 29.3008 27.1006 169.7
-c0.799805 6.10059 4.7998 9.40039 10.8994 9.40039c54 0 164.601 -9.90039 204.5 103.899c3.7002 11.1006 6.7998 22.2002 8.7998 33.6006c0.5 3.09961 1.2002 2.59961 3 1.2998z" />
-    <glyph glyph-name="google-wallet" unicode="&#xf1ee;" 
-d="M156.8 321.2c37.6006 -60.6006 64.2002 -113.101 84.2998 -162.5c-8.2998 -33.7998 -18.7998 -66.5 -31.2998 -98.2998c-13.2002 52.2998 -26.5 101.3 -56 148.5c6.5 36.3994 2.2998 73.5996 3 112.3zM109.3 248c5 0 10 -2.5 13 -6.5
-c43.7998 -59.7998 66.2998 -123.8 82.5 -193.5h-103.5c-20 69.5 -49.5 133 -91.7002 187.3c-4 5.2002 0 12.7002 6.5 12.7002h93.2002zM157.1 336h108.7c74.7998 -103 131.2 -230 143.2 -368h-113.7c-8.2002 133.5 -69.7002 260 -138.2 368zM408.9 404.5
-c19 -67.5 31.0996 -139 31.0996 -212.6c0 -69.5 -9.5 -142.5 -25.2998 -203c-10.9004 92.5 -42.4004 184.6 -90.6006 270.8c-4.19922 50.5 -13.2998 99.5 -26.5 146c-1.19922 5.2998 2.5 10.2998 7.80078 10.2998h88.2998c7 0 13.3994 -4.7002 15.2002 -11.5z" />
-    <glyph glyph-name="cc-visa" unicode="&#xf1f0;" horiz-adv-x="576" 
-d="M470.1 216.7c0 0 7.60059 -37.2002 9.30078 -45h-33.4004c3.2998 8.89941 16 43.5 16 43.5c-0.200195 -0.299805 3.2998 9.09961 5.2998 14.8994zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480
-c26.5 0 48 -21.5 48 -48zM152.5 116.8l63.2002 155.2h-42.5l-39.2998 -106l-4.30078 21.5l-14 71.4004c-2.2998 9.89941 -9.39941 12.6992 -18.1992 13.0996h-64.7002l-0.700195 -3.09961c15.7998 -4 29.9004 -9.80078 42.2002 -17.1006l35.7998 -135h42.5zM246.9 116.6
-l25.1992 155.4h-40.1992l-25.1006 -155.4h40.1006zM386.8 167.4c0.200195 17.6992 -10.5996 31.1992 -33.7002 42.2998c-14.0996 7.09961 -22.6992 11.8994 -22.6992 19.2002c0.199219 6.59961 7.2998 13.3994 23.0996 13.3994
-c13.0996 0.299805 22.7002 -2.7998 29.9004 -5.89941l3.59961 -1.7002l5.5 33.5996c-7.90039 3.10059 -20.5 6.60059 -36 6.60059c-39.7002 0 -67.5996 -21.2002 -67.7998 -51.4004c-0.299805 -22.2998 20 -34.7002 35.2002 -42.2002
-c15.5 -7.59961 20.7998 -12.5996 20.7998 -19.2998c-0.200195 -10.4004 -12.6006 -15.2002 -24.1006 -15.2002c-16 0 -24.5996 2.5 -37.6992 8.2998l-5.30078 2.5l-5.59961 -34.8994c9.40039 -4.2998 26.7998 -8.10059 44.7998 -8.2998
-c42.2002 -0.100586 69.7002 20.7998 70 53zM528 116.6l-32.4004 155.4h-31.0996c-9.59961 0 -16.9004 -2.7998 -21 -12.9004l-59.7002 -142.5h42.2002s6.90039 19.2002 8.40039 23.3008h51.5996c1.2002 -5.5 4.7998 -23.3008 4.7998 -23.3008h37.2002z" />
-    <glyph glyph-name="cc-mastercard" unicode="&#xf1f1;" horiz-adv-x="576" 
-d="M482.9 37.7002c0 -6.7998 -4.60059 -11.7002 -11.2002 -11.7002c-6.7998 0 -11.2002 5.2002 -11.2002 11.7002s4.40039 11.7002 11.2002 11.7002c6.59961 0 11.2002 -5.2002 11.2002 -11.7002zM172.1 49.4004c6.5 0 10.8008 -5.2002 10.9004 -11.7002
-c0 -6.7998 -4.40039 -11.7002 -10.9004 -11.7002c-7.09961 0 -11.1992 5.2002 -11.1992 11.7002s4.09961 11.7002 11.1992 11.7002zM289.6 49.7002c5.2002 0 8.7002 -3 9.60059 -8.7002h-19.1006c0.800781 5.2002 4.10059 8.7002 9.5 8.7002zM397.4 49.4004
-c6.7998 0 11.1992 -5.2002 11.1992 -11.7002c0 -6.7998 -4.39941 -11.7002 -11.1992 -11.7002c-6.80078 0 -10.9004 5.2002 -10.9004 11.7002s4.09961 11.7002 10.9004 11.7002zM503.3 23.2998c0 -0.299805 0.299805 -0.5 0.299805 -1.09961
-c0 -0.299805 -0.299805 -0.5 -0.299805 -1.10059c-0.299805 -0.299805 -0.299805 -0.5 -0.5 -0.799805c-0.299805 -0.299805 -0.5 -0.5 -1.09961 -0.5c-0.299805 -0.299805 -0.5 -0.299805 -1.10059 -0.299805c-0.299805 0 -0.5 0 -1.09961 0.299805
-c-0.299805 0 -0.5 0.299805 -0.799805 0.5c-0.299805 0.299805 -0.5 0.5 -0.5 0.799805c-0.299805 0.5 -0.299805 0.800781 -0.299805 1.10059c0 0.5 0 0.799805 0.299805 1.09961c0 0.5 0.299805 0.799805 0.5 1.10059c0.299805 0.299805 0.5 0.299805 0.799805 0.5
-c0.5 0.299805 0.799805 0.299805 1.09961 0.299805c0.5 0 0.800781 0 1.10059 -0.299805c0.5 -0.300781 0.799805 -0.300781 1.09961 -0.5c0.299805 -0.200195 0.200195 -0.600586 0.5 -1.10059zM501.1 21.9004c0.5 0 0.5 0.299805 0.800781 0.299805
-c0.299805 0.299805 0.299805 0.5 0.299805 0.799805s0 0.5 -0.299805 0.799805c-0.300781 0 -0.5 0.299805 -1.10059 0.299805h-1.59961v-3.5h0.799805v1.40039h0.299805l1.10059 -1.40039h0.799805zM576 367v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48
-v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM64 227.4c0 -76.5 62.0996 -138.5 138.5 -138.5c27.2002 0 53.9004 8.19922 76.5 23.0996c-72.9004 59.2998 -72.4004 171.2 0 230.5c-22.5996 15 -49.2998 23.0996 -76.5 23.0996
-c-76.4004 0.100586 -138.5 -62 -138.5 -138.199zM288 118.6c70.5 55 70.2002 162.2 0 217.5c-70.2002 -55.2998 -70.5 -162.6 0 -217.5zM145.7 42.2998c0 8.7002 -5.7002 14.4004 -14.7002 14.7002c-4.59961 0 -9.5 -1.40039 -12.7998 -6.5
-c-2.40039 4.09961 -6.5 6.5 -12.2002 6.5c-3.7998 0 -7.59961 -1.40039 -10.5996 -5.40039v4.40039h-8.2002v-36.7002h8.2002c0 18.9004 -2.5 30.2002 9 30.2002c10.1992 0 8.19922 -10.2002 8.19922 -30.2002h7.90039c0 18.2998 -2.5 30.2002 9 30.2002
-c10.2002 0 8.2002 -10 8.2002 -30.2002h8.2002v23h-0.200195zM190.6 56h-7.89941v-4.40039c-2.7002 3.30078 -6.5 5.40039 -11.7002 5.40039c-10.2998 0 -18.2002 -8.2002 -18.2002 -19.2998c0 -11.2002 7.90039 -19.2998 18.2002 -19.2998
-c5.2002 0 9 1.89941 11.7002 5.39941v-4.59961h7.89941v36.7998zM231.1 30.4004c0 15 -22.8994 8.19922 -22.8994 15.1992c0 5.7002 11.8994 4.80078 18.5 1.10059l3.2998 6.5c-9.40039 6.09961 -30.2002 6 -30.2002 -8.2002c0 -14.2998 22.9004 -8.2998 22.9004 -15
-c0 -6.2998 -13.5 -5.7998 -20.7002 -0.799805l-3.5 -6.2998c11.2002 -7.60059 32.5996 -6 32.5996 7.5zM266.5 21.0996l-2.2002 6.80078c-3.7998 -2.10059 -12.2002 -4.40039 -12.2002 4.09961v16.5996h13.1006v7.40039h-13.1006v11.2002h-8.19922v-11.2002h-7.60059
-v-7.2998h7.60059v-16.7002c0 -17.5996 17.2998 -14.4004 22.5996 -10.9004zM279.8 34.5h27.5c0 16.2002 -7.39941 22.5996 -17.3994 22.5996c-10.6006 0 -18.2002 -7.89941 -18.2002 -19.2998c0 -20.5 22.5996 -23.8994 33.7998 -14.2002l-3.7998 6
-c-7.7998 -6.39941 -19.6006 -5.7998 -21.9004 4.90039zM338.9 56c-4.60059 2 -11.6006 1.7998 -15.2002 -4.40039v4.40039h-8.2002v-36.7002h8.2002v20.7002c0 11.5996 9.5 10.0996 12.7998 8.40039zM349.5 37.7002c0 11.3994 11.5996 15.0996 20.7002 8.39941l3.7998 6.5
-c-11.5996 9.10059 -32.7002 4.10059 -32.7002 -15c0 -19.7998 22.4004 -23.7998 32.7002 -15l-3.7998 6.5c-9.2002 -6.5 -20.7002 -2.59961 -20.7002 8.60059zM416.2 56h-8.2002v-4.40039c-8.2998 11 -29.9004 4.80078 -29.9004 -13.8994
-c0 -19.2002 22.4004 -24.7002 29.9004 -13.9004v-4.59961h8.2002v36.7998zM449.9 56c-2.40039 1.2002 -11 2.90039 -15.2002 -4.40039v4.40039h-7.90039v-36.7002h7.90039v20.7002c0 11 9 10.2998 12.7998 8.40039zM490.2 70.9004h-7.90039v-19.3008
-c-8.2002 10.9004 -29.8994 5.10059 -29.8994 -13.8994c0 -19.4004 22.5 -24.6006 29.8994 -13.9004v-4.59961h7.90039v51.7002zM497.8 146v-4.59961h0.799805v4.59961h1.90039v0.799805h-4.59961v-0.799805h1.89941zM504.4 22.2002c0 0.5 0 1.09961 -0.300781 1.59961
-c-0.299805 0.299805 -0.5 0.799805 -0.799805 1.10059c-0.299805 0.299805 -0.799805 0.5 -1.09961 0.799805c-0.5 0 -1.10059 0.299805 -1.60059 0.299805c-0.299805 0 -0.799805 -0.299805 -1.39941 -0.299805c-0.5 -0.299805 -0.799805 -0.5 -1.10059 -0.799805
-c-0.5 -0.300781 -0.799805 -0.800781 -0.799805 -1.10059c-0.299805 -0.5 -0.299805 -1.09961 -0.299805 -1.59961c0 -0.299805 0 -0.799805 0.299805 -1.40039c0 -0.299805 0.299805 -0.799805 0.799805 -1.09961c0.300781 -0.299805 0.5 -0.5 1.10059 -0.799805
-c0.5 -0.300781 1.09961 -0.300781 1.39941 -0.300781c0.5 0 1.10059 0 1.60059 0.300781c0.299805 0.299805 0.799805 0.5 1.09961 0.799805s0.5 0.799805 0.799805 1.09961c0.300781 0.600586 0.300781 1.10059 0.300781 1.40039zM507.6 146.9h-1.39941l-1.60059 -3.5
-l-1.59961 3.5h-1.40039v-5.40039h0.800781v4.09961l1.59961 -3.5h1.09961l1.40039 3.5v-4.09961h1.09961v5.40039zM512 227.4c0 76.1992 -62.0996 138.3 -138.5 138.3c-27.2002 0 -53.9004 -8.2002 -76.5 -23.1006c72.0996 -59.2998 73.2002 -171.5 0 -230.5
-c22.5996 -15 49.5 -23.0996 76.5 -23.0996c76.4004 -0.0996094 138.5 61.9004 138.5 138.4z" />
-    <glyph glyph-name="cc-discover" unicode="&#xf1f2;" horiz-adv-x="576" 
-d="M520.4 251.9c0 -8.40039 -5.5 -12.8008 -15.8008 -12.8008h-4.69922v24.9004h4.89941c10.1006 0 15.6006 -4.2002 15.6006 -12.0996zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480z
-M483.9 277.1v-82h16v32.8008h2.19922l22.2002 -32.8008h19.6006l-25.8008 34.4004c12.1006 2.5 18.7002 10.5996 18.7002 23.2002c0 28.5 -30.2998 24.3994 -52.8994 24.3994zM428 277v-82h45.2998v13.7998h-29.2998v22.2002h28.2998v13.7998h-28.2998v18.2002h29.2998v14
-h-45.2998zM359.3 277h-17.5l35 -84.2002h8.60059l35.5 84.2002h-17.5l-22.2002 -55.2002zM303.4 280c-24.6006 0 -44.6006 -19.9004 -44.6006 -44.5996c0 -24.6006 19.9004 -44.6006 44.6006 -44.6006c24.5996 0 44.5996 19.9004 44.5996 44.6006
-c0 24.5996 -19.9004 44.5996 -44.5996 44.5996zM254.1 273.9c-30.1992 15 -63.2998 -6.80078 -63.2998 -38c0 -32.5 33.6006 -52.5 63.2998 -38.2002v19c-19.2998 -19.2998 -46.7998 -5.7998 -46.7998 19.2002c0 23.6992 26.7002 39.0996 46.7998 19v19zM156.9 207.6
-c-7.60059 0 -13.8008 3.7002 -17.5 10.8008l-10.3008 -9.90039c17.8008 -26.0996 56.6006 -18.2002 56.6006 11.2998c0 13.1006 -5.40039 19 -23.6006 25.6006c-9.59961 3.39941 -12.2998 5.89941 -12.2998 10.2998c0 8.7002 14.5 14.0996 24.9004 2.5l8.39941 10.7998
-c-19.0996 17.0996 -49.6992 8.90039 -49.6992 -14.2998c0 -11.2998 5.19922 -17.2002 20.1992 -22.7002c25.7002 -9.09961 14.7002 -24.4004 3.30078 -24.4004zM55.4004 195c30.8994 0 44.0996 22.4004 44.0996 40.9004c0 24.0996 -18 41.0996 -44.0996 41.0996h-23.4004
-v-82h23.4004zM122.9 195v82h-16v-82h16zM544 15v145c-33.2998 -20.7998 -226.4 -124.4 -416 -160h401c8.2002 0 15 6.7998 15 15zM74.0996 256.4c5.7002 -5 8.90039 -12.6006 8.90039 -20.5c0 -7.90039 -3.2002 -15.5 -8.90039 -20.7002
-c-4.89941 -4.40039 -11.5996 -6.40039 -21.8994 -6.40039h-4.2002v54.2002h4.2002c10.2998 0 16.7002 -1.7002 21.8994 -6.59961z" />
-    <glyph glyph-name="cc-amex" unicode="&#xf1f3;" horiz-adv-x="576" 
-d="M325.1 280.2c0.100586 -8 -4.2998 -15.7002 -11.6992 -18.7002c9.5 -3.2998 11 -9.2002 11 -18.4004v-13.5h-16.6006c-0.299805 14.8008 3.60059 25.1006 -14.7998 25.1006h-18v-25.1006h-16.4004v69.3008l39.1006 -0.300781c13.2998 0 27.3994 -2 27.3994 -18.3994z
-M295.7 268.9c5.7002 0 11 1.2998 11 7.89941c0 6.40039 -5.60059 7.40039 -10.7002 7.40039h-21v-15.2998h20.7002zM279 179.4c15.5996 0 27.9004 -5.40039 27.9004 -22.7002c0 -27.9004 -30.4004 -23.2998 -49.3008 -23.2998l-0.0996094 -23.3008h-32.2002l-20.3994 23
-l-21.3008 -23h-65.3994l0.0996094 69.3008h66.5l20.5 -22.8008l21 22.8008h52.7002zM175.2 124.7l19 20.2002l-17.9004 20.1992h-41.7002v-12.5h36.3008v-14.0996h-36.3008v-13.7998h40.6006zM241 116.5v55.5l-25.2998 -27.4004zM278.8 147.5
-c5.90039 0 10.5 2.7998 10.5 9.2002c0 6.09961 -4.59961 8.39941 -10.2002 8.39941h-21.5v-17.5996h21.2002zM247.2 284.2h-38.9004v-12.5h37.7998v-14.1006h-37.7998v-13.7998h38.9004v-14.2998h-55.5v69.2998h55.5v-14.5996zM576 192.6h-0.200195h0.200195zM381.4 160.7
-c-0.100586 -7.60059 -4.2002 -15.2998 -11.9004 -18.4004c9.2002 -3.2998 11 -9.5 11 -18.3994l-0.0996094 -13.8008h-16.6006l0.100586 11.5c0 11.8008 -3.80078 13.8008 -14.8008 13.8008h-17.5996l-0.0996094 -25.3008h-16.6006l0.100586 69.3008h39.3994
-c13 0 27.1006 -2.30078 27.1006 -18.7002zM352.2 149.5c5.59961 0 11 1.2998 11 8.2002c0 6.39941 -5.60059 7.39941 -10.7002 7.39941h-21v-15.5996h20.7002zM179.4 229.5h-16.8008v54.2002l-24 -54.2002h-14.5996l-24 54.2002v-54.2002h-33.7998l-6.40039 15.2998h-34.5
-l-6.39941 -15.2998h-17.9004l29.7002 69.2998h24.5l28.0996 -65.7002v65.7002h27.1006l21.6992 -47l19.7002 47h27.6006v-69.2998zM31.2002 259.2h22.7002l-11.5 27.5996zM508.6 100.3c34.8008 0 54.8008 -2.2002 67.5 6.10059v-90.4004c0 -26.5 -21.5 -48 -48 -48h-480.1
-c-26.5 0 -48 21.5 -48 48v203.7h26.5996c4.2002 10.0996 2.2002 5.2998 6.40039 15.2998h19.2002c4.2002 -10 2.2002 -5.2002 6.39941 -15.2998h52.9004v11.3994c2.2002 -5 1.09961 -2.5 5.09961 -11.3994h29.5c2.40039 5.5 2.60059 5.7998 5.10059 11.3994v-11.3994h135.5
-v25.0996c6.39941 0 8 0.100586 9.7998 -0.200195c0 0 -0.200195 -10.8994 0.0996094 -24.7998h66.5v8.90039c7.40039 -5.90039 17.4004 -8.90039 29.7002 -8.90039h26.7998c4.2002 10.1006 2.2002 5.2998 6.40039 15.2998h19c6.5 -15 0.200195 -0.5 6.59961 -15.2998
-h52.8008v21.9004c11.7998 -19.7002 7.7998 -12.9004 13.1992 -21.9004h41.6006v92h-39.9004v-18.3994c-12.2002 20.1992 -6.2998 10.3994 -11.2002 18.3994h-43.2998v-20.5996c-6.2002 14.5996 -4.59961 10.7998 -8.7998 20.5996h-32.4004
-c-0.399414 0 -2.2998 -0.200195 -2.2998 0.299805h-27.5996c-12.7998 0 -23.1006 -3.19922 -30.7002 -9.2998v9.2998h-39.9004v-5.2998c-10.7998 6.10059 -20.6992 5.10059 -64.3994 5.2998c-0.100586 0 -11.6006 0.100586 -11.6006 0h-103
-c-2.5 -6.09961 -6.7998 -16.3994 -12.5996 -30c-2.7998 6 -11 23.8008 -13.9004 30h-46v-21.0996c-7.39941 17.4004 -4.69922 11 -9 21.0996h-39.6992c-3.40039 -7.89941 -13.7002 -32 -23.1006 -53.8994v109.8c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48v-175.4
-c-37.7002 0.200195 -44 0.900391 -54.2998 -5v5c-45.2998 0 -53.5 1.7002 -64.9004 -5.19922v5.19922h-78.1992v-5.09961c-11.4004 6.5 -21.4004 5.09961 -75.7002 5.09961v-5.59961c-6.2998 3.7002 -14.5 5.59961 -24.2998 5.59961h-58
-c-3.5 -3.7998 -12.5 -13.6992 -15.7002 -17.1992c-12.7002 14.0996 -10.5 11.5996 -15.5 17.1992h-83.1006v-92.2998h82c3.30078 3.5 12.9004 13.9004 16.1006 17.4004c12.7002 -14.2998 10.2998 -11.7002 15.3994 -17.4004h48.9004
-c0 14.7002 0.0996094 8.2998 0.0996094 23c11.5 -0.200195 24.3008 0.200195 34.3008 6.2002c0 -13.9004 -0.100586 -17.0996 -0.100586 -29.2002h39.6006c0 18.5 0.0996094 7.40039 0.0996094 25.2998c6.2002 0 7.7002 0 9.40039 -0.0996094
-c0.0996094 -1.2998 0 0 0 -25.2002c152.8 0 145.899 -1.09961 156.699 4.5v-4.5zM544.9 164.8c-4.60059 0 -9.2002 -0.700195 -9.2002 -6.5c0 -12.2002 28.7998 0.299805 39.2998 -13.5v-25.7998c-4.90039 -7.09961 -14.0996 -8.90039 -22.5 -8.90039h-32l0.0996094 14.8008
-h32c4.10059 0 8.40039 1.2998 8.40039 6.39941c0 14.6006 -42.7002 -5.59961 -42.7002 27.4004c0 14.0996 11 20.7002 23.7998 20.7002h32.9004v-14.6006h-30.0996zM487.9 125c4.09961 0 8.69922 1 8.7998 6.40039c0 14.8994 -42.7002 -5.60059 -42.7002 27.3994
-c0 14.1006 10.7002 20.7002 23.5 20.7002h33.2002v-14.5996h-30.4004c-4.2998 0 -9.2002 -0.800781 -9.2002 -6.40039c0 -15.0996 42.9004 6.90039 42.9004 -26.2998c0 -16.4004 -11.4004 -22 -26.2002 -22h-32.2002l0.100586 14.7998h32.2002zM445.7 165.1h-38.5v-12.5
-h37.7998v-14.0996h-37.9004v-13.7998l38.6006 -0.299805l-0.100586 -14.3008h-55.1992l0.0996094 69.3008h55.2002v-14.3008zM389.4 273.2c0.299805 0.299805 1.69922 1 7.2998 1c1 0 2 -0.100586 3.09961 -0.100586l-7.2998 -16.8994
-c-2.2998 0 -3.2002 0.399414 -3.40039 0.5c-0.199219 0.200195 -1.09961 1.89941 -1.09961 7.89941c0 5.40039 1.09961 7.40039 1.40039 7.60059zM409.8 283.7h-0.0996094h0.0996094zM393.6 298.9h16.1006v-15.2002c-17.4004 0.299805 -33.1006 4.09961 -33.1006 -19.7002
-c0 -11.7998 2.80078 -19.9004 16.1006 -19.9004h7.39941l23.5 54.5h24.8008l27.8994 -65.3994v65.3994h25.2998l29.1006 -48.0996v48.0996h16.8994v-69h-23.5996l-31.2002 51.9004v-51.9004h-33.7002l-6.59961 15.3008h-34.2998l-6.40039 -15.3008h-19.2002
-c-22.7998 0 -33 11.8008 -33 34c0 23.3008 10.5 35.3008 34 35.3008zM435.7 286.8l-11.6006 -27.5996h22.8008zM334.6 298.8h16.9004v-69.2998h-16.9004v69.2998z" />
-    <glyph glyph-name="cc-paypal" unicode="&#xf1f4;" horiz-adv-x="576" 
-d="M186.3 189.8c0 -12.2002 -9.7002 -21.5 -22 -21.5c-9.2002 0 -16 5.2002 -16 15c0 12.2002 9.5 22 21.7002 22c9.2998 0 16.2998 -5.7002 16.2998 -15.5zM80.5 238.3c11.2998 0 19.7998 -1.5 17.5 -14.8994c-2 -12.7002 -10.5 -14.2002 -21.5 -14.2002l-8.2002 -0.299805
-l4.2998 26.6992c0.200195 1.7002 1.7002 2.7002 3.2002 2.7002h4.7002zM364.5 238.3c8.5 0 18 -0.5 18.0996 -11.0996c0 -15 -9 -18 -22 -18l-8 -0.299805l4.2002 26.6992c0.200195 1.7002 1.40039 2.7002 3.2002 2.7002h4.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480
-c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM128.3 232.6c0 21 -16.2002 28 -34.7002 28h-40c-2.5 0 -5 -2 -5.19922 -4.69922l-16.4004 -102.101c-0.299805 -2 1.2002 -4 3.2002 -4h19c2.7002 0 5.2002 2.90039 5.5 5.7002l4.5 26.5996
-c1 7.2002 13.2002 4.7002 18 4.7002c28.5996 0 46.0996 17 46.0996 45.7998zM212.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2002 -8.2002c-5.7998 8.5 -14.2002 10 -23.7002 10c-24.5 0 -43.1992 -21.5 -43.1992 -45.1992c0 -19.5 12.1992 -32.2002 31.6992 -32.2002
-c9 0 20.2002 4.89941 26.5 11.8994c-0.5 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2002c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM253 125.9l63.7002 92.5996c0.5 0.5 0.5 1 0.5 1.7002
-c0 1.7002 -1.5 3.5 -3.2002 3.5h-19.2002c-1.7002 0 -3.5 -1 -4.5 -2.5l-26.5 -39l-11 37.5c-0.799805 2.2002 -3 4 -5.5 4h-18.7002c-1.69922 0 -3.19922 -1.7998 -3.19922 -3.5c0 -1.2002 19.5 -56.7998 21.1992 -62.1006c-2.69922 -3.7998 -20.5 -28.5996 -20.5 -31.5996
-c0 -1.7998 1.5 -3.2002 3.2002 -3.2002h19.2002c1.7998 0.100586 3.5 1.10059 4.5 2.60059zM412.3 232.6c0 21 -16.2002 28 -34.7002 28h-39.6992c-2.7002 0 -5.2002 -2 -5.5 -4.69922l-16.2002 -102c-0.200195 -2 1.2998 -4 3.2002 -4h20.5c2 0 3.5 1.5 4 3.19922l4.5 29
-c1 7.2002 13.1992 4.7002 18 4.7002c28.3994 0 45.8994 17 45.8994 45.7998zM496.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2998 -8.2002c-5.5 8.5 -14 10 -23.7002 10c-24.5 0 -43.2002 -21.5 -43.2002 -45.1992c0 -19.5 12.2002 -32.2002 31.7002 -32.2002
-c9.2998 0 20.5 4.89941 26.5 11.8994c-0.299805 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2998c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM544 257.1c0 2 -1.5 3.5 -3.2002 3.5h-18.5
-c-1.5 0 -3 -1.19922 -3.2002 -2.69922l-16.1992 -104l-0.300781 -0.5c0 -1.80078 1.5 -3.5 3.5 -3.5h16.5c2.5 0 5 2.89941 5.2002 5.69922l16.2002 101.2v0.299805zM454 205.3c9.2998 0 16.2998 -5.7002 16.2002 -15.5c0 -12.2998 -9.7002 -21.5 -21.7002 -21.5
-c-9.2002 0 -16.2002 5.2998 -16.2002 15c0 12.2998 9.5 22 21.7002 22z" />
-    <glyph glyph-name="cc-stripe" unicode="&#xf1f5;" horiz-adv-x="576" 
-d="M492.4 227.2c8.69922 0 18 -6.7002 18 -22.7002h-36.7002c0 16 9.7998 22.7002 18.7002 22.7002zM375 224.6c12.9004 0.100586 21.9004 -14.5 21.9004 -33.0996c0 -19.0996 -8.80078 -33.4004 -21.9004 -33.4004c-8.2998 0 -13.2998 3 -16.7998 6.7002l-0.200195 52.7998
-c3.7002 4.10059 8.7998 7 17 7zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM122.2 166.9c0 42.2998 -54.2998 34.6992 -54.2998 50.6992c0 5.5 4.59961 7.7002 12.0996 7.7002
-c10.7998 0 24.5 -3.2998 35.2998 -9.09961v33.3994c-11.7998 4.7002 -23.5 6.5 -35.2998 6.5c-28.7998 0 -48 -15 -48 -40.1992c0 -39.3008 54 -32.9004 54 -49.9004c0 -6.59961 -5.7002 -8.7002 -13.5996 -8.7002c-11.8008 0 -26.9004 4.90039 -38.9004 11.2998v-33.8994
-c13.2002 -5.7002 26.5996 -8.10059 38.7998 -8.10059c29.6006 0.200195 49.9004 14.7002 49.9004 40.3008zM191 223.5v30.2998h-26.9004v30.7998l-34.6992 -7.39941l-0.200195 -113.9c0 -21 15.7998 -36.5 36.8994 -36.5c11.6006 0 20.2002 2.10059 24.9004 4.7002v28.9004
-c-4.5 -1.80078 -27 -8.30078 -27 12.5996v50.5h27zM265 221.1v32.7002h-0.0996094c-4.7002 1.7002 -21.3008 4.7998 -29.6006 -10.5l-2.2002 10.5h-30.6992v-124.5h35.5v84.4004c8.39941 11 22.5996 8.89941 27.0996 7.39941zM309.1 129.3v124.5h-35.6992v-124.5h35.6992z
-M309.1 272.2v28.8994l-35.6992 -7.59961v-28.9004zM383.2 126.7c25.3994 0.0996094 48.5996 20.5 48.5996 65.5996c0 41.2998 -23.5 63.7998 -48.3994 63.7998c-13.9004 0 -22.9004 -6.59961 -27.8008 -11.0996l-1.7998 8.7998h-31.2998v-165.8l35.5 7.5l0.0996094 40.2002
-c5.10059 -3.7002 12.7002 -9 25.1006 -9zM543.6 178.2c0.100586 2 0.400391 9.39941 0.400391 12.8994c0 36.4004 -17.5996 65.1006 -51.2998 65.1006c-33.7998 0 -54.2998 -28.7002 -54.2998 -64.9004c0 -42.7998 24.1992 -64.5 58.7998 -64.5
-c17 0 29.7002 3.90039 39.3994 9.2002v28.5996c-9.69922 -4.89941 -20.7998 -7.89941 -34.8994 -7.89941c-13.7998 0 -26 4.89941 -27.6006 21.5h69.5z" />
-    <glyph glyph-name="lastfm" unicode="&#xf202;" horiz-adv-x="512" 
-d="M225.8 80.9004c0 0 -31.7002 -31.1006 -97.8994 -31.1006c-82.2002 0 -127.9 48.1006 -127.9 137.2c0 92.7002 45.7002 147.2 131.8 147.2c117.7 0 129.3 -66.2002 161.3 -163c14 -42.7998 38.7002 -73.9004 97.9004 -73.9004c39.9004 0 61 8.7998 61 30.5
-c0 31.9004 -34.9004 35.1006 -79.7998 45.7002c-48.6006 11.7002 -68 36.9004 -68 76.7998c0 64 51.5996 83.9004 104.399 83.9004c59.8008 0 96.2002 -21.7002 100.9 -74.5l-58.5996 -7c-2.30078 25.2002 -17.5 35.7998 -45.7002 35.7998
-c-25.7998 0 -41.6006 -11.7998 -41.6006 -31.7002c0 -17.5996 7.60059 -28.0996 33.4004 -34c52.2998 -11.5 115 -19.2002 115 -92.0996c0 -58.6006 -49.2998 -80.9004 -122 -80.9004c-101.4 0 -136.6 45.7002 -155.4 102.601
-c-26.0996 81.5996 -34.3994 134.899 -100.899 134.899c-35.7002 0 -72.1006 -25.7998 -72.1006 -97.8994c0 -56.3008 28.7002 -91.5 69.2002 -91.5c45.7002 0 76.2002 34 76.2002 34z" />
-    <glyph glyph-name="lastfm-square" unicode="&#xf203;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM307.8 103.1c45.4004 0 76.2002 13.9004 76.1006 50.6006c0 45.5 -39.1006 50.3994 -71.8008 57.5
-c-16.0996 3.7002 -20.8994 10.2998 -20.8994 21.2998c0 12.5 9.89941 19.7998 26 19.7998c17.5996 0 27.0996 -6.59961 28.5996 -22.3994l36.7002 4.39941c-2.90039 33 -25.5996 46.6006 -63 46.6006c-32.9004 0 -65.2002 -12.4004 -65.2002 -52.4004
-c0 -24.9004 12.1006 -40.7002 42.5 -48c28.1006 -6.59961 49.9004 -8.7002 49.9004 -28.5996c0 -13.6006 -13.2002 -19.1006 -38.1006 -19.1006c-37 0 -52.3994 19.4004 -61.1992 46.2002c-20 60.5 -27.3008 101.9 -100.801 101.9c-53.8994 0 -82.5 -34.1006 -82.5 -92
-c0 -55.7002 28.6006 -85.8008 79.9004 -85.8008c41.4004 0 61.2002 19.4004 61.2002 19.4004l-11.7002 31.9004s-19 -21.3008 -47.5996 -21.3008c-25.3008 0 -43.3008 22 -43.3008 57.2002c0 45.1006 22.7002 61.2002 45.1006 61.2002c41.5 0 46.7002 -33.2998 63 -84.2998
-c11.7002 -35.5 33.7002 -64.1006 97.0996 -64.1006z" />
-    <glyph glyph-name="ioxhost" unicode="&#xf208;" horiz-adv-x="640" 
-d="M616 288c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-52.7002c3.10059 -15.5 4.7002 -31.5996 4.7002 -48c0 -137 -111 -248 -248 -248c-102.9 0 -191.2 62.7002 -228.7 152h-67.2998c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24
-h52.7002c-3.10059 15.5 -4.7002 31.5996 -4.7002 48c0 137 111 248 248 248c102.9 0 191.2 -62.7002 228.7 -152h67.2998zM520 192c0 16.5996 -2 32.5996 -5.7998 48h-298.2c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24h279.5
-c-33.9004 62 -99.7998 104 -175.5 104c-110.5 0 -200 -89.5 -200 -200c0 -16.5996 2 -32.5996 5.7998 -48h298.2c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-279.5c33.9004 -62 99.7998 -104 175.5 -104c110.5 0 200 89.5 200 200zM216 216h208
-c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-208c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24z" />
-    <glyph glyph-name="angellist" unicode="&#xf209;" 
-d="M347.1 232.6c48 -11.6992 54.9004 -50.5996 54.9004 -93.6992c0 -114.301 -73.4004 -202.9 -191.4 -202.9c-96.1992 0 -164.6 76.4004 -164.5 148.6c0 37.1006 14.2002 61.7002 51.1006 71.7002c-3.10059 8.2998 -8 20.7998 -8 29.7002
-c0 23.5 24.8994 52.5996 48.2998 52.5996c6.90039 0 13.7002 -2 20 -4.2998c-12.4004 35.2002 -46.5996 126.7 -46.5996 162c0 28.7998 14.5996 51.7002 45.6992 51.7002c40 0 85.4004 -144 95.1006 -172.5c12.5 31.4004 52.5 163.1 97.0996 163.1
-c28 0 43.7002 -22.2998 43.7002 -48.8994c0 -30.2002 -33.7002 -124.5 -45.4004 -157.101zM311.7 340l-33.1006 -93.7002l34 -6c8.5 23.4004 47.1006 128.9 47.1006 148c0 7.10059 -2.2998 16 -10.9004 16c-16 0 -33.0996 -52 -37.0996 -64.2998zM142.3 399.7
-c0 -29.1006 34.6006 -120 45.5 -148.8c7.7002 4.39941 19.7998 2.69922 35.4004 1.39941l-34.6006 100.3c-31.7998 92.8008 -46.2998 59 -46.2998 47.1006zM140 204c-7.7002 0 -20.2998 -13.4004 -20.4004 -21.0996c0 -20.8008 56 -97.7002 76.9004 -97.7002
-c5.7002 0 10.5996 6.2998 10.5996 11.3994c0 12.8008 -37.7998 107.4 -67.0996 107.4zM324.3 17.7002c55.2998 61.5 49.1006 158.6 31 174.7c-24 21.0996 -106 29.0996 -138.3 29.0996c-17.2998 0 -17.4004 -6.40039 -17.4004 -13.0996
-c0 -43.7002 92.9004 -39.7002 120.601 -39.7002c11.2002 0 15.7998 -9.90039 16.8994 -21.1006c-7.39941 -7.39941 -17.6992 -11.6992 -27.3994 -15.3994c-9.40039 -3.40039 -19.1006 -7.10059 -27.1006 -13.1006c-22 -16 -43.6992 -43.3994 -43.6992 -71.6992
-c0 -17.7002 10.5996 -32.9004 10.5996 -50.3008c0 -0.299805 -2 -6.5 -2 -7.39941c-32.5996 2.2998 -40.5996 34.5996 -41.7002 61.7002c-3.39941 -0.900391 -8 -0.600586 -11.7002 -0.600586c5.10059 -17.7998 -11.8994 -42 -38 -42
-c-37.7998 0 -88 57.2002 -58.2998 86.9004c28.7002 -35.9004 35 -51.4004 51.1006 -51.4004c4 0 11.6992 3.40039 11.6992 8.2998c0 12.8008 -42.8994 73.1006 -54.2998 73.1006c-16.7998 0 -37.7002 -24.9004 -20.5996 -68.2998
-c22.5996 -55.7002 69.5 -88.3008 128.899 -88.3008c43.4004 0 80.6006 16.6006 109.7 48.6006zM225.7 143.7c3.2002 -8.2998 6.59961 -16.6006 9.39941 -25.1006c6.30078 7.10059 12.9004 13.7002 20.3008 19.1006c-10 2 -20 2.89941 -29.7002 6z" />
-    <glyph glyph-name="buysellads" unicode="&#xf20d;" 
-d="M224 297.3l42.9004 -160.7h-85.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM382.7 42.7002l-94.5 298.7h-128.4l-94.5 -298.7h90.7002l111.7 91.5996l24.2002 -91.5996h90.7998z
-" />
-    <glyph glyph-name="connectdevelop" unicode="&#xf20e;" horiz-adv-x="576" 
-d="M550.5 207c6.69629 -1.33887 11.7861 -7.5 11.7881 -14.7324c0 -7.5 -5.3584 -13.6602 -12.3223 -15l-54.9111 -95.3574c0.536133 -1.60742 0.804688 -3.21387 0.804688 -4.82129c0 -7.23145 -5.09082 -13.3926 -12.0547 -14.7314l-51.6963 -90.2686
-c0.535156 -1.33887 0.802734 -2.67773 0.802734 -4.28516c0 -8.30371 -6.69727 -15.2676 -15.2686 -15.2676c-4.28516 0 -8.30371 1.875 -10.9814 4.82129h-107.144c-2.67871 -3.21484 -6.96484 -5.35742 -11.5176 -5.35742s-8.83887 2.14258 -11.5166 5.35645h-106.875
-c-2.67969 -3.21484 -6.69727 -5.35742 -11.5186 -5.35742c-8.30371 0 -15.2676 6.69727 -15.2676 15.2676c0 1.875 0.535156 3.75 1.07031 5.35742l-51.6963 89.7324c-6.96484 1.33887 -12.0547 7.5 -12.0547 14.7314c0 1.875 0.268555 3.21387 0.804688 4.82129
-l-55.1797 95.3574c-6.96484 1.60742 -12.0537 7.76855 -12.0537 15c0 7.5 5.3584 13.6611 12.5898 15l53.3047 92.1436c0 0.536133 -0.268555 1.07227 -0.268555 1.60645c0 6.16113 3.75098 11.251 9.10742 13.6611l55.9824 97.2334
-c-0.536133 1.33887 -1.07129 3.21387 -1.07129 4.82129c0 8.57129 6.96484 15.2676 15.2676 15.2676c4.82227 0 8.83887 -2.14258 11.7861 -5.625h106.071c2.67871 3.48242 6.69629 5.625 11.5176 5.625s8.83887 -2.14258 11.5176 -5.62402h106.606
-c2.94727 3.48242 6.96484 5.625 11.7861 5.625c8.30371 0 15.2676 -6.69727 15.2676 -15.2676c0 -1.60742 -0.535156 -3.21484 -1.07031 -4.82129l55.4463 -95.8936c8.03613 -0.267578 14.7324 -6.96484 14.7324 -15.001c0 -2.67871 -0.803711 -5.08984 -1.875 -7.23145z
-M153.535 -2.73242v75.8037h-43.6602zM153.535 81.1074v50.624l-44.999 -47.4102c0.535156 -1.07227 1.07129 -2.14355 1.33887 -3.21387h43.6602zM153.535 143.518l0.000976562 92.9463l-50.0889 51.9648c-2.41113 -1.60645 -5.08887 -2.41113 -7.76855 -2.67871
-l-51.9648 -90c0.268555 -1.07227 0.268555 -2.14258 0.268555 -3.48242c0 -1.33887 0 -2.67871 -0.535156 -4.01758l55.7129 -96.4287c1.33887 -0.267578 2.67871 -1.07129 4.01758 -1.60742zM153.535 245.84v72.0527l-43.9277 -15.8037
-c0 -0.267578 0.267578 -0.803711 0.267578 -1.07227c0 -2.94531 -0.803711 -5.62402 -2.14258 -7.7666zM153.535 326.465v59.7324l-43.6602 -75.5361zM480.054 287.357l-0.267578 0.267578l-98.0361 -101.518l63.75 -67.2324l35.3584 167.143zM291.75 92.8926
-l-11.25 -11.7852h22.7676zM291.482 104.143l79.2852 82.2324l-83.0352 87.5889l-79.5537 -84.375zM296.839 98.25l16.875 -17.1426h124.02l5.8916 28.125l-67.5 71.25zM410.411 403.607l-117.053 -124.019l83.0342 -87.5889l97.5 101.25
-c-1.33984 2.14258 -2.14258 4.82129 -2.14258 7.7666v0.536133l-57.8574 100.714c-1.33984 0.268555 -2.41016 0.804688 -3.48145 1.34082zM401.304 405.75h-4.28711l-166.339 -60l57.0547 -60.2676zM277.821 405.75h-103.929l50.8936 -53.5713l148.393 53.5713h-75
-c-2.67871 -2.67773 -6.16016 -4.28516 -10.1787 -4.28516s-7.50098 1.60742 -10.1787 4.28516zM161.572 400.125v-70.7148l54.9111 19.8213l-51.1611 53.8398c-0.870117 -0.300781 -1.77832 -0.574219 -2.67969 -0.804688zM161.572 320.839v-83.3037l40.9814 -42.0527
-l79.5537 84.1064l-59.7324 63.2139zM161.572 228.161v-76.0723l36.4277 38.3037zM161.572 140.303v-59.1953h107.678l17.1426 17.6777l-82.7676 85.9814zM168.536 -21.75h1.33887l91.6074 94.8213h-99.9102v-89.7324l1.07031 -1.60645
-c2.41113 -0.804688 4.28613 -1.875 5.89355 -3.48242zM298.447 -21.75h104.194l-91.6064 94.8213h-38.3037l-91.6074 -94.8213h96.4287c2.68066 2.41016 6.42871 4.28516 10.4473 4.28516s7.76758 -1.875 10.4473 -4.28516zM418.447 -9.96387l17.4121 83.0361h-114.376
-l89.1953 -91.875c1.07227 0.536133 2.14355 1.07031 3.48242 1.33887zM431.303 12.2676l34.8223 60.8037h-21.9639zM466.125 81.1074c0.267578 1.07129 0.803711 2.14258 1.33887 2.94531l-17.1426 18.2139l-4.55371 -21.1592h20.3574zM532.286 188.518
-c-0.268555 1.33984 -0.536133 2.41113 -0.536133 3.75c0 1.60742 0.536133 2.94629 0.802734 4.28516l-45.8027 79.2861l-34.5537 -163.928l20.625 -21.9639c1.33887 0.802734 2.67871 1.33887 4.01758 1.87402z" />
-    <glyph glyph-name="dashcube" unicode="&#xf210;" 
-d="M326.6 344l102.2 104v-427c0 -50.5 -40.0996 -85 -91.2002 -85h-227.199c-51.1006 0 -91.2002 34.5 -91.2002 85v229.5c0 50.2002 40.0996 93.5 91.2002 93.5h216.199zM153.9 31.5v-0.0996094h223.8l-51.1006 52.2998v123.5c0 17.7002 -14.2998 32.5 -32 32.5h-140.699
-c-17.7002 0 -32.4004 -14.7998 -32.4004 -32.5v-142.9c0 -17.7002 14.7002 -32.7998 32.4004 -32.7998z" />
-    <glyph glyph-name="forumbee" unicode="&#xf211;" 
-d="M5.7998 138.3c-3.7998 17 -5.7998 34.2002 -5.7998 51.4004c0 123.3 99.7998 223.3 223.1 223.3c16.6006 0 33.3008 -2 49.3008 -5.5c-123.4 -47 -220.5 -145.5 -266.601 -269.2zM398.7 327.5c-151.101 -44 -269.2 -164.4 -312.3 -315.7
-c-17.2002 13.4004 -32.7002 30.9004 -45.2002 49c43.3994 149.9 160.1 267.7 309.7 312c18.0996 -12.5996 34.0996 -27.7998 47.7998 -45.2998zM414.5 74.7998c13.0996 -35.2998 24.2002 -73.2998 33.5 -109.8c-36.0996 9.2998 -72 20.5 -107 33.5996
-c-25.7002 -16 -54.5996 -26.8994 -84.5996 -31.2998c42.5996 79.7002 108.199 147.4 187.6 190.3c-4.09961 -29.0996 -14.2998 -57.6992 -29.5 -82.7998zM444.2 220.3c-113.7 -46.7002 -204.2 -139.399 -250.5 -253.5c-19.6006 2.7002 -38.5 7.60059 -56.6006 15.2002
-c44.9004 138.5 153.4 249.3 291.301 295.1c7.89941 -18.0996 13.1992 -37.2998 15.7998 -56.7998z" />
-    <glyph glyph-name="leanpub" unicode="&#xf212;" horiz-adv-x="576" 
-d="M386.539 336.515l15.0957 -248.955l-10.9785 0.275391c-36.2324 0.824219 -71.6406 -8.7832 -102.657 -27.9971c-31.0156 19.2139 -66.4238 27.9971 -102.657 27.9971c-45.5635 0 -82.0693 -10.7051 -123.516 -27.7227l31.291 258.288
-c28.5459 11.8027 61.4834 18.1143 92.2256 18.1143c41.1729 0 73.8359 -13.1748 102.657 -42.5439c27.7227 28.2715 59.0127 41.7217 98.5391 42.5439zM569.07 0c-25.5264 0 -47.4854 5.21484 -70.542 15.6445c-34.3105 15.6455 -69.9932 24.9785 -107.871 24.9785
-c-38.9775 0 -74.9346 -12.9014 -102.657 -40.623c-27.7227 27.7227 -63.6797 40.623 -102.657 40.623c-37.8779 0 -73.5605 -9.33301 -107.871 -24.9785c-22.2324 -9.88086 -44.7402 -15.6445 -69.1689 -15.6445h-1.37305l42.5449 349.141
-c39.251 22.2334 87.0117 34.8594 132.301 34.8594c37.0547 0 75.209 -7.68457 106.225 -29.0947c31.0156 21.4102 69.1699 29.0947 106.225 29.0947c45.2891 0 93.0498 -12.626 132.301 -34.8594zM525.702 44.7412l-34.0361 280.246
-c-30.7422 13.999 -67.248 21.4102 -101.009 21.4102c-38.4287 0 -74.3848 -12.0771 -102.657 -38.7021c-28.2725 26.625 -64.2275 38.7021 -102.657 38.7021c-33.7607 0 -70.2666 -7.41113 -101.009 -21.4102l-34.0361 -280.246
-c47.2109 19.4863 82.8945 33.4854 135.045 33.4854c37.6045 0 70.8174 -9.60547 102.657 -29.6436c31.8398 20.0381 65.0518 29.6436 102.657 29.6436c52.1504 0 87.834 -13.999 135.045 -33.4854z" />
-    <glyph glyph-name="sellsy" unicode="&#xf213;" horiz-adv-x="640" 
-d="M539.71 210.692c55.1572 -13.4834 94.0742 -63.124 94.0732 -119.509c0 -68.0264 -55.4639 -123.184 -123.185 -123.184h-381.197c-67.7217 0 -123.186 55.1572 -123.185 123.185c0 47.4961 27.8848 91.0098 70.7852 111.234
-c-2.14453 7.35449 -3.06543 15.0146 -3.06543 22.3691c0 46.2705 37.6914 83.9609 83.9629 83.9609c20.2227 0 39.835 -7.35449 55.1562 -20.5303c18.3867 74.7695 85.8008 127.781 163.021 127.781c92.542 0 167.924 -75.3818 167.924 -167.924
-c0 -12.5635 -1.22559 -25.127 -4.29004 -37.3838zM199.88 46.4463v110.928c0 8.27344 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27344 0 -15.3213 -7.04785 -15.3213 -15.3213v-110.928c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9482
-c8.27344 0 15.3213 7.04688 15.3213 15.3213zM289.357 46.4463v131.458c0 8.27246 -7.04883 15.3203 -15.3223 15.3203h-30.9492c-8.27246 0 -15.3213 -7.04688 -15.3213 -15.3203v-131.458c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9492
-c8.27344 0 15.3223 7.04688 15.3223 15.3213zM378.834 46.4463v162.714c0 8.27246 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27441 0 -15.3223 -7.04785 -15.3223 -15.3213v-162.714c0 -8.27344 7.04785 -15.3213 15.3223 -15.3213h30.9482
-c8.27441 0 15.3213 7.04688 15.3213 15.3213zM465.861 46.4463v224.612c0 8.58008 -7.04785 15.6279 -15.3223 15.6279h-28.4971c-8.27441 0 -15.3213 -7.04883 -15.3213 -15.6279v-224.612c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h28.4971
-c8.27441 0 15.3223 7.04688 15.3223 15.3213z" />
-    <glyph glyph-name="shirtsinbulk" unicode="&#xf214;" 
-d="M100 37.7002l4.40039 9.89941l30.5996 -13.3994l-4.40039 -9.90039zM139.4 20.2002l4.39941 9.89941l30.6006 -13.3994l-4.40039 -9.90039zM311.5 34.2002l30.5996 13.3994l4.40039 -9.89941l-30.5996 -13.4004zM179.1 3l4.40039 9.59961l30.2998 -13.3994
-l-4.39941 -9.90039zM60.4004 55.2002l4.39941 9.89941l30.6006 -13.6992l-4.40039 -9.60059zM271.8 16.7002l30.6006 13.3994l4.39941 -9.89941l-30.5996 -13.4004zM232.5 -0.799805l30.5996 13.3994l4.40039 -9.59961l-30.5996 -13.7002zM350.9 51.4004l30.5996 13.6992
-l4.40039 -9.89941l-30.6006 -13.4004zM170 401.4v-10.5h-33.5v10.5h33.5zM122.8 401.4l-0.0996094 -10.5h-33.5v10.5h33.5996zM75.5 401.4l0.0996094 -10.5h-33.2998v10.5h33.2002zM217 401.4v-10.5h-33.2002v10.5h33.2002zM311.5 401.4v-10.5h-33.5v10.5h33.5zM358.8 401.4
-v-10.5h-33.5v10.5h33.5zM264.2 401.4v-10.5h-33.2002v10.5h33.2002zM405.7 401.4v-10.5h-33.2998v10.5h33.2998zM52.7998 96.9004v-33.5h-10.7998v33.5h10.7998zM122.8 312.8l-0.0996094 -10.5h-33.5v10.5h33.5996zM52.7998 302.2v-23h-10.7998v33.5h33.5996v-10.5h-22.7998
-zM221.7 73.5996c-50.2002 0 -91.2998 40.8008 -91.2998 91.3008c0 50.1992 41.0996 91.2998 91.2998 91.2998c50.5 0 91.2998 -41.1006 91.2998 -91.2998c0 -50.5 -40.7998 -91.3008 -91.2998 -91.3008zM173.5 184.7c0 -44.2998 77.5996 -11.9004 77.5996 -38
-c0 -13.1006 -24 -14.2998 -32.6992 -14.2998c-12.3008 0 -29.8008 2.69922 -35.9004 14.8994h-0.900391l-9 -18.3994c14.8008 -9.30078 29.1006 -12.2002 47.2002 -12.2002c19.5 0 51 5.7998 51 31.2002c0 48.0996 -78.5 16.2998 -78.5 37.8994
-c0 13.1006 20.7998 14.9004 29.7998 14.9004c10.8008 0 29.2002 -3.2002 35.6006 -13.1006h0.899414l8.80078 16.9004c-15.1006 6.2002 -27.4004 12 -44.3008 12c-20.0996 0 -49.5996 -6.40039 -49.5996 -31.7998zM52.7998 269.6v-33.5996h-10.7998v33.5996h10.7998z
-M395.2 63.4004v33.5h10.7998v-33.5h-10.7998zM52.7998 140.1v-33.5h-10.7998v33.5h10.7998zM0 444.3h448v-406l-226.3 -98.5996l-221.7 98.5996v406zM418.8 57.2002h0.100586v270.1h-389.7v-270.1l192.8 -85.7002zM418.8 356.5h0.100586v58.5996h-389.7v-58.5996h389.6z
-M52.7998 226.4v-33.5h-10.7998v33.5h10.7998zM52.7998 183.2v-33.5h-10.7998v33.5h10.7998zM170 312.8v-10.5h-33.5v10.5h33.5zM395.2 149.7v33.5h10.7998v-33.5h-10.7998zM395.2 192.9v33.5h10.7998v-33.5h-10.7998zM217 312.8v-10.5h-33.2002v10.5h33.2002zM395.2 236
-v33.5h10.7998v-33.5h-10.7998zM395.2 106.5v33.5h10.7998v-33.5h-10.7998zM264.2 312.8v-10.5h-33.2002v10.5h33.2002zM311.5 312.8v-10.5h-33.5v10.5h33.5zM395.2 279.2l0.0996094 23h-22.7998v10.5h33.5v-33.5h-10.7998zM358.8 312.8v-10.5h-33.5v10.5h33.5z" />
-    <glyph glyph-name="simplybuilt" unicode="&#xf215;" horiz-adv-x="512" 
-d="M481.2 384c14.7002 0 26.5 -11.7998 26.7002 -26.2998v-331.4c0 -14.5 -11.8008 -26.2998 -26.6006 -26.2998h-450.399c-14.8008 0 -26.6006 11.7998 -26.6006 26.2998v331.4c0 14.5 11.7998 26.2998 26.4004 26.2998h106c14.5996 0 26.5996 -11.7998 26.5996 -26.2998
-v-39.6006h185.3v39.6006c0 14.5 12.1006 26.2998 26.6006 26.2998h106zM149.8 92.2002c36.9004 0 66.6006 29.7002 66.6006 66.3994c0 36.9004 -29.7002 66.6006 -66.6006 66.6006c-36.7002 0 -66.3994 -29.7002 -66.3994 -66.6006
-c0 -36.6992 29.7998 -66.3994 66.3994 -66.3994zM362.2 92.2002c36.5996 0 66.3994 29.7002 66.3994 66.5996c0 36.7002 -29.7998 66.4004 -66.3994 66.4004c-36.9004 0 -66.6006 -29.7998 -66.6006 -66.4004c0 -36.8994 29.7002 -66.5996 66.6006 -66.5996z" />
-    <glyph glyph-name="skyatlas" unicode="&#xf216;" horiz-adv-x="640" 
-d="M640 118.7c0 -65.9004 -52.5 -114.4 -117.5 -114.4c-165.9 0 -196.6 249.7 -359.7 249.7c-146.899 0 -147.1 -212.2 5.60059 -212.2c42.5 0 90.8994 17.7998 125.3 42.5c5.59961 4.10059 16.8994 16.2998 22.7998 16.2998s10.9004 -5 10.9004 -10.8994
-c0 -7.7998 -13.1006 -19.1006 -18.7002 -24.1006c-40.9004 -35.5996 -100.3 -61.1992 -154.7 -61.1992c-83.4004 -0.100586 -154 59 -154 144.899c0 85.9004 67.5 149.101 152.8 149.101c185.3 0 222.5 -245.9 361.9 -245.9c99.8994 0 94.7998 139.7 3.39941 139.7
-c-17.5 0 -35 -11.6006 -46.8994 -11.6006c-8.40039 0 -15.9004 7.2002 -15.9004 15.6006c0 11.5996 5.2998 23.7002 5.2998 36.2998c0 66.5996 -50.8994 114.7 -116.899 114.7c-53.1006 0 -80 -36.9004 -88.7998 -36.9004c-6.2002 0 -11.2002 5 -11.2002 11.2002
-c0 5.59961 4.09961 10.2998 7.7998 14.4004c25.2998 28.7998 64.7002 43.6992 102.8 43.6992c79.4004 0 139.101 -58.3994 139.101 -137.8c0 -6.89941 -0.300781 -13.7002 -1.2002 -20.5996c11.8994 3.09961 24.0996 4.7002 35.8994 4.7002
-c60.7002 0 111.9 -45.3008 111.9 -107.2z" />
-    <glyph glyph-name="pinterest-p" unicode="&#xf231;" horiz-adv-x="384" 
-d="M204 441.5c94.2002 0 180 -64.7998 180 -164.1c0 -93.3008 -47.7002 -196.801 -153.9 -196.801c-25.1992 0 -57 12.6006 -69.2998 36c-22.7998 -90.2998 -21 -103.8 -71.3994 -172.8c-5.2002 -1.89941 -3.5 -2.2998 -6.90039 1.5c-1.7998 18.9004 -4.5 37.5 -4.5 56.4004
-c0 61.2002 28.2002 149.7 42 209.1c-7.5 15.2998 -9.59961 33.9004 -9.59961 50.7002c0 80 93.8994 92 93.8994 25.7998c0 -39 -26.3994 -75.5996 -26.3994 -113.399c0 -25.8008 21.2998 -43.8008 46.1992 -43.8008c69 0 90.3008 99.6006 90.3008 152.7
-c0 71.1006 -50.4004 109.8 -118.5 109.8c-79.2002 0 -140.4 -57 -140.4 -137.399c0 -38.7002 23.7002 -58.5 23.7002 -67.7998c0 -7.80078 -5.7002 -35.4004 -15.6006 -35.4004c-24 0 -63.5996 40 -63.5996 110.4c0 110.699 101.4 179.1 204 179.1z" />
-    <glyph glyph-name="whatsapp" unicode="&#xf232;" 
-d="M380.9 350.9c41.8994 -42 67.0996 -97.7002 67.0996 -157c0 -122.4 -101.8 -222 -224.1 -222h-0.100586c-37.2002 0 -73.7002 9.2998 -106.1 27l-117.7 -30.9004l31.5 115c-19.4004 33.7002 -29.5996 71.9004 -29.5996 111c0 122.4 99.5996 222 222 222
-c59.2998 0 115.1 -23.0996 157 -65.0996zM223.9 9.2998c101.699 0 186.6 82.7998 186.6 184.601c0.0996094 49.2998 -21.2998 95.5996 -56.0996 130.5c-34.8008 34.8994 -81.1006 54.0996 -130.4 54.0996c-101.8 0 -184.6 -82.7998 -184.6 -184.5
-c0 -34.9004 9.69922 -68.7998 28.1992 -98.2002l4.40039 -7l-18.5996 -68.0996l69.7998 18.2998l6.7002 -4c28.2998 -16.7998 60.7998 -25.7002 94 -25.7002zM325.1 147.5c5.5 -2.7002 9.2002 -4.09961 10.5 -6.59961c1.40039 -2.30078 1.40039 -13.4004 -3.19922 -26.4004
-c-4.60059 -13 -26.7002 -24.7998 -37.4004 -26.4004c-17.5996 -2.59961 -31.4004 -1.2998 -66.5996 13.9004c-55.7002 24.0996 -92 80.0996 -94.8008 83.7998c-2.69922 3.7002 -22.5996 30.1006 -22.5996 57.4004s14.2998 40.7002 19.4004 46.2998
-c5.09961 5.5 11.0996 6.90039 14.7998 6.90039s7.39941 0 10.5996 -0.200195c3.40039 -0.200195 8 1.2998 12.5 -9.5c4.60059 -11.1006 15.7002 -38.4004 17.1006 -41.2002c1.39941 -2.7998 2.2998 -6 0.5 -9.7002c-10.6006 -21.2002 -22 -20.5 -16.3008 -30.2998
-c21.5 -36.9004 42.9004 -49.7002 75.5 -66c5.5 -2.7998 8.80078 -2.2998 12 1.40039c3.30078 3.7998 13.9004 16.1992 17.6006 21.7998c3.7002 5.59961 7.39941 4.7002 12.5 2.7998c5.09961 -1.7998 32.3994 -15.2002 37.8994 -18z" />
-    <glyph glyph-name="viacoin" unicode="&#xf237;" horiz-adv-x="384" 
-d="M384 416l-48 -112h48v-48h-68.5l-13.7998 -32h82.2998v-48h-102.8l-89.2002 -208l-89.2002 208h-102.8v48h82.2998l-13.7998 32h-68.5v48h48l-48 112h64l80.7998 -192h94.5l80.7002 192h64zM192 112l27 64h-54z" />
-    <glyph glyph-name="medium" unicode="&#xf23a;" 
-d="M0 416h448v-448h-448v448zM372.2 309.9v5h-83.2002l-59.2998 -147.9l-67.4004 148h-87.2998v-5.09961l28.0996 -33.9004c2.80078 -2.5 4.2002 -6.09961 3.80078 -9.7998v-133c0.799805 -4.7998 -0.700195 -9.7002 -4.10059 -13.2002l-31.5996 -38.2998v-5.10059h89.7998
-v5.10059l-31.5996 38.2998c-3.40039 3.5 -5.10059 8.40039 -4.40039 13.2002v115l78.7002 -171.601h9.09961l67.6006 171.601v-136.9c0 -3.59961 0 -4.2998 -2.40039 -6.7002l-24.2998 -23.5996v-4.90039h118v5.10059l-23.5 23
-c-2.10059 1.5 -3.10059 4.09961 -2.7002 6.7002v169.3c-0.400391 2.5 0.599609 5.09961 2.7002 6.7002z" />
-    <glyph glyph-name="y-combinator" unicode="&#xf23b;" 
-d="M448 416v-448h-448v448h448zM236 160.5l77.5 145.5h-32.7002l-45.7998 -91c-4.7002 -9.2998 -9 -18.2998 -12.7998 -26.7998l-12.2002 26.7998l-45.2002 91h-35l76.7002 -143.8v-94.5h29.5v92.7998z" />
-    <glyph glyph-name="optin-monster" unicode="&#xf23c;" horiz-adv-x="576" 
-d="M572.6 26.5996c1 -3.5 1.90039 -7 1.7002 -10.6992c0.799805 -31.6006 -44.2998 -64 -73.5 -65.1006c-17.2998 -0.799805 -34.5996 8.40039 -42.7002 23.5c-113.5 -4.09961 -227 -4.89941 -340.199 0c-8.40039 -15.0996 -25.7002 -24 -43 -23.5
-c-28.9004 1.10059 -74 33.5 -73.5 65.1006c0.299805 3.7998 0.799805 7.2998 1.89941 10.7998c-5.59961 9.39941 -4.7998 15.2998 5.40039 11.5996c3.2998 5.2002 7 9.5 11.0996 13.7998c-2.5 10.9004 1.2998 14.1006 11.1006 9.2002c4.5 3.2998 10 6.5 15.8994 9.2002
-c0 15.7998 11.7998 11.2002 17.2998 5.7002c12.5 1.7998 20.2002 -0.700195 26.8008 -5.7002v19.7002c-12.9004 0 -40.6006 11.3994 -45.9004 36.2002c-5 20.7998 2.59961 38.0996 25.0996 47.5996c0.800781 5.90039 8.10059 14 14.9004 15.9004
-c7.59961 1.89941 12.5 -4.60059 14.0996 -10.3008c7.40039 0 17.8008 -1.5 21.1006 -8.09961c5.39941 0.5 11.0996 1.40039 16.5 1.90039c-2.40039 1.89941 -5.10059 3.5 -8.10059 4.59961c-5.09961 8.90039 -13.7998 11.0996 -24.5996 11.5996
-c0 0.800781 0 1.60059 0.299805 2.7002c-19.7998 0.5 -44.0996 5.60059 -54.8994 17.7998c-21.3008 23.6006 -15.9004 83.6006 12.1992 103.5c8.40039 5.7002 21.6006 0.800781 22.7002 -9.69922c2.40039 -20.6006 0.400391 -26.8008 26.2002 -25.9004
-c8.09961 7.7998 16.7998 14.5996 26.5 20c-14.9004 1.2998 -28.9004 -1.59961 -43.7998 -3.7998c12.7002 12.5 23.8994 25.3994 56.7002 42.3994c23.5 11.9004 50 20.8008 76.1992 23.2002c-18.5996 7.90039 -40 11.9004 -59.6992 16.5
-c76.5 16.2002 174.6 22.1006 244.199 -37.5996c18.1006 -15.4004 32.4004 -36.2002 42.7002 -60c39.7998 -4.90039 36.4004 5.5 38.6006 25.0996c1.09961 10.2998 14.2998 15.4004 22.6992 9.5c14.9004 -10.5 22.2002 -30.7998 24.6006 -48.0996
-c2.2002 -17.7998 0.299805 -41.2998 -12.4004 -55.1006c-10.7998 -12.1992 -34.2998 -17.5996 -53.7998 -18.0996v-2.7998c-11.0996 -0.200195 -20.2998 -2.40039 -25.7002 -11.6006c-3 -1.09961 -5.7002 -2.69922 -8.39941 -4.59961
-c5.69922 -0.5 11.3994 -1.40039 16.7998 -1.90039c1.89941 5.60059 12.5996 8.40039 21.0996 8.40039c1.7002 5.40039 6.7998 11.9004 14.1006 10.2998c7.2998 -1.59961 14.0996 -10 14.8994 -15.8994c10.7998 -4.40039 22.1006 -12.2002 25.1006 -25.7002
-c1.89941 -8.10059 1.69922 -15.1006 0.299805 -21.9004c-5.7002 -25.2002 -33.2998 -36.2002 -45.9004 -36.2002c0 -6.69922 0 -13.1992 -0.299805 -19.6992c8.09961 6 16.4004 7.19922 26.7998 5.69922c6 5.90039 17.6006 9.40039 17.6006 -5.69922
-c5.59961 -2.7002 11.2998 -6 15.8994 -9.2002c10.1006 5 13.7002 0.5 10.7998 -9.2002c4.10059 -4.2998 8.10059 -8.90039 11.1006 -13.7998c10.0996 3.59961 11 -2.10059 5.39941 -11.6006zM498.8 280.6c17.2998 -6.69922 26.2002 -22.0996 30.2998 -35.6992
-c1.10059 10.5996 -2.69922 39.5 -13.7998 51.0996c-7.2998 7.2998 -14.0996 5.09961 -14.0996 -0.799805c0 -6.2002 -1.2998 -11.6006 -2.40039 -14.6006zM494.2 273.9c-3.2002 -3.30078 -9.2002 -4.90039 -14.1006 -5.7002c13 -15.7002 17 -41.7002 12.7002 -63
-c10.7998 2.2002 20.5 6.2998 26.2002 12.2002c1.90039 2.19922 3.7998 4.89941 4.90039 7.59961c-1.10059 21.2998 -10.2002 42.7002 -29.7002 48.9004zM470.1 267.1c-3.69922 0 -8.09961 0 -11.7998 0.300781c7.5 -20.6006 12.4004 -42.7002 14.2998 -64.6006
-c3.5 0 7.5 0.299805 11.6006 0.799805c5.89941 24.3008 -0.299805 51.6006 -14.1006 63.5zM47.5 245c4.09961 13.5 13 28.9004 30.2998 35.7002c-1 3 -2.39941 8.39941 -2.39941 14.5996c0 5.90039 -7.10059 8.10059 -14.1006 0.799805
-c-11.3994 -11.5996 -14.8994 -40.5996 -13.7998 -51.0996zM57.2002 217.4c5.7002 -6.2002 15.3994 -10 26.2002 -12.2002c-4.30078 21.3994 -0.300781 47.2998 12.6992 63c-4.89941 0.799805 -10.8994 2.5 -14.0996 5.7002
-c-19.4004 -6.2002 -28.2998 -27.6006 -29.7002 -48.9004c1.40039 -2.7002 3 -5.40039 4.90039 -7.59961zM105.1 202.8c2.40039 22.2002 9.10059 43.7998 19.8008 63.5c-5.2002 -1.09961 -10 -3 -14.9004 -4.89941l-12.2002 -5.10059v0.299805
-c-7.2998 -14.0996 -10 -34.3994 -5.39941 -53c4.59961 -0.5 8.59961 -0.799805 12.6992 -0.799805zM289.1 365.5c-41.8994 0 -76.1992 -34.0996 -76.1992 -75.9004c0 -42.1992 34.2998 -76.1992 76.1992 -76.1992c41.9004 0 76.2002 34 76.2002 76.1992
-c0 41.9004 -34.2998 75.9004 -76.2002 75.9004zM404.7 191.2c-12.9004 0.799805 -26.2002 0.799805 -39.5 1.09961c10 -50.5996 3.2998 -64.7002 16.5 -58.0996c16 8.09961 22.7002 39.2002 23 57zM350.7 192.8c-18.9004 0.299805 -38.1006 0.299805 -57 0v0.299805
-c-0.299805 -5.19922 0.200195 -38.0996 4.2998 -41.0996c11.0996 -5.40039 39.5 -4.59961 51.0996 -1.09961c5.40039 1.59961 2.40039 37 1.60059 41.8994zM278.3 139c4.60059 2.5 2.40039 45.4004 1.2998 53.7002v0.299805
-c-19.3994 -0.299805 -38.5996 -0.299805 -57.7998 -0.799805c-1.89941 -9.2002 -4.59961 -48.9004 1.90039 -51.6006c13 -5.69922 41.5996 -5.09961 54.5996 -1.59961zM171.8 190.1c-5.39941 -19.6992 0.299805 -45.0996 22.2002 -54.8994
-c5.40039 -2.5 8.59961 -2.5 9.7002 4.2998c1.89941 8.7002 2.5 36.7998 4.89941 52.2002c-12.1992 -0.200195 -24.5996 -0.799805 -36.7998 -1.60059zM136.4 158.8c2.39941 -3.7002 1.59961 -9.09961 -8 -12.5c43.7998 -47 92.6992 -85.7002 155.899 -106.5
-c67.5 19.2002 115.601 60 163.2 107c-11.0996 4.2998 -7.7002 10.2998 -7.2998 11.6006c-8.90039 0.799805 -17.9004 1.89941 -26.5 2.69922c-9.5 -33 -36 -52.8994 -46.7998 -31.5996c-2.7002 5.2002 -3.5 11.7002 -4.60059 16.7998
-c-3.7998 -8.39941 -13.2998 -8.09961 -24.5996 -8.89941c-13.2002 -1.10059 -31.6006 -1.30078 -44 3c-3 -12.9004 -11.1006 -12.9004 -26.7998 -14.3008c-14.1006 -1.39941 -48.7002 -4.09961 -54.9004 10.8008c-1.09961 -28.7002 -35.0996 -10 -45.0996 7
-c-3.2002 5.69922 -5.40039 11.3994 -7 17.5996c-7.80078 -0.799805 -15.7002 -1.59961 -23.5 -2.7002zM114.8 -13.7002c0.5 2.5 0.799805 5.2002 0.799805 8.2002c-5.69922 23.2002 -18.5996 49.7002 -33.5 54c-22.3994 6.7002 -68.8994 -23.5 -66.1992 -54.5996
-c12.6992 -19.5 40 -35.7002 59.1992 -36.5c17.8008 -0.800781 35.9004 11.0996 39.7002 28.8994zM106.1 52.2998c9 -16 15.5 -33.2998 16.7002 -51.8994c33.5 19.3994 69.1006 35.6992 105.9 47c-38.7002 20.5 -68.1006 47.7998 -97.2998 77
-c-2.10059 -1.30078 -5.10059 -2.40039 -7.80078 -3.5c-1.59961 -4.90039 8.7002 -5.30078 5.40039 -12.4004c-2.09961 -4.09961 -8.59961 -7.59961 -15.0996 -9.2002c-2.10059 -2.7002 -5.10059 -4.89941 -7.80078 -6.5h-0.299805
-c-0.200195 -13.5 -0.200195 -27 0.299805 -40.5zM443.7 -12.2998c-36.7998 21.2998 -74.1006 41.2998 -115.601 53c-13.7998 -6.2002 -27.8994 -11.2998 -42.1992 -15.4004c-2.10059 -0.799805 -2.10059 -0.799805 -4.30078 0
-c-11.8994 3.7002 -23.2998 8.10059 -34.8994 13.2002c-40.2002 -11.5996 -77.2998 -29.2002 -112.4 -50.7998h-0.299805v-0.299805c0.299805 0 0.299805 0 0.299805 0.299805c103.2 -4.10059 206.4 -3.5 309.4 0zM454.2 0.0996094c1 14.7002 7.2002 35.8008 16.5 51.7002
-l-0.299805 -0.299805c0.5 13.7002 0.799805 27.5 0.799805 41.2998c-3 1.7002 -5.7002 4.10059 -8.10059 6.7998c-6.5 1.30078 -12.8994 5.10059 -15.0996 8.90039c-1.90039 4.09961 1.2998 7.59961 5.90039 10.2998c-0.200195 0.5 -0.5 1.60059 -0.5 2.40039
-c-3 0.799805 -5.40039 1.7998 -7.60059 3.2002c-31.5996 -29.4004 -65.3994 -56.7002 -103.5 -76.7002c38.9004 -11.7002 76 -28.1006 111.9 -47.6006zM560.1 -6.09961c3 31.0996 -43.5 61.3994 -66.1992 54.5c-14.6006 -4.30078 -27.8008 -30.8008 -33.5 -54
-c0 -23.8008 21.1992 -37.9004 40.5 -37c19.1992 0.799805 46.5 17 59.1992 36.5zM372.9 372.8c-35.7002 39.2002 -81.4004 47.7998 -126 23.5c25.1992 56.2002 122.199 48.6006 126 -23.5zM74.7998 40.9004c14.9004 1.89941 24.6006 -19.2002 18.6006 -30.8008
-c-4.80078 -9.69922 -23.7002 -24.0996 -35.9004 -27.2998c-16.5 -4.59961 -32.2002 3.2998 -32.2002 14.9004c0 17.7998 33.7998 41.5996 49.5 43.2002zM290.7 217.1c-30.9004 0 -57.6006 25.7002 -50.2998 59.8008c13.1992 -20.7002 46.5 -12 46.5 11.2998
-c0 10 -7 18.5996 -16.5 21.5996c31.6992 13.7998 72.1992 -8.2002 72.1992 -44.2998c0 -26.7998 -23.2998 -48.4004 -51.8994 -48.4004zM68 -26.0996c-0.5 8.39941 20.2998 23.5 29.2002 25.0996c8.59961 1.59961 12.7002 -11.4004 9.7002 -18.4004
-c-2.7002 -5.69922 -10.5 -13.5 -17.3008 -16.1992c-9.39941 -3.2002 -21.0996 3 -21.5996 9.5zM501.2 40.9004c15.7002 -1.60059 49.5 -25.4004 49.5 -43.2002c0 -11.7002 -15.7002 -19.5 -32.2002 -14.9004c-12.0996 3.2002 -31.2998 17.6006 -36.2002 27.2998
-c-5.7002 11.6006 4 32.7002 18.9004 30.8008zM478.8 -1c8.90039 -1.59961 30 -16.7002 29.1006 -25.0996c-0.200195 -6.5 -12.1006 -12.7002 -21.3008 -9.5c-7 2.69922 -14.8994 10.5 -17.2998 16.1992c-2.89941 7.10059 1.10059 20 9.5 18.4004z" />
-    <glyph glyph-name="opencart" unicode="&#xf23d;" horiz-adv-x="640" 
-d="M423.3 7.2998c0 -25.2998 -20.2998 -45.5996 -45.5996 -45.5996s-45.7998 20.2998 -45.7998 45.5996s20.5996 45.7998 45.7998 45.7998c25.3994 0 45.5996 -20.5 45.5996 -45.7998zM169.4 53.0996c25.2998 0 45.7998 -20.5 45.7998 -45.7998
-s-20.5 -45.5996 -45.7998 -45.5996c-25.3008 0 -45.6006 20.3994 -45.6006 45.5996s20.2998 45.7998 45.6006 45.7998zM461.1 323.1c302.2 0 169.5 -67.1992 -17.1992 -233.899c59.1992 102.8 262.5 193.899 -70.8008 188.899c-319.8 -4.69922 -338.699 92.5 -373.1 144.2
-c81.9004 -86.3994 158.9 -99.2002 461.1 -99.2002z" />
-    <glyph glyph-name="expeditedssl" unicode="&#xf23e;" horiz-adv-x="496" 
-d="M248 404.6c117.4 0 212.6 -95.1992 212.6 -212.6s-95.1992 -212.6 -212.6 -212.6s-212.6 95.1992 -212.6 212.6s95.1992 212.6 212.6 212.6zM150.6 271.7h-0.199219v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941
-v26.6006c0 82.0996 124 82.0996 124 0v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941v26.6006c0 53.7002 -43.7002 97.3994 -97.4004 97.3994s-97.4004 -43.6992 -97.4004 -97.3994zM389.7 68v141.7
-c0 9.7002 -8 17.7002 -17.7002 17.7002h-248c-9.7002 0 -17.7002 -8 -17.7002 -17.7002v-141.7c0 -9.7002 8 -17.7002 17.7002 -17.7002h248c9.7002 0 17.7002 8 17.7002 17.7002zM141.7 205.3v-132.899c0 -2.5 -1.90039 -4.40039 -4.40039 -4.40039h-8.89941
-c-2.5 0 -4.40039 1.90039 -4.40039 4.40039v132.899c0 2.5 1.90039 4.40039 4.40039 4.40039h8.89941c2.5 0 4.40039 -1.90039 4.40039 -4.40039zM283.4 156.6c0 -13 -7.2002 -24.3994 -17.7002 -30.3994v-31.6006c0 -5 -3.90039 -8.89941 -8.90039 -8.89941h-17.7002
-c-5 0 -8.89941 3.89941 -8.89941 8.89941v31.6006c-10.5 6.09961 -17.7002 17.3994 -17.7002 30.3994c0 19.7002 15.7998 35.4004 35.4004 35.4004c19.5996 0 35.5 -15.7998 35.5 -35.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248
-s111 248 248 248zM248 -38.2998c127 0 230.3 103.3 230.3 230.3s-103.3 230.3 -230.3 230.3s-230.3 -103.3 -230.3 -230.3s103.3 -230.3 230.3 -230.3z" />
-    <glyph glyph-name="cc-jcb" unicode="&#xf24b;" horiz-adv-x="576" 
-d="M431.5 203.7v32.2998c41.2002 0 38.5 -0.200195 38.5 -0.200195c7.2998 -1.2998 13.2998 -7.2998 13.2998 -16c0 -8.7998 -6 -14.5 -13.2998 -15.7998c-1.2002 -0.400391 -3.2998 -0.299805 -38.5 -0.299805zM474.3 183.5c7.5 -1.5 13.5 -8.2998 13.5 -17
-c0 -9 -6 -15.5 -13.5 -17c-2.7998 -0.700195 -3.2002 -0.5 -42.7998 -0.5v35c39.5 0 40 0.200195 42.7998 -0.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM182 255.7h-57
-c0 -67.1006 10.7002 -109.7 -35.7998 -109.7c-19.5 0 -38.7998 5.7002 -57.2002 14.7998v-28c30 -8.2998 68 -8.2998 68 -8.2998c97.9004 0 82 47.7002 82 131.2zM360.5 251.2c-63.4004 16 -165 14.8994 -165 -59.2998c0 -77.1006 108.2 -73.6006 165 -59.2002v28.2998
-c-47.5996 -24.7002 -107.5 -22 -107.5 31s59.7998 55.5996 107.5 31.2002v28zM544 161.5c0 18.5 -16.5 30.5 -38 32v0.799805c19.5 2.7002 30.2998 15.5 30.2998 30.2002c0 19 -15.7002 30 -37 31c0 0 6.2998 0.299805 -120.3 0.299805v-127.5h122.7
-c24.2998 -0.0996094 42.2998 12.9004 42.2998 33.2002z" />
-    <glyph glyph-name="cc-diners-club" unicode="&#xf24c;" horiz-adv-x="576" 
-d="M239.7 368.1c97.2002 0 175.8 -78.5996 175.8 -175.8c0 -96.8994 -78.5996 -175.8 -175.8 -175.8c-96.9004 0 -175.8 78.9004 -175.8 175.8c0 97.2002 78.8994 175.8 175.8 175.8zM199.8 88.5v207.9c-41.7002 -16.2002 -71.3994 -56.7002 -71.3994 -104.101
-c0 -47.3994 29.6992 -87.8994 71.3994 -103.8zM279.6 88.2002c41.7002 16.2002 71.4004 56.7002 71.4004 104.1c0 47.4004 -29.7002 87.9004 -71.4004 104.101v-208.2zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352
-c0 26.5 21.5 48 48 48h480zM329.7 0c105 0 200.7 85.5 200.7 190.2c0 114.6 -95.7002 193.8 -200.7 193.8h-90.2998c-106.2 0 -193.801 -79.2002 -193.801 -193.8c0 -104.7 87.6006 -190.2 193.801 -190.2h90.2998z" />
-    <glyph glyph-name="creative-commons" unicode="&#xf25e;" horiz-adv-x="496" 
-d="M245.83 233.13l-33.2197 -17.2803c-9.43066 19.5801 -25.2402 19.9307 -27.46 19.9307c-22.1309 0 -33.2207 -14.6104 -33.2207 -43.8398c0 -23.5703 9.20996 -43.8408 33.2207 -43.8408c14.4697 0 24.6494 7.09082 30.5693 21.2607l30.5498 -15.5
-c-6.16992 -11.5107 -25.6895 -38.9805 -65.0996 -38.9805c-22.5996 0 -73.96 10.3203 -73.96 77.0498c0 58.6904 43 77.0605 72.6299 77.0605c30.7197 0.00976562 52.7002 -11.9502 65.9902 -35.8604zM388.88 233.13l-32.7803 -17.2803
-c-9.5 19.7705 -25.7197 19.9307 -27.8994 19.9307c-22.1406 0 -33.2197 -14.6104 -33.2197 -43.8398c0 -23.5508 9.22949 -43.8408 33.2197 -43.8408c14.4502 0 24.6494 7.09082 30.54 21.2607l31 -15.5c-2.10059 -3.75 -21.3906 -38.9805 -65.0898 -38.9805
-c-22.6904 0 -73.96 9.87012 -73.96 77.0498c0 58.6699 42.9697 77.0605 72.6299 77.0605c30.71 0.00976562 52.5801 -11.9502 65.5596 -35.8604zM247.56 439.95c141.82 0 248.44 -110.13 248.44 -248c0 -147.13 -118.51 -248 -248.44 -248
-c-133.96 0 -247.56 109.51 -247.56 248c0 132.939 104.74 248 247.56 248zM248.43 -10.8604c103.16 0 202.83 81.1299 202.84 202.82c0 113.8 -90.2891 203.26 -202.819 203.26c-118.29 0 -203.72 -97.8496 -203.72 -203.27c0 -109.771 91.1592 -202.811 203.699 -202.811z
-" />
-    <glyph glyph-name="gg" unicode="&#xf260;" horiz-adv-x="512" 
-d="M179.2 217.6l102.399 -102.399l-102.399 -102.4l-179.2 179.2l179.2 179.2l44.7998 -44.7998l-25.5996 -25.6006l-19.2002 19.2002l-128 -128l128 -128l51.5 51.5l-77.1006 76.5zM332.8 371.2l179.2 -179.2l-179.2 -179.2l-44.7998 44.7998l25.5996 25.6006
-l19.2002 -19.2002l128 128l-128 128l-51.5 -51.5l77.1006 -76.5l-25.6006 -25.5996l-102.399 102.399z" />
-    <glyph glyph-name="gg-circle" unicode="&#xf261;" horiz-adv-x="512" 
-d="M257 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM207.5 65.2002l75 75.2002l-77.2002 77.1992l-24.3994 -24.3994l53.0996 -52.9004l-26.5996 -26.5996l-77.2002 77.2002l77.2002 77.1992l11.0996 -11.0996l24.2002 24.2002
-l-35.2002 35.3994l-125.7 -125.699zM306.5 67.4004l125.7 125.6l-125.7 125.7l-75 -75l77.2002 -77.2002l24.3994 24.4004l-53.0996 52.8994l26.5 26.5l77.2002 -77.2002l-77.2002 -77.1992l-11.0996 11.0996l-24.1006 -24.4004z" />
-    <glyph glyph-name="tripadvisor" unicode="&#xf262;" horiz-adv-x="576" 
-d="M528.91 269.18c28.8652 -26.2666 46.9404 -64.1113 46.9404 -106.176c0 -0.0615234 -0.000976562 -0.12207 -0.000976562 -0.183594h0.0302734c-0.00195312 -79.4414 -64.5479 -143.928 -143.989 -143.928c-37.7363 0 -72.0996 14.5527 -97.7803 38.3477
-l-46.1104 -50.1699l-46.1396 50.1992c-25.6064 -23.4443 -59.8145 -37.7793 -97.2334 -37.7793c-79.4268 0 -143.911 64.4844 -143.911 143.911c0 41.8076 17.8662 79.4756 46.374 105.778l-47.0898 51.2402h104.66c52.2266 35.5498 115.938 56.3369 183.822 56.3369
-s130.95 -20.7871 183.178 -56.3369h104.34zM144.06 65.4297c53.751 0 97.3906 43.6396 97.3906 97.3906s-43.6396 97.3896 -97.3906 97.3896s-97.3896 -43.6387 -97.3896 -97.3896s43.6387 -97.3906 97.3896 -97.3906zM288 165.63c0 64.0801 46.6104 119.07 108.08 142.59
-c-33.2285 13.8467 -70.0527 21.4941 -108.272 21.4941c-38.2207 0 -74.6689 -7.64746 -107.897 -21.4941c61.4697 -23.5098 108.09 -78.5 108.09 -142.59zM431.88 65.4297c53.7568 0.00292969 97.4004 43.6475 97.4004 97.4053c0 53.7598 -43.6455 97.4053 -97.4053 97.4053
-c-53.7588 0 -97.4053 -43.6455 -97.4053 -97.4053c0 -53.7578 43.6436 -97.4023 97.4004 -97.4053h0.00976562zM144.06 213.88c0.0175781 0 0.0332031 -0.000976562 0.0507812 -0.000976562c28.1299 0 50.9717 -22.8242 51 -50.9492v-0.109375
-c0 -28.1807 -22.8799 -51.0605 -51.0605 -51.0605s-51.0596 22.8799 -51.0596 51.0605s22.8789 51.0596 51.0596 51.0596h0.00976562zM431.88 213.88c28.1807 0 51.0605 -22.8789 51.0605 -51.0596s-22.8799 -51.0605 -51.0605 -51.0605s-51.0596 22.8799 -51.0596 51.0605
-s22.8789 51.0596 51.0596 51.0596z" />
-    <glyph glyph-name="odnoklassniki" unicode="&#xf263;" horiz-adv-x="320" 
-d="M275.1 114c-27.3994 -17.4004 -65.0996 -24.2998 -90 -26.9004l20.9004 -20.5996l76.2998 -76.2998c27.9004 -28.6006 -17.5 -73.2998 -45.7002 -45.7002c-19.0996 19.4004 -47.0996 47.4004 -76.2998 76.5996l-76.2998 -76.5
-c-28.2002 -27.5 -73.5996 17.6006 -45.4004 45.7002c19.4004 19.4004 47.1006 47.4004 76.3008 76.2998l20.5996 20.6006c-24.5996 2.59961 -62.9004 9.09961 -90.5996 26.8994c-32.6006 21 -46.9004 33.3008 -34.3008 59c7.40039 14.6006 27.7002 26.9004 54.6006 5.7002
-c0 0 36.2998 -28.8994 94.8994 -28.8994c58.6006 0 94.9004 28.8994 94.9004 28.8994c26.9004 21.1006 47.0996 8.90039 54.5996 -5.7002c12.4004 -25.6992 -1.89941 -38 -34.5 -59.0996zM30.2998 318.3c0 71.7002 58.2998 129.7 129.7 129.7s129.7 -58 129.7 -129.7
-c0 -71.3994 -58.2998 -129.399 -129.7 -129.399s-129.7 58 -129.7 129.399zM96.2998 318.3c0 -35.0996 28.6006 -63.7002 63.7002 -63.7002s63.7002 28.6006 63.7002 63.7002c0 35.4004 -28.6006 64 -63.7002 64s-63.7002 -28.5996 -63.7002 -64z" />
-    <glyph glyph-name="odnoklassniki-square" unicode="&#xf264;" 
-d="M184.2 270.9c0 22.0996 17.8994 40 39.7998 40s39.7998 -17.9004 39.7998 -40c0 -22 -17.8994 -39.8008 -39.7998 -39.8008s-39.7998 17.9004 -39.7998 39.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352
-c26.5 0 48 -21.5 48 -48zM142.9 270.9c0 -44.6006 36.3994 -80.9004 81.0996 -80.9004s81.0996 36.2002 81.0996 80.9004c0 44.7998 -36.3994 81.0996 -81.0996 81.0996s-81.0996 -36.2002 -81.0996 -81.0996zM317.4 180.2
-c-4.60059 9.09961 -17.3008 16.7998 -34.1006 3.59961c0 0 -22.7002 -18 -59.2998 -18s-59.2998 18 -59.2998 18c-16.7998 13.2002 -29.5 5.5 -34.1006 -3.59961c-7.89941 -16.1006 1.10059 -23.7002 21.4004 -37c17.2998 -11.1006 41.2002 -15.2002 56.5996 -16.7998
-l-12.8994 -12.9004c-18.2002 -18 -35.5 -35.5 -47.7002 -47.7002c-17.5996 -17.5996 10.7002 -45.7998 28.4004 -28.5996l47.6992 47.8994c18.2002 -18.1992 35.7002 -35.6992 47.7002 -47.8994c17.6006 -17.2002 46 10.7002 28.6006 28.5996l-47.7002 47.7002l-13 12.9004
-c15.5 1.59961 39.0996 5.89941 56.2002 16.7998c20.3994 13.2998 29.2998 21 21.5 37z" />
-    <glyph glyph-name="get-pocket" unicode="&#xf265;" 
-d="M407.6 384c22.7002 0 40.4004 -18.2002 40.4004 -40.5996v-135.2c0 -124.7 -99.7998 -224.2 -223.8 -224.2c-124.5 0 -224.2 99.5 -224.2 224.2v135.2c0 22.0996 18.5 40.5996 40.5996 40.5996h367zM245.6 115.5c111.9 107.5 114.801 105.4 114.801 123.2
-c0 16.8994 -13.8008 30.7002 -30.7002 30.7002c-16.9004 0 -14.9004 -2.40039 -105.5 -89.3008c-89.1006 85.5 -88.2002 89.3008 -105.2 89.3008c-16.9004 0 -30.7002 -13.8008 -30.7002 -30.7002c0 -18.1006 1.2002 -14.2998 114.9 -123.2
-c11 -11.0996 30 -11.7998 42.3994 0z" />
-    <glyph glyph-name="wikipedia-w" unicode="&#xf266;" horiz-adv-x="640" 
-d="M640 396.8l-0.299805 -12.2002c-28.1006 -0.799805 -45 -15.7998 -55.7998 -40.2998c-25 -57.7998 -103.301 -240 -155.301 -358.6h-13.5996l-81.9004 193.1c-32.5 -63.5996 -68.2998 -130 -99.1992 -193.1c-0.300781 -0.299805 -15 0 -15 0.299805
-c-46.9004 109.7 -96.1006 218.6 -143.101 328.6c-11.3994 26.7002 -49.3994 70 -75.5996 69.7002c0 3.10059 -0.299805 10 -0.299805 14.2002h161.899v-13.9004c-19.2002 -1.09961 -52.7998 -13.2998 -43.2998 -34.1992c21.9004 -49.7002 103.6 -240.301 125.6 -288.601
-c15 29.7002 57.8008 109.2 75.3008 142.8c-13.9004 28.3008 -58.6006 133.9 -72.8008 160c-9.69922 17.8008 -36.0996 19.4004 -55.7998 19.7002v13.9004l142.5 -0.299805v-13.1006c-19.3994 -0.599609 -38.0996 -7.7998 -29.3994 -26.0996
-c18.8994 -40 30.5996 -68.1006 48.0996 -104.7c5.59961 10.7998 34.7002 69.4004 48.0996 100.8c8.90039 20.6006 -3.89941 28.6006 -38.5996 29.4004c0.299805 3.59961 0 10.2998 0.299805 13.5996c44.4004 0.299805 111.101 0.299805 123.101 0.600586v-13.6006
-c-22.5 -0.799805 -45.8008 -12.7998 -58.1006 -31.7002l-59.2002 -122.8c6.40039 -16.0996 63.3008 -142.8 69.2002 -156.7l122.4 282.601c-8.60059 23.0996 -36.4004 28.0996 -47.2002 28.2998v13.9004l127.8 -1.10059z" />
-    <glyph glyph-name="safari" unicode="&#xf267;" horiz-adv-x="512" 
-d="M274.69 173.31l-108.69 -71.3096l71.3096 108.69zM256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM411.85 265.21c-2.88672 -1.20801 -4.9082 -4.0625 -4.9082 -7.38574c0 -1.08496 0.21582 -2.12012 0.608398 -3.06445v0
-c1.20215 -2.90039 4.06348 -4.93457 7.39648 -4.93457c1.08105 0 2.1123 0.214844 3.05371 0.604492l14.75 6.11035c2.90234 1.20117 4.93848 4.06348 4.93848 7.39746c0 1.08496 -0.216797 2.11914 -0.608398 3.0625v0c-1.2002 2.90527 -4.06348 4.94336 -7.39941 4.94336
-c-1.08008 0 -2.11035 -0.214844 -3.05078 -0.603516zM314.43 354c-0.396484 -0.949219 -0.625 -1.99219 -0.625 -3.08496c0 -3.33398 2.04395 -6.19336 4.94531 -7.39551v0c0.941406 -0.388672 1.97461 -0.613281 3.05566 -0.613281
-c3.33301 0 6.19238 2.04297 7.39453 4.94336l6.12988 14.7803c0.389648 0.941406 0.613281 1.97461 0.613281 3.05566c0 3.33301 -2.04297 6.19238 -4.94336 7.39453v0c-0.944336 0.392578 -1.98047 0.618164 -3.06641 0.618164
-c-3.32324 0 -6.17578 -2.03125 -7.38379 -4.91797zM256 388c-4.41504 0 -8 -3.58496 -8 -8v-16c0 -4.41504 3.58496 -8 8 -8v0c4.41504 0 8 3.58496 8 8v16c0 4.41504 -3.58496 8 -8 8v0zM181 373.08c-2.89941 -1.20215 -4.93262 -4.0625 -4.93262 -7.39551
-c0 -1.06934 0.210938 -2.09082 0.592773 -3.02441l6.12988 -14.7803c1.16504 -2.97754 4.05762 -5.07812 7.44531 -5.07812c4.41602 0 8 3.58496 8 8c0 1.13672 -0.237305 2.21875 -0.665039 3.19824l-6.11035 14.75c-1.20117 2.90234 -4.06348 4.93848 -7.39746 4.93848
-c-1.08496 0 -2.11914 -0.216797 -3.0625 -0.608398zM117.42 330.59c-1.44727 -1.44824 -2.35254 -3.44922 -2.35254 -5.65625c0 -2.19141 0.883789 -4.17773 2.3125 -5.62402l11.3105 -11.3096c1.44727 -1.44727 3.44922 -2.34277 5.65527 -2.34277
-c2.20703 0 4.20605 0.895508 5.6543 2.34277v0c1.43848 1.44629 2.32715 3.44238 2.32715 5.6416c0 2.19824 -0.888672 4.19141 -2.32715 5.63867l-11.2695 11.3096c-1.44824 1.44727 -3.4502 2.34277 -5.65625 2.34277c-2.20703 0 -4.20605 -0.895508 -5.6543 -2.34277v0z
-M60 192c0 -4.41504 3.58496 -8 8 -8h16c4.41504 0 8 3.58496 8 8v0c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v0zM100.15 118.79c2.88672 1.20801 4.9082 4.0625 4.9082 7.38574c0 1.08496 -0.21582 2.12012 -0.608398 3.06445v0
-c-1.20215 2.90039 -4.06348 4.93457 -7.39648 4.93457c-1.08105 0 -2.1123 -0.214844 -3.05371 -0.604492l-14.75 -6.11035c-2.90234 -1.20117 -4.93848 -4.06348 -4.93848 -7.39746c0 -1.08496 0.216797 -2.11914 0.608398 -3.0625v0
-c1.2002 -2.90527 4.06348 -4.94336 7.39941 -4.94336c1.08008 0 2.11035 0.214844 3.05078 0.603516zM104.48 254.79c0.386719 0.939453 0.609375 1.93945 0.609375 3.0166c0 3.33203 -2.04102 6.19043 -4.93945 7.39355l-14.7803 6.12988
-c-0.941406 0.389648 -1.97461 0.613281 -3.05566 0.613281c-3.33301 0 -6.19238 -2.04297 -7.39453 -4.94336v0c-0.392578 -0.944336 -0.618164 -1.98047 -0.618164 -3.06641c0 -3.32324 2.03125 -6.17578 4.91797 -7.38379l14.7803 -6.12012
-c0.945312 -0.393555 1.9834 -0.619141 3.07129 -0.619141c3.34668 0 6.21582 2.05957 7.40918 4.97949v0zM197.57 30c0.427734 0.979492 0.672852 2.07129 0.672852 3.20801c0 4.41602 -3.58496 8 -8 8c-3.38867 0 -6.28809 -2.11035 -7.45312 -5.08789l-6.12988 -14.7803
-c-0.389648 -0.941406 -0.611328 -1.9834 -0.611328 -3.06543c0 -4.41699 3.58594 -8.00293 8.00293 -8.00293c3.33496 0 6.19727 2.04492 7.39844 4.94824zM264 4v16c0 4.41504 -3.58496 8 -8 8v0c-4.41504 0 -8 -3.58496 -8 -8v-16c0 -4.41504 3.58496 -8 8 -8v0
-c4.41504 0 8 3.58496 8 8zM331 10.9199c2.89941 1.20215 4.93262 4.0625 4.93262 7.39551c0 1.06934 -0.210938 2.09082 -0.592773 3.02441l-6.12988 14.7803c-1.20215 2.90039 -4.06348 4.93457 -7.39648 4.93457c-1.08105 0 -2.1123 -0.214844 -3.05371 -0.604492v0
-c-2.90039 -1.20215 -4.93457 -4.06348 -4.93457 -7.39648c0 -1.08105 0.214844 -2.1123 0.604492 -3.05371l6.11035 -14.75c1.20117 -2.90234 4.06348 -4.93848 7.39746 -4.93848c1.08496 0 2.11914 0.216797 3.0625 0.608398v0zM394.58 53.4102
-c1.44727 1.44824 2.35254 3.44922 2.35254 5.65625c0 2.19141 -0.883789 4.17773 -2.3125 5.62402l-11.3105 11.3096c-1.44727 1.44727 -3.44922 2.34277 -5.65527 2.34277c-2.20703 0 -4.20605 -0.895508 -5.6543 -2.34277v0
-c-1.43848 -1.44629 -2.32715 -3.44238 -2.32715 -5.6416c0 -2.19824 0.888672 -4.19141 2.32715 -5.63867l11.2695 -11.3096c1.44824 -1.44727 3.4502 -2.34277 5.65625 -2.34277c2.20703 0 4.20605 0.895508 5.6543 2.34277v0zM286.25 161.75l115.41 175.91
-l-175.91 -115.41l-115.41 -175.91zM437.08 117c0.392578 0.944336 0.618164 1.98047 0.618164 3.06641c0 3.32324 -2.03125 6.17578 -4.91797 7.38379l-14.7803 6.12012c-0.949219 0.396484 -1.99219 0.625 -3.08496 0.625c-3.33398 0 -6.19336 -2.04395 -7.39551 -4.94531
-v0c-0.388672 -0.941406 -0.613281 -1.97461 -0.613281 -3.05566c0 -3.33301 2.04297 -6.19238 4.94336 -7.39453l14.7803 -6.12988c0.941406 -0.389648 1.97461 -0.613281 3.05566 -0.613281c3.33301 0 6.19238 2.04297 7.39453 4.94336v0zM444 184c4.41504 0 8 3.58496 8 8
-v0c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v0c0 -4.41504 3.58496 -8 8 -8h16z" />
-    <glyph glyph-name="chrome" unicode="&#xf268;" horiz-adv-x="496" 
-d="M131.5 230.5l-76.4004 117.4c47.6006 59.1992 119 91.7998 192 92.0996c42.3008 0.299805 85.5 -10.5 124.801 -33.2002c43.3994 -25.2002 76.3994 -61.3994 97.3994 -103l-205.3 10.7998c-58.0996 3.40039 -113.4 -29.2998 -132.5 -84.0996zM164.4 192
-c0 46.2998 37.3994 83.5996 83.5996 83.5996s83.5996 -37.3994 83.5996 -83.5996s-37.3994 -83.5996 -83.5996 -83.5996s-83.5996 37.3994 -83.5996 83.5996zM479.3 281.2c43.5 -111.9 0 -241.9 -107.399 -303.9c-43.4004 -25.2002 -91.3008 -35.3994 -137.801 -32.8994
-l112.101 172.399c31.8994 49 31.2998 112.9 -6.60059 157.2zM133.7 144.4c26.2998 -51.7002 81.8994 -83.3008 139.5 -72.5l-63.7002 -124.801c-118.7 18.2002 -209.5 120.9 -209.5 244.9c0 50.0996 14.9004 96.9004 40.4004 135.9z" />
-    <glyph glyph-name="firefox" unicode="&#xf269;" horiz-adv-x="512" 
-d="M503.52 206.52c0.240234 -4.43945 0.360352 -9 0.480469 -13.5195c0 -137.19 -111.23 -248.42 -248.32 -248.42c-122.779 0 -224.859 89.2695 -244.779 206.38c-0.360352 3.24023 -0.720703 6.36035 -1.08008 9.59961c-4.91992 42.6006 0.479492 87.3604 16.0801 124.79
-c10.7998 25.8809 32.6396 54 49.7998 62.8809c-16.2002 -31.8008 -24.1201 -63 -25.7998 -83.8809c11.2793 37.2002 32.6299 68.3604 62.5098 90.3604c51.2402 37.6699 120.229 39.3604 147.71 15.3604c-51 -17.5107 -106.55 -87.96 -94.3105 -170.511
-c2.00586 -13.791 6.21289 -27.1582 12.1201 -39.2393c-9.51953 25.0801 -10.3594 60.3594 5 83.2793c17.1602 25.5508 41.6299 30.9502 54.71 28.1904c-5.15918 1.08008 -16.5596 -20.75 -18.2393 -24.5898c-3.99609 -9.09863 -6.25098 -19.1865 -6.25098 -29.7539
-c0 -0.416016 0.00390625 -0.832031 0.0107422 -1.24609c0.392578 -23.1182 10.1045 -44.0088 25.5596 -59c47.6504 -46.4307 124.561 -28.1602 159 24.8398c23.6406 36.4795 26.5205 98.3896 -3.83984 147.59c-7.62891 12.0801 -16.5693 22.9639 -26.8799 32.7598
-c-47.6602 45.4707 -116.06 64.6699 -180.24 52.9902c-0.240234 0 -0.599609 -0.120117 -0.839844 -0.120117c-1.7998 -0.359375 -3.47949 -0.719727 -5.16016 -1.08008c-0.359375 -0.120117 -0.839844 -0.120117 -1.2002 -0.239258l-5.87988 -1.44043
-c-14.5195 -3.55957 -34.7998 -10.7998 -49.4395 -19.5596c-0.09375 -0.0136719 -0.176758 -0.0566406 -0.240234 -0.120117l0.120117 0.120117c0 -0.0664062 -0.0537109 -0.120117 -0.120117 -0.120117l-0.120117 -0.120117l0.120117 0.120117h-0.129883l0.479492 0.479492
-c0.480469 0.480469 1.32031 1.16016 2.40039 2.16016c19.6797 17.7598 49.3203 31.9199 82.9102 39c14.7383 3.09766 29.8691 4.81543 45.4795 5h10.6299c12.9863 -0.311523 25.6123 -1.67188 38 -4c0.960938 -0.120117 1.76074 -0.360352 2.76074 -0.479492h0.120117
-c1.7998 -0.360352 3.71973 -0.84082 5.63965 -1.2002c19.2676 -4.375 38.0977 -11.0762 55.4297 -19.5605c2.40039 -1.2002 4.7998 -2.39941 7.2002 -3.71973c8.6748 -4.32129 16.8906 -9.37891 24.5996 -15.1201c4.32031 -3.12012 8.48047 -6.36035 12.4805 -9.83984
-c6.50781 -5.19434 12.5332 -10.6973 18.29 -16.7002c8.51074 -8.35645 16.2646 -17.1406 23.5098 -26.6396c0.959961 -1.2002 1.75977 -2.40039 2.75977 -3.71973c0.400391 -0.480469 0.640625 -0.84082 1 -1.32031l1.80078 -2.52051
-c0.359375 -0.479492 0.719727 -1.08008 1.08008 -1.55957c0.479492 -0.719727 1.0791 -1.56055 1.55957 -2.28027c0.441406 -0.571289 0.839844 -1.16992 1.2002 -1.7998l1.43945 -2.12988c0.441406 -0.571289 0.84082 -1.16992 1.2002 -1.7998
-c0.480469 -0.720703 0.959961 -1.56055 1.32031 -2.16016c0.359375 -0.600586 0.839844 -1.24023 1.2002 -1.91992c0.359375 -0.680664 0.839844 -1.32031 1.19922 -2c0.360352 -0.680664 0.84082 -1.28027 1.2002 -2c0.441406 -0.638672 0.842773 -1.30566 1.2002 -2
-c0.360352 -0.720703 0.839844 -1.56055 1.2002 -2.16016c0.359375 -0.599609 0.719727 -1.32031 1.08008 -1.91992c0.359375 -0.839844 0.799805 -1.67969 1.2002 -2.28027c0.399414 -0.599609 0.639648 -1.2002 1 -1.7998
-c0.359375 -0.839844 0.839844 -1.56055 1.19922 -2.40039c0.240234 -0.479492 0.480469 -1.08008 0.720703 -1.55957c0.479492 -0.839844 0.839844 -1.63965 1.31934 -2.63965l0.360352 -0.720703c1.75977 -3.71973 3.44043 -7.55957 5 -11.3994
-c0 -0.120117 0.120117 -0.240234 0.120117 -0.360352c0.439453 -1.2002 0.959961 -2.28027 1.43945 -3.48047c0.120117 -0.239258 0.240234 -0.599609 0.360352 -0.839844c0.480469 -1.08008 0.839844 -2.2793 1.32031 -3.35938
-c0.138672 -0.321289 0.261719 -0.660156 0.359375 -1c0.360352 -1.08008 0.84082 -2.28027 1.2002 -3.36035l0.360352 -1.08008c0.479492 -1.2002 0.839844 -2.28027 1.2002 -3.47949c0.119141 -0.400391 0.239258 -0.640625 0.359375 -1
-c0.360352 -1.08008 0.720703 -2.28027 1.08008 -3.48047c0.120117 -0.240234 0.120117 -0.599609 0.240234 -0.839844c0.360352 -1.2002 0.719727 -2.52051 1.08008 -3.71973c0.120117 -0.120117 0.120117 -0.360352 0.240234 -0.600586l1.08008 -4
-c0.119141 -0.120117 0.119141 -0.120117 0.119141 -0.240234c3.54297 -13.2549 6.04102 -27.1152 7.32031 -41.1494v-0.120117l0.360352 -4.67969v-0.120117c0 -1.56055 0.120117 -3.12012 0.239258 -4.68066z" />
-    <glyph glyph-name="opera" unicode="&#xf26a;" horiz-adv-x="496" 
-d="M313.9 415.3c-170.2 0 -252.601 -223.8 -147.5 -355.1c36.5 -45.4004 88.5996 -75.6006 147.5 -75.6006c36.2998 0 70.2998 11.1006 99.3994 30.4004c-43.7998 -39.2002 -101.899 -63 -165.3 -63c-3.90039 0 -8 0 -11.9004 0.299805
-c-131.5 6.10059 -236.1 114.601 -236.1 247.7c0 137 111 248 248 248h0.799805c63.1006 -0.299805 120.7 -24.0996 164.4 -63.0996c-29 19.3994 -63.1006 30.3994 -99.2998 30.3994zM415.7 17.5996c-40.9004 -24.6992 -90.7002 -23.5996 -132 5.80078
-c56.2002 20.5 97.7002 91.5996 97.7002 176.6c0 84.7002 -41.2002 155.8 -97.4004 176.6c41.7998 29.2002 91.2002 30.3008 132.9 5c105.899 -98.6992 105.5 -265.699 -1.2002 -364z" />
-    <glyph glyph-name="internet-explorer" unicode="&#xf26b;" horiz-adv-x="512" 
-d="M483.049 288.294c25.1963 -45.4473 33.2578 -97.5811 26.8516 -141.162h-328.792c0 -100.432 144.31 -136.029 196.818 -47.4355h120.833c-32.5645 -91.7285 -119.689 -146.022 -216.813 -146.022c-35.1367 0 -70.2725 0.143555 -101.695 15.5732
-c-87.3975 -44.4941 -180.251 -56.5693 -180.251 42.0059c0 45.8066 23.2461 107.096 43.9922 145.022c35.1357 63.7227 81.4121 124.875 135.687 173.168c-43.7061 -18.8604 -91.125 -66.2959 -121.977 -101.158c25.877 112.787 129.466 193.638 237.098 186.457
-c130.032 59.7939 209.673 34.1445 209.673 -38.5771c0 -27.4326 -10.5684 -63.2959 -21.4238 -87.8711zM64.5586 101.123c-73.001 -152.4 11.5254 -172.244 100.267 -123.304c-46.5635 27.4326 -82.5557 72.1533 -100.267 123.304zM180.536 209.996h207.961
-c-2 55.1514 -50.5635 94.8711 -103.981 94.8711c-53.7041 0 -101.979 -39.7197 -103.979 -94.8711zM365.072 397.596c46.2764 -18.002 85.9824 -57.2939 112.263 -99.5859c7.1416 18.8604 14.5693 47.8643 14.5693 67.8672c0 32.0049 -22.8525 53.7217 -54.2744 53.7217
-c-23.9951 0 -51.1328 -11.7158 -72.5576 -22.0029z" />
-    <glyph glyph-name="contao" unicode="&#xf26d;" horiz-adv-x="512" 
-d="M45.4004 143c14.3994 -67.0996 26.3994 -129 68.1992 -175h-79.5996c-18.7002 0 -34 15.2002 -34 34v380c0 18.7002 15.2002 34 34 34h57.7002c-13.7998 -12.5996 -26.1006 -27.2002 -36.9004 -43.5996c-45.3994 -70 -27 -146.801 -9.39941 -229.4zM478 416
-c18.7998 0 34 -15.2002 34 -34v-380.1c0 -18.8008 -15.2998 -34 -34 -34h-52.0996c38.6992 38.3994 60.5996 92.0996 57.3994 163.6l-137.399 -29.5996c-1.7002 -32.5 -12.9004 -63.8008 -57.4004 -73.2002c-24.9004 -5.2998 -45.4004 0.599609 -58.2998 11.7002
-c-15.7998 13.5 -28.4004 31 -49.5 131.199c-21.4004 100.5 -17 121.601 -8.2002 140.301c7.2998 15.2998 23.7002 29.2998 48.2998 34.5996c44.7998 9.40039 67.7002 -14.9004 82.6006 -43.9004l137.1 29.3008c-13.5 34.5996 -31.2998 62.6992 -52.7002 84.0996h90.2002z
-" />
-    <glyph glyph-name="500px" unicode="&#xf26e;" 
-d="M103.3 103.7c-6.5 14.2002 -6.89941 18.2998 7.40039 23.0996c25.5996 8 8 -9.2002 43.2002 -49.2002h0.299805v93.9004c1.2002 50.2002 44 92.2002 97.7002 92.2002c53.8994 0 97.6992 -43.5 97.6992 -96.7998c0 -63.4004 -60.7998 -113.2 -128.5 -93.3008
-c-10.5 4.2002 -2.09961 31.7002 8.5 28.6006c53 0 89.4004 10.0996 89.4004 64.3994c0 61 -77.0996 89.6006 -116.9 44.6006c-23.5 -26.4004 -17.5996 -42.1006 -17.5996 -157.601c50.7002 -31 118.3 -22 160.4 20.1006c24.7998 24.7998 38.5 58 38.5 93
-c0 35.2002 -13.8008 68.2002 -38.8008 93.2998c-24.7998 24.7998 -57.7998 38.5 -93.2998 38.5s-68.7998 -13.7998 -93.5 -38.5c-0.299805 -0.299805 -16 -16.5 -21.2002 -23.9004l-0.5 -0.599609c-3.2998 -4.7002 -6.2998 -9.09961 -20.0996 -6.09961
-c-6.90039 1.69922 -14.2998 5.7998 -14.2998 11.7998v186.8c0 5 3.89941 10.5 10.5 10.5h241.3c8.2998 0 8.2998 -11.5996 8.2998 -15.0996c0 -3.90039 0 -15.1006 -8.2998 -15.1006h-223.2v-132.899h0.299805c104.2 109.8 282.801 36 282.801 -108.9
-c0 -178.1 -244.801 -220.3 -310.101 -62.7998zM166.6 364.5c3.80078 18.7998 145.101 50.7998 238.301 -38.2002c8.5 -7.5 -9.5 -22.7998 -14.3008 -22.7998c-6.59961 0 -84.5996 87.9004 -209.399 40.4004c-10 -3.90039 -15.1006 16.3994 -14.6006 20.5996zM393 33.2998
-c8.09961 8 27.5996 -12.5996 20.7002 -20.3994c-135.601 -135.601 -357.601 -52.1006 -381.601 121.3c-1.5 10.7002 28.9004 15.5 28.9004 3.2998c33 -165 222 -214.1 332 -104.2zM213.6 141.4c0 3.39941 2.30078 4.69922 20.4004 22.5996l-18.2002 18.2002
-c-5.59961 5.59961 7.40039 17.2998 12.4004 17.2998c3.09961 0 2.89941 -0.700195 21.5 -19.5l17.8994 17.9004c6.10059 6.09961 22.5 -8.90039 16.2002 -15.7002l-18.2002 -18.2002l17.3008 -17.2998c7.7998 -7.7998 -5.30078 -18.2002 -10.7002 -18.2002
-c-3.2002 0 -2.7002 0.200195 -22.2998 19.5c-19.7002 -19.7002 -18.5 -19.5 -22.3008 -19.5c-2.39941 0 -5.5 1.40039 -8.5 4.40039c-1.19922 1.19922 -5.5 4.5 -5.5 8.5z" />
-    <glyph glyph-name="amazon" unicode="&#xf270;" 
-d="M257.2 285.3c0 39.2998 5.2002 69.2002 -35.5 69.1006c0 0 -37.9004 0 -54.2002 -49.5l-73.5 6.7998c0 49.2998 46.7002 104.3 134.7 104.3c87.7998 0 112.3 -57 112.3 -82.2998v-147.101c0 -27.5 32.2998 -52.7998 32.2998 -52.7998l-56.7998 -56
-c-9.90039 9.2998 -38.7998 36.6006 -45.2998 46.7998c-45.2002 -70.7998 -183.5 -66.2998 -183.5 43.2002c0 102 120.8 115.7 169.5 117.5zM257.2 198.5v40.5996c-33.7002 -1.09961 -84.2002 -10.5996 -84.2002 -57.7998c0 -50.7998 84.2002 -62.7998 84.2002 17.2002z
-M393.2 35c-7.7002 -10 -70 -67 -174.5 -67s-184.5 71.5 -209 101c-6.7998 7.7002 1 11.2998 5.5 8.2998c73.2998 -44.5 187.8 -117.8 372.5 -30.2998c7.5 3.7002 13.2998 -2 5.5 -12zM433 32.7998c-6.5 -15.7998 -16 -26.7998 -21.2002 -31
-c-5.5 -4.5 -9.5 -2.7002 -6.5 3.7998s19.2998 46.5 12.7002 55c-6.5 8.30078 -37 4.30078 -48 3.2002c-10.7998 -1 -13 -2 -14 0.299805c-2.2998 5.7002 21.7002 15.5 37.5 17.5c15.7002 1.80078 41 0.800781 46 -5.69922c3.7002 -5.10059 0 -27.1006 -6.5 -43.1006z" />
-    <glyph glyph-name="houzz" unicode="&#xf27c;" 
-d="M275.9 117.3h-104.601v-149.3h-154.3v448h109.5v-104.5l305.1 -85.5996v-257.9h-155.699v149.3z" />
-    <glyph glyph-name="vimeo-v" unicode="&#xf27d;" 
-d="M447.8 294.4c-2 -43.6006 -32.3994 -103.301 -91.3994 -179.101c-60.9004 -79.2002 -112.4 -118.8 -154.601 -118.8c-26.0996 0 -48.2002 24.0996 -66.2998 72.2998c-35.2002 129.2 -50.2002 204.9 -79.2998 204.9c-3.40039 0 -15.1006 -7.10059 -35.2002 -21.1006
-l-21 27.2002c51.5996 45.2998 100.9 95.7002 131.8 98.5c34.9004 3.40039 56.2998 -20.5 64.4004 -71.5c28.7002 -181.5 41.3994 -208.899 93.5996 -126.7c18.7002 29.6006 28.7998 52.1006 30.2002 67.6006c4.7998 45.8994 -35.7998 42.7998 -63.2998 31
-c22 72.0996 64.0996 107.1 126.2 105.1c45.7998 -1.2002 67.5 -31.0996 64.8994 -89.3994z" />
-    <glyph glyph-name="black-tie" unicode="&#xf27e;" 
-d="M0 416h448v-448h-448v448zM316.5 90.7998l-64.5 184l64.4004 86.6006h-184.9l64.5 -86.6006l-64.5 -184l92.5 -88.7002z" />
-    <glyph glyph-name="fonticons" unicode="&#xf280;" 
-d="M0 416h448v-448h-448v448zM187 275.1c11.9004 0 16.5996 -4.2998 16.2998 -23l50.7002 6.10059c0 44.5996 -30.5996 52.7998 -64.7002 52.7998c-50.7998 0 -77.2998 -20.4004 -77.2998 -70v-21h-28v-37.4004h22.2002c2.89941 0 5.7998 0 5.7998 -2.2998v-111.399
-c0 -5.60059 -1.5 -7.30078 -6.7002 -7.90039l-21.2998 -2v-25.7002h130.7v25.1006l-43.5 4.09961c-5.2002 0.599609 -3.2002 1.5 -3.2002 7.2998v112.9h55.7002l11.0996 37.2998h-67.3994c-2.90039 0 0.599609 2 0.599609 4.40039v23.2998
-c0 17.5 0.599609 27.3994 19 27.3994zM261.3 33.2998h102.601v25.1006l-15.7002 2.59961c-5.5 0.900391 -2.90039 1.5 -2.90039 7.2998v151.7h-80.2002l-6.69922 -29.5l24.1992 -6.40039c3.80078 -1.19922 6.7002 -3.7998 6.7002 -7.89941v-107.9
-c0 -5.59961 -2.39941 -6.7002 -7.59961 -7.2998l-20.4004 -2.59961v-25.1006zM342.1 288.8l21.9004 24.2002l-3.5 9.59961h-27.7002l-15.5 28h-9.2998l-15.5 -28h-27.7002l-3.5 -9.59961l21.7998 -24.2002l-9 -33.2002l7.30078 -7.2998l31.1992 16.6006l31.2002 -16.6006
-l7.2998 7.2998z" />
-    <glyph glyph-name="reddit-alien" unicode="&#xf281;" horiz-adv-x="512" 
-d="M440.3 244.5c55.2998 0 73.7002 -74.0996 23.7998 -99.7002c2.2002 -7.89941 3.10059 -16.7002 3.10059 -25.0996c0 -83.7998 -94.4004 -151.7 -210.8 -151.7c-115.9 0 -210.301 67.9004 -210.301 151.7c0 8.39941 0.800781 16.7998 2.60059 24.7002
-c-50.9004 25.5 -32.7002 100.1 22.8994 100.1c15 0 28.7002 -6.2002 38.4004 -16.2998c35.7998 24.7002 83.4004 40.5996 136.3 42.7998l30.4004 137.6c1.2998 4.90039 6.09961 8.40039 11 7.10059l97.3994 -21.6006c6.60059 12.7002 19.9004 22 35.3008 22
-c22.0996 0 39.6992 -18.0996 39.6992 -39.6992c0 -21.6006 -17.6992 -39.7002 -39.6992 -39.7002c-21.6006 0 -39.2002 17.5996 -39.2002 39.2002l-88.2002 19.7998l-27.7002 -124.8c53.2998 -1.7002 101.4 -17.6006 137.101 -42.3008
-c9.69922 9.7002 22.8994 15.9004 37.8994 15.9004zM129.4 139.1c0 -21.5996 17.6992 -39.2998 39.6992 -39.1992c21.6006 0 39.2002 17.5996 39.2002 39.1992c0 22.1006 -17.5996 39.7002 -39.2002 39.7002c-22.0996 0 -39.6992 -17.7002 -39.6992 -39.7002zM343.7 45.5996
-c4 3.5 4 9.7002 -0.100586 13.7002c-3.5 3.5 -9.69922 3.5 -13.1992 0c-29 -29 -121.2 -28.5 -149 0c-3.5 3.5 -9.7002 3.5 -13.2002 0c-4 -4 -4 -10.2002 0 -13.7002c36.3994 -36.3994 139.1 -36.3994 175.5 0zM342.9 99.7998c22 0 39.5996 17.7002 39.6992 39.2002
-c0 22.0996 -17.6992 39.7002 -39.6992 39.7002c-21.6006 0 -39.2002 -17.7002 -39.2002 -39.7002c0 -21.5996 17.5996 -39.2002 39.2002 -39.2002z" />
-    <glyph glyph-name="edge" unicode="&#xf282;" horiz-adv-x="512" 
-d="M481.92 313.52c6.46973 -12.7793 22.4697 -41.6494 21.9697 -85.0791c-0.0917969 -43.7148 -23.6953 -81.8525 -58.9492 -102.44c-17.1387 -10.1797 -37.2617 -16.1211 -58.6104 -16.1797c-0.139648 0 -52.6504 -2.56055 -80.5098 16.8096
-c-5.85059 4.08008 -9.14062 8.94043 -9.14062 14c0 6.16016 4.82031 9 6.39062 11c9.7998 12.75 15.1094 28.1699 15.1094 38.5703c0 32.71 -11 59.2998 -33 83.0996c-1.16016 1.25 -42.9795 50.1807 -122.25 50.1807c-63.2393 0 -123.46 -32.6504 -149.46 -79.1406
-c24.04 111.98 123.58 195.66 242.44 195.66c96.3496 0 184.96 -46.1797 226.01 -126.48zM212.77 -27.6699c1.28027 -0.570312 29.0107 -20.5898 67.1309 -27.21c-7.89551 -0.759766 -15.5156 -1.3584 -23.6084 -1.3584c-99.3408 0 -185.118 58.5361 -224.692 142.969
-c-25.75 55.4697 -24.0801 105.96 -23 118.27c4.16992 34.2803 27.0801 59.7002 46.8408 74.7998c29.6299 22.6904 68.8193 35.6904 107.529 35.6904c7.0498 0 43.9199 -0.900391 77.6406 -18.5898c32.5596 -17.1006 47.3193 -37.5801 56.5596 -53.5107
-c1.84961 -3.23242 3.49902 -6.64551 4.88965 -10.1396c-4.21973 4.65039 -40.0596 44.2002 -99.0596 -1c-26.6719 -19.334 -46.8008 -46.8369 -56.9697 -78.9199c-14.1406 -40.4004 -12.8398 -88.5801 20.0996 -136c12.2471 -18.1914 27.9951 -33.3955 46.6396 -45z
-M463.49 70.6602c2.1748 -1.37305 3.60742 -3.80176 3.60742 -6.56152c0 -1.53418 -0.447266 -2.96484 -1.21777 -4.16895c-47.5703 -75.4297 -127.86 -108.87 -163 -108.87c-22.7002 0 -48.1299 6.95996 -71.7002 19.6104c-33 17.6699 -49.4893 38.7598 -56 47.6699
-c-46.3301 63.5303 -28.25 122.29 -13.3301 151.66c9.73145 19.1172 22.8193 35.9404 38.7607 50c-4.04688 -8.04102 -6.40625 -17.168 -6.52051 -26.75c0 -80.9404 79.8506 -144 171.521 -144c0.116211 0 0.310547 0.0693359 0.426758 0.0693359
-c24.3125 0 47.6045 4.40137 69.123 12.4502c6.98145 2.61816 13.8652 5.69824 20.4102 9.12012c1.11328 0.618164 2.41113 0.970703 3.77441 0.970703c1.52344 0 2.94531 -0.44043 4.14551 -1.2002z" />
-    <glyph glyph-name="codiepie" unicode="&#xf284;" horiz-adv-x="472" 
-d="M422.5 245.1c30.7002 0 33.5 -53.0996 -0.299805 -53.0996h-10.7998v-44.2998h-26.6006v97.3994h37.7002zM472 95.4004c-42.0996 -91.9004 -121.6 -151.4 -224 -151.4c-137 0 -248 111 -248 248s111 248 248 248c97.4004 0 172.8 -53.7002 218.2 -138.4l-186 -108.8z
-M433.5 82.9004l-60.2998 30.6992c-27.1006 -44.2998 -70.4004 -71.3994 -122.4 -71.3994c-82.5 0 -149.2 66.7002 -149.2 148.899c0 82.5 66.7002 149.2 149.2 149.2c48.4004 0 88.9004 -23.5 116.9 -63.3994l59.5 34.5996c-40.7002 62.5996 -104.7 100 -179.2 100
-c-121.2 0 -219.5 -98.2998 -219.5 -219.5s98.2998 -219.5 219.5 -219.5c78.5996 0 146.5 42.0996 185.5 110.4z" />
-    <glyph glyph-name="modx" unicode="&#xf285;" 
-d="M356 206.2l36.7002 -23.7002v-214.5l-133 83.7998zM440 373l-83.2002 -134.3l-153.5 96.5l23 37.7998h213.7zM351 230.2l-249.8 -57.7002l-46 29v214.5zM97 153.8l249.7 57.7002l-125 -200.5h-213.7z" />
-    <glyph glyph-name="fort-awesome" unicode="&#xf286;" horiz-adv-x="512" 
-d="M489.2 160.1c2.59961 0 4.59961 -2 4.5 -4.59961v-219.5h-182.9v96c0 72.5996 -109.7 72.5996 -109.7 0v-96h-182.899v219.5c0 2.59961 2 4.59961 4.59961 4.59961h27.4004c2.59961 0 4.59961 -2 4.59961 -4.59961v-32h36.6006v178.3
-c0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-32h36.2998v32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 6 8 4.60059 11.7002 4.60059v111.699
-c-5.40039 2.60059 -9.10059 8.30078 -9.10059 14.3008c0 20.7998 31.4004 20.6992 31.4004 0c0 -6 -3.7002 -11.7002 -9.09961 -14.3008v-4.89941c7.69922 1.7998 15.6992 2.89941 23.6992 2.89941c11.7002 0 22.9004 -4.2998 32.6006 -4.2998
-c8.89941 0 18.8994 4.2998 24 4.2998c2.59961 0 4.59961 -2 4.59961 -4.59961v-60c0 -6.90039 -23.0996 -8 -27.7002 -8c-10.5 0 -20.5 4.2998 -31.3994 4.2998c-8.60059 0 -17.4004 -1.39941 -25.7002 -3.39941v-38c3.7002 0 11.7002 1.39941 11.7002 -4.60059v-32h36.5996
-v32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-178.3h36.6006v32c0 2.59961 2 4.59961 4.59961 4.59961h27.4004z
-M201.1 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004c-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961zM347.5 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004
-c-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961z" />
-    <glyph glyph-name="usb" unicode="&#xf287;" horiz-adv-x="640" 
-d="M641.5 192c0 -3.09961 -1.7002 -6.09961 -4.5 -7.5l-89.0996 -53.5c-1.40039 -0.799805 -2.80078 -1.40039 -4.5 -1.40039c-1.40039 0 -3.10059 0.300781 -4.5 1.10059c-2.80078 1.7002 -4.5 4.5 -4.5 7.7998v35.5996h-238.7
-c25.2998 -39.5996 40.5 -106.899 69.5996 -106.899h26.7002v26.7998c0 5 3.90039 8.90039 8.90039 8.90039h89.0996c5 0 8.90039 -3.90039 8.90039 -8.90039v-89.0996c0 -5 -3.90039 -8.90039 -8.90039 -8.90039h-89.0996c-5 0 -8.90039 3.90039 -8.90039 8.90039v26.6992
-h-26.7002c-75.3994 0 -81.0996 142.5 -124.7 142.5h-100.3c-8.09961 -30.5996 -35.8994 -53.5 -69 -53.5c-39.2998 0.100586 -71.2998 32.1006 -71.2998 71.4004s32 71.2998 71.2998 71.2998c33.1006 0 61 -22.7998 69 -53.5c39.1006 0 43.9004 -9.5 74.6006 60.4004
-c40.0996 89.0996 58.0996 82.0996 108.899 82.0996c7.5 20.9004 27 35.6006 50.4004 35.6006c29.5 0 53.5 -23.9004 53.5 -53.5c0 -29.6006 -23.9004 -53.5 -53.5 -53.5c-23.4004 0 -42.9004 14.7998 -50.4004 35.5996h-29.7998
-c-29.0996 0 -44.2998 -67.4004 -69.5996 -106.9h310.1v35.6006c0 3.2998 1.7002 6.09961 4.5 7.7998s6.40039 1.40039 8.90039 -0.299805l89.0996 -53.5c2.7998 -1.10059 4.5 -4.10059 4.5 -7.2002z" />
-    <glyph glyph-name="product-hunt" unicode="&#xf288;" horiz-adv-x="512" 
-d="M326.3 229.2c0 -20.5 -16.7002 -37.2002 -37.2002 -37.2002h-70.2998v74.4004h70.2998c20.5 0 37.2002 -16.7002 37.2002 -37.2002zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM375.9 229.2
-c0 47.8994 -38.9004 86.7998 -86.8008 86.7998h-119.899v-248h49.5996v74.4004h70.2998c47.9004 0 86.8008 38.8994 86.8008 86.7998z" />
-    <glyph glyph-name="mixcloud" unicode="&#xf289;" horiz-adv-x="640" 
-d="M424.43 228.271c42.3623 -9.1377 74.4805 -47.0693 74.4805 -92.2002c0 -52.3311 -42.6406 -94.6934 -94.9688 -94.6934h-289.614c-62.5752 0 -113.243 50.668 -113.243 112.966c0 56.7598 42.085 103.554 96.6299 111.582
-c22.9814 67.5586 86.9395 114.074 159.205 114.074c87.2158 0 159.205 -66.7266 167.511 -151.729zM403.941 83.7412c29.0713 0 52.6064 23.5352 52.6064 52.3301c0 22.1494 -14.1211 40.9766 -33.502 48.4531c-1.38477 -8.58301 -3.59961 -17.166 -6.36914 -25.4727
-c-8.01367 -25.6484 -49.0898 -14.2266 -40.1465 13.29c4.15332 12.7373 6.36914 26.0264 6.36914 39.5938c0 69.2197 -56.4834 125.702 -125.979 125.702c-49.8379 0 -94.6934 -29.626 -114.628 -73.9258c19.3809 -4.98438 37.3779 -14.9512 52.0527 -29.3486
-c19.9531 -19.9531 -10.2168 -50.1436 -30.1797 -30.1807c-13.29 13.291 -31.0107 20.7666 -49.8379 20.7666c-39.04 0 -70.8809 -31.5645 -70.8809 -70.6045s31.8408 -70.6035 70.8809 -70.6035h289.614zM639.01 136.071c0 -44.0244 -12.7363 -86.3867 -37.1016 -122.657
-c-4.15332 -6.0918 -10.7979 -9.41406 -17.7197 -9.41406c-16.3174 0 -27.1279 18.8262 -17.4434 32.9492c19.3809 29.3486 29.9033 63.6816 29.9033 99.1221c0 35.4395 -10.5215 69.7725 -29.9033 98.8447c-15.6553 22.8311 19.3613 47.2402 35.1631 23.5342
-c24.3662 -35.9932 37.1016 -78.3564 37.1016 -122.379zM568.13 136.071c0 -31.5654 -9.13672 -62.0215 -26.8564 -88.3252c-4.15332 -6.09082 -10.7988 -9.13574 -17.7207 -9.13574c-17.2012 0 -27.0215 18.9785 -17.4424 32.9473
-c13.0127 19.1045 19.6572 41.2559 19.6572 64.5137c0 22.9805 -6.64453 45.4072 -19.6572 64.5117c-15.7617 22.9863 19.0078 47.0947 35.1631 23.5352c17.7188 -26.0264 26.8564 -56.4834 26.8564 -88.0469z" />
-    <glyph glyph-name="scribd" unicode="&#xf28a;" horiz-adv-x="384" 
-d="M42.2998 195.3c-16.0996 19 -24.7002 45.9004 -24.7998 79.9004c0 100.399 75.2002 153.1 167.2 153.1c98.5996 1.60059 156.8 -49 184.3 -70.5996l-50.5 -72.1006l-37.2998 24.6006l26.8994 38.5996c-36.5 24 -79.3994 36.5 -123 35.7998
-c-50.6992 0.800781 -111.699 -27.1992 -111.699 -76.1992c0 -18.7002 11.1992 -20.7002 28.5996 -15.6006c23.2998 5.2998 41.9004 -0.599609 55.7998 -14c26.4004 -24.2998 23.2002 -67.5996 -0.700195 -91.8994c-29.1992 -29.5 -85.1992 -27.3008 -114.8 8.39941z
-M360 189.4c33.9004 -40.4004 36.7998 -138.2 -20.2998 -189.601c-39.2002 -33.5996 -82.2002 -44.0996 -133.601 -44.0996c-70.2998 -0.299805 -138.199 25.3994 -190.699 72.2002l-15.4004 13.7998l60.7998 71.7998l35.6006 -27.4004l-33.7002 -39.3994
-c41.7002 -30.9004 92.2002 -47.5 144.1 -47.2998c61.9004 0 104.7 23.5 121.4 64.3994c0.899414 4.2002 1.39941 8.40039 1.39941 12.7002c0 18.7002 -11.1992 20.7002 -28.5996 15.5996c-23.2998 -5.2998 -42.2002 0.5 -56.2998 14.4004
-c-12.4004 11.2998 -19.1006 27.5 -18.4004 44.2998c-0.599609 39.2002 32.4004 69.2002 70.5 67.2002c24.2998 0.799805 47.7002 -9.7998 63.2002 -28.5996z" />
-    <glyph glyph-name="bluetooth" unicode="&#xf293;" 
-d="M292.6 276.9l-42.8994 -42.9004l-0.299805 86zM249.4 57.0996l0.199219 86l42.9004 -42.8994zM416 188.6c0 -205.6 -71.9004 -252.6 -185.1 -252.6c-113.2 0 -198.9 47 -198.9 252.6c0 205.601 83.4004 259.4 196.6 259.4c113.2 0 187.4 -53.9004 187.4 -259.4z
-M257.5 188.6l79.4004 88.6006l-125.101 134.3v-176.9l-73.7998 73.8008l-27 -26.9004l92.7002 -93l-92.7002 -93l26.9004 -26.9004l73.7998 73.8008l2.2998 -170l127.4 127.5z" />
-    <glyph glyph-name="bluetooth-b" unicode="&#xf294;" horiz-adv-x="320" 
-d="M196.48 187.977l97.9111 -103.333l-148.552 -148.644l-2.71484 198.284l-86.1113 -86.1113l-31.4053 31.4053l108.061 108.398l-108.061 108.399l31.4053 31.4053l86.1113 -86.1113v206.33l145.981 -156.69zM237.34 290.973l-50.3145 50.3174l0.337891 -100.295z
-M187.363 134.96l-0.337891 -100.294l50.3145 50.3164z" />
-    <glyph glyph-name="gitlab" unicode="&#xf296;" horiz-adv-x="512" 
-d="M105.2 423.1c0 0 56.5 -174.8 56.5996 -174.8h-132l56.5 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0zM0.900391 160.3l28.7998 88l226.2 -294l-247.9 184c-6.7998 5.10059 -9.7002 14 -7.09961 22zM161.7 248.3h188.6l-94.2998 -294zM511.1 160.3
-c2.5 -8 -0.299805 -16.8994 -7.19922 -22l-247.9 -184l226.3 294zM425.7 423.1l56.5 -174.8h-132l56.5996 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0z" />
-    <glyph glyph-name="wpbeginner" unicode="&#xf297;" horiz-adv-x="512" 
-d="M462.799 125.626c56.2109 -64.3076 4.16211 -157.626 -91.8545 -157.626c-39.6025 0 -78.8242 17.6865 -100.143 50.04c-6.88672 -0.356445 -22.7021 -0.356445 -29.5898 0c-21.3643 -32.4209 -60.624 -50.04 -100.143 -50.04
-c-95.4902 0 -148.349 92.9961 -91.8555 157.626c-79.1387 131.851 31.2646 290.374 206.792 290.374c175.632 0 285.87 -158.626 206.793 -290.374zM123.152 208.598h41.5283v58.0752h-41.5283v-58.0752zM340.332 122.526v23.8389
-c-60.5059 -20.915 -132.355 -9.19824 -187.589 33.9707l0.246094 -24.8965c51.1006 -46.3672 131.746 -57.875 187.343 -32.9131zM189.579 208.598h166.058v58.0752h-166.058v-58.0752z" />
-    <glyph glyph-name="wpforms" unicode="&#xf298;" 
-d="M448 372.8v-361.7c0 -24.2998 -19 -43.1992 -43.2002 -43.1992h-361.6c-23.9004 0.0996094 -43.2002 18.6992 -43.2002 43.2998v361.6c0 24.1006 18.7998 43.2002 43.2002 43.2002h361.7c24 0 43.0996 -18.7998 43.0996 -43.2002zM410.7 11.2002v361.6
-c0 3 -2.60059 5.7998 -5.7998 5.7998h-9.30078l-110.3 -74.5996l-61.2998 49.9004l-61.2002 -49.9004l-110.3 74.7002h-9.2998c-3.2002 0 -5.7998 -2.7998 -5.7998 -5.7998v-361.7c0 -3 2.59961 -5.7998 5.7998 -5.7998h361.7
-c3.19922 -0.100586 5.7998 2.69922 5.7998 5.7998zM150.2 262v-37h-73.5v37h73.5zM150.2 187.6v-37.2998h-73.5v37.2998h73.5zM161.3 334.9l54 43.6992h-118.5zM371.3 262v-37h-196v37h196zM371.3 187.6v-37.2998h-196v37.2998h196zM286.7 334.9l64.5 43.6992h-118.4z
-M371.3 113v-37.2998h-99.3994v37.2998h99.3994z" />
-    <glyph glyph-name="envira" unicode="&#xf299;" 
-d="M0 416c477.6 0 366.6 -317.3 367.1 -366.3l80.9004 -81.7002h-26l-70.4004 71.2002c-39 -4.2002 -124.399 -34.5 -214.399 37c-90.2002 71.5 -85.2002 157.1 -137.2 339.8zM79.7002 370c-49.7002 23.5 -5.2002 -9.2002 -5.2002 -9.2002
-c45.2002 -31.2002 66 -73.7002 90.2002 -119.899c31.5 -60.2002 79 -139.7 144.2 -167.7c65 -28 34.1992 -12.5 6 8.5c-28.2002 21.2002 -68.2002 87 -91 130.2c-31.7002 60 -61 118.6 -144.2 158.1z" />
-    <glyph glyph-name="glide" unicode="&#xf2a5;" 
-d="M252.8 299.4c0 -8.80078 -1.59961 -17.7002 -3.39941 -26.4004c-5.80078 -27.7998 -11.6006 -55.7998 -17.3008 -83.5996c-1.39941 -6.30078 -8.2998 -4.90039 -13.6992 -4.90039c-23.8008 0 -30.5 26 -30.5 45.5c0 29.2998 11.1992 68.0996 38.5 83.0996
-c4.2998 2.5 9.19922 4.2002 14.0996 4.2002c11.4004 0 12.2998 -8.2998 12.2998 -17.8994zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 181c0 5.09961 -20.7998 37.7002 -25.5 39.5
-c-2.2002 0.900391 -7.2002 2.2998 -9.59961 2.2998c-23.1006 0 -38.7002 -10.5 -58.2002 -21.5l-0.5 0.5c4.2998 29.4004 14.5996 57.2002 14.5996 87.4004c0 44.5996 -23.7998 62.7002 -67.5 62.7002c-71.7002 0 -108 -70.8008 -108 -123.5c0 -54.7002 32 -85 86.2998 -85
-c7.5 0 6.90039 0.599609 6.90039 -2.30078c-10.5 -80.2998 -56.5 -82.8994 -56.5 -58.8994c0 24.3994 28 36.5 28.2998 38c-0.200195 7.59961 -29.2998 17.2002 -36.7002 17.2002c-21.0996 0 -32.6992 -33 -32.6992 -50.6006c0 -32.2998 20.3994 -54.7002 53.2998 -54.7002
-c48.2002 0 83.3994 49.7002 94.2998 91.7002c9.40039 37.7002 7 39.4004 12.2998 42.1006c20 10.0996 35.7998 16.7998 58.4004 16.7998c11.0996 0 19 -2.2998 36.7002 -5.2002c1.7998 -0.0996094 4.09961 1.7002 4.09961 3.5z" />
-    <glyph glyph-name="glide-g" unicode="&#xf2a6;" 
-d="M407.1 236.8c7.5 -2.89941 40.9004 -55.3994 40.9004 -63.3994c0 -2.90039 -3.7998 -5.80078 -6.7002 -5.80078c-28.3994 4.7002 -41.0996 8.40039 -58.8994 8.40039c-36.3008 0 -61.6006 -10.7998 -93.8008 -27c-8.5 -4.2998 -4.59961 -7.09961 -19.6992 -67.5996
-c-17.4004 -67.6006 -74 -145.4 -151.4 -145.4c-52.7002 0 -85.5 36 -85.5 87.9004c0 28.0996 18.5 79.1992 52.4004 79.2998c11.8994 0 58.5996 -15.4004 58.8994 -27.6006c-0.5 -2.39941 -45.5 -21.7998 -45.5 -61c0 -38.5 73.9004 -34.2998 90.7998 94.6006
-c0 4.7998 1 3.7998 -11 3.7998c-87.2998 0 -138.6 48.7002 -138.6 136.6c0 84.7002 58.2998 198.4 173.4 198.4c70.1992 0 108.399 -29.0996 108.399 -100.6c0 -48.5 -16.5 -93.1006 -23.5 -140.4l0.900391 -0.900391c31.2998 17.7002 56.3994 34.5 93.5 34.5
-c3.7998 0 11.8994 -2.39941 15.3994 -3.7998zM231.8 321.2c2.90039 13.8994 5.5 28.0996 5.60059 42.3994c0 15.4004 -1.40039 28.7002 -20 28.7002c-7.80078 0 -15.6006 -2.59961 -22.6006 -6.7002c-43.7998 -24.0996 -61.7998 -86.3994 -61.7998 -133.399
-c0 -31.2998 10.7002 -73.1006 49 -73.1006c8.7002 0 19.7002 -2.39941 22 7.80078c9.2002 44.6992 18.5 89.5996 27.7998 134.3z" />
-    <glyph glyph-name="viadeo" unicode="&#xf2a9;" 
-d="M276.2 297.5v-0.700195c-17.9004 52.6006 -42.6006 103.4 -70.7998 151.2c43.2998 -29.2002 67 -100 70.7998 -150.5zM308.9 175.8c15.0996 3.10059 29.5 9 42.1992 17c24.5 -58.5996 20.2002 -139.7 -36.3994 -201c-67.7998 -73.8994 -191.9 -74.5996 -259.8 0
-c-108.801 117.8 -31.6006 313.7 129.899 313.7c21.2998 0 42.6006 -3.5 62.5 -10.7002c-6.89941 -13.3994 -11.7002 -28.2002 -13.3994 -43.2998c-15.4004 6.5 -32.3008 9.59961 -49.1006 9.59961c-78 0 -135.399 -66.6992 -135.399 -142.3
-c0 -68.7998 45.5996 -126 111.3 -137.399c98.5 38.3994 116.6 188.199 116.6 280c0 11.6992 0 23.6992 -1 35.3994c12.4004 -36.0996 18.9004 -73.8994 18.9004 -112c0 -86.5 -35.1006 -158.399 -109.3 -205.1l-3.80078 -0.299805
-c80 -1.60059 137.801 61.6992 137.801 139.399c0 19.5 -3.40039 38.7998 -11 57zM418.1 436.3c52 -74 20.9004 -208.6 -58.0996 -208.6c-21.2998 0 -40.2002 11.3994 -55 25.7998c35.0996 19.2998 79.4004 49.2002 99.7002 84.9004
-c2.39941 4.7998 6.5 13.6992 7.2002 19.1992c-19.9004 -44.6992 -70.8008 -79.6992 -118.2 -90.6992c-7.5 11.6992 -12 24.6992 -12 38.7998c0 16.5 8.2002 38.5 20.5996 50.5c34.5 32.8994 84.7998 13.5996 115.8 80.0996z" />
-    <glyph glyph-name="viadeo-square" unicode="&#xf2aa;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM280.7 66.7998c35.3994 38.2998 38.0996 89 22.7998 125.601c-7.90039 -4.90039 -16.9004 -8.60059 -26.4004 -10.5
-c4.80078 -11.4004 6.90039 -23.5 6.90039 -35.7002c0 -48.6006 -36.2002 -88.2002 -86.2002 -87.2002l2.40039 0.200195c46.3994 29.2002 68.2998 74.0996 68.2998 128.2c0 23.7998 -4.09961 47.5 -11.7998 70v0.399414c-2.2998 31.6006 -17.1006 75.7998 -44.2002 94.1006
-c17.5996 -29.9004 33 -61.6006 44.2002 -94.5c0.599609 -7.30078 0.599609 -14.8008 0.599609 -22.1006c0 -57.3994 -11.3994 -151 -72.8994 -175c-41 7.2002 -69.5 42.9004 -69.5 85.9004c0 47.2002 35.7998 88.8994 84.5996 88.8994c10.5 0 21 -1.89941 30.7002 -6
-c1.09961 9.5 4.09961 18.7002 8.39941 27.1006c-12.5 4.59961 -25.7998 6.7002 -39.0996 6.7002c-101 0 -149.2 -122.5 -81.2002 -196.101c42.4004 -46.5996 120 -46.2002 162.4 0zM309 214.3c49.4004 0 68.7998 84.1006 36.2998 130.3
-c-19.3994 -41.5 -50.7998 -29.5 -72.3994 -50c-7.7002 -7.5 -12.9004 -21.2998 -12.9004 -31.5996c0 -8.7998 2.7998 -17 7.5 -24.2998c29.7002 6.89941 61.4004 28.7998 73.9004 56.7002c-0.400391 -3.40039 -3 -9 -4.5 -12c-12.7002 -22.3008 -40.4004 -41 -62.3008 -53
-c9.30078 -9 21.1006 -16.1006 34.4004 -16.1006z" />
-    <glyph glyph-name="snapchat" unicode="&#xf2ab;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM417.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996
-c-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996
-c-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996
-c-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941
-c-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5
-c-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16
-c0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002
-c13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z" />
-    <glyph glyph-name="snapchat-ghost" unicode="&#xf2ac;" horiz-adv-x="512" 
-d="M510.846 55.3271c-5.21094 -12.1572 -27.2383 -21.0889 -67.3594 -27.3184c-2.06445 -2.78613 -3.77539 -14.6855 -6.50781 -23.9561c-1.625 -5.56543 -5.62207 -8.86914 -12.1279 -8.86914l-0.296875 0.00585938c-9.39453 0 -19.2031 4.32227 -38.8516 4.32227
-c-26.5215 0 -35.6621 -6.04297 -56.2539 -20.5879c-21.832 -15.4375 -42.7715 -28.7637 -74.0273 -27.3984c-31.6455 -2.33398 -58.0244 16.9072 -72.8711 27.4033c-20.7139 14.6436 -29.8281 20.582 -56.2412 20.582c-18.8633 0 -30.7354 -4.71973 -38.8516 -4.71973
-c-8.07324 0 -11.2129 4.92188 -12.4219 9.04004c-2.70312 9.18848 -4.4043 21.2627 -6.52344 24.1299c-20.6787 3.20898 -67.3096 11.3438 -68.498 32.1504c-0.0107422 0.196289 -0.015625 0.393555 -0.015625 0.591797c0 5.27148 3.85645 9.64355 8.89258 10.4766
-c69.583 11.4551 100.925 82.9014 102.228 85.9346c0.0742188 0.175781 0.155273 0.34375 0.237305 0.514648c3.71289 7.53711 4.54395 13.8486 2.46289 18.7529c-5.05078 11.8965 -26.8721 16.1641 -36.0537 19.7959c-23.7148 9.36621 -27.0146 20.1279 -25.6113 27.5039
-c2.43652 12.8359 21.7246 20.7354 33.002 15.4531c8.91895 -4.18066 16.8428 -6.29688 23.5469 -6.29688c5.02148 0 8.21191 1.2041 9.95996 2.1709c-2.04297 35.9365 -7.10156 87.29 5.68652 115.969c33.7734 75.7188 105.356 81.6025 126.478 81.6025
-c0.943359 0 9.14062 0.0888672 10.1094 0.0888672c52.1484 0 102.255 -26.7803 126.724 -81.6426c12.7764 -28.6504 7.74902 -79.792 5.69434 -116.01c1.58203 -0.87207 4.35742 -1.94141 8.59961 -2.13867c6.39648 0.286133 13.8145 2.38867 22.0693 6.25684
-c6.08496 2.84668 14.4053 2.46094 20.4795 -0.0576172l0.0292969 -0.00976562c9.47559 -3.38574 15.4385 -10.2158 15.5889 -17.8701c0.183594 -9.74707 -8.52246 -18.165 -25.8779 -25.0186c-2.11816 -0.834961 -4.69434 -1.6543 -7.43457 -2.52441
-c-9.79688 -3.10645 -24.5996 -7.80566 -28.6152 -17.2715c-2.0791 -4.9043 -1.25684 -11.2109 2.45996 -18.748c0.0869141 -0.167969 0.166016 -0.341797 0.238281 -0.514648c1.30176 -3.03027 32.6152 -74.46 102.23 -85.9346
-c6.42676 -1.05762 11.1631 -7.87695 7.72461 -15.8584z" />
-    <glyph glyph-name="snapchat-square" unicode="&#xf2ad;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM393.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996
-c-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996
-c-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996
-c-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941
-c-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5
-c-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16
-c0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002
-c13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z" />
-    <glyph glyph-name="pied-piper" unicode="&#xf2ae;" horiz-adv-x="480" 
-d="M455.93 424.8c9.41992 2.40039 15.0703 -10.25 6.99023 -15.6797c-98.2295 -65.9199 -120.439 -127.561 -126.229 -160.18c-33.5205 -188.881 -101.37 -119.32 -184.311 -226.65c25.7607 -14.8125 55.8076 -23.3984 87.6299 -23.4004
-c97.6504 0 177.09 79.4502 177.09 177.11c-0.00488281 45.0508 -16.9824 86.25 -44.8496 117.41c4.72754 9.75293 10.4238 18.9131 17 27.3994c36.3574 -37.3457 58.75 -88.3779 58.75 -144.564v-0.245117c0 -114.87 -93.1299 -208 -208 -208s-208 93.1201 -208 208
-s93.1299 208 208 208c36.7422 -0.000976562 71.4697 -9.77246 101.35 -26.6602c46.4404 38.9697 87.8809 60.6602 114.58 67.46zM125 41.5996c64.7695 140.881 125.64 231.641 191.63 293.75c-23.0674 11.3037 -49.1611 17.75 -76.5615 17.75h-0.0683594
-c-97.6504 0 -177.1 -79.4395 -177.1 -177.1c0.0234375 -53.8203 24.0684 -102.002 62.0996 -134.4z" />
-    <glyph glyph-name="first-order" unicode="&#xf2b0;" 
-d="M12.9004 218.8c0.0996094 0.100586 0.199219 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.100586 -0.400391h-0.199219zM224 351.4c7.40039 0 14.5996 -0.5 21.7002 -1.7002l-4 -67.7002l22.2998 64.2998c14.2998 -3.7998 27.7002 -9.5 40 -16.8994
-l-29.4004 -61.1006l45.1006 50.9004c11.5 -8.90039 21.7002 -19.2002 30.5996 -30.9004l-50.5996 -45.3994l60.8994 29.6992c7.5 -12.2998 12.9004 -26 16.6006 -40.2998l-64 -22.2998l67.7002 4c1.09961 -7.09961 1.39941 -14.5996 1.39941 -22
-s-0.299805 -14.5996 -1.39941 -21.7002l-67.4004 4l64 -22.2998c-3.7002 -14.5996 -9.5 -28 -16.5996 -40.2998l-61.1006 29.3994l50.6006 -45.0996c-8.60059 -11.7998 -18.9004 -22 -30.6006 -30.9004l-44.8994 50.9004l29.3994 -61.2998
-c-12.2998 -7.5 -25.7002 -12.9004 -40 -16.9004l-22.5996 65.1006l4 -68.6006c-7.10059 -1.09961 -14.2998 -1.7002 -21.7002 -1.7002c-7.09961 0 -14.5996 0.600586 -21.7002 1.7002l4 68l-22.2998 -64.5996c-14.2998 3.7998 -27.7002 9.5 -40 16.8994l29.5 61.4004
-l-44.9004 -50.9004c-11.7998 8.60059 -22 19.2002 -30.8994 30.9004l50.8994 45.0996l-61.0996 -29.6992c-7.2002 12.5996 -12.9004 26 -16.5996 40.2998l64 22.5996l-67.7002 -4c-0.799805 7.10059 -1.40039 14.2998 -1.40039 21.7002s0.5 14.9004 1.40039 22l68 -4
-l-64.2998 22.5996c3.69922 14.3008 9.5 27.7002 16.5996 40l61.0996 -29.6992l-50.5996 45.3994c8.90039 11.7998 19.2002 22 30.5996 30.9004l45.1006 -50.9004l-29.4004 61.4004c12.2998 7.2002 25.7002 12.8994 40 16.5996l22 -64l-3.7002 67.4004
-c6.80078 1.09961 14.3008 1.7002 21.4004 1.7002zM443.4 320v-256l-219.4 -128l-219.4 128v256l219.4 128zM426.3 309.7l-202.3 117.399l-202.3 -117.399v-235.101l202.3 -117.699l202.3 117.699v235.101zM224 410.9l187.7 -109.4v-218.9l-187.7 -109.5l-187.7 109.5
-v218.801zM224 360c-92.2998 0 -166.9 -75.0996 -166.9 -168c0 -92.5996 74.6006 -167.7 166.9 -167.7c92 0 166.9 75.1006 166.9 167.7c0 92.9004 -74.9004 168 -166.9 168z" />
-    <glyph glyph-name="yoast" unicode="&#xf2b1;" 
-d="M91.2998 372h186l-7 -18.9004h-179c-39.7002 0 -71.8994 -31.5996 -71.8994 -70.2998v-205.399c0 -35.4004 24.8994 -70.3008 84 -70.3008v-19.0996h-12.1006c-50.0996 0 -91.2998 40.2002 -91.2998 89.5v205.3c0 49.2998 40.7002 89.2002 91.2998 89.2002zM320.4 428
-h66.5c-143.801 -378.1 -145.7 -398.9 -184.7 -439.3c-20.7998 -21.6006 -49.2998 -31.7002 -78.2998 -32.7002v51.0996c49.1992 7.7002 64.5996 49.9004 64.5996 75.3008c0 20.0996 0.599609 12.5996 -82.0996 223.199h61.3994l50.4004 -156.6zM448 286.5v-298.5h-214
-c6.59961 9.59961 10.7002 16.2998 12.0996 19.4004h182.5v279.1c0 32.5 -17.0996 51.9004 -48.1992 62.9004l6.69922 17.5996c41.7002 -13.5996 60.9004 -43.0996 60.9004 -80.5z" />
-    <glyph glyph-name="themeisle" unicode="&#xf2b2;" horiz-adv-x="512" 
-d="M208 359.714c0 10 6.28613 21.7139 17.7148 21.7139c11.1426 0 17.7139 -11.7139 17.7139 -21.7139c0 -10.2852 -6.57129 -21.7139 -17.7139 -21.7139c-11.4287 0 -17.7148 11.4287 -17.7148 21.7139zM512 199.714c0 -36.001 -11.4287 -102.286 -36.2861 -129.714
-c-22.8574 -24.8584 -87.4277 -61.1426 -120.856 -70.5723l-1.14355 -0.286133v-32.5703c0 -16.2861 -12.5723 -30.5713 -29.1426 -30.5713c-10 0 -19.4297 5.71387 -24.5723 14.2861c-5.42676 -8.57227 -14.8564 -14.2861 -24.8564 -14.2861
-s-19.4287 5.71387 -24.8574 14.2861c-5.14258 -8.57227 -14.5713 -14.2861 -24.5703 -14.2861c-10.2861 0 -19.4287 5.71387 -24.8574 14.2861c-5.14355 -8.57227 -14.5713 -14.2861 -24.5713 -14.2861c-18.8574 0 -29.4287 15.7139 -29.4287 32.8574
-c-16.2861 -12.2852 -35.7158 -19.4287 -56.5713 -19.4287c-22 0 -43.4287 8.28516 -60.2861 22.8574c10.2852 0.286133 20.5713 2.28613 30.2852 5.71387c-20.8574 5.71387 -39.4277 18.8574 -52 36.2861c21.3701 -4.64551 46.209 -1.67285 67.1426 11.1426
-c-22 22 -56.5703 58.8574 -68.5713 87.4287c-5.71387 13.4287 -6.85645 31.4287 -6.85645 45.7139c0 49.7139 20.2861 160 86.2861 160c10.5713 0 18.8564 -4.8584 23.1426 -14.8574c3.7041 5.41992 7.6709 10.5186 12 15.4277c2 2.57227 5.71387 5.42969 7.14355 8.28613
-c7.99902 12.5713 11.7139 21.1426 21.7139 34c32.2852 41.1445 81.7139 69.4297 134.856 69.4297c6 0 12 -0.285156 17.7148 -1.14355c10.8564 11.7148 26 18.2861 41.7148 18.2861c14.5703 0 29.7139 -6 40 -16.2861c0.856445 -0.857422 1.42773 -2.28613 1.42773 -3.42773
-c0 -3.71387 -10.2852 -13.4287 -12.8574 -16.2861c4.28613 -1.42871 15.7148 -6.8584 15.7148 -12c0 -2.85742 -2.85742 -5.14258 -4.57129 -7.14258c31.4287 -27.7148 49.4287 -67.1436 56.2861 -108c4.28613 5.14258 10.2852 8.57129 17.1426 8.57129
-c10.5713 0 20.8574 -7.14355 28.5713 -14.001c20.8564 -18.5703 25.7139 -53.1416 25.7139 -79.7139zM188 358.572c0 -18.2861 12.5713 -37.1436 32.2861 -37.1436c19.7139 0 32.2852 18.8574 32.2852 37.1436c0 18 -12.5713 36.8564 -32.2852 36.8564
-c-19.7148 0 -32.2861 -18.8574 -32.2861 -36.8564zM237.714 254c0 19.7139 3.71387 39.1426 8.57129 58.2861c-52.0391 -79.5342 -13.5312 -184.571 68.8574 -184.571c21.4287 0 42.5713 7.71387 60 20c2 7.42871 3.71484 14.8574 3.71484 22.5723
-c0 14.2861 -6.28613 21.4277 -20.5723 21.4277c-4.57129 0 -9.14355 -0.856445 -13.4287 -1.71387c-63.3438 -12.668 -107.143 -3.66895 -107.143 63.999zM196.572 -0.858398c0 11.1436 -8.8584 20.8574 -20.2861 20.8574c-11.4287 0 -20 -9.71484 -20 -20.8574v-32.5703
-c0 -11.1436 8.57129 -21.1426 20 -21.1426c11.4277 0 20.2861 9.71484 20.2861 21.1426v32.5703zM245.715 -0.858398c0 11.1436 -8.57227 20.8574 -20 20.8574c-11.4287 0 -20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426
-c11.4277 0 20 10 20 21.1426v32.5703zM295.428 -0.858398c0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2852 -9.71484 -20.2852 -20.8574v-32.5703c0 -11.1436 8.85645 -21.1426 20.2852 -21.1426s20.2852 9.71484 20.2852 21.1426v32.5703zM345.143 -0.858398
-c0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426s20.2852 10 20.2852 21.1426v32.5703zM421.714 162c-30.8564 -59.1416 -90.2852 -102.572 -158.571 -102.572
-c-96.5703 0 -160.57 84.5723 -160.57 176.572c0 16.8574 2 33.4287 6 49.7139c-20 -33.7148 -29.7139 -72.5723 -29.7139 -111.429c0 -60.2861 24.8564 -121.715 71.4287 -160.857c5.14258 9.71387 14.8564 16.2861 26 16.2861c10 0 19.4277 -5.71387 24.5713 -14.2861
-c5.42871 8.57129 14.5703 14.2861 24.8574 14.2861c10 0 19.4277 -5.71387 24.5713 -14.2861c5.42871 8.57129 14.8564 14.2861 24.8574 14.2861c10 0 19.4287 -5.71387 24.8574 -14.2861c5.14258 8.57129 14.5713 14.2861 24.5723 14.2861
-c10.8564 0 20.8564 -6.57227 25.7139 -16c43.4268 36.2861 68.5693 92 71.4258 148.286zM432.286 261.714c0 53.7139 -34.5713 105.714 -92.5723 105.714c-30.2852 0 -58.5713 -15.1426 -78.8564 -36.8564c-19.9951 -66.3828 -27.4473 -136.571 41.4287 -136.571
-c28.8047 0 97.3564 28.5381 84.2861 -36.8574c28.8564 26 45.7139 65.7148 45.7139 104.571z" />
-    <glyph glyph-name="google-plus" unicode="&#xf2b3;" horiz-adv-x="512" 
-d="M256 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM185.3 68c71.2998 0 118.8 50.4004 118.8 121.2c0.000976562 0.140625 0.00195312 0.182617 0.00195312 0.323242c0 6.96289 -0.65332 13.7744 -1.90137 20.377
-h-116.9v-42.6006h70.1006c-5.2002 -34.2002 -37.5 -53.2998 -70.1006 -53.2998c-43 0 -77.2002 35.5 -77.2002 78.0996c0 42.6006 34.3008 78.1006 77.2002 78.1006c18.1006 0 36.2002 -6.2002 49.4004 -19.1006l33.5996 32.6006
-c-22.8994 21.2998 -51.7002 32.2998 -83 32.2998c-68.4375 0 -124 -55.5625 -124 -124s55.5625 -124 124 -124zM415.5 174.2h35.2002v35.5h-35.2002v35.5h-35.5v-35.5h-35.5v-35.5h35.5v-35.5h35.5v35.5z" />
-    <glyph glyph-name="font-awesome" unicode="&#xf2b4;" 
-d="M397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM352.4 131.7h0.0996094v140.3
-c0 4.2002 -4.2002 7.7998 -9 7.7998c-6 0 -31.0996 -16.0996 -53.7998 -16.0996c-4.7002 0 -8.90039 0.599609 -13.1006 2.39941c-20.2998 7.7002 -38.1992 13.7002 -60.8994 13.7002c-20.9004 0 -43 -6.5 -61.5 -14.2998
-c-1.7998 -1.2002 -3.60059 -1.7998 -5.40039 -2.40039v18.5c8.2998 6 13.1006 15.5 13.1006 26.3008c0 18.5996 -15 33.5 -33.5 33.5c-18.6006 0 -33.5 -15 -33.5 -33.5c0 -10.8008 5.2998 -20.3008 13.0996 -26.3008v-218.6c0 -11.2998 9 -20.2998 20.2998 -20.2998
-c8.90039 0 16.7002 5.89941 19.1006 14.2998v1.2002c0.599609 1.2002 0.599609 3 0.599609 4.7998v45.4004c1.2002 0.599609 2.40039 0.599609 3.59961 1.19922c19.7002 8.90039 44.2002 17.3008 67.5 17.3008c32.3008 0 44.8008 -16.7002 71.7002 -16.7002
-c19.2002 0 37.1006 6.5 53.7998 13.7002c4.2002 1.7998 7.80078 3.59961 7.80078 7.7998z" />
-    <glyph glyph-name="linode" unicode="&#xf2b8;" 
-d="M437.4 221.7c0.599609 -2 -8.80078 -66.2998 -9.7002 -72.7998c0 -0.900391 -0.5 -1.7002 -1.10059 -2l-54.5996 -43.7002c-1.09961 -0.900391 -2.59961 -0.900391 -3.7002 0l-20.2998 14l-2.2998 -33.4004c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998
-l-66.8994 -53.4004c-1.10059 -0.899414 -2.90039 -0.899414 -4 0l-28 23.7002l2 -46c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998l-83.6992 -66.9004c-0.600586 -0.299805 -1.10059 -0.599609 -1.7002 -0.599609c-0.900391 0.299805 -1.7002 0.299805 -2.2998 0.900391
-l-65.1006 69.0996c-1.5 1.40039 -15.5 72 -16.8994 79.0996c-0.300781 1.10059 0.5 2.5 1.39941 3.10059l17.4004 10.5996c-3.40039 3.2002 -26.5 23.4004 -27.1006 26.2998l-20.5996 100.301c-0.299805 1.09961 0.299805 2.5 1.7002 3.39941l26.8994 12.9004
-c-4.59961 3.5 -37.6992 27.5 -38.5996 30.8994l-27.4004 133.101c-0.299805 1.7002 0.600586 3.09961 2 3.7002l123.7 38.5996c0.600586 0 1.40039 0 2.2998 -0.299805l90.6006 -43.7002c0.799805 -0.599609 1.7002 -1.7002 1.7002 -2.59961l5.69922 -132.301
-c0 -1.19922 -0.599609 -2.2998 -1.69922 -2.89941l-33.7002 -17.4004l36 -24.2998c0.799805 -0.299805 1.39941 -1.40039 1.39941 -2.2998l1.40039 -35.1006l34.5996 21.2002c0.800781 0.600586 2.2002 0.600586 3.10059 0l24 -16l0.899414 31.4004
-c0 0.899414 0.5 2 1.40039 2.59961l58.9004 36c1.09961 0.600586 2.19922 0.600586 3.09961 0l70 -38.5996c0.5 -0.600586 1.09961 -1.10059 1.40039 -2zM232.6 216.9l-100.6 -57.2002l14 -96.6006l90.5996 61.2002zM224.9 396.9l-120.9 -46.6006l19.7002 -134.8
-l106.6 55.4004zM44 274.9l73.0996 -57.2002l-19.3994 132.899l-79.7002 49.4004zM74.5996 127.1l64.8008 -60.7998l-13.7002 93.4004l-70 58.2998zM98.9004 9.40039l57.6992 -61.2002l-9.69922 67.3994l-61.7002 60.9004zM163.4 -55.0996l78.1992 62.2998l-3.09961 70
-l-85.7002 -61.4004zM245.4 60l27.0996 -22.9004l-0.599609 68.3008l-29.4004 22.5996c0 -2.2998 1.2002 -6.2998 -1.09961 -8l-22.3008 -14.9004l24.3008 -20c2.89941 -2.19922 2 -21.6992 2 -25.0996zM339.7 85.4004l4.2002 66.8994l-65.7002 -46.8994l0.599609 -68.6006z
-M367.4 111.1l5.7998 66.6006l-64.6006 40.5996l-0.599609 -30l41.2002 -27.2002c0.799805 -0.599609 1.39941 -1.69922 1.09961 -2.59961l-2 -34zM422 150.9l8.5 63.3994l-51.0996 -36.5996l-5.7002 -65.1006z" />
-    <glyph glyph-name="quora" unicode="&#xf2c4;" 
-d="M440.5 61.2998c1.7998 -18 -7.2002 -93.2998 -89 -93.2998c-49.5 0 -75.5 28.7002 -95.2002 62.2998c-117.7 -32.5996 -249 54.9004 -249 189c0 117 98 196.7 197.7 196.7c101.8 0 198.5 -79.2002 198.4 -196.7c0 -65.5 -30.5 -118.8 -74.7002 -153
-c14.2002 -21.5996 29 -35.7998 49.5 -35.7998c22.5 0 31.5 17.2998 33 30.7998h29.2998zM297 118.8c11.2998 24.9004 16.7998 58.7002 16.7002 100.5c0 104.2 -32.5 157.7 -108.7 157.7c-75 0 -107.5 -53.5 -107.5 -157.9c0 -103.699 32.5 -156.699 107.5 -156.699
-c12 0 22.7002 1.19922 32.7002 4.19922c-15.5 30.5 -33.7002 61.3008 -69.2002 61.3008c-6.7998 0 -13.5996 -1 -19.7998 -4l-12.2002 24.2998c14.7002 12.7998 38.5 22.7998 69 22.7998c47.7998 0 72 -23 91.5 -52.2002z" />
-    <glyph glyph-name="free-code-camp" unicode="&#xf2c5;" horiz-adv-x="576" 
-d="M97.2197 351.79c-43.2197 -41.6201 -64.9697 -92.5898 -64.8193 -154.021c0.15918 -68 23.0293 -122.67 67.4795 -165c9.33984 -8.34961 13.2002 -14.9199 13.2002 -20.5498c0 -2.75 -1.90039 -5.62012 -3.81055 -8.37988
-c-2.19141 -2.1543 -5.12598 -3.56836 -8.36914 -3.83984c-10.2803 0 -24.6807 12.1396 -43.4707 35.79c-36.5898 44.8701 -53.1992 94.3398 -54.0596 161.87s20.3096 113.34 61.79 160.6c14.9199 16.9004 27.3594 25.6904 35.8398 25.6904
-c3.12402 -0.0712891 6.03027 -1.11914 8.38965 -2.83984c1.91016 -1.91016 3.83008 -4.66016 3.83008 -7.41992c0 -4.78027 -5.63965 -11.25 -16 -21.9004zM239.47 27.9297c0.580078 -0.370117 0.910156 -0.549805 0.910156 -0.549805zM333.26 27.3799l0.169922 0.129883
-c-0.189453 -0.129883 -0.259766 -0.179688 -0.169922 -0.129883zM336.39 185.56c16.2305 -4.14941 24.04 24.04 30.0303 30.0508c84.71 -110.101 -27.5098 -184.45 -33 -188.101c3.86035 3.04004 44.3301 49.7705 21.5801 76.5498
-c-1 1.03027 -67.2998 -20.0596 -54.8398 53.54c8.30957 48.6807 -7.60059 71.1309 -7.60059 71.1309c-17.9697 -37.29 -32.5 -53.8604 -43.5 -72.1602c-56.9492 -92.9404 -16.2793 -124.29 -9.5498 -128.641c-10.54 6.5 -108.27 70.8799 -34 175.23
-c78.3701 110.189 62.8301 159.57 62.8301 159.57c118.46 -94.2803 51.8105 -173.021 68.0498 -177.171zM510.88 358.31c41.4404 -47.3096 62.6699 -93.1592 61.75 -160.649s-17.4697 -117.021 -54.0596 -161.87c-18.79 -23.6602 -33.1904 -35.79 -43.4707 -35.79
-c-3.24219 0.279297 -6.17676 1.69629 -8.36914 3.84961c-1.91016 2.76074 -3.81055 5.63086 -3.81055 8.38086c0.0205078 5.62988 3.86035 12.1992 13.2002 20.5498c44.4795 42.3701 67.3203 97 67.4795 165c0.180664 61.4697 -21.5898 112.45 -64.8193 154.06
-c-10.4004 10.6406 -16 17.1201 -16 21.9004c0 2.75977 1.91992 5.50977 3.83008 7.41992c2.35938 1.7207 5.26562 2.76855 8.38965 2.83984c8.51953 0 21 -8.79004 35.8799 -25.6904z" />
-    <glyph glyph-name="telegram" unicode="&#xf2c6;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.8 270.1c3.60059 16.8008 -6.09961 23.5 -17.2002 19.5l-239.1 -92.1992c-16.4004 -6.40039 -16.0996 -15.5 -2.7998 -19.7002l61.2002 -19.1006l142 89.4004
-c6.59961 4.40039 12.6992 1.90039 7.69922 -2.5l-114.899 -103.8l-4.40039 -63.1006c6.40039 0 9.2002 2.80078 12.5 6.10059l29.9004 28.7998l62 -45.7002c11.2998 -6.39941 19.3994 -3.09961 22.3994 10.5z" />
-    <glyph glyph-name="bandcamp" unicode="&#xf2d5;" horiz-adv-x="512" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM304.2 113.9l84.7002 156.1h-181l-84.7002 -156.1h181z" />
-    <glyph glyph-name="grav" unicode="&#xf2d6;" horiz-adv-x="512" 
-d="M301.1 236c4.40039 -4.40039 4.40039 -11.9004 0 -16.2998l-9.69922 -9.7002c-4.40039 -4.7002 -11.9004 -4.7002 -16.6006 0l-10.5 10.5c-4.39941 4.7002 -4.39941 11.9004 0 16.5996l9.7002 9.7002c4.40039 4.40039 11.9004 4.40039 16.5996 0zM270.9 255.7
-c-2.7002 -2.7998 -7.40039 -2.7998 -10.5 0c-2.80078 3 -2.80078 7.7002 0 10.5c3 3 7.69922 3 10.5 0c3 -2.7002 3 -7.5 0 -10.5zM244.9 250.4c2.7998 3 7.5 3 10.5 0c2.7998 -2.7002 2.7998 -7.40039 0 -10.2002c-3 -3 -7.7002 -3 -10.5 0c-3 2.7002 -3 7.39941 0 10.2002
-zM317.4 263.7c-19.9004 14.3994 -33.8008 43.2002 -11.9004 68.0996c21.5996 24.9004 40.7002 17.2002 59.7998 -0.799805c11.9004 -11.2998 29.2998 -24.9004 17.2002 -48.2002c-12.5 -23.5 -45.0996 -33.2002 -65.0996 -19.0996zM365.1 308.2
-c-8.89941 10 -23.2998 -6.90039 -15.5 -16.1006c7.40039 -9 32.1006 -2.39941 15.5 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM437.8 149.4c2.5 16.0996 -20.2002 16.5996 -25.2002 25.6992
-c-13.5996 24.1006 -27.6992 36.8008 -54.5 30.4004c11.6006 8 23.5 6.09961 23.5 6.09961c0.300781 6.40039 0 13 -9.39941 24.9004c3.89941 12.5 0.299805 22.4004 0.299805 22.4004c15.5 8.59961 26.7998 24.3994 29.0996 43.1992
-c3.60059 31 -18.7998 59.2002 -49.7998 62.8008c-22.0996 2.5 -43.7002 -7.7002 -54.2998 -25.7002c-23.2002 -40.1006 1.40039 -70.9004 22.4004 -81.4004c-14.4004 1.40039 -34.3008 11.9004 -40.1006 34.2998c-6.59961 25.7002 2.7998 49.8008 8.90039 61.4004
-c0 0 -4.40039 5.7998 -8 8.90039c0 0 -13.7998 0 -24.6006 -5.30078c11.9004 15.2002 25.2002 14.4004 25.2002 14.4004c0 6.40039 -0.599609 14.9004 -3.59961 21.5996c-5.40039 11 -23.7998 12.9004 -31.7002 -2.7998c0.0996094 0.200195 0.299805 0.400391 0.400391 0.5
-c-5 -11.8994 -1.10059 -55.8994 16.8994 -87.2002c-2.5 -1.39941 -9.09961 -6.09961 -13 -10c-21.5996 -9.69922 -56.2002 -60.2998 -56.2002 -60.2998c-28.1992 -10.7998 -77.1992 -50.8994 -70.5996 -79.7002c0.299805 -3 1.40039 -5.5 3 -7.5
-c-2.7998 -2.19922 -5.5 -5 -8.2998 -8.2998c-11.9004 -13.7998 -5.2998 -35.2002 17.7002 -24.3994c15.7998 7.19922 29.5996 20.1992 36.2998 30.3994c0 0 -5.5 5 -16.2998 4.40039c27.6992 6.59961 34.2998 9.39941 46.1992 9.09961c8 -3.89941 8 34.2998 8 34.2998
-c0 14.7002 -2.19922 31 -11.0996 41.5c12.5 -12.1992 29.0996 -32.6992 28 -60.5996c-0.799805 -18.2998 -15.2002 -23 -15.2002 -23c-9.09961 -16.5996 -43.2002 -65.9004 -30.3994 -106c0 0 -9.7002 14.9004 -10.2002 22.0996
-c-17.4004 -19.3994 -46.5 -52.2998 -24.6006 -64.5c26.6006 -14.6992 108.801 88.6006 126.2 142.301c34.6006 20.7998 55.4004 47.2998 63.9004 65c22 -43.5 95.2998 -94.5 101.1 -59z" />
-    <glyph glyph-name="etsy" unicode="&#xf2d7;" horiz-adv-x="384" 
-d="M384 100c-1.75 -10.75 -13.75 -110 -15.5 -132c-117.879 4.29883 -219.895 4.74316 -368.5 0v25.5c45.457 8.94824 60.627 8.01855 61 35.25c1.79297 72.3223 3.52441 244.143 0 322c-1.0293 28.46 -12.1299 26.7646 -61 36v25.5
-c73.8857 -2.3584 255.933 -8.55078 362.999 3.75c-3.5 -38.25 -7.75 -126.5 -7.75 -126.5h-23.249c-11.0527 42.835 -18.7588 90.5 -54.75 90.5h-137c-10.25 0 -10.75 -3.5 -10.75 -9.75v-163.75c58 -0.5 88.5 2.5 88.5 2.5c29.7695 0.951172 27.5596 8.50195 40.75 65.251
-h25.75c-4.40723 -101.351 -3.91016 -61.8291 -1.75 -160.25h-25.75c-9.15527 40.0859 -9.06543 61.0449 -39.501 61.5c0 0 -21.5 2 -88 2v-139c0 -26 14.25 -38.25 44.25 -38.25h89.251c63.6357 0 66.5645 24.9961 98.751 99.75h22.249v-0.000976562z" />
-    <glyph glyph-name="imdb" unicode="&#xf2d8;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2998 218.8h-0.299805c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391v-0.400391zM97 128.2v127.8h-33v-127.8h33z
-M210.2 128.2v127.8h-43l-7.60059 -59.9004c-2.69922 20 -5.39941 40.1006 -8.69922 59.9004h-42.8008v-127.8h29v84.5l12.2002 -84.5h20.6006l11.5996 86.3994v-86.3994h28.7002zM221.6 128.2c86.1006 -0.100586 75 -6 75 82.5c0 8.09961 0.300781 16.7998 -1.39941 24.3994
-c-4.2998 22.5 -31.4004 20.9004 -49 20.9004h-24.6006v-127.8zM382.5 157.4v36c0 17.2998 -0.799805 30.0996 -22.2002 30.0996c-8.89941 0 -14.8994 -2.7002 -20.8994 -9.2002v41.7002h-31.7002v-127.8h29.7998l1.90039 8.09961
-c5.69922 -6.7998 11.8994 -9.7998 20.8994 -9.7998c19.7998 0 22.2002 15.2002 22.2002 30.9004zM265 218.1v-49.2998c0 -9.7002 1.90039 -18.7002 -10.2998 -18.3994v83.6992c11.8994 0 10.2998 -6.2998 10.2998 -16zM350.5 192v-32.7002
-c0 -5.39941 1.59961 -14.3994 -6.2002 -14.3994c-1.59961 0 -3 0.799805 -3.7998 2.39941c-2.2002 5.10059 -1.09961 44.1006 -1.09961 44.7002c0 3.7998 -1.10059 12.7002 4.89941 12.7002c7.2998 0 6.2002 -7.2998 6.2002 -12.7002z" />
-    <glyph glyph-name="ravelry" unicode="&#xf2d9;" horiz-adv-x="512" 
-d="M498.252 213.777c0.129883 -0.613281 0.322266 -1.21777 0.561523 -1.78223v-37.0557c-0.194336 -0.300781 -0.516602 -0.583008 -0.552734 -0.900391c-0.619141 -5.36426 -0.837891 -10.8076 -1.87012 -16.0869c-2.06934 -10.6074 -4.15723 -21.2393 -7.0166 -31.6523
-c-4.94531 -18.0205 -12.7578 -34.8809 -22.2998 -50.9258c-8.94336 -15.126 -19.4043 -28.9668 -31.4268 -41.6387c-3.74609 -3.92188 -7.54688 -7.80078 -11.5107 -11.5c-5.31152 -4.95703 -10.5146 -10.1094 -16.2998 -14.457
-c-9.3418 -7.02344 -18.9883 -13.6533 -28.7373 -20.1006c-15.083 -9.81543 -31.6211 -17.9053 -48.9512 -23.8174c-15.3828 -5.38281 -31.1533 -9.38574 -47.4893 -10.7178c-2.52734 -0.206055 -5.02051 -0.753906 -7.52734 -1.14258h-32.2891
-c-0.358398 0.245117 -0.762695 0.436523 -1.18945 0.55957c-6.1377 0.620117 -12.3418 0.863281 -18.4121 1.87305c-13.8301 2.22949 -27.5977 5.58398 -40.6416 9.83496c-19.5498 6.43359 -38.4463 15.0176 -55.8994 25.2773
-c-15.0488 8.79004 -28.9365 18.9688 -41.7871 30.5859c-9.6875 8.70605 -18.3936 18.0898 -26.3584 28.416c-9.38184 12.1963 -17.4385 25.4316 -24 39.5283c-7.5918 16.6592 -13.3467 34.7812 -16.7295 53.2998c-2.35547 13.1611 -3.85059 26.5459 -4.4248 40.2402
-c-0.136719 3.0332 -0.209961 5.74121 -0.209961 8.80859c0 9.05566 0.599609 17.9717 1.76172 26.7119c1.52637 11.874 4.15625 23.6367 7.69043 34.7588c5.05762 15.7021 12.0283 30.7871 20.4941 44.6006c9.58203 15.9961 20.7793 30.6025 33.6484 43.9502
-c9.55469 9.83496 19.7539 19.0605 29.9268 28.2676c5.70605 5.1582 11.8066 9.9082 17.9736 14.5186c12.0029 9.04004 24.6963 17.1025 38.0801 24.1572c12.5137 6.63281 25.9795 12.1963 39.7686 16.3555c10.9453 3.41016 22.5254 5.84375 34.2559 7.09961
-c2.42773 0.225586 4.82617 0.761719 7.23633 1.15039c10.7627 -0.00195312 21.5254 0 32.2881 0.00585938c0.299805 -0.195312 0.583984 -0.516602 0.899414 -0.552734c6.87793 -0.81543 13.8467 -1.16797 20.627 -2.48242
-c11.2432 -2.18359 22.4971 -4.51465 33.5156 -7.61523c19.999 -5.78125 39.2266 -14.2031 56.7227 -24.668c17.2832 -10.0947 32.9639 -22.1357 47.1133 -36.1152c6.71973 -6.90527 12.9209 -14.0508 18.8174 -21.6895c13.4639 -16.959 24.0283 -36.4561 30.874 -57.5
-c3.88867 -11.8086 7.16211 -24.2148 9.62207 -36.5996c2.0459 -10.1748 2.53809 -20.6602 3.74609 -31zM337.135 214.927l0.00488281 67.2695c-35.2686 0 -53.1152 -9.36719 -62.04 -36.1895v31.9316h-73.5176v-190.738h73.5127v93.667
-c0 22.1396 6.37012 37.04 33.5703 37.04c11.8984 0 28.4697 -2.98047 28.4697 -2.98047z" />
-    <glyph glyph-name="sellcast" unicode="&#xf2da;" 
-d="M353.4 416c52.0996 0 94.6992 -42.5996 94.6992 -94.5996v-258.801c0 -52 -42.5996 -94.5996 -94.6992 -94.5996h-258.7c-52.1006 0 -94.7002 42.5996 -94.7002 94.7002v258.7c0 52 42.5996 94.5996 94.7002 94.5996h258.7zM303.4 99.5996
-c27.8994 48.2002 11.1992 110.5 -37.2002 138.5c-18.6006 10.8008 0.0996094 -0.0996094 -18.5 10.7002c-25 14.4004 -46.2002 -23.2998 -21.6006 -37.5c18 -10.2002 0.800781 -0.399414 18.6006 -10.5996c27.5996 -16 37.2002 -51.7998 21.2998 -79.4004
-c-16 -27.5996 -51.7998 -37.2002 -79.4004 -21.2998c-18.5996 10.7998 0.100586 -0.0996094 -18.5 10.7002c-10.2998 6 -23.5996 2.39941 -29.5 -7.90039l-15.6992 -27.2002c-12.6006 -21.7998 19.3994 -53 42.2998 -13.1992c48.2998 -27.7002 110.3 -11 138.2 37.1992z
-M325.2 308.4c14.2998 24.7998 -23.4004 46.3994 -37.7002 21.5l-4.7998 -8.40039c-48.2998 27.7002 -110.3 11 -138.2 -37.2002c-27.7998 -48.2998 -11.0996 -110.6 37.0996 -138.399c18.6006 -10.8008 -0.0996094 0.0996094 18.5 -10.7002
-c25 -14.4004 46.2002 23.2998 21.6006 37.5c-0.100586 0 -18.6006 10.5996 -18.6006 10.5996c-27.5996 16 -37.2998 51.7998 -21.2998 79.4004c16 27.5996 51.7998 37.2002 79.4004 21.2998c18.5996 -10.7998 -0.100586 0.0996094 18.5 -10.7002
-c10.2002 -5.09961 20 -2.89941 26.5 3.60059c2.7002 2.69922 2 2 19 31.5z" />
-    <glyph glyph-name="superpowers" unicode="&#xf2dd;" 
-d="M448 416l-87.2002 -87c39.7002 -38.7002 61.2002 -92.7002 57.7002 -148.2c-5.40039 -93 -76.9004 -167.3 -168.7 -179.8c-83.2998 -11 -166.5 -22 -249.8 -33l86.7998 86.7998c-39.7998 38.7002 -61.0996 92.7002 -57.7998 148.2c5.7002 93.2998 77 167.5 169 180
-c83.2002 11 166.7 22 250 33zM368.3 183.7c4.40039 80 -56.7998 146.3 -136.1 151c-78.7002 4.7998 -148.5 -55.2998 -153 -134.5c-4.40039 -80 56.7998 -146.3 136.3 -151c78.7998 -4.7002 148.6 55 152.8 134.5z" />
-    <glyph glyph-name="wpexplorer" unicode="&#xf2de;" horiz-adv-x="512" 
-d="M512 192c0 -141.2 -114.7 -256 -256 -256c-141.2 0 -256 114.7 -256 256s114.7 256 256 256s256 -114.7 256 -256zM480 192c0 123.2 -100.3 224 -224 224c-123.5 0 -224 -100.5 -224 -224s100.5 -224 224 -224s224 100.5 224 224zM160.9 323.4l86.8994 -37.1006
-l-37.0996 -86.8994l-86.9004 37.0996zM270.9 154.3l46.5996 -94h-14.5996l-50 100l-48.9004 -100h-14l51.0996 106.9l-22.2998 9.39941l6 14l68.6006 -29.0996l-6 -14.2998zM259.1 270.6l68.6006 -29.3994l-29.4004 -68.2998l-68.2998 29.0996zM339.4 227.7
-l54.5996 -23.1006l-23.4004 -54.2998l-54.2998 23.1006z" />
-    <glyph glyph-name="meetup" unicode="&#xf2e0;" horiz-adv-x="512" 
-d="M99 33.7002c1.09961 -5.7002 -2.2998 -11.1006 -8 -12.2998c-5.40039 -1.10059 -10.9004 2.2998 -12 8c-1.09961 5.39941 2.2998 11.0996 7.7002 12.2998c5.39941 1.2002 11.0996 -2.2998 12.2998 -8zM242.1 -37.7002c6.60059 4.60059 15.5 2.7998 19.7002 -3.7002
-c4.60059 -6.59961 2.90039 -15.3994 -3.39941 -20c-6.60059 -4.59961 -15.4004 -2.89941 -20 3.7002c-4.30078 6.60059 -2.60059 15.4004 3.69922 20zM156.1 424.6c-6.2998 -1.5 -12.5 2.5 -13.8994 9.10059c-1.2002 6.2998 2.7998 12.5996 9.09961 14
-c6.2998 1.5 12.6006 -2.5 13.7002 -9.10059c1.40039 -6.2998 -2.59961 -12.5996 -8.90039 -14zM34.4004 221.7c10 -7.10059 12.5996 -20.7998 5.69922 -31.2002c-6.89941 -10.2998 -20.5996 -12.7998 -30.5996 -5.7002c-10 6.90039 -12.5996 20.9004 -5.7002 30.9004
-c6.90039 10.2998 20.6006 12.8994 30.6006 6zM306.4 392.6c-10.3008 -6.2998 -23.7002 -2.89941 -29.7002 7.40039c-6.2998 10.5996 -2.90039 24.2998 7.39941 30.5996c10.3008 6.30078 23.7002 2.90039 30 -7.69922c6 -10.3008 2.90039 -24 -7.69922 -30.3008zM115.3 334.6
-c-7.5 -5.19922 -18 -3.5 -23.0996 4.30078c-5.10059 7.69922 -3.40039 18.2998 4.2998 23.6992c7.40039 5.10059 18 3.40039 23.0996 -4.2998c5.10059 -7.7002 3.40039 -18.2998 -4.2998 -23.7002zM487.6 178.6c7.40039 1.40039 14.8008 -3.5 16.3008 -10.8994
-c1.69922 -7.7002 -3.2002 -15.2002 -10.6006 -16.6006c-7.39941 -1.69922 -14.8994 3.2002 -16.2998 10.6006c-1.7002 7.7998 3.2002 15.2002 10.5996 16.8994zM527.3 235.4c1.40039 -5.7002 -2.2998 -11.1006 -7.7002 -12.6006
-c-5.69922 -1.09961 -11.1992 2.60059 -12.2998 8c-1.09961 5.7002 2.2998 11.5 8 12.6006c5.40039 1.09961 10.9004 -2.30078 12 -8zM447 309.1c8.2998 6 20 3.80078 25.7002 -4.89941c5.7002 -8.60059 3.7002 -20.2998 -4.60059 -26.2998
-c-8.59961 -5.7002 -20.2998 -3.7002 -26 4.89941c-5.69922 8.60059 -3.69922 20.2998 4.90039 26.2998zM440.7 169.7c26.2998 -43.1006 15.0996 -100 -26.2998 -129.101c-17.4004 -12.2998 -37.1006 -17.6992 -56.9004 -17.0996
-c-12 -47.0996 -69.4004 -64.5996 -105.1 -32.5996c-1.10059 -0.900391 -2.60059 -1.7002 -3.7002 -2.90039c-39.1006 -27.0996 -92.2998 -17.4004 -119.4 22.2998c-9.7002 14.2998 -14.5996 30.6006 -15.0996 46.9004c-65.4004 10.8994 -90 94 -41.1006 139.7
-c-28.2998 46.8994 0.600586 107.399 53.4004 114.899c25.0996 66.2002 107.6 97.6006 163.6 54.2002c67.4004 22.2998 136.301 -29.4004 130.9 -101.1c41.0996 -12.6006 52.7998 -66.9004 19.7002 -95.2002zM370.7 95.4004
-c-3.10059 20.5996 -40.9004 4.59961 -43.1006 27.0996c-3.09961 32 43.7002 101.1 40 128c-3.39941 24 -19.3994 29.0996 -33.3994 29.4004c-13.4004 0.299805 -16.9004 -2 -21.4004 -4.60059c-2.89941 -1.7002 -6.59961 -4.89941 -11.7002 0.299805
-c-6.2998 6 -11.0996 11.7002 -19.3994 12.9004c-12.2998 2 -17.7002 -2 -26.6006 -9.7002c-3.39941 -2.89941 -12 -12.8994 -20 -9.09961c-3.39941 1.7002 -15.3994 7.7002 -24 11.3994c-16.2998 7.10059 -40 -4.59961 -48.5996 -20
-c-12.9004 -22.8994 -38 -113.1 -41.7002 -125.1c-8.59961 -26.5996 10.9004 -48.5996 36.9004 -47.0996c11.0996 0.599609 18.2998 4.59961 25.3994 17.3994c4 7.40039 41.7002 107.7 44.6006 112.601c2 3.39941 8.89941 8 14.5996 5.09961
-c5.7002 -3.09961 6.90039 -9.40039 6 -15.0996c-1.09961 -9.7002 -28 -70.9004 -28.8994 -77.7002c-3.40039 -22.9004 26.8994 -26.6006 38.5996 -4c3.7002 7.09961 45.7002 92.5996 49.4004 98.2998c4.2998 6.2998 7.39941 8.2998 11.6992 8
-c3.10059 0 8.30078 -0.900391 7.10059 -10.9004c-1.40039 -9.39941 -35.1006 -72.2998 -38.9004 -87.6992c-4.59961 -20.6006 6.60059 -41.4004 24.9004 -50.6006c11.3994 -5.7002 62.5 -15.7002 58.5 11.1006zM376.4 3.09961c10.5996 7.5 24.8994 4.60059 32.2998 -6
-c7.09961 -10.5996 4.59961 -25.1992 -6 -32.5996c-10.6006 -7.09961 -24.9004 -4.59961 -32 6c-7.2002 10.5996 -4.60059 25.2002 5.7002 32.5996z" />
-    <glyph glyph-name="font-awesome-alt" unicode="&#xf35c;" 
-d="M339.3 276.8c5.40039 0 9.5 -3 7.7002 -7.09961v-134.4c0 -4.2002 -3 -6 -7.2002 -7.7998c-15.5996 -7.09961 -33.5 -13.7002 -52 -13.7002c-26.2998 0 -38.2002 16.1006 -69.2998 16.1006c-22.7002 0 -46 -8.30078 -65.7002 -16.7002
-c-0.599609 -0.600586 -1.7998 -1.2002 -3 -1.2002v-44.2002c0 -1.7998 0 -3 -0.599609 -4.7998v-1.2998c-2.40039 -7.7002 -9.5 -13.7002 -18.5 -13.7002c-10.7002 0 -19.7002 8.90039 -19.7002 19.7002v212.1c-7.7002 6 -12.5 15.5 -12.5 25.7002
-c0 18 14.2998 32.2998 32.2998 32.2998s32.2998 -14.3994 32.2998 -32.2998c0 -10.7998 -4.69922 -19.7002 -12.5 -25.7002v-17.8994c1.2002 0.599609 3 1.19922 4.80078 1.7998c17.8994 7.09961 39.3994 13.7002 59.6992 13.7002
-c22.1006 0 39.4004 -5.90039 59.1006 -13.7002c4.09961 -1.7998 8.2998 -2.40039 12.5 -2.40039c22.7002 0 46.5996 15.5 52.5996 15.5zM397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6
-c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM412.1 18.2998v347.601c0 7.69922 -6.5 14.2998 -14.2998 14.2998v-0.100586h-347.6c-7.7002 0 -14.2998 -6.5 -14.2998 -14.2998v-347.5
-c0 -7.7002 6.5 -14.2998 14.2998 -14.2998h347.6c7.7002 0 14.2998 6.5 14.2998 14.2998z" />
-    <glyph glyph-name="accessible-icon" unicode="&#xf368;" 
-d="M423.9 192.2l-12.9004 -157.3c-3.2998 -40.7002 -63.9004 -35.1006 -60.5996 4.89941l10 122.5l-41.1006 -2.2998c10.1006 -20.7002 15.7998 -43.9004 15.7998 -68.5c0 -41.2002 -16.0996 -78.7002 -42.2998 -106.5l-39.2998 39.2998
-c57.9004 63.7002 13.0996 167.2 -74 167.2c-25.9004 0 -49.5 -9.90039 -67.2002 -26l-39.2998 39.2998c22 20.7002 50.0996 35.1006 81.4004 40.2002l75.2998 85.7002l-42.6006 24.7998l-51.5996 -46c-30 -26.7998 -70.5996 18.5 -40.5 45.4004l68 60.6992
-c9.7998 8.80078 24.0996 10.2002 35.5 3.60059c0 0 139.3 -80.9004 139.5 -81.1006c16.2002 -10.0996 20.7002 -36 6.09961 -52.5996l-58.3994 -66.5l106.1 5.90039c18.5 1.09961 33.6006 -14.4004 32.1006 -32.7002zM359 346.2
-c-28.0996 0 -50.9004 22.7998 -50.9004 50.8994c0 28.1006 22.8008 50.9004 50.9004 50.9004s50.9004 -22.7998 50.9004 -50.9004c0 -28.0996 -22.8008 -50.8994 -50.9004 -50.8994zM179.6 -8.5c20.8008 0 40.1006 6.40039 56.1006 17.2998l39.7002 -39.7002
-c-100.7 -78.8994 -251.4 -8.19922 -251.4 122.5c0 36.1006 12.4004 69.4004 33.2002 95.7002l39.7002 -39.7002c-44.7002 -65.5 2.09961 -156.1 82.6992 -156.1z" />
-    <glyph glyph-name="accusoft" unicode="&#xf369;" horiz-adv-x="640" 
-d="M322.1 196c-1.69922 -1.59961 -89.5996 -82.5 -90.1992 -83.2998l-92.6006 -33.7998c-4.7998 -2 -7.59961 -3.7002 -7 -8.90039c0.200195 -1.5 0.600586 -22.5996 1 -27.7002c-0.700195 -0.5 -0.0996094 0 -0.599609 -0.599609c0 0 -113.7 -36.6006 -114.5 -36.6006
-c-14.1006 -5.09961 -22.7002 -8.2998 -15.7002 1.7002c1.2998 1.7998 234.4 231.601 243.4 240.9c13 13.5 25 15.0996 25 15.0996l51.1992 -65.7998v-1zM482.2 75.9004c-5.7002 6.89941 -232.2 297.1 -239.9 306.6c-13.7002 17.2002 0 16.7998 19.2002 16.9004
-c9.7002 0.0996094 106.3 0.599609 116.5 0.599609c24.0996 0.0996094 28.7002 -0.599609 38.4004 -12.7998c2.09961 -2.7002 205.1 -245.8 207.199 -248.3c5.5 -6.7002 15.2002 -19.1006 7.2002 -23.4004c-2.39941 -1.2998 -114.6 -47.7002 -117.8 -48.9004
-c-10.0996 -4 -17.5 -6.7998 -30.7998 9.30078zM634.9 74.2998c6 -1.39941 7.09961 -4.2002 1.69922 -8.2002c-2 -1.39941 -123.699 -76.5996 -125.8 -77.7998c-15.0996 -8.7998 -38 -1.59961 -53.5996 1.7002c-7.10059 1.5 -305.3 68.2998 -308 69.0996
-c-2.60059 0.900391 -4.40039 1 -4.60059 3.5c-0.299805 4 6 5.60059 11.1006 7.60059c5 1.89941 145.3 52.5996 150.2 54.7002c4.7998 2.09961 11.2998 2.69922 14.3994 2.89941c4.90039 0.299805 59.9004 -8.39941 65.2998 -9.2998l57.1006 -74
-c9.7998 -11.4004 20.7002 -21.9004 36.7002 -14.5996c2.5 1.19922 117.5 51.5996 117.5 51.5996c13.3994 -2.5 35.6992 -6.90039 38 -7.2002z" />
-    <glyph glyph-name="adversal" unicode="&#xf36a;" horiz-adv-x="512" 
-d="M482.1 416c24.5 0 29.9004 -5.59961 29.9004 -30.2002v-388.1c0 -24.5 -5.5 -29.7002 -29.9004 -29.7002h-453.399c-22.9004 0 -28.7002 5.59961 -28.7002 28.9004v390.199c0 23 5.7998 28.9004 28.7002 28.9004h453.399zM178.4 227.7
-c9.39941 -7.2002 12.3994 -17.1006 11.2998 -27.2998c-1.7998 -19.1006 -75.7998 -11.4004 -114 -30.9004c-27.2002 -13.9004 -42.7002 -41.7002 -39.6006 -71c6.7002 -64.7002 89.6006 -79.7002 147 -43.2998c4.60059 3.2002 8.30078 4.89941 11.9004 1
-c2.09961 -2.60059 2 -4 3.90039 -6.2002c7.2998 -9.59961 38.1992 -14.0996 46.5996 -7.40039c3.09961 2.80078 4.59961 6.30078 2.7002 10.7002c-13.6006 30.5 -6.60059 63 -9.2998 88.7998c0 69.3008 6.39941 111.7 -34.5 128.5
-c-41.9004 17.4004 -84.2002 16.6006 -125.301 -4.7998c-16.2998 -9 -53.6992 -52.8994 -24.8994 -64.2998c5.2998 -2.2998 12.7998 -4 22.5 -5.5c8.2002 -1.2002 13.2002 -2.7998 17.5 8.2998c12.0996 32.1006 56.7002 43.6006 84.2002 23.4004zM465.1 5.7002
-c0 14.2998 -9.7998 9.89941 -16.5996 9.89941c-132.3 0.400391 -264.5 0.400391 -396.8 0c-6.60059 0 -16.7002 4.80078 -17.1006 -9.09961c-0.399414 -15.5 10.4004 -10.7002 17.8008 -10.7002h394.899c6.7002 0 17.7998 -5.2002 17.7998 9.90039zM468.9 346.2
-c0 0.200195 0 0.299805 0.0996094 0.5c0 9.89941 -3.5 15.0996 -13.5996 14.2998c-3.10059 -0.400391 -6.60059 0 -9.7002 0c-26.1006 0 -26 0 -26 -26.2002v-71c-79.2002 45.6006 -124.3 -6.59961 -136.101 -30.5c-16.3994 -32.8994 -21.7998 -66.5996 -15.6992 -100
-c16.2998 -92.2998 91 -114.899 144.399 -85.2002c4.60059 2.80078 6.60059 7.5 12.4004 -1.19922c8.59961 -12.7002 23.7002 -5.2002 36.0996 -5.60059c7.40039 0 8.10059 8.2002 8.10059 13.9004v291zM417.4 113.9c-19.5 -47.6006 -72.9004 -43.3008 -90 -5.2002
-c-15.1006 33.2998 -15.5 68.2002 0.399414 101.5c16.2998 34.0996 59.7002 35.7002 81.5 4.7998c20.6006 -28.7998 14.9004 -84.5996 8.10059 -101.1zM122.6 78.5996c-7.5 1.30078 -33 3.30078 -33.6992 27.8008c-0.400391 13.8994 7.7998 23 19.7998 25.7998
-c24.3994 5.89941 49.2998 9.89941 73.7002 14.7002c8.89941 2 7.39941 -4.40039 7.7998 -9.5c1.39941 -33 -26.1006 -59.2002 -67.6006 -58.8008z" />
-    <glyph glyph-name="affiliatetheme" unicode="&#xf36b;" horiz-adv-x="512" 
-d="M159.7 210.6c-51.2998 -70.8994 -116.601 -110.8 -145.7 -89.1992c-29.2002 21.6992 -11.2002 96.5996 40.2002 167.5c51.2998 70.8994 116.6 110.8 145.7 89.1992c29.0996 -21.5996 11.0996 -96.5996 -40.2002 -167.5zM510.9 267.9
-c0.699219 -8.2002 1.09961 -16.5 1 -25c0 -151.801 -121.601 -274.9 -271.601 -274.9c-82.8994 0 -157.2 37.5996 -207 96.9004c71.2998 19.3994 130.5 68.3994 164.101 133.199c7.69922 -32.5996 24 -58.5996 49 -73.7998c72.5996 -44.0996 190.699 20.2002 264.5 143.601z
-" />
-    <glyph glyph-name="algolia" unicode="&#xf36c;" 
-d="M229.3 265.4c49.2002 0 89.2002 -39.9004 89.2002 -89.2002s-39.9004 -89.2002 -89.2002 -89.2002s-89.2002 39.9004 -89.2002 89.2002s39.9004 89.2002 89.2002 89.2002zM292 208.8c1.2998 0.700195 1.7998 2.40039 1.09961 3.7002
-c-12.1992 21.4004 -34.8994 36.0996 -61.0996 37.0996c-1.40039 0.100586 -2.7002 -1.09961 -2.7002 -2.59961v-66.5c0 -1.90039 2 -3.2002 3.7998 -2.2998zM389.1 416c32.5 0 58.9004 -26.4004 58.8008 -58.9004v-330.199c0 -32.5 -26.3008 -58.9004 -58.9004 -58.9004
-h-330.1c-32.5 0 -58.9004 26.4004 -58.9004 59v330.1c0 32.5 26.4004 58.9004 58.9004 58.9004h330.199zM186.5 331.3h0.0996094v-15.7998c0 -1.7002 1.7002 -3 3.40039 -2.5c12.7002 3.7002 25.9004 5.5 39.4004 5.5c13 0 25.7998 -1.7002 38.0996 -5.09961
-c1.59961 -0.5 3.2998 0.699219 3.2998 2.5v15.3994c0 10.7998 -8.7002 19.5 -19.5 19.5h-45.2998c-10.7998 0 -19.5 -8.7002 -19.5 -19.5zM102.1 294.3c-7.59961 -7.59961 -7.59961 -19.8994 0 -27.3994l7.7002 -7.7002c1.10059 -1.2002 3 -1 4 0.299805
-c4.40039 6.09961 9.40039 12 14.7998 17.4004c5.5 5.5 11.4004 10.3994 17.6006 14.8994c1.2998 1 1.39941 2.90039 0.299805 4l-7.7002 7.7002c-7.59961 7.59961 -19.8994 7.59961 -27.5 0zM229.3 49.5c69.9004 0 126.601 56.7998 126.601 126.6
-c0 70 -56.6006 126.601 -126.601 126.601c-69.8994 0 -126.6 -56.7002 -126.6 -126.601c0 -69.8994 56.5996 -126.6 126.6 -126.6z" />
-    <glyph glyph-name="amilia" unicode="&#xf36d;" 
-d="M240.1 416c134.101 0 191.9 -55.7002 192 -136v-296.6c0 -3 -1 -8.10059 -5.09961 -9.10059c-4 -1 -57.2998 -0.700195 -66.5 -0.700195s-56.7998 1 -59.9004 2c-4 0.900391 -6.09961 6.10059 -6.09961 9.10059v25.3994
-c-39.5996 -21.3994 -105.5 -42.0996 -153.3 -42.0996c-109.7 0 -124.9 85.7002 -124.9 104s-5.09961 95.5 30.4004 111.8c31.5 13.2002 156.3 36.5 243.7 47.7998v38.5c0 44.7002 -1 73.1006 -58.9004 73.1006c-55.7998 0 -119.8 -25.4004 -152.3 -47.7002
-c-6.10059 -4.09961 -16.2002 -4.09961 -20.2998 6.09961c-5.10059 12.2002 -9.10059 34.5 -10.2002 39.6006c-1.90039 10.2002 2.09961 16.2998 7.2002 19.3994c52.6992 38.5 122.3 55.4004 184.199 55.4004zM290.3 68v106.7c-44.7002 -4.10059 -95.5 -20.2998 -119.8 -33.5
-c-21.2998 -10.2002 -18.2998 -40.7002 -18.2998 -52.9004c0.0996094 -11.2002 6.2002 -44.7002 59 -44.7002c30.3994 0 57.7002 11.2002 79.0996 24.4004z" />
-    <glyph glyph-name="angrycreative" unicode="&#xf36e;" horiz-adv-x="640" 
-d="M640 209.8l-3.2002 -28.2002l-34.5 -2.2998l-2 -18.0996l34.5 2.2998l-3.2002 -28.2002l-34.3994 -2.2002l-2.2998 -20.0996l34.3994 2.2002l-3 -26.1006l-64.7002 -4.09961l12.7002 113.2l-47.2998 -115.4l-31.9004 -2l-23.7998 117.8l30.2998 2l13.6006 -79.3994
-l31.7002 82.3994zM426.8 76.5l12.7998 120l28.4004 1.90039l-12.9004 -120.101zM162 59.9004l-19.4004 36l-3.5 -37.4004l-28.1992 -1.7002l2.69922 29.1006c-11 -18 -32 -34.3008 -56.8994 -35.8008c-32.7998 -2 -59.7002 20.9004 -56.4004 58.2002
-c2.60059 29.2998 26.7002 62.7998 67.5 65.4004c37.7002 2.39941 47.6006 -23.2002 51.2998 -28.7998l2.80078 30.7998l38.8994 2.5c20.1006 1.2998 38.7002 -3.7002 42.5 -23.7002l2.60059 26.5996l64.7998 4.2002l-2.7002 -27.8994l-36.4004 -2.40039l-1.69922 -17.9004
-l36.3994 2.30078l-2.7002 -27.9004l-36.3994 -2.2998l-1.90039 -19.9004l36.2998 2.2998l-2.09961 -20.7998l55 117.2l23.7998 1.59961l32.1006 -110.6l8.89941 85.5996l-22.2998 -1.39941l2.90039 27.8994l75 4.90039l-3 -28l-24.3008 -1.59961l-9.69922 -91.9004
-l-58 -3.7002l-4.30078 15.6006l-39.3994 -2.5l-8 -16.3008zM117.7 130.1l-26.4004 -1.69922c-6.7002 12.3994 -14.3994 16.5996 -26.2998 15.7998c-19 -1.2002 -33.2998 -17.5 -34.5996 -33.2998c-1.40039 -16 7.2998 -32.5 28.6992 -31.2002
-c12.8008 0.799805 21.3008 8.59961 28.9004 18.8994l27 1.7002zM173.8 137.8c1.2002 12.9004 -7.59961 13.6006 -26.0996 12.4004l-2.7002 -28.5c14.2002 0.899414 27.5 2.09961 28.7998 16.0996zM194.9 67l5.7998 60c-5 -13.5 -14.7002 -21.0996 -27.9004 -26.5996z
-M330.3 112l-7.89941 37.7998l-15.8008 -39.2998zM160.2 186.6l-4.2998 17.5l-39.6006 -2.59961l-8.09961 -18.2002l-31.9004 -2.09961l57 121.899l23.9004 1.60059l30.7002 -102l9.89941 104.7l27 1.7998l37.7998 -63.6006l6.5 66.6006l28.5 1.89941l-4 -41.1992
-c7.40039 13.5 22.9004 44.6992 63.6006 47.5c40.5 2.7998 52.3994 -29.3008 53.3994 -30.3008l3.30078 32l39.2998 2.7002c12.7002 0.900391 27.7998 -0.299805 36.2998 -9.7002l-4.40039 11.9004l32.2002 2.2002l12.9004 -43.2002l23 45.7002l31 2.2002l-43.6006 -78.4004
-l-4.7998 -44.2998l-28.3994 -1.90039l4.7998 44.2998l-15.7998 43c1 -22.2998 -9.2002 -40.0996 -32 -49.5996l25.1992 -38.7998l-36.3994 -2.40039l-19.2002 36.7998l-4 -38.2998l-28.4004 -1.89941l3.30078 31.5c-6.7002 -9.30078 -19.7002 -35.4004 -59.6006 -38
-c-26.2002 -1.7002 -45.5996 10.2998 -55.3994 39.1992l-4 -40.2998l-25 -1.59961l-37.6006 63.2998l-6.2998 -66.2002zM436.8 268.7c10.2002 0.700195 17.5 2.09961 21.6006 4.2998c4.5 2.40039 7 6.40039 7.59961 12.0996
-c0.599609 5.30078 -0.599609 8.80078 -3.40039 10.4004c-3.59961 2.09961 -10.5996 2.7998 -22.8994 2zM327.7 234c5.59961 -5.90039 12.7002 -8.5 21.2998 -7.90039c4.7002 0.300781 9.09961 1.80078 13.2998 4.10059c5.5 3 10.6006 8 15.1006 14.2998l-34.2002 -2.2998
-l2.39941 23.8994l63.1006 4.30078l1.2002 12l-31.2002 -2.10059c-4.10059 3.7002 -7.7998 6.60059 -11.1006 8.10059c-4 1.69922 -8.09961 2.7998 -12.1992 2.5c-8 -0.5 -15.3008 -3.60059 -22 -9.2002c-7.7002 -6.40039 -12 -14.5 -12.9004 -24.4004
-c-1.09961 -9.59961 1.40039 -17.2998 7.2002 -23.2998zM126.4 225.8l23.7998 1.60059l-8.2998 37.5996z" />
-    <glyph glyph-name="app-store" unicode="&#xf36f;" horiz-adv-x="512" 
-d="M255.9 327.1l9.09961 15.7002c5.59961 9.7998 18.0996 13.1006 27.9004 7.5c9.7998 -5.59961 13.0996 -18.0996 7.5 -27.8994l-87.5 -151.5h63.2998c20.5 0 32 -24.1006 23.0996 -40.8008h-185.5c-11.2998 0 -20.3994 9.10059 -20.3994 20.4004
-s9.09961 20.4004 20.3994 20.4004h52l66.6006 115.399l-20.8008 36.1006c-5.59961 9.7998 -2.2998 22.1992 7.5 27.8994c9.80078 5.60059 22.2002 2.2998 27.9004 -7.5zM177.2 109.1l-19.6006 -34c-5.59961 -9.7998 -18.0996 -13.0996 -27.8994 -7.5
-c-9.7998 5.60059 -13.1006 18.1006 -7.5 27.9004l14.5996 25.2002c16.4004 5.09961 29.7998 1.2002 40.4004 -11.6006zM346.1 170.8h53.1006c11.2998 0 20.3994 -9.09961 20.3994 -20.3994c0 -11.3008 -9.09961 -20.4004 -20.3994 -20.4004h-29.5l19.8994 -34.5
-c5.60059 -9.7998 2.30078 -22.2002 -7.5 -27.9004c-9.7998 -5.59961 -22.1992 -2.2998 -27.8994 7.5c-33.5 58.1006 -58.7002 101.601 -75.4004 130.601c-17.0996 29.5 -4.89941 59.0996 7.2002 69.0996c13.4004 -23 33.4004 -57.7002 60.0996 -104zM256 440
-c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM472 192c0 119.9 -97.2998 216 -216 216c-119.9 0 -216 -97.2998 -216 -216c0 -119.9 97.2998 -216 216 -216c119.9 0 216 97.2998 216 216z" />
-    <glyph glyph-name="app-store-ios" unicode="&#xf370;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM127 63.5l19.2998 33.2998c-10.2998 12.5 -23.5 16.2998 -39.5996 11.4004l-14.2998 -24.7002
-c-5.5 -9.5 -2.30078 -21.7998 7.2998 -27.2998c9.5 -5.5 21.7998 -2.2998 27.2998 7.2998zM265.9 117.4c8.7998 16.2998 -2.5 40 -22.7002 40h-62.1006l85.8008 148.6c5.5 9.5 2.2998 21.7998 -7.30078 27.2998c-9.5 5.5 -21.7998 2.2998 -27.2998 -7.2998
-l-8.89941 -15.4004l-8.90039 15.4004c-5.5 9.5 -17.7002 12.7998 -27.2998 7.2998c-9.5 -5.5 -12.7998 -17.7002 -7.2998 -27.2998l20.5 -35.4004l-65.4004 -113.199h-51c-11 0 -20 -9 -20 -20s9 -20 20 -20h181.9zM364 117.4c11 0 20 8.89941 20 20c0 11 -9 20 -20 20h-52
-c-26.2002 45.2998 -45.7998 79.2998 -58.9004 102c-11.8994 -9.80078 -23.7998 -38.8008 -7.09961 -67.8008c16.5 -28.3994 41.0996 -71.1992 74 -128.1c5.5 -9.5 17.7002 -12.7998 27.2998 -7.2998c9.5 5.5 12.7998 17.7002 7.2998 27.2998l-19.5996 33.9004h29z" />
-    <glyph glyph-name="apper" unicode="&#xf371;" horiz-adv-x="640" 
-d="M42.0996 208.9c22.2002 0 29 -2.80078 33.5 -14.6006h0.800781v22.9004c0 11.2998 -4.80078 15.3994 -17.9004 15.3994c-11.2998 0 -14.4004 -2.5 -15.0996 -12.7998h-38.6006c0.299805 13.9004 1.5 19.1006 5.7998 24.4004
-c7.30078 8.7998 18.9004 11.7998 46.1006 11.7998c33 0 47.0996 -5 53.8994 -18.9004c2 -4.2998 4 -15.5996 4 -23.6992v-76.3008h-38.2998l1.2998 19.1006h-1c-5.2998 -15.6006 -13.5996 -20.4004 -35.5 -20.4004c-30.2998 0 -41.0996 10.1006 -41.0996 37.2998
-c0 25.2002 12.2998 35.8008 42.0996 35.8008zM59.2002 160.8c13.0996 0 16.8994 3 16.8994 13.4004c0 9.09961 -4.2998 11.5996 -19.5996 11.5996c-13.0996 0 -17.9004 -3 -17.9004 -12.0996c-0.0996094 -10.4004 3.7002 -12.9004 20.6006 -12.9004zM137 255.7h38.2998
-l-1.5 -20.6006h0.799805c9.10059 17.1006 15.9004 20.9004 37.5 20.9004c14.4004 0 24.7002 -3 31.5 -9.09961c9.80078 -8.60059 12.8008 -20.4004 12.8008 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2002 -10.1006
-c-20.3994 0 -29.1992 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169zM217.9 195c0 27.5 -3.30078 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.3994 0 20.2002 5.60059 20.2002 29.7002zM275.8 255.7h38.2998
-l-1.5 -20.6006h0.800781c9.09961 17.1006 15.8994 20.9004 37.5 20.9004c14.3994 0 24.6992 -3 31.5 -9.09961c9.7998 -8.60059 12.7998 -20.4004 12.7998 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2998 -10.1006
-c-20.3994 0 -29.2002 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169h0.0996094zM356.7 195c0 27.5 -3.2998 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.4004 0 20.2002 5.60059 20.2002 29.7002zM410.5 198.8
-c0 25.4004 3.2998 37.7998 12.2998 45.7998c8.7998 8.10059 22.2002 11.3008 45.1006 11.3008c42.7998 0 55.6992 -12.8008 55.6992 -55.7002v-11.1006h-75.2998c-0.299805 -2 -0.299805 -4 -0.299805 -4.7998c0 -16.8994 4.5 -21.8994 20.0996 -21.8994
-c13.9004 0 17.9004 3 17.9004 13.8994h37.5v-2.2998c0 -9.7998 -2.5 -18.9004 -6.7998 -24.7002c-7.2998 -9.7998 -19.6006 -13.5996 -44.2998 -13.5996c-27.5 0 -41.6006 3.2998 -50.6006 12.2998c-8.5 8.5 -11.2998 21.2998 -11.2998 50.7998zM486.9 210.4
-c-0.300781 1.7998 -0.300781 3.2998 -0.300781 3.7998c0 12.2998 -3.2998 14.5996 -19.5996 14.5996c-14.4004 0 -17.0996 -3 -18.0996 -15.0996l-0.300781 -3.2998h38.3008zM542.5 255.7h38.2998l-1.7998 -19.9004h0.700195
-c6.7998 14.9004 14.3994 20.2002 29.7002 20.2002c10.7998 0 19.0996 -3.2998 23.3994 -9.2998c5.2998 -7.2998 6.7998 -14.4004 6.7998 -34c0 -1.5 0 -5 0.200195 -9.2998h-35c0.299805 1.7998 0.299805 3.2998 0.299805 4c0 15.3994 -2 19.3994 -10.2998 19.3994
-c-6.2998 0 -10.7998 -3.2998 -13.0996 -9.2998c-1 -3 -1 -4.2998 -1 -12.2998v-68h-38.2998v118.5h0.0996094z" />
-    <glyph glyph-name="asymmetrik" unicode="&#xf372;" horiz-adv-x="576" 
-d="M517.5 138.8c-13.9004 -14.2998 -30.4004 -27.7002 -48.9004 -39.7998l73.4004 -110.4h-101.6l-45.9004 71.8008c-17.5996 -7.2002 -35.9004 -13.4004 -54.5 -18.7002l32.5996 -53.1006h-135.5l22.8008 37.1006c-23.3008 -2.7002 -46.4004 -3.7002 -68.6006 -2.7002
-l-22 -34.4004h-101.6l34.5 51.7002c-45 17.9004 -68.9004 47.9004 -68.4004 83c0.299805 25.7998 14 54.2998 41.7002 82.9004c38.9004 40 96.5 72.5996 161.6 92.8994c-22.2998 -8.09961 -42 -18.5 -62 -30.6992c-31.1992 -16.2002 -58.6992 -35.9004 -79.5 -58.1006
-c-57.3994 -61 -46.5 -121.8 19.1006 -151.2l190.2 285.5l150.899 -226.399c13 9.5 24.7998 19.7998 35 30.5996c98 104.2 53.7002 207.9 -98.7998 231.7c-68.2998 10.5996 -146.8 5.7002 -221.3 -14.7998c-60.1006 -10 -118.7 -31.7002 -170.7 -58.2002
-c118.1 66.9004 277.9 102.1 406.6 82.4004c110 -16.8008 170.2 -69.5 169.4 -135c-0.400391 -36.1006 -19.7002 -76.1006 -58.5 -116.101zM329.9 58.2998c18.3994 5.2998 36.5 11.7998 53.6992 19.2002l-78.6992 123l-101.9 -159.3
-c22.5 -0.700195 45.7998 0.899414 69.2002 4.39941l32.7002 53.3008z" />
-    <glyph glyph-name="audible" unicode="&#xf373;" horiz-adv-x="640" 
-d="M640 248.1v-54l-320 -200l-320 199.9v54l320 -200zM445.5 176.1c-70.7998 94.4004 -200.5 110.7 -290.2 36.3008c-2.59961 -2.2002 -5.2002 -4.40039 -7.7002 -6.7002h-0.299805c37.1006 55.7002 100.601 92.3994 172.601 92.3994s135.5 -36.7998 172.699 -92.5996z
-M225.4 157.3c21 29.6006 55.5 49 94.3994 49c39.2002 0 73.9004 -19.5996 94.7998 -49.5l-45.3994 -28.3994c-21.2002 29.1992 -52 47.5996 -86.4004 47.5996c-20.8994 0 -40.5 -6.7998 -57.3994 -18.7002zM103.6 286.9c-11.5 -9.10059 -24.2998 -22.1006 -34.1992 -32.6006
-c53.8994 82.1006 147 135.601 250.5 135.601c104.899 0 197.199 -54 250.699 -135.7l-48.7998 -30.4004l-0.700195 1c-99.2998 138.5 -285.699 166.4 -417.5 62.1006zM570.6 254.2z" />
-    <glyph glyph-name="avianex" unicode="&#xf374;" horiz-adv-x="512" 
-d="M453.1 416c39 0 64.8008 -31.2002 57.8008 -69.7998l-56.7002 -308.5c-7.10059 -38.5 -44.4004 -69.7002 -83.2998 -69.7002h-312c-39 0 -64.8008 31.2002 -57.7002 69.7002l56.5996 308.6c7.10059 38.5 44.4004 69.7002 83.2998 69.7002h312zM394.9 68.7002
-l6.2998 7.89941l-94.9004 119.4l-4.5 7.2998c19.7998 14.2002 33.5 24.2998 35.2998 25.6006c7.90039 6.59961 6.30078 20.7998 -2.69922 31.2998c-9.2002 10.7998 -23 14.3994 -30.7002 7.89941c0 0 -14.4004 -13.5996 -33.7998 -32.3994l-4.90039 4.5l-103.1 112.399
-l-8.90039 -4.7998l-18.7998 -28.8994l68.7998 -99.8008l20.5 -29.5996c-12 -12.2998 -23.5 -24.4004 -32.7998 -34.9004l-58 31.1006l-15.7002 -15.4004l52.4004 -48.0996l40.5996 -61l17.9004 12.7002l-22.1006 64.1992c12.5 7.60059 27 17.1006 41.7002 27.1006
-l115.4 -110z" />
-    <glyph glyph-name="aws" unicode="&#xf375;" horiz-adv-x="640" 
-d="M180.41 244.99c-0.719727 -22.6504 10.5996 -32.6807 10.8799 -39.0498c-0.276367 -2.69141 -1.85352 -4.99902 -4.09961 -6.27051l-12.8008 -8.95996c-1.60352 -1.12402 -3.54785 -1.82422 -5.62988 -1.91992c-0.429688 0.0195312 -8.18945 -1.83008 -20.4795 25.6104
-c-14.4111 -17.9883 -36.5596 -29.5156 -61.3789 -29.5156c-0.427734 0 -0.804688 0.0585938 -1.23145 0.0654297c-16.2803 -0.890625 -60.4004 9.24023 -58.1299 56.21c-1.58984 38.2803 34.0596 62.0596 70.9297 60.0498
-c7.10059 -0.0195312 21.6006 -0.370117 46.9902 -6.26953v15.6191c2.69043 26.46 -14.7002 46.9902 -44.8096 43.9102c-2.40039 -0.00976562 -19.4004 0.5 -45.8408 -10.1094c-7.35938 -3.37988 -8.2998 -2.82031 -10.75 -2.82031
-c-7.40918 0 -4.35938 21.4795 -2.93945 24.2002c5.20996 6.39941 35.8604 18.3496 65.9395 18.1797c2.25586 0.199219 4.53906 0.301758 6.84668 0.301758c18.5547 0 35.5566 -6.61719 48.8438 -17.582c11.1152 -12.4326 17.877 -28.8398 17.877 -46.8135
-c0 -1.87891 -0.0615234 -3.70508 -0.207031 -5.5459zM93.9902 212.6c32.4297 0.470703 46.1602 19.9707 49.29 30.4707c2.45996 10.0498 2.0498 16.4102 2.0498 27.3994c-9.66992 2.32031 -23.5898 4.85059 -39.5605 4.87012
-c-15.1494 1.14062 -42.8193 -5.62988 -41.7393 -32.2598c-1.24023 -16.79 11.1201 -31.4004 29.96 -30.4805zM264.91 189.55c-7.86035 -0.719727 -11.5205 4.86035 -12.6797 10.3701l-49.8008 164.65c-0.969727 2.7793 -1.60938 5.64941 -1.91992 8.58008
-c-0.0341797 0.227539 -0.0527344 0.459961 -0.0527344 0.697266c0 2.30566 1.70117 4.21387 3.91309 4.55273c0.240234 0.0400391 -2.12988 0 22.25 0c8.78027 0.879883 11.6396 -6.03027 12.5498 -10.3701l35.7197 -140.83l33.1602 140.83
-c0.530273 3.21973 2.94043 11.0693 12.7998 10.2393h17.1602c2.16992 0.180664 11.1104 0.5 12.6807 -10.3691l33.4199 -142.631l36.8701 142.631c0.479492 2.17969 2.71973 11.3691 12.6797 10.3691h19.7197c0.850586 0.130859 6.15039 0.810547 5.25 -8.5791
-c-0.429688 -1.85059 3.41016 10.6592 -52.75 -169.9c-1.14941 -5.50977 -4.82031 -11.0898 -12.6797 -10.3701h-18.6904c-10.9395 -1.15039 -12.5098 9.66016 -12.6797 10.75l-33.1602 137.13l-32.7803 -136.99c-0.15918 -1.08984 -1.72949 -11.8994 -12.6797 -10.75
-h-18.2998v-0.00976562zM538.39 183.92c-5.87988 -0.00976562 -33.9199 0.299805 -57.3594 12.29c-4.59375 1.94531 -7.81934 6.49609 -7.81934 11.7949c0 0.0410156 0.00878906 0.0742188 0.00878906 0.115234v10.75c0 8.4502 6.2002 6.89941 8.83008 5.88965
-c10.04 -4.05957 16.4805 -7.13965 28.8105 -9.59961c36.6494 -7.53027 52.7695 2.2998 56.7197 4.47949c13.1504 7.81055 14.1895 25.6807 5.25 34.9502c-10.4805 8.79004 -15.4805 9.12012 -53.1299 21c-4.64062 1.29004 -43.7002 13.6104 -43.79 52.3604
-c-0.610352 28.2402 25.0498 56.1797 69.5195 55.9502c12.6699 0.00976562 46.4307 -4.13086 55.5703 -15.6201c1.34961 -2.08984 2.01953 -4.5498 1.91992 -7.04004v-10.1104c0 -4.43945 -1.62012 -6.66016 -4.87012 -6.66016
-c-7.70996 0.860352 -21.3896 11.1699 -49.1602 10.75c-6.88965 0.360352 -39.8896 -0.910156 -38.4092 -24.9697c-0.430664 -18.96 26.6094 -26.0703 29.6992 -26.8896c36.46 -10.9707 48.6504 -12.79 63.1201 -29.5801c17.1406 -22.25 7.90039 -48.2998 4.35059 -55.4404
-c-19.0801 -37.4902 -68.4199 -34.4395 -69.2607 -34.4199zM578.59 79.0596c-70.0303 -51.7197 -171.689 -79.25 -258.49 -79.25c-1.0498 -0.00683594 -2.10059 -0.00976562 -3.15234 -0.00976562c-120.699 0 -230.949 45.7383 -314.117 120.74
-c-6.53027 5.88965 -0.770508 13.96 7.16992 9.46973c93.1143 -53.2637 200.925 -83.7148 315.791 -83.7148c0.138672 0 0.950195 -0.405273 1.08887 -0.405273c85.4404 0.458984 167.381 18.2432 241.59 49.5508c11.7803 5 21.7705 -7.80078 10.1201 -16.3809z
-M607.78 112.35c-8.95996 11.5205 -59.2803 5.38086 -81.8105 2.69043c-6.79004 -0.770508 -7.93945 5.12012 -1.79004 9.46973c40.0703 28.1699 105.88 20.1006 113.44 10.6299c7.5498 -9.46973 -2.0498 -75.4092 -39.5605 -106.909
-c-5.75977 -4.87012 -11.2695 -2.30078 -8.70996 4.09961c8.44043 21.25 27.3906 68.4902 18.4307 80.0195z" />
-    <glyph glyph-name="bimobject" unicode="&#xf378;" 
-d="M416 416c17.5996 0 32 -14.4004 32 -32v-384c0 -17.5996 -14.4004 -32 -32 -32h-384c-17.5996 0 -32 14.4004 -32 32v384c0 17.5996 14.4004 32 32 32h384zM352 158.6h-0.0996094v35c0 49.4004 -11.4004 82.5 -103.801 82.5h-17.2998
-c-30 0 -65.0996 -8.2998 -69.7002 -38.7998h-1.09961v74.7002h-64v-232h64v34.7998h0.900391c8 -23.8994 26.2998 -38.7998 70.3994 -38.7998h16.9004c92.3994 0 103.8 33.2002 103.8 82.5996zM288 187.5v-22.9004c0 -21.6992 -3.40039 -33.7998 -38.4004 -33.7998h-45.2998
-c-28.8994 0 -44.0996 6.5 -44.0996 35.7002v19c0 29.2998 15.2002 35.7002 44.0996 35.7002h45.2998c35 0.200195 38.4004 -12 38.4004 -33.7002z" />
-    <glyph glyph-name="bitcoin" unicode="&#xf379;" horiz-adv-x="512" 
-d="M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM362.349 227.33c4.9375 32.999 -20.1904 50.7393 -54.5498 62.5732l11.1465 44.7021l-27.2129 6.78027l-10.8516 -43.5234
-c-7.1543 1.78223 -14.502 3.46387 -21.8027 5.12988l10.9287 43.8096l-27.1982 6.78125l-11.1523 -44.6855c-5.92188 1.34863 -11.7354 2.68164 -17.377 4.08398l0.0302734 0.139648l-37.5293 9.37012l-7.23926 -29.0625s20.1914 -4.62695 19.7646 -4.91309
-c11.0225 -2.75098 13.0146 -10.0439 12.6807 -15.8242l-12.6963 -50.9258c0.759766 -0.193359 1.74414 -0.472656 2.8291 -0.90625c-0.907227 0.224609 -1.87598 0.472656 -2.87598 0.712891l-17.7959 -71.3379c-1.34961 -3.34863 -4.76758 -8.37012 -12.4717 -6.46484
-c0.271484 -0.394531 -19.7793 4.9375 -19.7793 4.9375l-13.5107 -31.1475l35.4141 -8.82617c6.58887 -1.65137 13.0449 -3.37988 19.4004 -5.00684l-11.2617 -45.2129l27.1816 -6.78027l11.1533 44.7324c7.14062 -1.93457 14.4863 -3.84082 21.6865 -5.62695
-l-11.1152 -44.5225l27.2139 -6.78125l11.2617 45.1279c46.4043 -8.78125 81.2988 -5.23926 95.9863 36.7266c11.8359 33.79 -0.589844 53.2812 -25.0049 65.9912c17.7803 4.09766 31.1748 15.792 34.7471 39.9492zM300.172 140.151
-c-8.41016 -33.79 -65.3076 -15.5234 -83.7549 -10.9434l14.9443 59.8994c18.4453 -4.60352 77.5996 -13.7178 68.8105 -48.9561zM308.589 227.818c-7.67285 -30.7363 -55.0312 -15.1201 -70.3926 -11.292l13.5479 54.3262
-c15.3633 -3.82715 64.8359 -10.9727 56.8447 -43.0342z" />
-    <glyph glyph-name="bity" unicode="&#xf37a;" horiz-adv-x="496" 
-d="M78.4004 380.8c95.3994 89.2002 246.1 91.2002 343.1 -3.7998c14.2998 -14.0996 -6.40039 -37.0996 -22.4004 -21.5c-84.7998 82.4004 -215.8 80.2998 -298.899 3.2002c-16.2998 -15.1006 -36.5 8.2998 -21.7998 22.0996zM177.3 -37.7998
-c-128.7 38.2998 -201.899 170.7 -169.8 298.1c5.2998 21 35.2002 12.5 30.2002 -7.09961c-28.2998 -111.3 35.2998 -227.101 147.5 -261c21.3994 -6.40039 11.3994 -35.7002 -7.90039 -30zM325.4 -35.7998c-19.2002 -6.2998 -30 22.7002 -8.80078 29.7002
-c106.101 35.5 167.4 145.699 143.2 253.399c-4.89941 21.7002 25.5 27.6006 30 7.90039c28.5 -124.101 -42.5 -250.8 -164.399 -291zM262.5 43.2002c0 -8.2002 -6.59961 -14.7998 -14.7998 -14.7998s-14.7998 6.59961 -14.7998 14.7998l0.199219 71.7998
-c0 8.09961 6.60059 14.7998 14.8008 14.7998c8.19922 0 14.7998 -6.59961 14.7998 -14.7998zM333.5 312.2c0 21.7998 32.5 19.5996 32.5 0v-71.6006c0 -69.2998 -60.7002 -90.8994 -118 -90.0996c-57.2998 -0.799805 -118 20.7998 -118 90.0996v71.6006
-c0 19.5996 32.5 21.7998 32.5 0c-1.40039 -88.2002 -7 -131.8 85.5 -132.5c90.2002 0.599609 87.5996 41.5996 85.5 132.5z" />
-    <glyph glyph-name="blackberry" unicode="&#xf37b;" horiz-adv-x="512" 
-d="M166 331.1c0 -23.3994 -16.4004 -49.0996 -72.5 -49.0996h-70.0996l21 88.7998h67.7998c42.0996 0 53.7998 -23.2998 53.7998 -39.7002zM292.2 370.8c42.0996 0 53.7998 -23.2998 53.7002 -39.7002c0 -23.3994 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996
-l18.7002 88.7998h67.7998zM88.7998 239.9c42.1006 0 53.7998 -23.4004 53.7998 -39.7002c0 -25.7002 -16.3994 -49.1006 -72.5 -49.1006h-70.0996l21 88.8008h67.7998zM268.9 239.9c42 0 53.6992 -23.4004 53.6992 -39.7002c0 -25.7002 -16.2998 -49.1006 -70.0996 -49.1006
-h-70.0996l18.6992 88.8008h67.8008zM458.2 293.7c42.0996 0 53.7998 -23.4004 53.7002 -39.7002c0 -25.7002 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM430.2 155.8c42.0996 0 53.7002 -23.3994 53.7002 -39.7002
-c0 -25.6992 -14 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM240.8 102c42.1006 0 53.7998 -23.4004 53.7002 -39.7002c0 -23.3994 -14 -49.0996 -70.0996 -49.0996h-70.1006l18.7002 88.7998h67.7998z" />
-    <glyph glyph-name="blogger" unicode="&#xf37c;" 
-d="M162.4 252c4.7998 4.90039 6.19922 5.09961 36.3994 5.09961c27.2002 0 28.1006 -0.0996094 32.1006 -2.09961c5.7998 -2.90039 8.2998 -7 8.2998 -13.5996c0 -5.90039 -2.40039 -10 -7.60059 -13.4004c-2.7998 -1.7998 -4.5 -1.90039 -31.0996 -2.09961
-c-16.4004 -0.100586 -29.5 0.199219 -31.5 0.799805c-10.2998 2.89941 -14.0996 17.7002 -6.59961 25.2998zM223.8 157.5c55.4004 0 55.1006 0 60.4004 -4.7002c7.39941 -7 5.89941 -19.2998 -3.10059 -24.3994l-9.19922 -1.5l-47.9004 -0.600586
-c-42.2002 -0.5 -54.0996 0.200195 -56.2998 1.2002c-4.40039 1.90039 -8.5 7.2998 -9.2002 12c-0.599609 4.5 1.59961 10.7998 5.09961 13.9004c4.40039 3.89941 6.30078 4.09961 60.2002 4.09961zM447.2 27.4004c-3.5 -28.4004 -23 -50.4004 -51.1006 -57.5
-c-7.19922 -1.80078 -9.69922 -1.90039 -172.899 -1.80078c-157.8 0 -165.9 0.100586 -172 1.80078c-8.40039 2.19922 -15.6006 5.5 -22.2998 10c-5.60059 3.7998 -13.9004 11.7998 -17 16.3994c-3.80078 5.60059 -8.2002 15.2998 -10 22
-c-1.80078 6.7002 -1.90039 9.40039 -1.90039 173.4c0 163.1 0 166.6 1.7998 173.7c6.2998 24.6992 25.9004 43.5996 51.2002 49.1992c7.2998 1.60059 332.1 1.90039 340 0.300781c21.2002 -4.30078 37.9004 -17.1006 47.5996 -36.4004c7.7002 -15.2998 7 1.5 7.30078 -180.6
-c0.199219 -115.801 0 -164.5 -0.700195 -170.5zM361.8 212.6c-1.09961 5 -4.2002 9.60059 -7.7002 11.5c-1.09961 0.600586 -8 1.30078 -15.5 1.7002c-12.3994 0.600586 -13.7998 0.799805 -17.7998 3.10059c-6.2002 3.59961 -7.89941 7.59961 -8 18.2998
-c0 20.3994 -8.5 39.3994 -25.2998 56.5c-12 12.2002 -25.2998 20.5 -40.5996 25.0996c-3.60059 1.10059 -11.8008 1.5 -39.2002 1.7998c-42.9004 0.5 -52.5 -0.399414 -67.1006 -6.19922c-27 -10.7002 -46.2998 -33.4004 -53.3994 -62.4004
-c-1.2998 -5.40039 -1.60059 -14.2002 -1.90039 -64.2998c-0.399414 -62.7998 0 -72.1006 4 -84.5c9.7002 -30.7002 37.1006 -53.4004 64.6006 -58.4004c9.19922 -1.7002 122.199 -2.09961 133.699 -0.5c20.1006 2.7002 35.9004 10.7998 50.7002 25.9004
-c10.7002 10.8994 17.4004 22.7998 21.7998 38.5c3.2002 10.8994 2.90039 88.3994 1.7002 93.8994z" />
-    <glyph glyph-name="blogger-b" unicode="&#xf37d;" 
-d="M446.6 225.3c2 -8.89941 2.40039 -134.1 -2.5 -151.7c-7.09961 -25.2998 -17.8994 -44.3994 -35.1992 -62.0996c-23.9004 -24.4004 -49.4004 -37.5 -81.9004 -41.9004c-18.7002 -2.5 -201.2 -1.89941 -216 0.800781c-44.5 8 -88.7998 44.6992 -104.4 94.2998
-c-6.2998 20.0996 -7 35 -6.39941 136.5c0.5 81 1 95.0996 3.09961 103.899c11.4004 46.8008 42.6006 83.4004 86.1006 100.601c23.5996 9.39941 39 10.7998 108.399 10c44.2002 -0.5 57.4004 -1.10059 63.2998 -2.90039c24.6006 -7.5 46.2002 -20.7998 65.5 -40.5
-c27.1006 -27.5996 40.8008 -58.2998 40.9004 -91.2998c0.0996094 -17.2002 2.7998 -23.5996 12.9004 -29.5c6.39941 -3.7002 8.59961 -4.09961 28.6992 -5c12 -0.5 23.2002 -1.7002 25 -2.7002c5.7002 -3.09961 10.7002 -10.5 12.5 -18.5zM124.5 288.9
-c-12.2002 -12.3008 -6 -36.1006 10.5996 -40.8008c3.10059 -0.799805 24.3008 -1.39941 50.8008 -1.19922c43 0.199219 45.6992 0.399414 50.2998 3.2998c8.5 5.39941 12.2998 12.0996 12.2998 21.5996c0 10.6006 -4.09961 17.2002 -13.4004 21.9004
-c-6.39941 3.2998 -7.89941 3.39941 -51.7998 3.39941c-48.7998 0 -51 -0.299805 -58.7998 -8.19922zM316.3 89.0996c14.4004 8.2002 17 28.1006 4.90039 39.4004c-8.5 7.90039 -8 7.90039 -97.6006 7.7998c-87.0996 -0.0996094 -90.1992 -0.299805 -97.2998 -6.7002
-c-5.59961 -5.09961 -9.2998 -15.0996 -8.2002 -22.3994c1.10059 -7.7002 7.80078 -16.2998 14.9004 -19.4004c3.59961 -1.59961 22.7998 -2.7998 90.9004 -2l77.5 0.900391z" />
-    <glyph glyph-name="buromobelexperte" unicode="&#xf37f;" 
-d="M0 416h128v-128h-128v128zM120 296v112h-112v-112h112zM160 416h128v-128h-128v128zM280 296v112h-112v-112h112zM320 416h128v-128h-128v128zM440 296v112h-112v-112h112zM0 256h128v-128h-128v128zM120 136v112h-112v-112h112zM160 256h128v-128h-128v128zM280 136v112
-h-112v-112h112zM320 256h128v-128h-128v128zM440 136v112h-112v-112h112zM0 96h128v-128h-128v128zM120 -24v112h-112v-112h112zM160 96h128v-128h-128v128zM280 -24v112h-112v-112h112zM320 96h128v-128h-128v128z" />
-    <glyph glyph-name="centercode" unicode="&#xf380;" horiz-adv-x="512" 
-d="M329.2 179.4c-3.7998 -35.2002 -35.4004 -60.6006 -70.6006 -56.8008c-35.1992 3.80078 -60.5996 35.4004 -56.7998 70.6006s35.4004 60.5996 70.6006 56.7998c35.0996 -3.7998 60.5996 -35.4004 56.7998 -70.5996zM243.4 -55.7002
-c-146.7 7.7002 -251.601 138.2 -233.301 279.4c11.2002 86.5996 65.8008 156.899 139.101 192c161 77.0996 349.7 -37.4004 354.7 -216.601c4.09961 -147 -118.4 -262.199 -260.5 -254.8zM423.3 124.3c27.9004 118 -160.5 205.9 -237.2 234.2
-c-57.5 -56.2998 -69.0996 -188.6 -33.7998 -344.4c68.7998 -15.7998 169.101 26.4004 271 110.2z" />
-    <glyph glyph-name="cloudscale" unicode="&#xf383;" 
-d="M318.1 294c6.2002 6.2998 15.8008 -3.09961 9.5 -9.59961l-75.1992 -88.8008c0.899414 -8.19922 -1.80078 -16.7998 -8.10059 -23.0996c-11.0996 -11 -28.8994 -11 -40 0c-11.0996 11.0996 -11.0996 29 0 40c6.2998 6.2998 14.7998 9 23.1006 8.09961l25.1992 20.4004
-c-16.3994 15.2998 -38.3994 24.7002 -62.5996 24.7002c-50.7998 0 -94.5996 -41.4004 -92.5996 -97.4004c-1 6.2998 -1.40039 12.7998 -1.40039 19.4004c0 71.5 57.7998 132.3 129.4 132.3c31.7998 0 60.7998 -14.2998 83.2998 -33.5996zM234.3 182.5
-c5.60059 5.5 5.60059 14.5996 0 20.2002c-5.59961 5.59961 -14.5996 5.59961 -20.2002 0c-5.59961 -5.60059 -5.59961 -14.6006 0 -20.2002c5.60059 -5.5 14.6006 -5.5 20.2002 0zM224 416c123.5 0 224 -100.5 224 -224s-100.5 -224 -224 -224s-224 100.5 -224 224
-s100.5 224 224 224zM224 32c88.2002 0 160 71.7998 160 160s-71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160z" />
-    <glyph glyph-name="cloudsmith" unicode="&#xf384;" horiz-adv-x="332" 
-d="M332.5 28.0996c0 -46.3994 -37.5996 -84.0996 -84 -84.0996s-84 37.7002 -84 84.0996c0 46.4004 37.5996 84 84 84s84 -37.5996 84 -84zM248.5 272c-46.4004 0 -80 -33.5996 -80 -80s-37.5996 -80 -84 -80s-84 33.5996 -84 80s37.5996 88 84 88s76 29.5996 76 76
-s41.5996 84 88 84s80 -37.5996 80 -84s-33.5996 -84 -80 -84z" />
-    <glyph glyph-name="cloudversify" unicode="&#xf385;" horiz-adv-x="616" 
-d="M148.6 144v-0.0996094h-48.8994c-6.40039 0 -11.7002 5.39941 -11.7002 11.7998v40.3994c0 7.60059 7 11.9004 10.7998 11.9004h46.7998v-6.59961c0 -10.7002 8.80078 -16.7002 19.5 -16.7002h20.2002c10.7998 0 19.5 8.7998 19.5 19.5v20.3994
-c0 10.6006 -3.5 19.5 -15.2002 19.5c18.5 15.2002 37.2002 21.4004 45 24.1006c15 56.5 42 92.3994 99.3008 109.7c55.0996 16.5 153.5 3.09961 186.5 -85c73.8994 -22.6006 106.899 -92.6006 92.0996 -155.101c-13 -54.8994 -62.2998 -100.6 -131.5 -99.5
-c-49.5996 -51.3994 -135.2 -48.8994 -186.4 -5.59961c-78.5996 -4.2002 -137.8 42.7998 -146 111.3zM376 136c8.7002 -54.0996 59.7002 -65.5 91.7998 -59.2002c39.1006 7.7002 70.5 37.5 79.7002 76.5c5.7998 24.4004 2.40039 50 -9.40039 72l-10.5 19.6006
-c1.2002 -22.5 -12.5 -60.6006 -47.5 -76.9004c65.5 67.7002 2.10059 141.2 -67.6992 150.5c-49.8008 6.59961 -83.3008 -13 -114.2 -43.7002c48 -4.7002 87.7002 -26.7998 101.8 -74.7998c-30.0996 49.2998 -103 56.5996 -133.6 40.7998
-c-35.5 -18.2002 -60 -54 -57 -93.8994c3.59961 -47.4004 39.5 -67.4004 57.3994 -79.8008c-4.5 21.7002 -4 71.3008 29.2002 92.9004c-36.2998 -60 28.0996 -144.6 135.3 -110.8c-33.5996 14.3994 -66 40.5 -55.2998 86.7998zM128 240h-39.7998
-c-8.90039 0 -16.2002 7.2998 -16.2002 16.2002v39.5996c0 8.90039 7.2998 16.2002 16.2002 16.2002h39.7998c8.90039 0 16.2002 -7.2998 16.2002 -16.2002v-39.5996c0 -8.90039 -7.2998 -16.2002 -16.2002 -16.2002zM10.0996 280c-5.59961 0 -10.0996 4.5 -10.0996 10.0996
-v27.8008c0 5.59961 4.5 10.0996 10.0996 10.0996h27.7002c5.5 0 10.1006 -4.5 10.1006 -10.0996v-27.8008c0 -5.59961 -4.5 -10.0996 -10.1006 -10.0996h-27.7002zM168 305.3v21.4004c0 5.09961 4.2002 9.2998 9.2998 9.2998h21.4004
-c5.09961 0 9.2998 -4.2002 9.2998 -9.2998v-21.4004c0 -5.09961 -4.2002 -9.2998 -9.2998 -9.2998h-21.4004c-5.09961 0 -9.2998 4.2002 -9.2998 9.2998zM56 212.5v-25c0 -6.2998 -5.09961 -11.5 -11.4004 -11.5h-25.1992c-6.30078 0 -11.4004 5.2002 -11.4004 11.5v25
-c0 6.2998 5.09961 11.5 11.4004 11.5h25.0996c6.40039 0 11.5 -5.2002 11.5 -11.5z" />
-    <glyph glyph-name="cpanel" unicode="&#xf388;" horiz-adv-x="640" 
-d="M210.3 227.8c6.60059 -29.0996 -14.5 -65.2998 -51.7002 -65.2998h-32l6.40039 23.7998c1.7998 6.2002 7.2998 10.7998 14.2998 10.7998h10.2998c12.4004 0 20.8008 11.7002 18.3008 22.6006c-2.10059 9.2002 -9.90039 14.7998 -18.3008 14.7998h-19.7998
-l-25.7998 -95.7002c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002l-24.7002 -0.0996094l34.9004 130.1c1.7998 6.40039 7.2002 10.9004 14.2998 10.9004h37c24.1006 0 45.4004 -16.4004 51 -41.2002zM53.7998 199.8c-24.8994 0 -24.7002 -37.3994 0 -37.3994
-h11.2998c4.2002 0 7.60059 -3.90039 6.40039 -8.30078l-7.09961 -26.0996h-12.4004c-33.5 0 -59 31.4004 -50.2998 65.2002c7.2998 27 28.2998 41.0996 51.2002 41.0996h40l-6.2002 -23.5996c-1.90039 -6.5 -7.40039 -10.9004 -14.2998 -10.9004h-18.6006zM301.3 234.6
-c18.7998 0 33.2998 -17.5996 28.5 -36.7998l-14 -51.7998c-2.7998 -10.5996 -12.2002 -17.7998 -23.3994 -17.7998l-57.5 0.200195c-42.9004 0 -38.5 63.7998 0.699219 63.7998h48.4004l-3.5 -13.2002c-1.90039 -6.2002 -7.40039 -10.7998 -14.2002 -10.7998h-21.5996
-c-5.2998 0 -5.2998 -7.90039 0 -7.90039h34.8994c4.60059 0 5.10059 3.90039 5.5 5.2998l8.60059 31.8008c0.299805 1 1.89941 5.2998 -2.10059 5.2998h-57.5c-9.69922 0 -16.5996 8.89941 -14.1992 18.5l3.5 13.3994h77.8994zM633.1 269c4.5 0 7.7002 -4 6.5 -8.2998
-l-26.5 -98.2002c-5.09961 -20.7002 -24.1992 -34.5 -44.8994 -34.5l35.5996 133.1c1.2002 4.7002 5.5 7.90039 10.4004 7.90039h18.8994zM396.8 234.3c34.4004 0 59.2998 -32.2998 50.2998 -65.3994l-8.7998 -33.1006c-1.2002 -4.89941 -5.7002 -7.7998 -10.2998 -7.7998
-h-19.0996c-4.5 0 -7.60059 4 -6.40039 8.2998l10.5996 40c3.30078 11.6006 -5.59961 23.4004 -18.0996 23.4004h-19.7998l-17.2002 -64c-1.2002 -4.7998 -5.59961 -7.7998 -10.4004 -7.7998h-18.8994c-4.2002 0 -7.60059 3.89941 -6.40039 8.2998l26.2002 98h48.2998
-v0.0996094zM495.1 159.7h73.3008l-5.7002 -21c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002h-66.7002c-20 0 -33.2998 19 -28.2998 36.7002l10.7998 40c4.7998 17.5996 20.7002 29.5996 38.6006 29.5996h47.2998c19 0 33.2002 -17.7002 28.2998 -36.7998
-l-3.2002 -12c-2.89941 -11 -12.7002 -17.5996 -23.2002 -17.5996h-53.3994l3.5 13c1.59961 6.19922 7.2002 10.7998 14.2002 10.7998h21.5996c2 0 3.2998 1 3.90039 3l0.699219 2.59961c0.700195 2.7002 -1.2998 5.10059 -3.89941 5.10059h-32.9004
-c-4.09961 0 -6.89941 -2.10059 -7.7998 -6l-8 -30c-0.900391 -3.30078 1.5 -6.7002 5.09961 -6.7002z" />
-    <glyph glyph-name="css3-alt" unicode="&#xf38b;" horiz-adv-x="384" 
-d="M0 416h384l-34.9004 -395.8l-157.1 -52.2002l-157.1 52.2002zM313.1 336h-242.199l5.7998 -47.2998h122.899l-6.5 -2.7002l-112.1 -46.7002l3.59961 -46.2998l0.200195 0.0996094v-0.0996094l166.3 -0.5l-3.69922 -61.5996l-54.7002 -15.4004l-52.6006 13.2998
-l-3.19922 38.2998h-48.9004l6.40039 -73.8994l98.7998 -29.2002l98.2002 28.7002l12.7998 146.6h-111.5l0.299805 0.100586l115.3 49.2998z" />
-    <glyph glyph-name="cuttlefish" unicode="&#xf38c;" horiz-adv-x="440" 
-d="M344 142.5c13.7002 -50.9004 41.7002 -93.2998 87 -117.8c-45.2998 -49.6006 -110.5 -80.7002 -183 -80.7002c-137 0 -248 111 -248 248s111 248 248 248c72.5 0 137.7 -31.0996 183 -80.7002c-45.2998 -24.5 -73.2998 -66.8994 -87 -117.8
-c-17.5 31.5996 -57.4004 54.5 -96 54.5c-56.5996 0 -104 -47.4004 -104 -104s47.4004 -104 104 -104c38.5996 0 78.5 22.9004 96 54.5z" />
-    <glyph glyph-name="d-and-d" unicode="&#xf38d;" horiz-adv-x="576" 
-d="M82.5 349.1c-0.599609 17.2002 2 33.8008 12.7002 48.2002c0.299805 -7.39941 1.2002 -14.5 4.2002 -21.5996c5.89941 27.5 19.6992 49.2998 42.2998 65.5c-1.90039 -5.90039 -3.5 -11.7998 -3 -17.7002c8.7002 7.40039 18.7998 17.7998 44.3994 22.7002
-c14.7002 2.7998 29.7002 2 42.1006 -1c38.5 -9.2998 61 -34.2998 69.7002 -72.2998c5.2998 -23.1006 0.699219 -45 -8.30078 -66.4004c-5.19922 -12.4004 -12 -24.4004 -20.6992 -35.0996c-2 1.89941 -3.90039 3.7998 -5.80078 5.59961
-c-42.7998 40.7998 -26.7998 25.2002 -37.3994 37.4004c-1.10059 1.19922 -1 2.19922 -0.100586 3.59961c8.30078 13.5 11.8008 28.2002 10 44c-1.09961 9.7998 -4.2998 18.9004 -11.2998 26.2002c-14.5 15.2998 -39.2002 15 -53.5 -0.600586
-c-11.3994 -12.5 -14.0996 -27.3994 -10.8994 -43.5996c0.199219 -1.2998 0.399414 -2.7002 0 -3.90039c-3.40039 -13.6992 -4.60059 -27.5996 -2.5 -41.5996c0.0996094 -0.5 0.0996094 -1.09961 0.0996094 -1.59961c0 -0.300781 -0.0996094 -0.5 -0.200195 -1.10059
-c-21.7998 11 -36 28.2998 -43.2002 52.2002c-8.2998 -17.7998 -11.0996 -35.5 -6.59961 -54.0996c-15.5996 15.1992 -21.2998 34.2998 -22 55.1992zM552.1 225.9c0.5 -0.600586 1.2002 -1 1.7002 -1.40039v-0.5c-15 3.59961 -29.7998 1.7998 -44.5 -1.2998
-c-9.2998 -2 -18.2998 -4.7002 -26.7002 -9c-2.89941 -1.5 -5.69922 -3.2998 -8 -4.7002c-5.7998 2.40039 -11.2998 5.5 -17.1992 6.7998c-24.5 5.2998 -45.8008 -1.2002 -62.5 -20c-19.7002 -22.2002 -34.5 -47.5996 -46.7002 -74.5l-1.2002 -2.7002
-c-0.0996094 -0.199219 -0.200195 -0.299805 -0.400391 -0.399414c-12.0996 8.2998 -21.5996 20.2998 -36.0996 25.5996c0.299805 0.400391 0.400391 0.900391 0.700195 1.2998c20.5996 28.2002 44.8994 52.5 75.0996 70.4004c16 9.5 33 16.0996 51.5 18.5
-c1.7998 0.200195 3.5 0.400391 5.2998 1.09961c-4.39941 0 -8.7998 0.300781 -13.0996 -0.0996094c-21.2002 -1.90039 -40.5 -9.59961 -58.7002 -20.2002c-13.7998 -8 -26.2002 -17.7002 -36.5996 -29.7998c-0.400391 -0.5 -0.600586 -1.09961 -0.900391 -1.7002
-c-0.299805 0.299805 -0.700195 0.600586 -1 0.900391c11 30.8994 30.7002 55 57.7002 73.2998c0.200195 -0.200195 0.5 -0.299805 0.700195 -0.5c-1.2002 -1.7002 -2.5 -3.2998 -3.5 -5.09961c-1.7998 -3.30078 -3.7002 -6.5 -5.10059 -10
-c-1.7998 -4.30078 1.60059 -8.60059 12 -0.5c18.2002 14.0996 29.6006 26.2998 48.9004 29.5996c0.700195 0.0996094 1.2998 0.299805 1.90039 0.299805h2.5c-1 -0.700195 -1.60059 -1.09961 -2.2002 -1.5c-11.6006 -7.7998 -11.7998 -7.39941 -15 -12
-c-2.60059 -3.7002 -0.200195 -8 4.7002 -6.7998c2.59961 0.599609 5.19922 1.2998 7.69922 2.2002c9.40039 3.2998 19 5.7998 29 6.39941c13.9004 0.800781 27.1006 -1.89941 39.9004 -7.09961c15.0996 -6.2002 28.5 -15 40.0996 -26.5996zM316.7 50.4004
-c1.5 -1.30078 1.89941 -2.40039 0.899414 -4.2002c-25.2998 -50.2002 -61.0996 -89.1006 -116 -98.7998c-26.7998 -4.7002 -52.8994 -2.7002 -77.8994 8.59961c-18.5 8.2002 -34.6006 19.5996 -47.2002 35.5996c-2 2.60059 -3.7002 5.40039 -5.90039 8.60059
-c-0.699219 -7.7998 0.100586 -14.9004 1.5 -21.9004c-0.199219 -0.200195 -0.399414 -0.299805 -0.599609 -0.5c-3.2002 3.40039 -6.59961 6.60059 -9.5 10.2998c-12.2002 15.5 -19.5 33.3008 -24.0996 52.3008c-11.8008 48.2998 -0.5 78.7998 7.7998 101.1
-c-8.7002 -4.7998 -16.2002 -10.2998 -23.6006 -16.2002c11.6006 32.7998 31.9004 59.9004 56.1006 84.6006c2.39941 -2.10059 3.2998 -4.7002 3 -7.40039c-0.200195 -1 -5.90039 -38.9004 -5.60059 -44.7002c18.9004 18.9004 40.5 33.2998 64.8008 43.9004
-c-7.5 -11.1006 -11 -23.4004 -11.8008 -37.2998c13.4004 12.1992 27.7002 20.0996 46.4004 13.8994c-8.5 -9.09961 -30.7998 -30.5 -38.5996 -64.2998c-5.10059 -21.9004 -3.80078 -43.0996 8.19922 -62.5996c11.2002 -18.3008 27.8008 -27.8008 49.4004 -27.8008
-c12.5996 0 23.7998 5 34.0996 11.8008c18.5 12.2998 32.8008 28.5 44 47.5996c1.90039 3.2002 1.10059 2.09961 1.90039 3c19.9004 -16.0996 3.2998 -2.59961 42.7002 -35.5996zM488.7 96.7998c20.2002 -6.59961 35.5 -18.7998 43.7998 -38.8994
-c9.2002 -23.1006 2.09961 -49.4004 -17.4004 -66c-16.3994 -14 -35.6992 -19.2002 -57 -17.4004c-0.599609 0 -1.19922 0 -1.89941 -0.299805c15.0996 -10.7002 31.5996 -15.2002 50.8994 -10.6006c-2.19922 -2.39941 -3.89941 -4.69922 -5.89941 -6.5
-c-12.2998 -10.8994 -26.9004 -16.8994 -42.9004 -19.7998c-39.5996 -7.2998 -75.5996 12.7998 -85 56.9004c-0.5 2.09961 -0.599609 4.2002 -0.899414 6.39941c-10.8008 -8.19922 -16.4004 -34.0996 -0.700195 -52.2998c-1.60059 0.5 -2.60059 0.700195 -3.60059 1.10059
-c-21.2998 8.2998 -34.3994 28.2998 -33.5 51.1992c0.900391 23.2002 4.90039 41 -13 56c-16.5 13.8008 -33 27.4004 -49.5 41.1006c-8.09961 6.7002 -14.7998 14.5 -17 25.0996c-1 4.60059 -1.39941 9.40039 -1.7998 14.1006c-0.5 6.09961 -3.2998 11 -7.89941 14.7998
-c-4.5 3.89941 -9.30078 7.39941 -13.8008 11.2002c-8.89941 7.5 -12.2998 18.8994 -7.2998 29.8994c2.7998 -12.8994 9.60059 -18.8994 22.6006 -20.2998c4.39941 -0.5 8.89941 -0.799805 13.2998 -1.5c8.09961 -1.2002 12.7998 -6.09961 14.2998 -14.2002
-c0.700195 -3.39941 1.2998 -6.7998 2.2002 -10.2002c1.59961 -5.59961 4.5 -8 10.3994 -8.39941c4.60059 -0.299805 9.30078 -0.5 13.9004 -0.900391c7.59961 -0.599609 14.2002 -3.7998 20.0996 -8.7002c19.4004 -16.1992 39 -32.1992 58.5 -48.2998
-c5.7002 -4.7002 12 -8.2002 19.6006 -8.5c16.7002 -0.599609 29 15.2002 24.7998 31.7998c-0.200195 0.700195 -0.400391 1.5 -0.0996094 2.80078c2.39941 -2 4.89941 -3.80078 7 -5.90039c14.0996 -14 18.0996 -39.2998 8.69922 -56.0996
-c-2.09961 -3.80078 -5.2998 -7.10059 -8.09961 -10.8008c0.700195 -0.199219 1.7998 -0.5 3 -0.599609c14 -1.40039 27.2002 1 38.9004 9.09961c15.7998 10.9004 18 31.2002 5.39941 45.6006c-4.7002 5.39941 -8.89941 8 -18.7998 12
-c6.5 1.2998 19.2002 0.200195 28.7002 -2.90039zM99.4004 268.7c-5.30078 9.2002 -13.2002 15.5996 -22.1006 21.2998c13.7002 0.5 26.6006 -0.200195 39.6006 -3.7002c-7 12.2002 -8.5 24.7002 -5 38.7002c5.2998 -11.9004 13.6992 -20.0996 23.5996 -26.7998
-c19.7002 -13.2002 35.7002 -19.6006 46.7002 -30.2002c3.39941 -3.2998 6.2998 -7.09961 9.59961 -10.9004c-0.799805 2.10059 -1.39941 4.10059 -2.2002 6c-5 10.6006 -13 18.6006 -22.5996 25c-1.7998 1.2002 -2.7998 2.5 -3.40039 4.5
-c-3.2998 12.5 -3 25.1006 -0.699219 37.6006c1 5.5 2.7998 10.8994 4.5 16.2998c0.799805 2.40039 2.2998 4.59961 4 6.59961c0.599609 -6.89941 0 -25.5 19.5996 -46c10.7998 -11.2998 22.4004 -21.8994 33.9004 -32.6992c9 -8.5 18.2998 -16.7002 25.5 -26.8008
-c1.09961 -1.59961 2.19922 -3.2998 3.7998 -4.69922c-5 13 -14.2002 24.0996 -24.2002 33.7998c-9.59961 9.2998 -19.4004 18.3994 -29.2002 27.3994c-3.2998 3 -4.59961 6.7002 -5.09961 10.9004c-1.2002 10.4004 0 20.5996 4.2998 30.2002c0.5 1 1.09961 2 1.90039 3.2998
-c0.5 -4.2002 0.599609 -7.90039 1.39941 -11.5996c4.7998 -23.1006 20.4004 -36.3008 49.2998 -63.5c10 -9.40039 19.3008 -19.2002 25.6006 -31.6006c4.7998 -9.2998 7.2998 -19 5.7002 -29.5996c-0.100586 -0.600586 0.5 -1.7002 1.09961 -2
-c6.2002 -2.60059 10 -6.90039 9.7002 -14.2998c7.7002 2.59961 12.5 8 16.3994 14.5c4.2002 -20.2002 -9.09961 -50.3008 -27.1992 -58.7002c0.399414 4.5 5 23.3994 -16.5 27.7002c-6.80078 1.2998 -12.8008 1.2998 -22.9004 2.09961c4.7002 9 10.4004 20.5996 0.5 22.4004
-c-24.9004 4.59961 -52.7998 -1.90039 -57.7998 -4.60059c8.2002 -0.399414 16.2998 -1 23.5 -3.2998c-2 -6.5 -4 -12.7002 -5.7998 -18.9004c-1.90039 -6.5 2.09961 -14.5996 9.2998 -9.59961c1.2002 0.900391 2.2998 1.90039 3.2998 2.7002
-c-3.09961 -17.9004 -2.90039 -15.9004 -2.7998 -18.2998c0.299805 -10.2002 9.5 -7.80078 15.7002 -7.30078c-2.5 -11.7998 -29.5 -27.2998 -45.4004 -25.7998c7 4.7002 12.7002 10.2998 15.9004 17.9004c-6.5 -0.799805 -12.9004 -1.60059 -19.2002 -2.40039
-l-0.299805 0.900391c4.69922 3.39941 8 7.7998 10.1992 13.0996c8.7002 21.1006 -3.59961 38 -25 39.9004c-9.09961 0.799805 -17.7998 -0.799805 -25.8994 -5.5c6.2002 15.5996 17.2002 26.5996 32.5996 34.5c-15.2002 4.2998 -8.89941 2.7002 -24.5996 6.2998
-c14.5996 9.2998 30.2002 13.2002 46.5 14.5996c-5.2002 3.2002 -48.1006 3.60059 -70.2002 -20.8994c7.90039 -1.40039 15.5 -2.7998 23.2002 -4.2002c-23.7998 -7 -44 -19.7002 -62.4004 -35.5996c1.10059 4.7998 2.7002 9.5 3.2998 14.2998
-c0.600586 4.5 0.800781 9.2002 0.100586 13.5996c-1.5 9.40039 -8.90039 15.1006 -19.7002 16.2998c-7.90039 0.900391 -15.5996 -0.0996094 -23.2998 -1.2998c-0.900391 -0.0996094 -1.7002 -0.299805 -2.90039 0c15.7998 14.7998 36 21.7002 53.1006 33.5
-c6 4.5 6.7998 8.2002 3 14.9004zM227.8 241.9c3.2998 -16 12.6006 -25.5 23.7998 -24.3008c-4.59961 11.3008 -12.0996 19.5 -23.7998 24.3008z" />
-    <glyph glyph-name="deploydog" unicode="&#xf38e;" horiz-adv-x="512" 
-d="M382.2 312h51.7002v-239.6h-51.7002v20.6992c-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.3008 38.0996 -44.3008 71.7998c0 29.7998 14.8008 57.8994 43.3008 70.7998c20.1992 9.09961 52.6992 10.5996 74.7998 -12.9004v103.9z
-M317.5 150.2c0 -18.2002 13.5996 -33.5 33.2002 -33.5c19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.6006 0 -33.2002 -16.3994 -33.2002 -32.5996zM188.5 312h51.7002v-239.6h-51.7002v20.6992
-c-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.2998 38.0996 -44.2998 71.7998c0 29.7998 14.7998 57.8994 43.2998 70.7998c20.2002 9.09961 52.7002 10.5996 74.7998 -12.9004v103.9zM123.8 150.2c0 -18.2002 13.6006 -33.5 33.2002 -33.5
-c19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.7002 0 -33.2002 -16.3994 -33.2002 -32.5996zM448 352h-384c-17.5996 0 -32 -14.5 -32 -32v-256c0 -17.5996 14.5 -32 32 -32h384c17.5996 0 32 14.5 32 32v256
-c0 17.5996 -14.5 32 -32 32zM448 384c35.2002 0 64 -28.7998 64 -64v-256c0 -35.2002 -28.7998 -64 -64 -64h-384c-35.2002 0 -64 28.7998 -64 64v256c0 35.2002 28.7998 64 64 64h384z" />
-    <glyph glyph-name="deskpro" unicode="&#xf38f;" horiz-adv-x="480" 
-d="M205.9 -64l31.0996 38.4004c12.2998 0.199219 25.5996 1.39941 36.5 6.59961c38.9004 18.5996 38.4004 61.9004 38.2998 63.7998c-0.0996094 5 -0.799805 4.40039 -28.8994 37.4004h79.0996c-0.200195 -50.1006 -7.2998 -68.5 -10.2002 -75.7002
-c-9.39941 -23.7002 -43.8994 -62.7998 -95.2002 -69.4004c-8.69922 -1.09961 -32.7998 -1.19922 -50.6992 -1.09961zM406.3 103.7l-119.2 -0.100586l17.4004 31.3008l175.5 -0.300781c-15.2002 -17.2998 -35.0996 -30.8994 -73.7002 -30.8994zM362.7 327.6v-168.3h-73.5
-l-32.7002 -55.5h-6.5c-52.2998 0 -58.0996 56.5 -58.2998 58.9004c-1.2002 13.2002 -21.2998 11.5996 -20.1006 -1.7998c1.40039 -15.8008 8.80078 -40 26.4004 -57.1006h-91c-25.5 0 -110.8 26.7998 -107 114v213.3c0 16 9.7002 16.6006 15 16.8008h82
-c0.200195 0 0.299805 -0.100586 0.5 -0.100586c4.2998 0.400391 50.0996 2.10059 50.0996 -43.7002c0 -13.2998 20.2002 -13.3994 20.2002 0c0 18.2002 -5.5 32.8008 -15.7998 43.7002h84.2002c108.7 0.400391 126.5 -79.3994 126.5 -120.2zM230.2 271.6l64 -29.2998
-c13.2998 45.5 -42.2002 71.7002 -64 29.2998z" />
-    <glyph glyph-name="digital-ocean" unicode="&#xf391;" horiz-adv-x="512" 
-d="M87 -33.7998v73.5996h73.7002v-73.5996h-73.7002zM25.4004 101.4h61.5996v-61.6006h-61.5996v61.6006zM491.6 271.1c53.2002 -170.3 -73 -327.1 -235.6 -327.1v95.7998h0.299805v0.299805c101.7 0.200195 180.5 101 141.4 208
-c-14.2998 39.6006 -46.1006 71.4004 -85.7998 85.7002c-107.101 38.7998 -208.101 -39.8994 -208.101 -141.7h-95.7998c0 162.2 156.9 288.7 327 235.601c74.2002 -23.2998 133.6 -82.4004 156.6 -156.601zM256.3 40.0996h-0.299805v-0.299805h-95.2998v95.6006h95.5996
-v-95.3008z" />
-    <glyph glyph-name="discord" unicode="&#xf392;" 
-d="M297.216 204.8c0 -15.6162 -11.5195 -28.416 -26.1123 -28.416c-14.3359 0 -26.1113 12.7998 -26.1113 28.416s11.5195 28.416 26.1113 28.416c14.5928 0 26.1123 -12.7998 26.1123 -28.416zM177.664 233.216c14.5918 0 26.3682 -12.7998 26.1123 -28.416
-c0 -15.6162 -11.5205 -28.416 -26.1123 -28.416c-14.3359 0 -26.1123 12.7998 -26.1123 28.416s11.5205 28.416 26.1123 28.416zM448 395.264v-459.264c-64.4941 56.9941 -43.8682 38.1279 -118.784 107.776l13.5684 -47.3604h-290.304
-c-28.9287 0 -52.4805 23.5518 -52.4805 52.7363v346.111c0 29.1846 23.5518 52.7363 52.4805 52.7363h343.039c28.9287 0 52.4805 -23.5518 52.4805 -52.7363zM375.04 152.576c0 82.4316 -36.8643 149.248 -36.8643 149.248
-c-36.8643 27.6475 -71.9355 26.8799 -71.9355 26.8799l-3.58398 -4.0957c43.5195 -13.3125 63.7441 -32.5127 63.7441 -32.5127c-60.8115 33.3291 -132.244 33.335 -191.232 7.42383c-9.47168 -4.35156 -15.1035 -7.42383 -15.1035 -7.42383
-s21.2471 20.2246 67.3271 33.5361l-2.55957 3.07227s-35.0723 0.767578 -71.9355 -26.8799c0 0 -36.8643 -66.8164 -36.8643 -149.248c0 0 21.5039 -37.1201 78.0801 -38.9121c0 0 9.47168 11.5195 17.1514 21.248c-32.5117 9.72754 -44.7998 30.208 -44.7998 30.208
-c3.7666 -2.63574 9.97656 -6.05273 10.4961 -6.40039c43.21 -24.1973 104.588 -32.126 159.744 -8.95996c8.95996 3.32812 18.9443 8.19238 29.4395 15.1045c0 0 -12.7998 -20.9922 -46.3359 -30.4639c7.68066 -9.72852 16.8965 -20.7363 16.8965 -20.7363
-c56.5762 1.79199 78.3359 38.9121 78.3359 38.9121z" />
-    <glyph glyph-name="discourse" unicode="&#xf393;" 
-d="M225.9 416c122.699 0 222.1 -102.3 222.1 -223.9c0 -121.6 -99.4004 -223.899 -222.1 -223.899l-225.801 -0.200195s-0.0996094 224 -0.0996094 227.9c0 121.6 103.3 220.1 225.9 220.1zM224 64c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128
-s-128 -57.2998 -128 -128c0 -22.0996 5.59961 -42.9004 15.4004 -61l-22.9004 -75l81.0996 20.0996c16.5 -7.7998 35 -12.0996 54.4004 -12.0996z" />
-    <glyph glyph-name="dochub" unicode="&#xf394;" horiz-adv-x="416" 
-d="M397.9 288h-141.9v140.4zM304 256h96v-126.1c0 -129.301 -70.2998 -193.9 -210.8 -193.9h-189.2v512h189.2c12.2002 0 23.7002 -1.09961 34.5996 -3.2998v-84c-10 1.7002 -21.0996 2.5 -33.0996 2.5h-94.7002v-337.3h94.7002c76.7998 0 113.3 33.2998 113.3 100.1v130z
-" />
-    <glyph glyph-name="docker" unicode="&#xf395;" horiz-adv-x="640" 
-d="M349.9 211.7h-66.1006v59.3994h66.1006v-59.3994zM349.9 416v-60.7002h-66.1006v60.7002h66.1006zM428.1 271.2v-59.4004h-66.0996v59.4004h66.0996zM271.8 343.3v-60.0996h-66.0996v60.0996h66.0996zM349.9 343.3v-60.0996h-66.1006v60.0996h66.1006zM626.7 243.3
-l13.2998 -8.89941c-1.90039 -3.90039 -7 -14.6006 -8.5 -17.1006c-23.7002 -45.2998 -69.9004 -45.5996 -91.2998 -45.2002c-54.5 -131.699 -171 -204.199 -328.4 -204.199c-72.7002 0 -128.3 22.2998 -165.399 66.1992c-38.2002 45.3008 -52.7002 111.301 -44 162.101
-h434.699c22.6006 -0.400391 39.7002 6 48.4004 10.7002c-19.7002 30.1992 -14.7002 76 3.7002 103.8l9.2998 14l14 -9.2998c24.4004 -18.8008 37.7998 -39.7002 41.0996 -63.7002c25.5 4.7998 58.7002 1.2998 73.1006 -8.40039zM115.6 271.2h0.100586v-59.4004h-66.1006
-v59.4004h66zM193.7 271.2v-59.4004h-66.1006v59.4004h66.1006zM271.8 271.2v-59.4004h-66.0996v59.4004h66.0996zM193.7 343.3v-60.0996h-66.1006v60.0996h66.1006z" />
-    <glyph glyph-name="draft2digital" unicode="&#xf396;" horiz-adv-x="480" 
-d="M480 49.9004l-144 -81.9004v64.2002l-336 -0.100586c18.2998 19.1006 84.5 87.8008 161.1 174.801c32.6006 37.1992 78 83.2998 69.7002 127.6c-5.2998 28.2998 -42.2002 50.7998 -83.2998 33.5c-8.59961 -3.59961 -24.5 -17.4004 -26.2998 -24.7002
-c28.2998 -4.7002 48 -29.7002 48 -56.7998c0 -31.7002 -25.6006 -57.4004 -57.2998 -57.4004c-37.3008 0 -62.2002 34.1006 -56.7002 67.1006c1.2002 7.89941 5.09961 26.7998 18.2002 47.7002c14.8994 23.8994 45.1992 54.8994 104.3 67.2998
-c103.8 21.7002 161.6 -36.6006 166 -41.2002c28.8994 -29.9004 48 -90.7002 12.7998 -153.3c-30 -53.4004 -81 -114.3 -111.8 -149.3h91.2998v64.6992zM369.9 77v-54.4004l47.0996 27.2002zM134.2 286.6c0 12.3008 -10 22.4004 -22.4004 22.4004
-c-12.3994 0 -22.3994 -10 -22.3994 -22.4004c0 -12.3994 10 -22.3994 22.3994 -22.3994c12.4004 0 22.4004 10 22.4004 22.3994zM82.5 67.5h114.4c17.5996 19.2002 91.5 100.8 128.5 166.7c36.5996 65.0996 -5.80078 113.3 -5.80078 113.3
-c-14.1992 14.9004 -36.8994 36.2002 -82.1992 38.2998c6.7998 -5.5 16.8994 -16.8994 24.2998 -35.7002c11.8994 -30.2998 6.7002 -69.5996 -28.4004 -112.699c-53.0996 -65.2002 -125.2 -142.5 -150.8 -169.9z" />
-    <glyph glyph-name="dribbble-square" unicode="&#xf397;" 
-d="M90.2002 219.8c8.89941 42.4004 37.3994 77.7002 75.7002 95.7002c3.59961 -4.90039 28 -38.7998 50.6992 -79c-64 -17 -120.3 -16.7998 -126.399 -16.7002zM314.6 294c-2.5 -3.5 -23 -31.0996 -71.5996 -49.4004c-22.4004 41.1006 -47.2002 74.9004 -51 80
-c43.2998 10.5 89 -0.799805 122.6 -30.5996zM140.1 84c14.3008 29.2002 53 66.7998 108.101 85.5996c19.2002 -49.7998 27.2002 -91.5996 29.2002 -103.6c-44 -18.7002 -96.8008 -13.5996 -137.301 18zM238.9 192.2c-49.4004 -13.9004 -94.3008 -53.9004 -116.5 -91.7998
-c-21.8008 24.2998 -35.1006 56.2998 -35.1006 91.3994c0 1.40039 0.100586 2.7998 0.100586 4.2002c6 -0.200195 72.1992 -1 140.399 19.4004c3.90039 -7.7002 7.7002 -15.4004 11.1006 -23.2002zM273.8 175.9c42.7998 6.89941 80.5 -4.30078 85.1006 -5.80078
-c-6.10059 -38 -27.9004 -70.8994 -58.6006 -91.5996c-1.39941 8.2998 -8.59961 48.2998 -26.5 97.4004zM253.5 224.3c50.5 20.7002 73.4004 50 76.2998 53.9004c19.1006 -23.2002 30.6006 -52.7998 30.9004 -85.1006c-4.5 1 -49.7002 10.1006 -95.2002 4.40039
-c-3.7002 9 -7.2002 17 -12 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 192c0 88.2002 -71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160
-s160 71.7998 160 160z" />
-    <glyph glyph-name="dyalog" unicode="&#xf399;" horiz-adv-x="416" 
-d="M0 416h171.2c74.5 0 137.7 -24 182.5 -69.5996c40.2002 -40.9004 62.2998 -95.6006 62.2998 -154.301c0 -111.399 -84.0996 -224.1 -244.8 -224.1h-171.2v64h171.2c122.2 0 180.8 84 180.8 160.1c0 79.7002 -67.4004 159.9 -180.8 159.9h-107.2v-55.2002h-64v119.2z" />
-    <glyph glyph-name="earlybirds" unicode="&#xf39a;" horiz-adv-x="480" 
-d="M313.2 400.5c1.2002 13 21.2998 14 36.5996 8.7002c0.900391 -0.299805 26.2002 -9.7002 19 -15.2002c-27.8994 7.40039 -56.3994 -18.2002 -55.5996 6.5zM112.2 393.6c-7.7998 6.2002 19.8994 16.4004 20.8994 16.7002c16.8008 5.7002 38.9004 4.60059 40.2002 -9.59961
-c0.900391 -27.1006 -30.3994 1 -61.0996 -7.10059zM319.4 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16c-8.80078 0 -16 7.2002 -16 16s7.19922 16 16 16zM159.7 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z
-M478.2 124.8c-9.90039 -24 -40.7002 -11 -63.9004 1.2002c-13.5 -69.0996 -58.0996 -111.4 -126.3 -124.2c0.299805 -0.899414 -2 0.100586 24 -1c33.5996 -1.39941 63.7998 3.10059 97.4004 8c-19.8008 13.7998 -11.4004 37.1006 -9.80078 38.1006
-c1.40039 0.899414 14.7002 -1.7002 21.6006 -11.5c8.59961 12.5 28.3994 14.7998 30.2002 13.5996c1.59961 -1.09961 6.59961 -20.9004 -6.90039 -34.5996c4.7002 0.899414 8.2002 1.59961 9.7998 2.09961c2.60059 0.799805 17.7002 -11.2998 3.10059 -13.2998
-c-14.3008 -2.2998 -22.6006 -5.10059 -47.1006 -10.7998c-45.8994 -10.7002 -85.8994 -11.8008 -117.7 -12.8008l1 -11.5996c3.80078 -18.0996 -23.3994 -24.2998 -27.5996 -6.2002c0.799805 -17.8994 -27.0996 -21.7998 -28.4004 1l-0.5 -5.2998
-c-0.699219 -18.4004 -28.3994 -17.9004 -28.2998 0.599609c-7.5 -13.5 -28.0996 -6.7998 -26.3994 8.5l1.19922 12.4004c-36.6992 -0.900391 -59.6992 -3.09961 -61.7998 -3.09961c-20.8994 0 -20.8994 31.5996 0 31.5996c2.40039 0 27.7002 -1.2998 63.2002 -2.7998
-c-61.0996 15.5 -103.7 55 -114.9 118.2c-25 -12.8008 -57.5 -26.8008 -68.1992 -0.800781c-10.5 25.4004 21.5 42.6006 66.7998 73.4004c0.700195 6.59961 1.59961 13.2998 2.7002 19.7998c-14.4004 19.6006 -11.6006 36.2998 -16.1006 60.4004
-c-16.7998 -2.40039 -23.2002 9.09961 -23.5996 23.0996c0.299805 7.2998 2.09961 14.9004 2.39941 15.4004c1.10059 1.7998 10.1006 2 12.7002 2.59961c6 31.7002 50.6006 33.2002 90.9004 34.5c19.7002 21.7998 45.2002 41.5 80.8994 48.2998
-c-15.2998 19.4004 -3.39941 39.9004 -2.39941 40.4004c1.7002 0.799805 21.2002 -4.2998 26.2998 -23.2002c5.2002 8.7998 18.2998 11.4004 19.5996 10.7002c1.10059 -0.599609 6.40039 -15 -4.89941 -25.9004c40.2998 -3.5 72.2002 -24.6992 96 -50.6992
-c36.0996 -1.5 71.7998 -5.90039 77.0996 -34c2.7002 -0.600586 11.6006 -0.800781 12.7002 -2.60059c0.299805 -0.5 2.09961 -8.09961 2.40039 -15.3994c-0.5 -13.9004 -6.80078 -25.4004 -23.6006 -23.1006c-3.2002 -17.2998 -2.7002 -32.8994 -8.7002 -47.7002
-c2.40039 -11.6992 4 -23.7998 4.80078 -36.3994c37 -25.4004 70.2998 -42.5 60.2998 -66.9004zM207.4 288.1c0.899414 44 -37.9004 42.2002 -78.6006 40.3008c-21.7002 -1 -38.8994 -1.90039 -45.5 -13.9004c-11.3994 -20.9004 5.90039 -92.9004 23.2002 -101.2
-c9.7998 -4.7002 73.4004 -7.89941 86.2998 7.10059c8.2002 9.39941 15 49.3994 14.6006 67.6992zM259.4 229.8c-4.30078 12.4004 -6 30.1006 -15.3008 32.7002c-2 0.5 -9 0.5 -11 0c-10 -2.7998 -10.7998 -22.0996 -17 -37.2002c15.4004 0 19.3008 -9.7002 23.7002 -9.7002
-c4.2998 0 6.2998 11.3008 19.6006 14.2002zM395.1 314.5c-6.59961 12.0996 -24.7998 12.9004 -46.5 13.9004c-40.1992 1.89941 -78.1992 3.7998 -77.2998 -40.3008c-0.5 -18.2998 5 -58.2998 13.2002 -67.7998c13 -14.8994 76.5996 -11.7998 86.2998 -7.09961
-c15.7998 7.59961 36.5 78.8994 24.2998 101.3z" />
-    <glyph glyph-name="erlang" unicode="&#xf39d;" horiz-adv-x="640" 
-d="M87.2002 394.5c-41.5 -50.2002 -65.6006 -116.2 -65.5 -192.9c-0.100586 -86.7998 29 -159.5 78.7002 -212.1h-100.4v405h87.2002zM325.4 384.8c46.1992 -0.0996094 79.5996 -33.5 80.6992 -83.2002h-169.899c4.09961 49.7002 43.2998 83.1006 89.2002 83.2002z
-M556.1 394.4h0.300781l-0.100586 0.0996094zM556.4 394.4h83.5996v-405h-80.7998c21.3994 23 40.5 49.8994 57.8994 80.7998l-96.3994 48.2002c-33.9004 -55.1006 -83.4004 -105.801 -151.9 -106.101c-99.7002 0.400391 -138.8 85.6006 -138.6 195.3h372.399
-c0.5 12.4004 0.5 18.1006 0 24.1006c2.5 65.2002 -14.7998 120 -46.1992 162.7z" />
-    <glyph glyph-name="facebook-f" unicode="&#xf39e;" horiz-adv-x="320" 
-d="M279.14 160h-74.6895v-224h-100.17v224h-81.3906v92.6602h81.3906v70.6201c0 80.3398 47.8594 124.72 121.08 124.72c35.0693 0 71.75 -6.25977 71.75 -6.25977v-78.8906h-40.4199c-39.8203 0 -52.2402 -24.71 -52.2402 -50.0596v-60.1299h88.9102z" />
-    <glyph glyph-name="facebook-messenger" unicode="&#xf39f;" horiz-adv-x="512" 
-d="M256.55 440c140.04 0 247.45 -102.34 247.45 -240.57c0 -175.13 -166.15 -273.229 -319.44 -231.04c-8.96973 2.44043 -9.64941 0.600586 -62.5596 -22.6992c-2.4375 -1.06445 -5.14355 -1.6543 -7.97168 -1.6543c-10.7617 0 -19.541 8.55176 -19.9082 19.2236
-c-1.41992 46.3701 0.299805 50.7207 -8.0498 58.2305c-48.3604 43.1602 -78.0703 105.64 -78.0703 177.939c0 138.23 108.52 240.57 248.55 240.57zM405.79 254.87c7.0498 11.0801 -6.65039 23.5996 -17.0898 15.6201l-78.4102 -59.3799
-c-2.50586 -1.87988 -5.64258 -2.99316 -9.0127 -2.99316s-6.48145 1.11328 -8.9873 2.99316l-58.0596 43.46c-6.23047 4.65234 -13.9668 7.46582 -22.333 7.46582c-13.2803 0 -24.9512 -6.94434 -31.5771 -17.3965l-73 -115.569
-c-7.05078 -11.0703 6.64941 -23.6006 17.1094 -15.6699l78.3701 59.4395c2.50586 1.87891 5.64258 2.99316 9.0127 2.99316s6.48242 -1.11426 8.9873 -2.99316l58.0801 -43.4697c6.23047 -4.65039 13.9658 -7.46191 22.3301 -7.46191
-c13.2803 0 24.9512 6.94141 31.5801 17.3916z" />
-    <glyph glyph-name="firstdraft" unicode="&#xf3a1;" horiz-adv-x="384" 
-d="M384 256h-64v-128h-128v-128h-192v25.5996h166.4v128h128v128h89.5996v-25.5996zM358.4 217.6h25.5996v-153.6h-128v-128h-192v25.5996h166.4v128h128v128zM384 25.5996v-25.5996h-64v-64h-25.5996v89.5996h89.5996zM0 448h384v-128h-128v-128h-128v-128h-128v384z" />
-    <glyph glyph-name="fonticons-fi" unicode="&#xf3a2;" horiz-adv-x="384" 
-d="M114.4 224h92.3994l-15.2002 -51.2002h-76.3994v-157.8c0 -8 -2.7998 -9.2002 4.39941 -10l59.6006 -5.59961v-34.4004h-179.2v35.2002l29.2002 2.7998c7.2002 0.799805 9.2002 3.2002 9.2002 10.7998v155.8c0 3.2002 -4 3.2002 -8 3.2002h-30.4004v51.2002h38.4004
-v28.7998c0 68 36.3994 96 106 96c46.7998 0 88.7998 -11.2002 88.7998 -72.3994l-69.6006 -8.40039c0.400391 25.5996 -6 31.5996 -22.3994 31.5996c-25.2002 0 -26 -13.5996 -26 -37.5996v-32c0 -3.2002 -4.7998 -6 -0.799805 -6zM384 -35h-140.8v34.4004l28 3.59961
-c7.2002 0.799805 10.3994 2.40039 10.3994 10v148c0 5.59961 -4 9.2002 -9.19922 10.7998l-33.2002 8.7998l9.2002 40.4004h110v-208c0 -8 -3.60059 -8.7998 4 -10l21.5996 -3.59961v-34.4004zM354 312.2l12.4004 -45.6006l-10 -10l-42.8008 22.8008l-42.7998 -22.8008
-l-10 10l12.4004 45.6006l-30 36.3994l4.7998 10h38l21.2002 38.4004h12.7998l21.2002 -38.4004h38l4.7998 -13.1992z" />
-    <glyph glyph-name="fort-awesome-alt" unicode="&#xf3a3;" horiz-adv-x="512" 
-d="M208 210.6c2.09961 0 3.7002 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM326.2 210.6
-c2 0 3.59961 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM458.2 335.7
-c28.8994 -40.7002 45.7998 -90.2002 45.7998 -143.7c0 -2 0 -4 -0.0996094 -6c0 -0.700195 0 -1.2998 -0.100586 -2c0 -1.2998 -0.0996094 -2.7002 -0.200195 -4c0 -0.799805 -0.0996094 -1.5 -0.0996094 -2.2998
-c-0.0996094 -1.2002 -0.0996094 -2.40039 -0.200195 -0.700195c-0.0996094 -0.799805 -0.0996094 -1.59961 -0.200195 -2.40039c-0.0996094 -1.19922 -0.199219 -2.39941 -0.299805 -3.5c-0.0996094 -0.799805 -0.200195 -1.59961 -0.200195 -2.39941
-c-0.0996094 -1.2002 -0.299805 -2.40039 -0.399414 -3.60059c-0.100586 -0.799805 -0.200195 -1.5 -0.299805 -2.2998c-0.200195 -1.2998 -0.400391 -2.59961 -0.5 -3.89941c-0.100586 -0.600586 -0.200195 -1.30078 -0.300781 -1.90039l-0.899414 -5.7002
-c-0.100586 -0.599609 -0.200195 -1.09961 -0.299805 -1.7002c-0.200195 -1.2998 -0.5 -2.69922 -0.800781 -4c-0.199219 -0.799805 -0.299805 -1.59961 -0.5 -2.39941c-0.199219 -1.10059 -0.5 -2.2002 -0.699219 -3.2002
-c-0.200195 -0.900391 -0.400391 -1.7002 -0.600586 -2.59961c-0.200195 -1 -0.5 -2 -0.700195 -3c-0.199219 -0.900391 -0.5 -1.80078 -0.699219 -2.7002c-0.300781 -1 -0.5 -1.90039 -0.800781 -2.90039c-0.199219 -0.899414 -0.5 -1.7998 -0.799805 -2.7002
-c-0.299805 -0.899414 -0.599609 -1.89941 -0.799805 -2.7998c-0.299805 -0.899414 -0.5 -1.7998 -0.799805 -2.7002c-0.299805 -0.899414 -0.600586 -1.7998 -0.900391 -2.7998c-0.5 -1.59961 -1.09961 -3.2998 -1.7002 -4.89941
-c-0.299805 -0.900391 -0.599609 -1.80078 -1 -2.80078c-0.399414 -1 -0.699219 -2 -1.09961 -3c-0.299805 -0.799805 -0.599609 -1.5 -0.900391 -2.2998l-1.19922 -3c-0.300781 -0.700195 -0.600586 -1.5 -0.900391 -2.2002c-0.400391 -1 -0.799805 -2 -1.2998 -3
-l-0.900391 -2.09961c-0.399414 -1 -0.899414 -2 -1.39941 -3c-0.300781 -0.700195 -0.600586 -1.2998 -0.900391 -2c-0.5 -1 -1 -2.09961 -1.5 -3.09961c-0.299805 -0.600586 -0.599609 -1.10059 -0.799805 -1.7002c-0.600586 -1.10059 -1.10059 -2.2002 -1.7002 -3.2998
-c-0.0996094 -0.200195 -0.200195 -0.300781 -0.299805 -0.5c-2.2002 -4.10059 -4.40039 -8.2002 -6.7998 -12.2002c-0.200195 -0.400391 -0.5 -0.799805 -0.700195 -1.2002c-0.700195 -1.09961 -1.2998 -2.2002 -2 -3.2998
-c-0.299805 -0.5 -0.600586 -0.900391 -0.900391 -1.40039c-0.700195 -1.09961 -1.39941 -2.09961 -2 -3.2002c-0.299805 -0.5 -0.599609 -0.899414 -0.899414 -1.39941c-0.700195 -1.10059 -1.40039 -2.10059 -2.10059 -3.2002
-c-0.299805 -0.400391 -0.599609 -0.799805 -0.799805 -1.2002c-0.799805 -1.09961 -1.5 -2.2002 -2.2998 -3.2998c-0.200195 -0.200195 -0.299805 -0.5 -0.5 -0.700195c-37.6006 -54.7002 -94.5 -91.3994 -160.101 -102.399
-c-0.899414 -0.100586 -1.69922 -0.300781 -2.59961 -0.400391c-1 -0.200195 -2.09961 -0.299805 -3.09961 -0.5c-0.900391 -0.0996094 -1.80078 -0.299805 -2.80078 -0.400391c-1 -0.0996094 -2 -0.299805 -3 -0.399414c-1 -0.100586 -2 -0.200195 -2.89941 -0.299805
-c-1 -0.100586 -1.90039 -0.200195 -2.90039 -0.300781c-1 -0.0996094 -2.09961 -0.199219 -3.09961 -0.299805c-0.900391 -0.0996094 -1.7998 -0.200195 -2.7002 -0.200195c-1.09961 -0.0996094 -2.2998 -0.0996094 -3.40039 -0.199219
-c-0.799805 0 -1.69922 -0.100586 -2.5 -0.100586c-1.2998 -0.0996094 -2.59961 -0.0996094 -3.89941 -0.0996094c-0.700195 0 -1.40039 -0.100586 -2.10059 -0.100586c-2 0 -4 -0.0996094 -6 -0.0996094s-4 0 -6 0.0996094c-0.699219 0 -1.39941 0 -2.09961 0.100586
-c-1.2998 0 -2.59961 0.0996094 -3.90039 0.0996094c-0.799805 0 -1.69922 0.100586 -2.5 0.100586c-1.09961 0.0996094 -2.2998 0.0996094 -3.39941 0.199219c-0.900391 0.100586 -1.7998 0.100586 -2.7002 0.200195c-1 0.100586 -2.09961 0.200195 -3.09961 0.299805
-c-1 0.100586 -1.90039 0.200195 -2.90039 0.300781c-1 0.0996094 -2 0.199219 -2.90039 0.299805c-1 0.0996094 -2 0.200195 -3 0.399414c-0.899414 0.100586 -1.7998 0.300781 -2.7998 0.400391s-2.09961 0.299805 -3.09961 0.5
-c-0.900391 0.0996094 -1.7002 0.299805 -2.60059 0.400391c-65.5996 10.8994 -122.5 47.6992 -160 99.3994c-0.199219 0.200195 -0.299805 0.5 -0.5 0.700195c-0.799805 1.09961 -1.59961 2.2002 -2.2998 3.2998c-0.299805 0.400391 -0.599609 0.799805 -0.799805 1.2002
-c-0.700195 1.09961 -1.40039 2.09961 -2.09961 3.2002c-0.300781 0.5 -0.600586 0.899414 -0.900391 1.39941c-0.700195 1.10059 -1.40039 2.10059 -2 3.2002c-0.299805 0.5 -0.599609 0.900391 -0.900391 1.40039c-0.699219 1.09961 -1.2998 2.2002 -2 3.2998
-c-0.199219 0.400391 -0.5 0.799805 -0.699219 1.2002c-2.40039 4 -4.60059 8.09961 -6.80078 12.2002c-0.0996094 0.199219 -0.199219 0.299805 -0.299805 0.5c-0.599609 1.09961 -1.09961 2.19922 -1.7002 3.2998c-0.299805 0.599609 -0.599609 1.09961 -0.799805 1.7002
-c-0.5 1 -1 2.09961 -1.5 3.09961c-0.299805 0.700195 -0.599609 1.2998 -0.899414 2c-0.5 1 -0.900391 2 -1.40039 3l-0.900391 2.09961c-0.399414 1 -0.899414 2 -1.2998 3c-0.299805 0.700195 -0.599609 1.5 -0.899414 2.2002l-1.2002 3
-c-0.299805 0.799805 -0.600586 1.5 -0.900391 2.2998c-0.399414 1 -0.799805 2 -1.09961 3c-0.299805 0.900391 -0.600586 1.80078 -1 2.80078c-0.600586 1.59961 -1.10059 3.2998 -1.7002 4.89941c-0.299805 0.900391 -0.599609 1.7998 -0.900391 2.7998
-c-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 0.900391 -0.599609 1.90039 -0.799805 2.7998c-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 1 -0.5 1.90039 -0.799805 2.90039c-0.200195 0.899414 -0.5 1.7998 -0.700195 2.7002
-c-0.299805 1 -0.5 2 -0.700195 3c-0.200195 0.899414 -0.400391 1.69922 -0.599609 2.59961c-0.200195 1.09961 -0.5 2.2002 -0.700195 3.2002c-0.200195 0.799805 -0.299805 1.59961 -0.5 2.39941c-0.299805 1.30078 -0.5 2.7002 -0.799805 4
-c-0.100586 0.600586 -0.200195 1.10059 -0.300781 1.7002l-0.899414 5.7002c-0.100586 0.599609 -0.200195 1.2998 -0.299805 1.90039c-0.200195 1.2998 -0.400391 2.59961 -0.5 3.89941c-0.100586 0.799805 -0.200195 1.5 -0.300781 2.2998
-c-0.0996094 1.2002 -0.299805 2.40039 -0.399414 3.60059c-0.100586 0.799805 -0.200195 1.59961 -0.200195 2.39941c-0.0996094 1.2002 -0.200195 2.40039 -0.299805 3.5c-0.100586 0.800781 -0.100586 1.60059 -0.200195 2.40039
-c-0.0996094 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 0.799805 -0.0996094 1.5 -0.0996094 2.2998c-0.100586 1.2998 -0.100586 2.7002 -0.200195 4c0 0.700195 0 1.2998 -0.0996094 2c0 2 -0.100586 4 -0.100586 6c0 53.5 16.9004 103 45.7998 143.6
-c2.30078 3.2002 4.7002 6.40039 7.10059 9.5c4.89941 6.2002 10.0996 12.3008 15.5996 18c2.7002 2.90039 5.5 5.7002 8.40039 8.40039c2.89941 2.7002 5.7998 5.40039 8.7998 8c4.5 3.90039 9.09961 7.59961 13.9004 11.2002c1.59961 1.2002 3.19922 2.39941 4.7998 3.5
-c27.2998 19.5996 59 33.7002 93.2998 40.7998c16.0996 3.2998 32.9004 5 50 5s33.7998 -1.7002 50 -5c34.2998 -7 66 -21.0996 93.5996 -40.7002c1.60059 -1.2002 3.2002 -2.2998 4.80078 -3.5c4.7998 -3.59961 9.39941 -7.2998 13.8994 -11.2002
-c12 -10.3994 23 -21.8994 32.7998 -34.3994c2.5 -3.10059 4.80078 -6.2998 7.10059 -9.5zM448 76.5v71.2998c0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.69922 -1.59961 -3.69922 -3.7002v-25.7998h-29.5v144
-c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.1006c-2.09961 0 -3.69922 -1.60059 -3.69922 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004
-c0 4.7998 -6.5 3.7002 -9.5 3.7002v30.7002c6.7002 1.59961 13.7998 2.7998 20.7998 2.7998c8.80078 0 16.8008 -3.5 25.4004 -3.5c3.7002 0 22.4004 0.899414 22.4004 6.5v48.3994c0 2.10059 -1.60059 3.7002 -3.7002 3.7002c-4.2002 0 -12.2002 -3.5 -19.4004 -3.5
-c-7.89941 0 -16.8994 3.5 -26.2998 3.5c-6.5 0 -12.9004 -0.899414 -19.2002 -2.2998v3.90039c4.40039 2.09961 7.40039 6.69922 7.40039 11.5c0 16.7998 -25.4004 16.7998 -25.4004 0c0 -4.80078 3 -9.5 7.40039 -11.5v-90.2002c-3 0 -9.5 1.09961 -9.5 -3.7002v-25.9004
-h-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.59961 3.7002 -3.69922 3.7002h-22.1006c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-144h-29.5996v25.7998
-c0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.0996c-2.10059 0 -3.7002 -1.59961 -3.7002 -3.7002v-71.2998c9.40039 -15.5 20.5996 -29.9004 33.5996 -42.9004c20.6006 -20.5996 44.5 -36.6992 71.2002 -48c13.9004 -5.89941 28.2002 -10.2998 42.9004 -13.1992v75.7998
-c0 58.5996 88.5996 58.5996 88.5996 0v-75.7998c14.7002 2.89941 29 7.39941 42.9004 13.1992c26.7002 11.3008 50.5996 27.4004 71.2002 48c13 13 24.1992 27.4004 33.5996 42.9004z" />
-    <glyph glyph-name="freebsd" unicode="&#xf3a4;" 
-d="M303.7 351.8c11.0996 11.1006 115.5 77 139.2 53.2002c23.6992 -23.7002 -42.1006 -128.1 -53.2002 -139.2c-11.1006 -11.0996 -39.4004 -0.899414 -63.1006 22.9004c-23.7998 23.7002 -34.0996 52 -22.8994 63.0996zM109.9 379.9
-c-31.6006 -19.4004 -57.9004 -46.5 -76.4004 -78.7002c-20.7998 36.2998 -44.5 89.0996 -27.9004 105.7c16.4004 16.5 68 -6.40039 104.301 -27zM406.7 274c3.2998 5.5 7 11.7998 10.8994 18.7998c17.6006 -31.2998 27.7002 -67.3994 27.7002 -105.8
-c0 -119.1 -96.5 -215.6 -215.6 -215.6c-119.101 0 -215.601 96.5996 -215.601 215.6c0 119.1 96.5 215.6 215.601 215.6c35.8994 0 69.7002 -8.7998 99.5 -24.2998c-7.2998 -4 -13.9004 -8 -19.6006 -11.5996c-26 4.7002 -32.8994 -16.4004 -14.8994 -48.7002
-c21.7998 -43.0996 89 -90.4004 109.3 -70.0996c5.40039 5.39941 6 14.7998 2.7002 26.0996z" />
-    <glyph glyph-name="gitkraken" unicode="&#xf3a6;" horiz-adv-x="592" 
-d="M565.7 329.9c11.7998 -31.6006 18.2998 -65.7002 18.2998 -101.4c0 -155.1 -122.6 -281.6 -276.3 -287.7v145.8c-8.40039 -0.5 -16.6006 -0.399414 -23.4004 0v-145.899c-153.7 6.2002 -276.3 132.7 -276.3 287.8c0 35.7002 6.5 69.7998 18.2998 101.3
-c2.2998 6.2002 9.2998 9.2002 15.2998 6.60059c5.7002 -2.40039 8.5 -8.80078 6.30078 -14.6006c-10.9004 -29 -16.9004 -60.5 -16.9004 -93.2998c0 -134.6 100.4 -245.7 230.2 -262.7v123.7c-7.90039 1.59961 -15.4004 3.7002 -23 6.2002v-104
-c-106.7 26 -185.9 122.1 -185.9 236.8c0 91.7998 50.7998 171.8 125.8 213.3c5.80078 3.2002 13 0.900391 15.9004 -5c2.7002 -5.5 0.700195 -12.0996 -4.7002 -15.0996c-67.8994 -37.7002 -113.899 -110.101 -113.899 -193.2c0 -93.4004 57.8994 -173.2 139.8 -205.4
-v92.2002c-14.2002 4.5 -24.7998 17.7002 -24.7998 33.5c0 13.1006 6.69922 24.4004 17.2998 30.5c-8.2002 79.6006 -44.5 58.6006 -44.5 83.9004v14.7998c0 38 87.8994 161.7 129.1 164.7c2.60059 0.200195 5.10059 0.200195 7.60059 0
-c41.0996 -2.90039 129 -126.7 129 -164.7v-14.7002c0 -25.2998 -36.2002 -4.39941 -44.5 -83.8994c10.5 -6.10059 17.2998 -17.4004 17.2998 -30.5c0 -15.8008 -10.7002 -29 -24.9004 -33.5v-92.2002c81.9004 32.2998 139.8 112.1 139.8 205.399
-c0 83.2002 -46 155.601 -113.899 193.2c-5.2998 2.90039 -7.40039 9.60059 -4.7002 15.1006c2.90039 5.89941 10.2002 8.19922 15.9004 5c75 -41.5 125.8 -121.5 125.8 -213.301c0 -114.699 -79.2002 -210.899 -185.9 -236.8v104
-c-7.5 -2.59961 -15.0996 -4.7002 -23 -6.2002v-123.699c129.9 17 230.2 128.1 230.2 262.699c0 32.8008 -6 64.3008 -16.9004 93.3008c-2.19922 5.69922 0.600586 12.1992 6.30078 14.5996c6 2.59961 13 -0.5 15.2998 -6.59961zM365.9 172.5
-c-13.1006 0 -23.7002 -10.5996 -23.7002 -23.7002c0 -13.2002 10.7002 -23.7002 23.7002 -23.7002c13.0996 0 23.6992 10.6006 23.6992 23.7002c0 13.2002 -10.6992 23.7002 -23.6992 23.7002zM226.1 125.2c13.2002 0 23.7002 10.7002 23.7002 23.7002
-c0 13.0996 -10.5996 23.6992 -23.7002 23.6992c-13.1992 0 -23.6992 -10.6992 -23.6992 -23.6992s10.5 -23.7002 23.6992 -23.7002z" />
-    <glyph glyph-name="gofore" unicode="&#xf3a7;" horiz-adv-x="400" 
-d="M324 128.2c54.2998 0 65.7002 -50.1006 67.7002 -77.7002c-46.5 -56.2998 -107.8 -82.5 -171 -82.5c-123.7 0 -220.7 101.5 -220.7 224c0 123.4 98 224 220.7 224c59 0 114.3 -23.2998 156.1 -65.5996l-62.2998 -63.3008c-25 25.4004 -58.2998 39.4004 -93.5996 39.4004
-c-73.2002 0 -132.4 -60.2998 -132.4 -134.4c0 -74.1992 59.2002 -134.399 132.4 -134.399c33.5996 0 65.3994 12.7002 89.8994 35.7998v34.7002h13.2002zM311.9 240.7c47.6992 0 88.0996 -35 88.0996 -100.2v-30.5996c-15.5 26.6992 -42.5 41.7998 -76 41.7998h-118.4v89
-h106.301z" />
-    <glyph glyph-name="goodreads" unicode="&#xf3a8;" 
-d="M299.9 256.8c5.09961 -37.2998 -4.7002 -79 -35.9004 -100.7c-22.2998 -15.5 -52.7998 -14.0996 -70.7998 -5.69922c-37.1006 17.2998 -49.5 58.5996 -46.7998 97.1992c4.2998 60.9004 40.8994 87.9004 75.2998 87.5c46.8994 0.200195 71.7998 -31.7998 78.2002 -78.2998
-zM448 360v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336c30.9004 0 56 -25.0996 56 -56zM330 134.8c0 0 -0.0996094 34 -0.0996094 217.3h-29v-40.2998c-0.800781 -0.299805 -1.2002 0.5 -1.60059 1.2002
-c-9.59961 20.7002 -35.8994 46.2998 -76 46c-51.8994 -0.400391 -87.2002 -31.2002 -100.6 -77.7998c-4.2998 -14.9004 -5.7998 -30.1006 -5.5 -45.6006c1.7002 -77.8994 45.0996 -117.8 112.399 -115.199c28.9004 1.09961 54.5 17 69 45.1992
-c0.5 1 1.10059 1.90039 1.7002 2.90039c0.200195 -0.0996094 0.400391 -0.0996094 0.600586 -0.200195c0.299805 -3.7998 0.199219 -30.7002 0.0996094 -34.5c-0.200195 -14.7998 -2 -29.5 -7.2002 -43.5c-7.7998 -21 -22.2998 -34.7002 -44.5 -39.5
-c-17.7998 -3.89941 -35.5996 -3.7998 -53.2002 1.2002c-21.5 6.09961 -36.5 19 -41.0996 41.7998c-0.299805 1.60059 -1.2998 1.2998 -2.2998 1.2998h-26.7998c0.799805 -10.5996 3.19922 -20.2998 8.5 -29.1992c24.1992 -40.5 82.6992 -48.5 128.199 -37.4004
-c49.9004 12.2998 67.3008 54.9004 67.4004 106.3z" />
-    <glyph glyph-name="goodreads-g" unicode="&#xf3a9;" horiz-adv-x="384" 
-d="M42.5996 44.7002h2.80078c12.6992 0 25.5 0 38.1992 -0.100586c1.60059 0 3.10059 0.400391 3.60059 -2.09961c7.09961 -34.9004 30 -54.5996 62.8994 -63.9004c26.9004 -7.59961 54.1006 -7.7998 81.3008 -1.7998c33.7998 7.40039 56 28.2998 68 60.4004
-c8 21.5 10.6992 43.7998 11 66.5c0.0996094 5.7998 0.299805 47 -0.200195 52.7998l-0.900391 0.299805c-0.799805 -1.5 -1.7002 -2.89941 -2.5 -4.39941c-22.0996 -43.1006 -61.2998 -67.4004 -105.399 -69.1006c-103 -4 -169.4 57 -172 176.2
-c-0.5 23.7002 1.7998 46.9004 8.2998 69.7002c20.5996 71.0996 74.5996 118.2 153.899 118.8c61.3008 0.400391 101.5 -38.7002 116.2 -70.2998c0.5 -1.10059 1.2998 -2.2998 2.40039 -1.90039v61.6006h44.2998c0 -280.301 0.0996094 -332.2 0.0996094 -332.2
-c-0.0996094 -78.5 -26.6992 -143.7 -103 -162.2c-69.5 -16.9004 -159 -4.7998 -196 57.2002c-8 13.5 -11.7998 28.2998 -13 44.5zM188.9 411.5c-52.5 0.5 -108.5 -40.7002 -115 -133.8c-4.10059 -59 14.7998 -122.2 71.5 -148.601
-c27.5996 -12.8994 74.2998 -15 108.3 8.7002c47.5996 33.2002 62.7002 97 54.7998 154c-9.7002 71.1006 -47.7998 120 -119.6 119.7z" />
-    <glyph glyph-name="google-drive" unicode="&#xf3aa;" horiz-adv-x="512" 
-d="M339 133.1l-163.6 282.9h161.199l163.601 -282.9h-161.2zM201.5 109.5h310.5l-80.5996 -141.5h-310.5zM154.1 380.6l82.9004 -141.399l-156.4 -271.2l-80.5996 141.5z" />
-    <glyph glyph-name="google-play" unicode="&#xf3ab;" horiz-adv-x="512" 
-d="M325.3 213.7l-220.7 221.3l280.801 -161.2zM47 448l256.6 -255.9l-256.6 -256c-13 6.80078 -21.7002 19.2002 -21.7002 35.3008v441.3c0 16.0996 8.7002 28.5 21.7002 35.2998zM472.2 222.4c19.2002 -14.3008 19.2002 -46.5 1.2002 -60.8008l-60.1006 -34.0996
-l-65.7002 64.5l65.7002 64.5zM104.6 -51l220.7 221.3l60.1006 -60.0996z" />
-    <glyph glyph-name="gripfire" unicode="&#xf3ac;" horiz-adv-x="384" 
-d="M112.5 146.6c0 -26.8994 16.5996 -47.1992 32.5996 -69.5c22.5 -30.1992 44.2002 -56.8994 44.2002 -86.5c-0.0996094 -14.5 -4.39941 -29.6992 -17.5 -46.3994c0 5.2998 4.7998 12.2002 4.7998 22.2998c0 15.2002 -13 39.9004 -78.0996 86.5996
-c-34.2998 29.1006 -66.5 58.5 -66.5 108.301c0 114.699 147.1 176.5 147.1 268.6c0 3.2998 -0.199219 6.7002 -0.599609 10c5.09961 -2.40039 39.0996 -43.2998 39.0996 -90.4004c0 -80.5 -105.1 -129.199 -105.1 -203zM317.8 185.6
-c1.5 -8.39941 2.2002 -16.5996 2.2002 -24.5996c0 -51.7998 -29.4004 -97.5 -67.2998 -136.8c-1 -1 -2.2002 -2.40039 -3.2002 -2.40039c-3.59961 0 -35.5 41.6006 -35.5 53.2002c0 0 41.7998 55.7002 41.7998 96.9004c0 10.7998 -2.7002 21.6992 -9.09961 33.3994
-c-1.5 -32.2998 -55.7002 -87.7002 -58.1006 -87.7002c-2.69922 0 -17.8994 22 -17.8994 42.1006c0 5.2998 1 10.7002 3.2002 15.7998c2.39941 5.5 56.5996 72 56.5996 116.7c0 6.2002 -1 12 -3.40039 17.0996l-4 7.2002c16.7002 -6.5 82.6006 -64.0996 94.7002 -130.9z" />
-    <glyph glyph-name="grunt" unicode="&#xf3ad;" horiz-adv-x="384" 
-d="M61.2998 258.7c0.5 4.89941 2.7998 10 7 12h0.100586c-4.60059 1.7002 -9.2002 3.09961 -13.5 4.09961c42.1992 10.2002 73.3994 -20.5996 83.0996 -31.7998c16.5996 -19.2002 35.5 -8.7998 35.5 -8.7998c0.299805 -11.1006 -10.2998 -19 -21.0996 -19.5
-c1.19922 -15.4004 -13.9004 -32.5 -13.9004 -32.5s5.59961 15 2.7002 25.2998c-0.900391 3.2002 -2 6.09961 -3 8.5c-19.2998 -17.2002 -48 -1.5 -54.9004 6.09961c-9.59961 10.6006 -12.3994 23.8008 -12.7998 34.1006c-1.7998 -3.7998 -3.2998 -9.10059 -4 -16.6006
-c0 0 -6.2998 9.10059 -5.2002 19.1006zM89.5996 260.5c-2.89941 -9.09961 -3.39941 -27.7002 6.90039 -35.2998c16.2998 -12.1006 32.2998 -5 38 -1.7002c-7.5 11.2998 -25.4004 26 -44.9004 37zM231.7 214.7c-10.7998 0.399414 -21.4004 8.39941 -21.2002 19.2998
-c0 0 18.7998 -10.4004 35.5 8.7998c9.7002 11.2002 40.7998 42 83.0996 31.7998c-4.2998 -0.899414 -8.89941 -2.2998 -13.5 -4.09961h0.100586c4.09961 -1.7998 6.39941 -6.7998 7 -11.7998c1.2002 -10 -5.2002 -19.1006 -5.2002 -19.1006
-c-0.599609 7.5 -2.2002 12.8008 -4 16.6006c-0.5 -10.2998 -3.2002 -23.5 -12.7998 -34.1006c-6.7998 -7.59961 -35.5 -23.3994 -54.7998 -6.09961c-1 -2.5 -2.10059 -5.2998 -3 -8.5c-2.90039 -10.2998 2.69922 -25.2998 2.69922 -25.2998s-15.0996 17 -13.8994 32.5z
-M294.4 260.5c-19.5 -11 -37.4004 -25.5996 -44.9004 -37c5.7002 -3.40039 21.5996 -10.5 37.9004 1.59961c10.3994 7.7002 10 26.3008 7 35.4004zM160 29.5c4.09961 0 7 -0.900391 8.7998 -2.7002c2.2002 -2.2998 1.5 -5.2998 0.900391 -6.7998
-c-1.10059 -2.7002 -5.5 -11.5996 -13 -19.7998c-2.7002 -2.90039 -6.60059 -4.60059 -11 -4.60059c-4.2998 0 -8.7002 1.60059 -11.7998 4.30078c-2.30078 2.09961 -10.2002 9.5 -13.7002 18.5996c-1.2998 3.40039 -1 6.09961 0.899414 8.09961
-c1.30078 1.30078 4 2.90039 9.5 2.90039h29.4004zM349.2 130.7c0 0 29.2998 -22.5 21.0996 -70.9004c-5.2998 -29.5 -23.2002 -46 -47 -54.7002c-8.7998 -19.0996 -29.3994 -45.6992 -67.2998 -49.5996c-14.5 -11.7998 -34.5 -19.5 -63.5996 -19.5h-0.200195
-c-29.2002 0 -49.2002 7.7002 -63.6006 19.5c-37.8994 3.90039 -58.5 30.5 -67.2998 49.5996c-23.7998 8.60059 -41.7998 25.2002 -47 54.7002c-8.59961 48.2002 20.6006 70.7998 20.6006 70.7998c2.39941 -17.8994 13 -33.8994 24.5996 -43.7998
-c3.09961 22.7002 3.7002 55.5 3.7002 62.4004c0 14.7002 -9.5 24.5 -12.2002 26.0996c-2.5 1.5 -5.2998 3 -8.2998 4.60059c-18 9.59961 -40.4004 21.5996 -40.4004 43.6992c0 16.1006 9.2998 23.2002 15.4004 27.8008c0.799805 0.599609 1.5 1.19922 2.2002 1.69922
-c2.09961 1.7002 3.69922 3 4.2998 4.40039c4.39941 9.7998 3.59961 34.2002 1.7002 37.5996c-0.600586 0.700195 -16.8008 21 -11.8008 39.2002c2 7.40039 6.90039 13.2998 14.1006 17c5.2998 2.7002 11.7998 4.2002 19.5 4.5c0.0996094 2 0.5 4 0.899414 5.90039
-c0.5 2.59961 1.10059 5.2998 0.900391 8.09961c-0.400391 4.7002 -0.799805 9.10059 -2.2002 11.2998c-8.39941 13.3008 -28.7998 17.6006 -29 17.6006l-12.2998 2.39941l8.09961 9.40039c0.200195 0.200195 17.3008 17.5 46.3008 17.5c7.89941 0 16 -1.2998 23.8994 -3.5
-c24.2998 -7.7998 42.9004 -30.5 49.4004 -39.2998c2 0.599609 3.89941 1.2002 5.89941 1.7002c-1 26.3994 20.7002 47.3994 28.2002 48.2998c0.5 -4.5 -0.399414 -22.2002 7.2002 -27.6006c2.2002 14.4004 9.59961 30.3008 39.0996 40.7002
-c-6.2998 -16.7002 -0.799805 -30.7002 1.80078 -37.2002c20.0996 18.2002 33.6992 15.2002 33.6992 15.2002s-13.1992 -22.7002 -9 -38.5c3.30078 -0.799805 6.5 -1.7002 9.60059 -2.7002c6.5 8.80078 25.2002 31.5 49.3994 39.3008
-c8.10059 2.59961 16.2002 3.89941 24.1006 3.89941c29 0 46.2002 -17.2998 46.2998 -17.5l8.09961 -9.5l-12.2998 -2.39941c-0.200195 0 -20.5996 -4.30078 -29 -17.6006c-1.39941 -2.2998 -1.7998 -6.59961 -2.2002 -11.2998
-c-0.199219 -2.7998 0.300781 -5.5 0.900391 -8.09961c0.400391 -2 0.799805 -3.90039 0.900391 -5.90039c7.59961 -0.299805 14.1992 -1.7998 19.5 -4.5c7.19922 -3.7002 12.0996 -9.59961 14.0996 -17c4.90039 -18.2998 -11.2002 -38.5996 -11.7998 -39.2002
-c-1.90039 -3.39941 -2.7002 -27.7998 1.7002 -37.5996c0.599609 -1.40039 2.19922 -2.7002 4.2998 -4.40039c0.700195 -0.599609 1.39941 -1.09961 2.2002 -1.7002c6.09961 -4.59961 15.3994 -11.5996 15.3994 -27.7998c0 -22.0996 -22.3994 -34.0996 -40.3994 -43.7002
-c-2.90039 -1.59961 -5.80078 -3.09961 -8.30078 -4.59961c-2.69922 -1.59961 -12.1992 -11.4004 -12.1992 -26.0996c0 -6.90039 0.599609 -39.7002 3.69922 -62.4004c11.6006 9.90039 22.2002 25.7998 24.6006 43.7002zM305.7 410.3
-c-17.7998 -5.7002 -31.6006 -23.0996 -37.7002 -32.2002c1.59961 -0.699219 3.09961 -1.39941 4.7002 -2.19922c2.59961 -1.2002 4.89941 -2.40039 7.09961 -3.7002c2.7002 5.5 8.40039 13.7002 20.7002 22.3994c8.2002 5.80078 18.2002 8.90039 28.7002 8.90039
-c3.59961 0 6.7998 -0.400391 9.2002 -0.799805c3.2998 2.09961 6.59961 3.89941 9.69922 5.2998c-4.7998 2 -13.6992 5 -24.6992 5c-6.10059 0 -12.1006 -0.900391 -17.7002 -2.7002zM326.7 392.1c-7.40039 -0.299805 -14 -2.69922 -19.6006 -7
-c-8 -6.39941 -12.0996 -17.6992 -13.5 -22.5c4.90039 -4.19922 8.2002 -8.09961 10.5 -11.1992c3.40039 1 7.30078 1.89941 11.5 2.69922c3.30078 4.5 3.90039 10.6006 4.40039 17c0.5 6.2002 1.09961 12.6006 4.40039 17.8008c0.699219 1.09961 1.5 2.19922 2.2998 3.19922
-zM45.5996 402.7c2.40039 0.399414 5.60059 0.799805 9 0.899414c10.6006 0 20.5 -3.09961 28.8008 -8.89941c12.3994 -8.7002 18.0996 -17 20.6992 -22.4004c2.2002 1.2002 4.60059 2.5 7.10059 3.7002c1.59961 0.799805 3.2002 1.5 4.7998 2.2002
-c-6.09961 8.89941 -19.9004 26.2998 -37.7002 32.0996c-5.7002 1.7998 -11.5996 2.7002 -17.7002 2.7002c-11 0 -19.8994 -3 -24.6992 -5c3.09961 -1.2998 6.39941 -3.09961 9.69922 -5.2998zM90.2998 362.6c-1.39941 4.80078 -5.5 16.1006 -13.5 22.4004
-c-5.5 4.40039 -12.0996 6.7002 -19.5 7c0.799805 -1 1.60059 -2.09961 2.2998 -3.2002c3.30078 -5.2002 3.90039 -11.5996 4.40039 -17.7998c0.5 -6.40039 1 -12.5 4.2998 -16.9004c4.2002 -0.799805 8.10059 -1.7998 11.5 -2.69922c2.2002 3.19922 5.60059 7 10.5 11.1992z
-M58.0996 188.1c8.7002 -5 18.1006 -16.7998 19 -34.1992c0.900391 -14.7002 -0.899414 -49.9004 -3.39941 -75.9004c12.5 -4.7998 26.7002 -6.40039 39.7002 -6.7998c2 4.09961 3.89941 8.5 5.5 13.0996c0.699219 1.90039 19.5996 51 26.3994 62.2002
-c-5.39941 -39 -17.5 -73.7002 -23.5 -89.5996c3.40039 0.399414 7.2998 0.699219 11.7002 0.699219h117c4.40039 0 8.2002 -0.199219 11.7002 -0.699219c-6 15.8994 -18 50.5996 -23.5 89.5996c6.7998 -11.0996 25.7002 -60.2002 26.3994 -62.2002
-c1.60059 -4.59961 3.5 -9 5.5 -13.0996c13 0.399414 27.3008 2 39.7002 6.7998c-2.5 26 -4.2998 61.2998 -3.39941 75.9004c1.09961 17.5 10.3994 29.1992 19.0996 34.1992c2.7002 1.5 5.5 3.10059 8.40039 4.60059c14.7998 8 30.1992 16.2998 30.1992 30.5
-c0 11.0996 -4.2998 14.5 -8.89941 18.2002l-0.5 0.399414c-0.700195 0.600586 -1.5 1.2002 -2.2002 1.7998c0.900391 -7.19922 1.90039 -13.2998 2.7002 -14.8994c0 0 -12.1006 15 -15.7002 44.2998c-1.40039 11.5 1.09961 34.2002 5.09961 43
-c-0.199219 -4.90039 0 -9.7998 0.300781 -14.4004c0.399414 0.900391 0.799805 1.60059 1.2998 2.2002c3.2998 4 11.8994 17.5 9.39941 26.6006c-1 3.39941 -3.19922 6 -6.69922 7.7998c-3.80078 1.89941 -8.80078 2.89941 -15.1006 2.89941
-c-12.2998 0 -25.8994 -3.7998 -32.8994 -6c-25.1006 -7.89941 -55.4004 -30.8994 -64.1006 -37.6992c-0.200195 -0.200195 -0.399414 -0.300781 -0.399414 -0.300781l-5.60059 -3.89941l3.5 5.7998c0.200195 0.299805 19.1006 31.4004 53.1006 46.5
-c-2 2.90039 -7.40039 8.2002 -21.6006 15.0996c-21.3994 10.5 -46.3994 15.8008 -74.2998 15.8008c-27.7998 0 -52.9004 -5.30078 -74.2998 -15.8008c-14.2002 -7 -19.6006 -12.1992 -21.6006 -15.0996c34.1006 -15.0996 53 -46.2002 53.2002 -46.5l3.5 -5.7998
-l-5.59961 3.89941s-0.200195 0.100586 -0.400391 0.300781c-8.7002 6.7998 -39 29.6992 -64.0996 37.6992c-7 2.30078 -20.6006 6 -32.9004 6c-6.2998 0 -11.2998 -1 -15.0996 -2.89941c-3.60059 -1.7998 -5.7998 -4.2998 -6.7002 -7.7998
-c-2.40039 -9.10059 6.2002 -22.6006 9.40039 -26.6006c0.5 -0.599609 0.899414 -1.39941 1.2998 -2.2002c0.299805 4.60059 0.5 9.5 0.299805 14.4004c4 -8.7002 6.5 -31.5 5.09961 -43c-3.59961 -29.2998 -15.6992 -44.2998 -15.6992 -44.2998
-c0.799805 1.59961 1.7998 7.7002 2.69922 14.8994c-0.799805 -0.599609 -1.5 -1.19922 -2.19922 -1.7998l-0.5 -0.399414c-4.60059 -3.60059 -8.90039 -7.10059 -8.90039 -18.2002c0 -14.2002 15.2998 -22.5 30.2002 -30.5c2.7998 -1.5 5.7002 -3 8.39941 -4.60059z
-M34.7998 43.4004c11.9004 -19.7002 35.5 -29.4004 58.2002 -29.5c-4.5 13.2998 -3.09961 24 4.09961 31.7998l1.40039 1.39941c1.7998 2.40039 4.2998 5.80078 7 10c-27.2002 1.10059 -63.5 11 -74.4004 45.4004c-5 -5 -8.39941 -39.0996 3.7002 -59.0996zM80.5 -0.0996094
-c6.5 -9.5 16.5 -19.6006 30.9004 -25.5c-4.90039 7.19922 -8.80078 15.0996 -12.3008 23.0996c-6.39941 0.5 -12.5996 1.2998 -18.5996 2.40039zM192 -50.2002c60.5996 0.100586 78.2998 45.9004 84.9004 64.7002c3.59961 10.5 3.2998 18.2998 -0.900391 23.0996
-c-2.7998 3.30078 -9.5 7.2002 -24.5996 7.2002h-118.801c-15.0996 0 -21.6992 -3.89941 -24.5996 -7.2002c-4.2998 -4.89941 -4.59961 -12.5996 -0.900391 -23.0996c6.60059 -18.9004 24.3008 -64.5996 84.9004 -64.7002zM272.6 -25.5996
-c14.4004 5.89941 24.4004 16 30.9004 25.5c-6 -1.10059 -12.2002 -1.90039 -18.5996 -2.40039c-3.5 -8 -7.40039 -15.9004 -12.3008 -23.0996zM349.2 43.4004c12.2002 19.8994 8.7998 54 3.7998 59c-10.9004 -34.4004 -47.2002 -44.2002 -74.4004 -45.4004
-c2.7002 -4.2002 5.2002 -7.59961 7 -10c0.5 -0.5 1 -1 1.40039 -1.5c7.2002 -7.7002 8.59961 -18.5 4.09961 -31.7998c22.5 0.399414 46.1006 10 58.1006 29.7002zM191.9 260.3c-12.7002 0.200195 -27.2002 17.7998 -27.2002 17.7998
-c9.89941 -6 18.7998 -8.09961 27.2998 -8.2998c8.5 0.200195 17.4004 2.2998 27.2998 8.2998c0 0 -14.5 -17.6992 -27.2002 -17.7998h-0.199219zM253.6 29.5996c5.40039 -0.0996094 8.10059 -1.69922 9.40039 -3c1.90039 -1.89941 2.2002 -4.59961 0.900391 -7.89941
-c-3.5 -8.90039 -11.4004 -16.1006 -13.7002 -18.1006c-3.10059 -2.59961 -7.40039 -4.19922 -11.7998 -4.19922c-4.40039 0 -8.30078 1.59961 -11 4.5c-7.5 8 -12 16.6992 -13 19.2998c-0.600586 1.5 -1.30078 4.39941 0.899414 6.7002
-c1.7002 1.7998 4.7002 2.69922 8.90039 2.69922h29.3994z" />
-    <glyph glyph-name="gulp" unicode="&#xf3ae;" horiz-adv-x="256" 
-d="M209.8 56.9004l-14.0996 -24.6006l-4.60059 -80.2002c0 -8.89941 -28.2998 -16.0996 -63.0996 -16.0996s-63.0996 7.2002 -63.0996 16.0996l-5.80078 79.4004l-14.8994 25.4004c41.2002 -17.3008 126 -16.7002 165.6 0zM13.7998 310.2
-c30.7002 -17 197.8 -16.9004 228.3 0.200195l-14.7998 -136.801c-4.7998 -4.19922 -11.5996 -10.1992 -16.5996 -14.0996c-1.60059 -1.2002 -6 -4.7002 -8 -4.7002c-1.2998 0 -2.2002 0.5 -2.2002 1.7998c0.0996094 1 3.40039 4.5 5 6.40039
-c4.90039 5.7002 13.7998 16 13.7998 23.4004c0 7 -10.7002 14.0996 -25.7002 0.199219c-1.59961 -1.5 -3.09961 -3 -4.5 -4.5c0.400391 1.10059 1.10059 5.10059 1.10059 6.2002c0 2.7998 -1.40039 4 -4.2002 4c-1 0 -1.90039 -0.599609 -2.7002 -1.59961
-c-2.59961 -3.10059 -3.89941 -7.5 -5.2998 -11.2998c-0.5 -1.80078 -1.09961 -3.60059 -1.7002 -5.5c-0.399414 -0.200195 -0.700195 -0.300781 -0.899414 -0.600586c-3.80078 -3.89941 -17.7002 -17 -23.1006 -17c-2.2998 0 -1.59961 3.60059 -1 5.7998
-c1 3.40039 6.7998 17.7002 8.7002 22.3008c4.59961 11.0996 8 19.7998 13.2002 31.8994c3.89941 9.2002 3.7998 8.60059 4.5 10.5c0.700195 2.10059 0.700195 4.90039 -1 6.2002c-1 0.700195 -2 1.09961 -3.2002 1.09961c-2.40039 0 -4.7998 -1.39941 -6.09961 -4.69922
-c-25.5 -64.4004 -25.2002 -63.3008 -26.4004 -68.2002c-2 -1.7002 -4.40039 -3.40039 -6.7998 -4.5c-3.10059 -1.40039 -6.7998 -2.2002 -6.7998 1.2002c0 3.69922 1.39941 8.19922 2.69922 11.6992c2.2002 6.10059 4.90039 11.1006 6.90039 16.7002
-c0.900391 2.40039 1.2998 4.7002 -0.400391 6.90039c-0.799805 1 -1.89941 1.5 -3.19922 1.5c-2.60059 0 -4.10059 -2.60059 -5.2002 -5.10059c-0.700195 -1.5 -1.2998 -3.09961 -1.7998 -4.7998c-1.2002 -4 -3.60059 -8.7002 -5.60059 -12.2998
-c-2.7998 -5 -6.5 -10.0996 -11.0996 -13.5c-2.2002 -1.59961 -4.5 -2.40039 -6.90039 -2.40039c-3.5 0 -2.39941 5.7002 -1.5 9c2.2002 7.80078 5.5 13.3008 9.2998 20.8008c1.30078 2.69922 2.30078 5.39941 -0.299805 7.19922c-0.5 0.300781 -1 0.5 -1.59961 0.700195
-c-3.40039 0.900391 -6 -1.09961 -7.60059 -4.5c-3.09961 -6.2998 -5.39941 -11.7002 -7.09961 -16.2002c-3.2998 -8.89941 -6.90039 -18.2998 -4.59961 -23.7998c1.5 -3.7002 4.5 -5.09961 8.59961 -5.09961c9.7998 0 17.7998 6.7002 22.4004 14.8994
-c-4.30078 -19.7998 8.19922 -17.2998 20 -8.09961c0.0996094 -0.400391 0.0996094 -0.799805 0.199219 -1.2002c1.5 -6.7002 8.7002 -6.7002 14.5 -4.09961c3.5 1.59961 8.2002 4.5 14.4004 10.5c0.200195 0.299805 0.799805 1.39941 -0.799805 -2.2998
-c-7.2002 -16.2002 -13.5 -28.2002 -15 -34.3008c-0.200195 -0.899414 -0.299805 -1.7998 -0.299805 -2.69922c0 -1.80078 0.399414 -3.10059 1.2998 -3.7002c1.59961 -1.2002 4.2002 -1.2998 6.09961 -0.299805c1.7998 1 3.10059 2.59961 4 4.5
-c1 2.19922 0.200195 0.699219 5.2002 14c5 13.3994 2.90039 7.7998 9.09961 22c1.90039 4.2998 4.2002 9.5 8.5 15.5c2.5 3.39941 5.5 7 8.7002 9.69922c5.7002 4.7002 11.7002 5.40039 11.7002 2.5c0 -2.19922 -3.2998 -6.39941 -4.7002 -8.09961
-c-5.2998 -6.7002 -14.3994 -16.2998 -14.3994 -21.5c0 -9.5 12 -8 17.3994 -5.7002c7.2998 3.2002 13.9004 9.60059 19.6006 14.7998l-10.9004 -94.5996c-1.90039 -4.90039 -39.0996 -17.0996 -88.2002 -17.0996c-49 0 -86.2002 12.0996 -88.2002 17.0996l-7.59961 79.5996
-c2.09961 -1.5 4.2998 -2.39941 7.7002 -2.39941c7.39941 0 16.0996 6.7002 21.5 11.7998c2.2998 2.2002 4.39941 4.40039 6.39941 6.59961c-1 -3 -7.09961 -22 -7.2998 -25.1992c-0.0996094 -1 -0.200195 -4.90039 0.799805 -6.30078
-c0.5 -0.799805 1.40039 -1.19922 2.60059 -1.19922c2.89941 0 5.59961 4.69922 6.2998 7.5c0 0 1.7998 6.2998 7.59961 25.7998c6.30078 21.0996 10 24.5 10 34.7002c0 5.59961 -7.2998 6.7998 -9.89941 0l-5.2002 -15.5c-2.2002 -4.5 -8 -11.5 -12.5 -16
-c-3.5 -3.5 -10.7998 -10.1006 -15.7998 -10.1006c-2.40039 0 -3.90039 1.40039 -4.90039 3.60059c-2.2998 5.2998 -0.899414 14.2998 0.600586 19.8994c2.59961 9.7002 6.89941 19.4004 12 28.2002c4.19922 7.2998 10.1992 15.7002 17.0996 20.7002
-c6.59961 4.7998 12.7998 4.5 16.9004 -2.7998c1.5 -2.7002 3.7998 -7.30078 6.7998 -7.30078c2.5 0 5.7002 2.60059 4.5 9.10059c-0.5 2.5 -4.90039 8.7998 -10.1006 11.7998c-6 3.59961 -12.3994 3.59961 -18.6992 0.900391
-c-19.2002 -8.2002 -34.1006 -35.2002 -40 -55.2002zM243.5 318.7c0 -21 -231.2 -21 -231.2 0c0 8.7998 51.7998 15.8994 115.601 15.8994c9 0 17.7998 -0.0996094 26.2998 -0.399414l12.5996 48.7002l61.2998 64.5c1.40039 1.39941 5.80078 0.199219 9.90039 -3.5
-c4.09961 -3.7002 6.59961 -7.90039 5.2998 -9.30078l-0.0996094 -0.0996094l-57.2998 -60.5l-10 -40.7002c39.8994 -2.59961 67.5996 -8.09961 67.5996 -14.5996zM174.1 314.1c0 0.800781 -0.899414 1.5 -2.5 2.10059l-0.199219 -0.799805
-c0 -1.30078 -5 -2.40039 -11.1006 -2.40039c-6.09961 0 -11.0996 1.09961 -11.0996 2.40039c0 0.0996094 0 0.199219 0.0996094 0.299805l0.200195 0.700195c-1.7998 -0.600586 -3 -1.40039 -3 -2.30078c0 -2.09961 6.2002 -3.69922 13.7002 -3.69922
-c7.7002 -0.100586 13.8994 1.59961 13.8994 3.69922z" />
-    <glyph glyph-name="hacker-news-square" unicode="&#xf3af;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391z
-M239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6c-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z" />
-    <glyph glyph-name="hire-a-helper" unicode="&#xf3b0;" horiz-adv-x="512" 
-d="M443.1 448c3.90039 -36.4004 32.5 -65.7998 68.9004 -71.7002v-370.5c-35.4004 -4 -64.9004 -33.3994 -67.9004 -69.7998h-372.199c-5.90039 36.4004 -34.5 63.9004 -71.9004 68.7998v371.5c37.4004 3.90039 67.9004 34.4004 71.9004 71.7002h371.199zM406.1 43.0996
-c7.80078 0 5.80078 10.8008 0 10.8008c-10.2998 3.39941 -13.5 3.59961 -21.6992 13.7998c-7.80078 12.8994 -7.90039 44.3994 -7.90039 127.8v101.2c0 22.0996 12.2002 28.2998 28.5996 32.3994c8.90039 2.2002 3.90039 11.8008 -1 11.8008
-c-36.5 0 -20.5996 -2 -57.0996 -2c-32.7002 0 -16.5 2 -49.2002 2c-3.2998 0 -8.5 -8.30078 -1 -10.8008c4.90039 -1.59961 27.6006 -3.69922 27.6006 -39.2998c0 -45.5996 0.199219 -55.7998 -1 -68.7998c0 -1.2998 -2.30078 -12.7998 -12.8008 -12.7998h-109.199
-c-10.5 0 -12.8008 11.5 -12.8008 12.7998c-1.19922 13 -1 23.2002 -1 68.7998c0 35.6006 22.7002 37.7002 27.6006 39.2998c7.5 2.5 2.2998 10.8008 -1 10.8008c-32.7002 0 -16.5 -2 -49.2002 -2c-36.5 0 -20.5996 2 -57.0996 2c-5 0 -9.80078 -9.60059 -1 -11.8008
-c16.3994 -4.09961 28.5996 -10.1992 28.5996 -32.3994v-101.2c0 -83.4004 -0.200195 -114.9 -7.90039 -127.8c-8.19922 -10.2998 -11.5 -10.4004 -21.6992 -13.7998c-5.80078 0 -7.90039 -10.8008 0 -10.8008c36.2998 0 18.7998 2 55.0996 2c35.7998 0 21 -2 56.0996 -2
-c6 0 4.90039 8.2002 0 9.80078c-22.7998 7.59961 -22.8994 10.2998 -24.5996 12.7998c-10.4004 15.5996 -5.90039 83 -5.90039 113c0 5.2998 6.40039 12.7998 13.8008 12.7998h111.199c7.40039 0 13.8008 -7.5 13.8008 -12.7998c0 -30 4.5 -97.4004 -5.90039 -113
-c-1.7002 -2.60059 -1.7998 -5.2002 -24.5996 -12.7998c-4.90039 -1.60059 -5.90039 -9.80078 0 -9.80078c35.0996 0 20.2998 2 56.0996 2c36.2998 0 18.7998 -2 55.0996 -2z" />
-    <glyph glyph-name="hotjar" unicode="&#xf3b1;" 
-d="M414.9 286.5c30 -53 41.7998 -121.6 26.2998 -180.9c-14.7002 -56.6992 -68.2998 -120.3 -148.8 -145.6c54.5 76.9004 43.8994 200.1 -27.1006 215.5c54.2002 -93.9004 -53.7002 -180.3 -110.8 -93.9004c-2.5 -7.19922 -25.0996 -74.5 4.09961 -129.6
-c-61.0996 9.09961 -117.8 33.5 -144.6 93.4004c-35 78.1992 -2.7002 149.8 79 204.899c129.2 87.2998 28.0996 197.7 28.0996 197.7s219.101 -29 293.801 -161.5z" />
-    <glyph glyph-name="hubspot" unicode="&#xf3b2;" horiz-adv-x="512" 
-d="M267.4 236.4l-163.2 114.699c-7.90039 -4.69922 -17 -7.59961 -26.7998 -7.59961c-28.8008 0 -52.2002 23.4004 -52.2002 52.2998c0 28.7998 23.3994 52.2002 52.2002 52.2002c28.8994 0 52.3994 -23.4004 52.3994 -52.2002c0 -4.7998 -0.799805 -9.39941 -2 -13.7998
-c51.4004 -39.0996 141.3 -103.9 168.9 -124.8c13.0996 6.89941 27.5 11.5 42.7002 13.5996v61.2002c-17.5 7.40039 -28.2002 23.7998 -28.2002 42.9004c0 26.0996 20.5996 47.8994 46.7002 47.8994c26.0996 0 47 -21.7998 47 -47.8994
-c0 -19.1006 -10.7002 -35.5 -28.2002 -42.9004v-61.5996c62.5 -9.5 110.2 -63.5 110.2 -128.7c0 -71.9004 -58.1006 -130.2 -130 -130.2c-29.9004 0 -57.3008 10 -79.3008 26.9004l-50 -50.2002c1.30078 -3.90039 1.90039 -7.90039 1.90039 -12.1006
-c0 -10.6992 -4.2002 -20.8994 -11.7998 -28.5c-7.7002 -7.69922 -17.7998 -11.5996 -28.6006 -11.5996c-10.6992 0 -20.8994 4 -28.5 11.5996c-7.59961 7.60059 -11.7998 17.7002 -11.7998 28.5c0 10.8008 4.2002 21 11.7998 28.6006
-c7.60059 7.59961 17.7002 11.7998 28.5 11.7998c4.90039 0 9.60059 -0.900391 14 -2.5l49.5 49.7998c-16.2998 21.7002 -26 48.7002 -26 78c0 37.2998 15.7002 70.9004 40.8008 94.6006zM356.9 72.7998c38.0996 0 69 30.9004 69 69c0 38.1006 -30.9004 69 -69 69
-c-38.1006 0 -69 -30.8994 -69 -69c0 -38.0996 30.8994 -69 69 -69z" />
-    <glyph glyph-name="itunes" unicode="&#xf3b4;" 
-d="M223.6 367.7c94.5 0 171.2 -76.7002 171.2 -171.3c0 -94.5 -76.5996 -171.2 -171.2 -171.2c-94.5996 0 -171.1 76.7998 -171.1 171.3s76.5 171.2 171.1 171.2zM303 127.7c1.40039 6.2002 0.900391 -3 1 167.6c0 5.7002 -3.2998 9.10059 -9 8.7002
-c-1.7998 0 -14.0996 -2.40039 -115.1 -21.4004c-0.900391 0 -4.60059 -1 -6.7002 -2.69922c-2 -1.60059 -3.10059 -3.80078 -3.5 -6.40039c-1.7002 -6.7002 2.39941 -128 -2.60059 -133.7c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002
-c-17.7002 -3.19922 -29.6006 -4.7998 -38 -12.7998c-14.5 -14.2002 -7 -38.8994 14.3994 -42.8994c8 -1.40039 23.1006 0.599609 31.4004 5.19922c7.2998 3.80078 12.7998 10.6006 14.8994 19.6006c1.7002 7.7002 1.2002 2.39941 1.2002 118.5
-c0 5.7002 1.7002 7.2002 6.7002 8.2998c0 0 87.9004 16.4004 91.9004 17.0996c5.69922 1 8.39941 -0.5 8.39941 -6.09961c0 -78.7998 1 -77.2002 -2.2002 -80.7998c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002c-17.7002 -3.2002 -29.6006 -4.7998 -38 -12.7998
-c-10.6006 -10.4004 -10.4004 -26.7998 1.39941 -36.7998c9.7002 -7.80078 19.7998 -7.2002 31.9004 -5c13.7998 2.59961 24.0996 10.1992 27.2998 23.7998zM345.2 416c56.8994 0 102.8 -45.9004 102.8 -102.8v-242.4c0 -56.8994 -45.7998 -102.8 -102.8 -102.8h-242.4
-c-56.8994 0 -102.8 45.9004 -102.8 102.8v242.4c0 56.8994 45.9004 102.8 102.8 102.8h242.4zM223.6 4c106.301 0 192.5 86.2002 192.5 192.5s-86.1992 192.5 -192.5 192.5c-106.3 0 -192.5 -86.2002 -192.5 -192.5s86.2002 -192.5 192.5 -192.5z" />
-    <glyph glyph-name="itunes-note" unicode="&#xf3b5;" horiz-adv-x="384" 
-d="M381.9 59.7998c-6.40039 -27.3994 -27.2002 -42.7998 -55.1006 -48c-24.5 -4.5 -44.8994 -5.59961 -64.5 10.2002c-23.8994 20.0996 -24.2002 53.4004 -2.7002 74.4004c17 16.1992 40.9004 19.5 76.8008 25.7998c6 1.09961 11.1992 2.5 15.5996 7.39941
-c6.40039 7.2002 4.40039 4.10059 4.40039 163.2c0 11.2002 -5.5 14.2998 -17 12.2998c-8.2002 -1.39941 -185.7 -34.5996 -185.7 -34.5996c-10.2002 -2.2002 -13.4004 -5.2002 -13.4004 -16.7002c0 -234.7 1.10059 -223.899 -2.5 -239.5
-c-4.2002 -18.2002 -15.3994 -31.8994 -30.2002 -39.5c-16.7998 -9.2998 -47.1992 -13.3994 -63.3994 -10.3994c-43.2002 8.09961 -58.4004 58 -29.1006 86.5996c17 16.2002 40.9004 19.5 76.8008 25.7998c6 1.10059 11.1992 2.5 15.5996 7.40039
-c10.0996 11.5 1.7998 256.6 5.2002 270.2c0.799805 5.19922 3 9.59961 7.09961 12.8994c4.2002 3.5 11.7998 5.5 13.4004 5.5c204 38.2002 228.899 43.1006 232.399 43.1006c11.5 0.799805 18.1006 -6 18.1006 -17.6006c0.200195 -344.5 1.09961 -326 -1.7998 -338.5z" />
-    <glyph glyph-name="jenkins" unicode="&#xf3b6;" horiz-adv-x="512" 
-d="M487.1 23c1.5 -11.9004 -5.2998 -28.2998 -8.69922 -39.7002c-4.90039 -16.2998 -9.7002 -31.8994 -14.6006 -47.2002h-422c-0.700195 1.90039 -1.39941 4 -2.09961 6c-4.60059 14.2002 -12.6006 31.7002 -14.7002 45.8008
-c-3.09961 20.8994 16.5996 22.0996 29.2002 31.0996c19.5 14 34.7998 21.7998 55.8994 34.2998c6.30078 3.7998 25.1006 13.2002 27.3008 17.6006c4.2998 8.69922 -7.30078 20.8994 -10.4004 27.6992c-4.90039 10.7002 -7.5 19.8008 -8.2002 30.4004
-c-17.7002 2.7998 -31.0996 13.2998 -39.2002 25.2002c-13.3994 19.7002 -22.6992 56 -11.0996 83.7002c0.900391 2.19922 5.40039 6.5 6.09961 9.7998c1.40039 6.59961 -2.5 15.3994 -2.69922 22.3994c-1.2002 36 6.09961 67 30.2998 77.8008
-c9.7998 39.0996 45 52.1992 78.0996 71.5996c12.2998 7.2998 26 11.9004 40.1006 17.0996c50.5 18.7002 128.1 15.1006 170.1 -16.5996c17.7998 -13.5 46.2002 -41.9004 56.4004 -62.5c26.8994 -54.2998 25 -145.1 6.19922 -211.2
-c-2.5 -8.89941 -6.19922 -21.8994 -11.2998 -32.5996c-3.59961 -7.40039 -14.7002 -22.2998 -13.2998 -28.9004c1.40039 -6.7998 25.2998 -24.8994 30.4004 -29.8994c9.19922 -8.80078 26.7998 -20.7002 28.1992 -31.9004zM205.9 414.3
-c-33.2002 -9.39941 -75.7002 -33.5 -89.3008 -63.3994c10.6006 1.5 17.9004 6.7998 28.3008 7.5c3.89941 0.299805 9.09961 -1.60059 13.5996 -0.5c9 2.2998 16.5996 22.5 23.4004 30c6.59961 7.39941 14.5996 10.5 20 17.1992c3.5 1.7002 8.69922 1.60059 8.89941 6.80078
-c-1.5 1.69922 -3.09961 2.89941 -4.89941 2.39941zM101.1 320.7c-14.6992 -16.1006 -11.5996 -46.2998 -9.7998 -67.7998c26.5 16.6992 61.6006 -1.30078 61.2998 -29.6006c12.6006 0.299805 4.7002 15.7998 2.40039 25.7002c-7.5 32.5996 12.5996 67.9004 0.900391 97.5996
-c-22.7002 -1.7998 -41.3008 -11 -54.8008 -25.8994zM137.8 120.5c4.90039 -20 15.7002 -46 26.2998 -61.4004c13.6006 -19.3994 40.1006 -22.2998 68.7002 -24.1992c5.10059 11 23.9004 10.0996 36.2002 7.19922c-14.7002 5.80078 -28.4004 19.9004 -39.7002 32.4004
-c-13 14.2998 -26.0996 29.7002 -26.7998 48.4004c24.5 -34 44.7998 -63.8008 89.5 -78.8008c33.7998 -11.2998 73.2002 5.2002 99.2002 23.4004c10.7998 7.59961 17.2002 19.5996 24.8994 30.5996c28.7002 41.2002 42 100.101 39.1006 157.101
-c-1.2002 23.5 -1.10059 47 -9 62.7998c-8.2998 16.5996 -36.2002 31.2998 -52.5 16.4004c-3 16.0996 13.5996 26.0996 33.0996 20.2998c-13.8994 18 -28.5996 39.5996 -48.2998 50.7002c-34.4004 19.5 -92.7002 34.0996 -129.3 15.7998
-c-29.6006 -14.7002 -69.5 -39.1006 -83.1006 -70c12.7002 -29.7998 -3.7998 -57.1006 -4.7998 -87.4004c-0.599609 -16.0996 7.60059 -30.2002 8.2002 -47.7002c-4.40039 -7.19922 -17.7002 -8.09961 -26.9004 -7.59961c-3.09961 15.5 -8.5 32.9004 -24.5 34.7002
-c-22.5 2.39941 -39.0996 -16.2998 -40.0996 -35.7998c-1.2002 -23 17.7002 -61 44.4004 -58.4004c10.2998 1.09961 12.7998 11.4004 24.0996 11.2998c6.09961 -12.2002 -9.40039 -16 -11 -24.7002c-0.400391 -2.19922 1.2998 -11 2.2998 -15.0996zM359.8 -3.59961
-c-1.59961 -4.40039 0.299805 -10.4004 -0.599609 -16.5c14.8994 -4.2002 31.8994 -6.40039 50.7002 -7c3.69922 4.7998 4.89941 13.7998 4.5 22.7998c-0.600586 10.7998 -3.40039 33.0996 -10.1006 37c-14.0996 8.2002 -39 -16.5 -49.5996 -20.2998
-c1.2002 -3.40039 3.09961 -6 3.2002 -10.2002c6.2998 1.5 13.8994 0.5 19.2998 -2.2002c-6.2998 -0.700195 -13.2998 -0.599609 -17.4004 -3.59961zM342.6 16.4004c7.60059 5.5 14.3008 12 22.2002 17.0996c-18.2002 -1.59961 -41 -12.9004 -59 -4.90039
-c-0.0996094 -0.899414 -1.2998 -0.599609 -1.5 -1.39941c12.2998 -9.60059 21.5 -11.6006 38.2998 -10.7998zM330.5 -16.7998c26.9004 -8.40039 22.2002 36.7998 -2.7998 20.2002c-0.700195 -8.2002 1.2002 -10.8008 2.7998 -20.2002zM226 9.40039
-c0 6.19922 3.59961 12 2.7998 16.3994c-13.7998 2.40039 -31.8994 0.799805 -41.2998 7.2998c-9.59961 -9.69922 26.9004 -23 38.5 -23.6992zM57.7002 -49.0996v-0.100586h180.7c-0.800781 2.5 -1.5 4.90039 -2.2002 7.2002c-4.7998 15.2998 -7.5 26.7002 -8.7002 35.5
-c-19.2002 9.2002 -39.7002 18.5 -56.2002 30.2002c-3 2.2002 -23.3994 28.7002 -26.2002 27.5996c-36.8994 -14.5996 -71.3994 -39.7002 -102.199 -63.5c5.59961 -11.7998 10.5 -24.2002 14.7998 -36.8994zM298.3 -54.7998h-0.799805
-c0.299805 0.200195 0.5 0.399414 0.799805 0.5v-0.5zM305.8 -49.0996h9.60059c-1 1.5 -2.10059 2.89941 -3.2002 4.2998c-2.10059 -1.5 -4.2998 -2.90039 -6.40039 -4.2998zM320.9 -24.4004c0.0996094 3.60059 0.299805 7.2002 0.399414 10.6006
-c-6.5 3.2002 -14 5.5 -23.5 5.89941c6.5 3.30078 15.9004 3.2002 21.7998 7.10059c0.100586 1.5 0.100586 2.89941 0.200195 4.2998c-10.7998 0.900391 -14.7998 5.59961 -21.8994 9.5c-11.6006 6.40039 -29 13.2002 -43.9004 16.0996
-c-18.5 3.60059 -16.7998 -25.1992 -16 -42.3994c0.700195 -13.6006 7.7002 -28 10.7998 -37c1.5 -4.2002 1.7998 -8.7002 5.40039 -9.5c6.39941 -1.5 27.3994 6.89941 33.3994 10.2002c12.7002 6.89941 22.5 17.8994 33.3008 25.1992zM374.3 -49.0996l0.600586 12.5996
-c-11.2002 -0.700195 -17.5 10.2002 -25.4004 11c-6.90039 0.700195 -12.7002 -7.90039 -21.7002 -4.2002c-2 -2.2002 -3.89941 -4.7002 -6 -6.89941c3.2002 -3.90039 6.10059 -8.10059 8.90039 -12.5h17.3994c0.200195 3.19922 2.80078 5.7998 6.10059 5.7998
-s6 -2.60059 6.09961 -5.7998h14zM383 -49.0996h36.2998c-6.7002 10.1992 -20.0996 18.7998 -35.7002 11.5c-0.199219 -3.7002 -0.399414 -7.5 -0.599609 -11.5zM466.4 -12.0996c1.19922 6.19922 4.59961 19.5996 3.7998 25.0996
-c-1.40039 9.7998 -14.6006 17.0996 -21.4004 23.0996c-12.3994 11.1006 -20.2002 21 -33.2002 31.4004c-5.19922 -7.7998 -16.5 -13 -20.7998 -19.2998c30.7002 14.8994 36.2998 -55.7998 24.2002 -78.5c1.90039 -6.7998 8.2998 -9.40039 10.9004 -15.5
-c-0.700195 -1.10059 -1.30078 -2.2002 -1.90039 -3.2998h27.9004c0.199219 0 0.399414 0 0.599609 -0.100586c4.09961 13.1006 7.59961 25.9004 9.90039 37.1006zM222.2 317.5c5.39941 14.9004 27.2002 34.7002 45 32c7.7002 -1.2002 18 -8.2002 12.2002 -17.7002
-c-30.2002 7 -45.2002 -12.5996 -54.4004 -33.0996c-8.09961 2 -4.90039 13.0996 -2.7998 18.7998zM406.3 254.4c8.2002 3.59961 22.4004 0.699219 29.6006 5.2998c-4.2002 11.5 -10.3008 21.3994 -9.30078 37.7002c0.5 0 1 0 1.40039 -0.100586
-c6.7998 -14.2002 12.7002 -29.2002 21.4004 -41.7002c-5.7002 -13.5 -43.6006 -25.3994 -43.1006 -1.19922zM309.5 251.7c-6.7998 10.8994 -19 32.5 -14.5 45.2998c6.5 -11.9004 8.59961 -24.4004 17.7998 -33.2998c4.10059 -4 12.2002 -9 8.2002 -20.2002
-c-0.900391 -2.7002 -7.7998 -8.59961 -11.7002 -9.7002c-14.3994 -4.2998 -47.8994 -0.899414 -36.5996 17.1006c11.8994 -0.700195 27.8994 -7.80078 36.7998 0.799805zM336.8 181.7c3.7998 -6.60059 1.40039 -18.7002 12.1006 -20.6006
-c20.1992 -3.39941 43.5996 12.3008 58.0996 17.8008c9 15.1992 -0.799805 20.6992 -8.90039 30.5c-16.5996 20 -38.7998 44.7998 -38 74.6992c6.7002 4.90039 7.30078 -7.39941 8.2002 -9.69922c8.7002 -20.3008 30.4004 -46.2002 46.2998 -63.5
-c3.90039 -4.30078 10.3008 -8.40039 11 -11.2002c2.10059 -8.2002 -5.39941 -18 -4.5 -23.5c-21.6992 -13.9004 -45.7998 -29.1006 -81.3994 -25.6006c-7.40039 6.7002 -10.2998 21.4004 -2.90039 31.1006zM135.5 190.9c-6.7998 3.89941 -8.40039 21 -16.4004 21.3994
-c-11.3994 0.700195 -9.2998 -22.2002 -9.2998 -35.5c-7.7998 7.10059 -9.2002 29.1006 -3.5 40.2998c-6.59961 3.2002 -9.5 -3.59961 -13.0996 -5.89941c4.7002 34.0996 49.7998 15.7998 42.2998 -20.2998zM435.1 162.1c-10.0996 -19.1992 -24.3994 -40.3994 -54 -41
-c-0.599609 6.2002 -1.09961 15.6006 0 19.4004c22.7002 2.2002 36.6006 13.7002 54 21.5996zM293.2 149.7c18.8994 -9.90039 53.5996 -11 79.2998 -10.2002c1.40039 -5.59961 1.2998 -12.5996 1.40039 -19.4004c-33 -1.7998 -72 6.40039 -80.7002 29.6006zM385.4 103
-c-1.7002 -4.2998 -5.30078 -9.2998 -9.80078 -11.0996c-12.0996 -4.90039 -45.5996 -8.7002 -62.3994 0.299805c-10.7002 5.7002 -17.5 18.5 -23.4004 26c-2.7998 3.59961 -16.8994 12.8994 -0.200195 12.8994c13.1006 -32.6992 58 -29 95.8008 -28.0996z" />
-    <glyph glyph-name="joget" unicode="&#xf3b7;" horiz-adv-x="496" 
-d="M378.1 403c116.601 -71.7998 152.9 -224.6 81 -341.2c-71.8994 -116.5 -224.6 -152.8 -341.199 -80.8994c-116.601 71.8994 -152.9 224.6 -81 341.199c46.8994 76 128.1 117.9 211.3 117.9c44.3994 0 89.3994 -11.9004 129.899 -37zM429.9 79.7998
-c5.2998 8.7002 9.89941 17.6006 13.8994 26.6006c-32.0996 -1.10059 -157.1 1.5 -208.8 -17.6006c-58.4004 -21.5 -36.9004 -53.3994 -31.2002 -67.0996c3.7998 -9.10059 14.7002 -28.7998 23.7002 -42.4004c6.7998 -0.599609 13.5996 -1 20.4004 -1
-c71.5996 0 141.6 36 182 101.5zM229.1 166.1c51 -1.2998 205.4 -4.39941 230.301 -4.89941c11.8994 81.7998 -24.5 166.6 -99.3008 212.7c-100.5 61.8994 -232.1 30.6992 -294 -69.8008c-28.5996 -46.3994 -37.2998 -99.3994 -28.5 -149.1
-c11 40.9004 49.7002 131.5 178.301 140.2c50.8994 4 41.5 -19.2002 23.5996 -29.7002c-17.7998 -10.5 -45.7002 -23.7998 -68.9004 -51.2002c-23.1992 -27.3994 3 -46.7998 58.5 -48.2002zM412.9 220.9c22.6992 -6 19.0996 -15.5 19.0996 -15.5l-46.5 -23.4004
-l-169.5 -1.59961s33.7998 10.7998 65.2998 31.2998c26 16.8994 49.7002 35.5996 67.5 35.5996c3.7002 0 7.2002 -0.899414 10.4004 -2.7002c18.5 -10.5996 -2.90039 -18.1992 -13.4004 -24.5996s-50.7002 -34.5 -50.7002 -34.5s1.40039 -7.59961 31.1006 8.2002
-c29.7002 15.8994 64 33.2002 86.7002 27.2002z" />
-    <glyph glyph-name="js" unicode="&#xf3b8;" 
-d="M0 416h448v-448h-448v448zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996l-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961
-c39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996c0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21
-c-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5c19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998
-c-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z" />
-    <glyph glyph-name="js-square" unicode="&#xf3b9;" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996
-l-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961c39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996
-c0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21c-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5
-c19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998c-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z" />
-    <glyph glyph-name="keycdn" unicode="&#xf3ba;" horiz-adv-x="512" 
-d="M63.7998 38.7002l60.5 59c32.1006 -42.7998 71.1006 -66 126.601 -67.4004c30.5 -0.700195 60.2998 7 86.3994 22.4004c5.10059 -5.2998 18.5 -19.5 20.9004 -22c-32.2002 -20.7002 -69.6006 -31.1006 -108.101 -30.2002
-c-43.2998 1.09961 -84.5996 16.7002 -117.699 44.4004c0.299805 0.599609 -38.2002 -37.5 -38.6006 -37.9004c9.5 -29.7998 -13.0996 -62.4004 -46.2998 -62.4004c-26.7998 0.100586 -47.5 21.7002 -47.5 48.5c0 34.3008 33.0996 56.6006 63.7998 45.6006zM418.7 291.1
-c19.0996 -31.2998 29.5996 -67.3994 28.7002 -104c-1.10059 -44.7998 -19 -87.5 -48.6006 -121c0.299805 -0.299805 23.7998 -25.1992 24.1006 -25.5c9.59961 1.30078 19.1992 -2 25.8994 -9.09961c11.2998 -12 10.9004 -30.9004 -1.09961 -42.4004
-c-12 -11.2998 -30.9004 -10.8994 -42.4004 1.10059c-6.7002 7 -9.39941 16.7998 -7.59961 26.2998c-24.9004 26.5996 -44.4004 47.2002 -44.4004 47.2002c42.7002 34.0996 63.2998 79.5996 64.4004 124.2c0.700195 28.8994 -7.2002 57.1992 -21.1006 82.1992zM104 394.9
-c6.7002 -7 9.40039 -16.8008 7.59961 -26.3008l45.9004 -48.0996c-4.7002 -3.7998 -13.2998 -10.4004 -22.7998 -21.2998c-25.4004 -28.5 -39.6006 -64.7998 -40.7002 -102.9c-0.700195 -28.8994 6.09961 -57.2002 20 -82.3994l-22 -21.5
-c-19.2998 31.5996 -28.9004 67.6992 -27.7998 104.699c1 44.6006 18.2998 87.6006 47.5 121.101l-25.2998 26.3994c-9.60059 -1.2998 -19.2002 2 -25.9004 9.10059c-11.2998 12 -10.9004 30.8994 1.09961 42.3994c11.9004 11.2002 30.6006 10.9004 42.4004 -1.19922z
-M464.9 440c26 0 47.0996 -22.4004 47.0996 -48.2998c0 -25.9004 -21.0996 -47.7002 -47.0996 -47.7002c-6.30078 -0.0996094 -14 1.09961 -15.9004 1.7998l-62.9004 -59.7002c-32.6992 43.6006 -76.6992 65.9004 -126.899 67.2002
-c-30.5 0.700195 -60.2998 -6.7998 -86.2002 -22.3994l-21.0996 22c32.1992 20.7998 69.5996 31.0996 108.1 30.1992c43.2998 -1.09961 84.5996 -16.6992 117.7 -44.5996l41.0996 38.5996c-1.5 4.7002 -2.2002 9.60059 -2.2002 14.5
-c-0.0996094 26.7002 22.3008 48.4004 48.3008 48.4004zM256.7 334.6c5.5 0 10.8994 -0.399414 16.3994 -1.09961c78.1006 -9.7998 133.4 -81.0996 123.801 -159.1c-9.80078 -78.1006 -81.1006 -133.4 -159.101 -123.801c-78.0996 9.80078 -133.399 81.1006 -123.8 159.2
-c9.2998 72.4004 70.0996 124.601 142.7 124.8zM197.7 215.2c0.599609 -22.7002 12.2002 -41.7998 32.3994 -52.2002l-11 -51.7002h73.7002l-11 51.7002c20.1006 10.9004 32.1006 29 32.4004 52.2002c-0.400391 32.7998 -25.7998 57.5 -58.2998 58.2998
-c-32.1006 -0.799805 -57.3008 -24.7998 -58.2002 -58.2998zM256 288z" />
-    <glyph glyph-name="kickstarter" unicode="&#xf3bb;" 
-d="M400 -32h-352c-26.4004 0 -48 21.5996 -48 48v352c0 26.4004 21.5996 48 48 48h352c26.4004 0 48 -21.5996 48 -48v-352c0 -26.4004 -21.5996 -48 -48 -48zM199.6 269.5c0 30.7002 -17.5996 45.0996 -39.6992 45.0996c-25.8008 0 -40 -19.7998 -40 -44.5v-154.8
-c0 -25.7998 13.6992 -45.5996 40.5 -45.5996c21.5 0 39.1992 14 39.1992 45.5996v41.7998l60.6006 -75.6992c12.2998 -14.9004 39 -16.8008 55.7998 0c14.5996 15.0996 14.7998 36.7998 4 50.3994l-49.0996 62.7998l40.5 58.7002c9.39941 13.5 9.5 34.5 -5.60059 49.1006
-c-16.3994 15.8994 -44.5996 17.2998 -61.3994 -7l-44.8008 -64.7002v38.7998z" />
-    <glyph glyph-name="kickstarter-k" unicode="&#xf3bc;" horiz-adv-x="384" 
-d="M147.3 333.6v-70.5996l82.7998 118.2c31.2002 44.3994 83.3008 41.7998 113.601 12.7998c27.8994 -26.7002 27.7998 -65.0996 10.3994 -89.7998l-74.8994 -107.4l90.7998 -114.8c19.9004 -24.7998 19.5996 -64.5996 -7.40039 -92.2002
-c-31.0996 -30.7002 -80.5 -27.2002 -103.199 0l-112.101 138.3v-76.5c0 -57.7998 -32.5996 -83.3994 -72.3994 -83.3994c-49.6006 0 -74.9004 36.0996 -74.9004 83.3994v283c0 45.2002 26.2002 81.4004 73.9004 81.4004c40.8994 0 73.3994 -26.2002 73.3994 -82.4004z" />
-    <glyph glyph-name="laravel" unicode="&#xf3bd;" horiz-adv-x="512" 
-d="M504.4 332.17c0.15625 -0.650391 0.240234 -1.32324 0.240234 -2.02051c0 -0.0234375 0 -0.046875 -0.000976562 -0.0693359v-109.85c0.000976562 -0.0244141 0.00878906 -0.0429688 0.00878906 -0.0673828c0 -2.96191 -1.61328 -5.5498 -4.00879 -6.93262
-l-92.2393 -53.1104v-105.26c0 -0.0078125 0.0078125 -0.00976562 0.0078125 -0.0166016c0 -2.96289 -1.61328 -5.55078 -4.00781 -6.93359l-192.561 -110.84c-0.442383 -0.231445 -0.916016 -0.428711 -1.39941 -0.580078
-c-0.180664 -0.0605469 -0.350586 -0.169922 -0.550781 -0.220703c-0.654297 -0.174805 -1.33789 -0.268555 -2.04688 -0.268555c-0.709961 0 -1.39844 0.09375 -2.05273 0.268555c-0.219727 0.0605469 -0.419922 0.180664 -0.629883 0.260742
-c-0.458008 0.143555 -0.908203 0.327148 -1.33008 0.540039l-192.5 110.84c-2.39551 1.38281 -4 3.96582 -4 6.92773v0.0224609v329.699c0.00195312 0.727539 0.0996094 1.42969 0.280273 2.10059c0.0839844 0.228516 0.181641 0.454102 0.290039 0.669922
-c0.133789 0.427734 0.307617 0.84668 0.509766 1.24023c0.149414 0.259766 0.370117 0.469727 0.549805 0.719727c0.21582 0.329102 0.450195 0.636719 0.709961 0.929688c0.250977 0.217773 0.512695 0.416016 0.790039 0.600586
-c0.274414 0.254883 0.56543 0.483398 0.879883 0.689453v0l96.2705 55.4199c1.1748 0.678711 2.55469 1.06738 4.00781 1.06738s2.81641 -0.388672 3.99219 -1.06738l96.29 -55.4199v0c0.307617 -0.210938 0.598633 -0.435547 0.879883 -0.679688
-c0.271484 -0.1875 0.529297 -0.385742 0.779297 -0.599609c0.260742 -0.298828 0.499023 -0.610352 0.720703 -0.94043c0.169922 -0.25 0.399414 -0.459961 0.540039 -0.719727c0.203125 -0.393555 0.379883 -0.813477 0.519531 -1.24023
-c0.0800781 -0.230469 0.219727 -0.44043 0.280273 -0.679688c0.181641 -0.661133 0.280273 -1.35352 0.280273 -2.07129v-0.0195312v-205.93l80.2197 46.1904v105.239c0.00292969 0.720703 0.100586 1.41602 0.280273 2.08008
-c0.0693359 0.240234 0.199219 0.450195 0.279297 0.680664c0.144531 0.427734 0.320312 0.850586 0.520508 1.25c0.149414 0.259766 0.370117 0.469727 0.540039 0.709961c0.21875 0.329102 0.457031 0.636719 0.719727 0.929688
-c0.248047 0.216797 0.505859 0.416016 0.780273 0.599609c0.277344 0.250977 0.568359 0.479492 0.879883 0.69043v0l96.2803 55.4502c1.1748 0.677734 2.55469 1.06641 4.00781 1.06641s2.81641 -0.388672 3.99219 -1.06641l96.2598 -55.4199
-c0.316406 -0.208984 0.613281 -0.433594 0.899414 -0.680664c0.25 -0.199219 0.540039 -0.379883 0.770508 -0.599609c0.260742 -0.298828 0.499023 -0.609375 0.719727 -0.94043c0.198242 -0.223633 0.376953 -0.458008 0.540039 -0.709961
-c0.207031 -0.396484 0.386719 -0.819336 0.530273 -1.25c0.106445 -0.217773 0.201172 -0.447266 0.280273 -0.679688zM111.6 430.72l-80.1895 -46.1602l80.1797 -46.1699l80.2002 46.1807l-80.1904 46.1494v0zM199.85 370.72l-33.6895 -19.4297l-46.5303 -26.79v-201.29
-l33.6904 19.4004l46.5293 26.79v201.319zM199.85 -42.0596l-0.109375 92.3594l-92.1904 52.1807v0v0c-0.301758 0.203125 -0.585938 0.421875 -0.859375 0.65918c-0.25 0.200195 -0.540039 0.360352 -0.770508 0.580078v0
-c-0.240234 0.265625 -0.458008 0.542969 -0.660156 0.839844c-0.21582 0.25 -0.414062 0.507812 -0.599609 0.780273v0c-0.166016 0.316406 -0.308594 0.655273 -0.419922 1c-0.149414 0.285156 -0.27832 0.589844 -0.379883 0.900391v0
-c-0.0820312 0.383789 -0.135742 0.77832 -0.160156 1.17969c-0.0595703 0.293945 -0.0996094 0.594727 -0.120117 0.900391v215.18l-46.5205 26.7998l-33.6895 19.3799v-311.18zM207.85 64.1104l117.62 67.1494l58.7998 33.5605l-80.1299 46.1299l-92.2598 -53.1104
-l-84.0898 -48.4102zM392.37 59.54v91.4102l-45.7705 -26.1504l-130.72 -74.5996v-92.3105zM392.37 178.67v91.3301l-46.5303 26.8096l-33.6895 19.4004v-91.4199l46.5293 -26.79zM400.37 283.95l80.1797 46.1797l-80.1797 46.1504l-80.2002 -46.1602zM408.37 178.67
-l80.3096 46.1504v0v91.3896l-33.6797 -19.4004l-46.6299 -26.8096v-91.3301z" />
-    <glyph glyph-name="line" unicode="&#xf3c0;" 
-d="M272.1 243.8v-71.0996c0 -1.7998 -1.39941 -3.2002 -3.19922 -3.2002h-11.4004c-1.09961 0 -2.09961 0.599609 -2.59961 1.2998l-32.6006 44v-42.2002c0 -1.7998 -1.39941 -3.19922 -3.2002 -3.19922h-11.3994c-1.7998 0 -3.2002 1.39941 -3.2002 3.19922v71.1006
-c0 1.7998 1.40039 3.2002 3.2002 3.2002h11.2998c1 0 2.09961 -0.5 2.59961 -1.40039l32.6006 -44v42.2002c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0.0996094 3.2998 -1.40039 3.2998 -3.10059zM190.1 247c1.80078 0 3.2002 -1.5 3.2002 -3.2002v-71.0996
-c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-11.3994c-1.7998 0 -3.2002 1.40039 -3.2002 3.2002v71.0996c0 1.7998 1.40039 3.2002 3.2002 3.2002h11.3994zM162.6 187.4c1.7002 0 3.10059 -1.5 3.10059 -3.2002v-11.4004c0 -1.7998 -1.40039 -3.2002 -3.2002 -3.2002
-h-45.7002c-0.899414 0 -1.59961 0.400391 -2.2002 0.900391c-0.599609 0.599609 -0.899414 1.2998 -0.899414 2.2002v71.0996c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0 3.2002 -1.40039 3.2002 -3.2002v-56.3994h31.0996zM332.1 247
-c1.7002 0 3.10059 -1.5 3.2002 -3.2002v-11.3994c0 -1.80078 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996c1.80078 0 3.2002 -1.40039 3.2002 -3.2002v-11.5c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996
-c1.80078 0 3.2002 -1.39941 3.2002 -3.2002v-11.3994c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-45.6992c-1.80078 0 -3.2002 1.5 -3.2002 3.2002v71.0996c0 1.7998 1.5 3.2002 3.2002 3.2002h45.6992zM448 334.3v-285.3
-c-0.0996094 -44.7998 -36.7998 -81.0996 -81.7002 -81h-285.3c-44.7998 0.0996094 -81.0996 36.9004 -81 81.7002v285.3c0.0996094 44.7998 36.9004 81.0996 81.7002 81h285.3c44.7998 -0.0996094 81.0996 -36.7998 81 -81.7002zM386.4 211.7
-c0 73 -73.2002 132.399 -163.101 132.399c-89.8994 0 -163.1 -59.3994 -163.1 -132.399c0 -65.4004 58 -120.2 136.399 -130.601c19.1006 -4.09961 16.9004 -11.0996 12.6006 -36.7998c-0.700195 -4.09961 -3.2998 -16.0996 14.0996 -8.7998
-c17.4004 7.2998 93.9004 55.2998 128.2 94.7002c23.5996 26 34.9004 52.2998 34.9004 81.5z" />
-    <glyph glyph-name="lyft" unicode="&#xf3c3;" horiz-adv-x="512" 
-d="M0 366.9h77.7998v-208.7c0 -33.1006 15 -52.7998 27.2002 -61c-12.7002 -11.1006 -51.2002 -20.9004 -80.2002 2.7998c-17 14 -24.7998 37.2998 -24.7998 59v207.9zM485.9 193.4c0 -14.2002 11.5996 -25.9004 26.0996 -25.9004v-76.5
-c-56.7002 0 -102.7 46.0996 -102.7 102.7v77.0996c0 34.6006 -52.2002 34.6006 -52.2002 0v-23.2998h38.8008v-76.7998h-38.8008v-6.7002c0 -21.7998 -7.69922 -45 -24.7998 -59c-16.2998 -13.7002 -35.7002 -16.2998 -51.7002 -14v179.2
-c0 56.7002 46.1006 102.7 102.7 102.7c49.1006 0 90.2002 -34.4004 100.3 -80.7002h26.1006v-76.7998h-23.7998v-22zM191.6 292.4v0.5h77.1006v-178.2c0 -52.4004 -29.7002 -91.7002 -76.7998 -100.8c-26.1006 -5.10059 -52.5 -2.80078 -77.6006 4.69922v70.3008
-c9.7998 -4.2002 29.5 -9.40039 45 -7.80078c20.4004 2 32.7998 11.9004 34.9004 25.3008c0 0 -21.2002 -20.4004 -58.2002 -10.6006c-37 9.90039 -45 40.1006 -45 63.9004v132.7h76.7998v-113c0 -15.4004 23.7998 -15.4004 23.7998 0v113z" />
-    <glyph glyph-name="magento" unicode="&#xf3c4;" 
-d="M445.7 320.1v-256.1l-63.4004 -36.5v255.8l-158.5 91.6006l-158.6 -91.6006l0.399414 -255.899l-63.2998 36.5996v255.9l221.9 128.1zM255.6 27.5v255.9l63.4004 -36.6006v-256l-95.0996 -54.8994l-94.9004 54.8994l-0.0996094 255.9l63.2998 36.5996v-256
-l31.7998 -18.2002z" />
-    <glyph glyph-name="medapps" unicode="&#xf3c6;" horiz-adv-x="320" 
-d="M118.3 209.6c3.5 12.5 6.90039 33.6006 13.2002 33.6006c8.2998 -1.7998 9.59961 -23.4004 18.5996 -36.6006c4.60059 23.5 5.30078 85.1006 14.1006 86.7002c9 0.700195 19.7002 -66.5 22 -77.5c9.89941 -4.09961 48.8994 -6.59961 48.8994 -6.59961
-c1.90039 -7.2998 -24 -7.60059 -40 -7.7998c-4.59961 -14.8008 -5.39941 -27.7002 -11.3994 -28c-4.7002 -0.200195 -8.2002 28.7998 -17.5 49.5996l-9.40039 -65.5c-4.39941 -13 -15.5 22.5 -21.8994 39.2998c-3.30078 0.100586 -62.4004 1.60059 -47.6006 7.7998zM228 0
-h-136c-21.2002 0 -21.2002 32 0 32h136c21.2002 0 21.2002 -32 0 -32zM204 -64h-88c-21.2002 0 -21.2002 32 0 32h88c21.2002 0 21.2002 -32 0 -32zM238.2 77.5c-3.60059 -21.2998 -36 -15.5 -32.6006 5.09961c3.60059 21.2002 5.60059 40.6006 15.3008 58.6006
-c32.5996 60.2998 66.0996 95.5 66.0996 151.6c0 67.9004 -57 123.2 -127 123.2s-127 -55.2998 -127 -123.2c0 -56.0996 33.5 -91.2998 66.0996 -151.7c9.7002 -17.8994 11.7002 -36.8994 15.3008 -58.5996c3.5 -20.7998 -29.1006 -26.0996 -32.6006 -5.09961
-c-3.2002 19.0996 -5.2002 36.3994 -11.8994 48.8994c-8 14.7002 -16.1006 28.1006 -24 41c-24.6006 40.4004 -45.9004 75.2998 -45.9004 125.5c0 85.6006 71.7998 155.2 160 155.2s160 -69.5996 160 -155.2c0 -50.2998 -21.2998 -85.0996 -45.9004 -125.5
-c-7.89941 -12.8994 -16.0996 -26.2998 -24 -41c-6.69922 -12.3994 -8.69922 -29.8994 -11.8994 -48.7998z" />
-    <glyph glyph-name="medium-m" unicode="&#xf3c7;" horiz-adv-x="512" 
-d="M71.5 305.7c0.599609 5.89941 -1.7002 11.7998 -6.09961 15.7998l-45.1006 54.4004v8.09961h140.2l108.4 -237.7l95.2998 237.7h133.7v-8.09961l-38.6006 -37c-3.2998 -2.5 -5 -6.7002 -4.2998 -10.8008v-272c-0.700195 -4.09961 1 -8.2998 4.2998 -10.7998l37.7002 -37
-v-8.09961h-189.7v8.09961l39.1006 37.9004c3.7998 3.7998 3.7998 5 3.7998 10.7998v219.8l-108.7 -275.899h-14.7002l-126.399 275.899v-184.899c-1.10059 -7.80078 1.5 -15.6006 7 -21.2002l50.7998 -61.6006v-8.09961h-144v8l50.7998 61.7002
-c5.40039 5.59961 7.90039 13.5 6.5 21.2002v213.8z" />
-    <glyph glyph-name="medrt" unicode="&#xf3c8;" horiz-adv-x="544" 
-d="M113.7 192c0 -121.8 83.8994 -222.8 193.5 -241.1c-18.7002 -4.5 -38.2002 -6.90039 -58.2002 -6.90039c-137.6 0 -249 111 -249 248s111.4 248 248.9 248c20.0996 0 39.5996 -2.40039 58.1992 -6.90039c-109.6 -18.2998 -193.399 -119.3 -193.399 -241.1zM411.1 91.7002
-c77.7002 55.3994 104.4 155.1 67 233.899c11.2002 -9.89941 21.5 -21.2998 30.5 -34.1992c61.6006 -88.3008 40.8008 -210.301 -46.5 -272.601c-87.2998 -62.2998 -208.1 -41.2002 -269.699 47c-9 12.7998 -16.2002 26.4004 -21.7002 40.5
-c60.7998 -62.0996 162.7 -70 240.399 -14.5996zM192.3 335.7c72.5 54.5996 171.601 45.7002 221.601 -19.7998c45.2998 -59.7002 34.3994 -145.601 -22.3008 -201.801c18.5 51.4004 11.3008 111 -24.3994 158c-43 56.5 -114.601 78.3008 -178.9 60.5
-c1.2998 1 2.60059 2.10059 4 3.10059zM296 224h40c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-40c-4.40039 0 -8 -3.59961 -8 -8v-40c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v40c0 4.40039 -3.59961 8 -8 8h-40
-c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h40c4.40039 0 8 3.59961 8 8v40c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-40c0 -4.40039 3.59961 -8 8 -8z" />
-    <glyph glyph-name="microsoft" unicode="&#xf3ca;" 
-d="M0 416h214.6v-214.6h-214.6v214.6zM233.4 416h214.6v-214.6h-214.6v214.6zM0 182.6h214.6v-214.6h-214.6v214.6zM233.4 182.6h214.6v-214.6h-214.6v214.6z" />
-    <glyph glyph-name="mix" unicode="&#xf3cb;" 
-d="M0 384h448v-204.1c0 -56.6006 -88 -59.9004 -88 0v23.7998c0 56.7998 -82.7002 59 -88 4.2998v-116.1c0 -58 -96 -57.9004 -96 0v175.3c0 56.8994 -80.0996 59.3994 -88 6.5v-238.601c0 -58.0996 -88 -56.1992 -88 0v348.9z" />
-    <glyph glyph-name="mizuni" unicode="&#xf3cc;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM168 88.0996v223.9c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-272.1c21.2002 20.8994 48.5996 37.5996 80 48.1992zM288 98v214
-c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-214c13 2 26.4004 3.09961 40.2002 3.09961c13.5996 0 26.8994 -1.09961 39.7998 -3.09961zM408 40.2998v271.7c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-223.7c31.4004 -10.5996 58.7998 -27.2002 80 -48z
-" />
-    <glyph glyph-name="monero" unicode="&#xf3d0;" horiz-adv-x="496" 
-d="M352 64h108.4c-43.4004 -71.9004 -122.301 -120 -212.4 -120s-169 48.0996 -212.4 120h108.4v127.8l104 -104.8l104 105v-128zM88 112h-74.7998c-8.60059 25.0996 -13.2002 52 -13.2002 80c0 137 111 248 248 248s248 -111 248 -248c0 -28 -4.7002 -54.9004 -13.2002 -80
-h-74.7998v208l-160.6 -159.4l-159.4 159.4v-208z" />
-    <glyph glyph-name="napster" unicode="&#xf3d2;" horiz-adv-x="496" 
-d="M298.3 74.4004c-14.2002 -13.6006 -31.2998 -24.1006 -50.3994 -30.5c-19 6.39941 -36.2002 16.8994 -50.3008 30.5h100.7zM342.3 274c-56.3994 39.7998 -132.1 39.9004 -188.899 -0.0996094c-19.9004 16.7998 -43.6006 29.5 -69.5 36.3994v-161.6
-c0 -217.3 328 -219.101 328 0.299805v161.2c-26 -7 -49.6006 -19.2998 -69.6006 -36.2002zM133.5 332.5c6.5 -3.2002 14.0996 -7.40039 20.4004 -11.4004c58.6992 30.5 129.199 30.6006 187.899 0.100586c6.7002 4.2002 13.5 8 20.6006 11.5
-c-64.6006 59.8994 -164.5 59.7998 -228.9 -0.200195zM43.7998 354.8c17.5 -0.5 34.2998 -3.09961 50.6006 -7.5c82 91.6006 225.5 91.6006 307.5 0.100586c16.0996 4.39941 32.7998 6.89941 50.0996 7.39941v-69.2002c58.7002 -36.5 58.5 -121.899 -0.200195 -158.199
-l-0.299805 -1.7002c-25.9004 -238.8 -381.2 -243.601 -407.6 1.5c-58.5 37.2002 -58.5 121.8 -0.100586 158.3v69.2998zM259.2 96c13.0996 59.2998 33.5 56 113 55.4004c-0.799805 -8.2002 0.0996094 -32.3008 -26.2002 -47.4004c-4.40039 -2.5 -15.2998 -6 -25.5 -6.5
-c-25.2998 -1.2002 -61.2998 -1.5 -61.2998 -1.5zM123.7 151.3c79.2998 0.700195 99.7998 4 113 -55.3994c0 0 -36 0.399414 -61.2998 1.5c-10.3008 0.5 -21.1006 4 -25.5 6.5c-26.3008 15.0996 -25.4004 39.1992 -26.2002 47.3994zM292.8 27.9004
-c3 -4.90039 3.2002 -8.80078 3.2998 -8.90039c-29.0996 -17.5996 -67.0996 -17.5996 -96.1992 0c0 0 0.899414 5.5 3.69922 9.59961c3.5 5.10059 6.40039 6.60059 6.40039 6.60059c23.7002 -6.90039 51.0996 -7.2998 75.9004 0c0 0 3.69922 -2 6.89941 -7.2998z" />
-    <glyph glyph-name="node-js" unicode="&#xf3d3;" 
-d="M224 -60c-6.7002 0 -13.5 1.7998 -19.4004 5.2002l-61.6992 36.5c-9.2002 5.2002 -4.7002 7 -1.7002 8c12.2998 4.2998 14.7998 5.2002 27.8994 12.7002c1.40039 0.799805 3.2002 0.5 4.60059 -0.400391l47.3994 -28.0996c1.7002 -1 4.10059 -1 5.7002 0l184.7 106.6
-c1.7002 1 2.7998 3 2.7998 5v213.2c0 2.09961 -1.09961 4 -2.89941 5.09961l-184.601 106.5c-1.7002 1 -4 1 -5.7002 0l-184.5 -106.6c-1.7998 -1 -2.89941 -3 -2.89941 -5.10059v-213.1c0 -2 1.09961 -4 2.89941 -4.90039l50.6006 -29.1992
-c27.5 -13.7002 44.2998 2.39941 44.2998 18.6992v210.4c0 3 2.40039 5.2998 5.40039 5.2998h23.3994c2.90039 0 5.40039 -2.2998 5.40039 -5.2998v-210.5c0 -36.5996 -20 -57.5996 -54.7002 -57.5996c-10.7002 0 -19.0996 0 -42.5 11.5996l-48.4004 27.9004
-c-12 6.89941 -19.3994 19.7998 -19.3994 33.6992v213.101c0 13.7998 7.39941 26.7998 19.3994 33.7002l184.5 106.6c11.7002 6.59961 27.2002 6.59961 38.8008 0l184.699 -106.7c12 -6.89941 19.4004 -19.7998 19.4004 -33.7002v-213.1
-c0 -13.7998 -7.40039 -26.7002 -19.4004 -33.7002l-184.699 -106.6c-5.90039 -3.40039 -12.6006 -5.2002 -19.4004 -5.2002zM373.1 150.1c0 -40.1992 -33.5996 -63.2998 -92 -63.3994c-80.8994 0 -97.7998 37.0996 -97.7998 68.2002c0 2.89941 2.2998 5.2998 5.2998 5.2998
-h23.9004c2.7002 0 4.90039 -1.90039 5.2998 -4.5c3.60059 -24.2998 14.2998 -36.6006 63.2002 -36.6006c38.9004 0 55.5 8.80078 55.5 29.4004c0 11.9004 -4.7002 20.7998 -65.2002 26.7002c-50.5 5 -81.7998 16.2002 -81.7998 56.5996c0 37.2998 31.4004 59.5 84.0996 59.5
-c59.2002 0 88.5 -20.5 92.2002 -64.5996c0.100586 -1.5 -0.399414 -3 -1.39941 -4.10059c-1 -1.09961 -2.40039 -1.69922 -3.90039 -1.69922h-24c-2.5 0 -4.7002 1.7998 -5.2002 4.19922c-5.7998 25.6006 -19.7998 33.8008 -57.7002 33.8008
-c-42.5 0 -47.3994 -14.8008 -47.3994 -25.9004c0 -13.4004 5.7998 -17.2998 63.2002 -24.9004c56.6992 -7.5 83.6992 -18.0996 83.6992 -58z" />
-    <glyph glyph-name="npm" unicode="&#xf3d4;" horiz-adv-x="576" 
-d="M288 160h-32v64h32v-64zM576 288v-192h-288v-32h-128v32h-160v192h576zM160 256h-128v-128h64v96h32v-96h32v128zM320 256h-128v-160h64v32h64v128zM544 256h-192v-128h64v96h32v-96h32v96h32v-96h32v128z" />
-    <glyph glyph-name="ns8" unicode="&#xf3d5;" horiz-adv-x="640" 
-d="M104.324 178.828v26.1777h26.0664v-26.1777h-26.0664zM156.79 205.006h-26.3428v26.1777c-0.124023 7.05762 -5.8916 12.748 -12.9785 12.748c-7.08594 0 -12.8535 -5.69043 -12.9775 -12.748v-0.166016h-26.4004v0.166016
-c-0.000976562 0.119141 -0.000976562 0.220703 -0.000976562 0.339844c0 21.7041 17.6211 39.3242 39.3242 39.3242c21.5039 0 38.999 -17.2959 39.3213 -38.7227v-0.941406zM209.146 179.16v26.0117h26.3438v-26.0117
-c0 -0.0371094 -0.000976562 -0.0722656 -0.000976562 -0.109375c0 -64.7373 -52.5439 -117.3 -117.274 -117.331h-0.774414c-0.0380859 0 -0.0732422 0.000976562 -0.110352 0.000976562c-64.7373 0 -117.299 52.543 -117.33 117.273v0.166016h26.3369
-c0 -50.2793 40.8203 -91.1006 91.0996 -91.1006h0.609375c50.2793 0 91.1006 40.8213 91.1006 91.1006zM51.9131 179.16v25.96h-26.291v25.3994c0 50.6445 41.1162 91.7617 91.7607 91.7617s91.7607 -41.1172 91.7607 -91.7617v-25.293h-26.3438v25.293v0.200195
-c0 36.1055 -29.3135 65.4199 -65.4199 65.4199c-35.7656 0 -64.8672 -28.7646 -65.4121 -64.4023v-26.6201h26.2891v-25.957c0.356445 -21.2305 17.7031 -38.3564 39.0176 -38.3564s38.6611 17.126 39.0176 38.3564h26.3438
-c-0.140625 -35.9551 -29.374 -65.1016 -65.3613 -65.1016s-65.2207 29.1465 -65.3613 65.1016zM470.313 250.333c-11.3467 0 -20.8633 -4.75977 -24.2402 -12.1172v-8.41211c2.21875 -4.53809 6.30859 -7.69238 12.6191 -9.62988
-c4.75879 -1.37891 9.76562 -2.3623 14.832 -2.87793c6.36426 -0.827148 13.0068 -1.71484 20.6992 -4.42676c13.7256 -4.59375 24.0742 -13.2275 28.9443 -24.2412l0.166016 -0.664062l-0.166016 -25.8994c-7.69238 -17.0479 -28.668 -28.4473 -52.2998 -28.4473
-c-25.6797 0 -47.374 12.6182 -55.2891 32.0439l-0.552734 1.43848l23.0205 11.5078l0.719727 -1.49414c5.97754 -12.1211 17.5996 -19.0391 31.9336 -19.0391c12.0098 0 22.083 4.81445 25.791 12.3418v9.85059c-2.37988 4.59473 -6.47656 7.75098 -12.8398 9.85156
-c-5.20312 1.71582 -10.3506 2.37988 -15.8291 3.09961c-6.78809 0.675781 -13.4814 2.04199 -19.8135 3.98438c-14.1123 4.87109 -23.9678 13.2275 -28.668 24.2412c-0.158203 0.949219 -0.123047 -2.02637 0 24.8496c7.36133 17.0469 27.8379 28.4473 50.9727 28.4473
-c24.9062 0 45.3818 -12.0098 53.4062 -31.2705l0.609375 -1.43848l-23.2451 -11.5117l-0.71875 1.5498c-5.47949 11.6221 -16.3818 18.2637 -30.0518 18.2637zM287.568 136.656v68.3994h26.0664v-68.3994h-26.0664zM639.834 189.956l0.166016 -0.722656l-0.166016 -28.8906
-c-7.52734 -15.9941 -27.8916 -26.7305 -50.584 -26.7305s-43.0029 10.7363 -50.585 26.7305l-0.166016 0.720703l0.166016 28.8887c2.93262 6.25391 8.24121 12.0137 15.4414 16.7139c-5.57422 3.90332 -10.0391 9.14453 -13.0068 15.3311l-0.166016 0.664062
-l0.166016 25.3467c7.36133 15.9922 26.7334 26.7324 48.1504 26.7324s40.7881 -10.7402 48.1504 -26.7295l0.166016 -0.664062l-0.166016 -25.3467c-2.90137 -6.22852 -7.38379 -11.4873 -13.0078 -15.3301c7.1416 -4.7041 12.5088 -10.46 15.4414 -16.7139z
-M566.614 240.762v-13.7246c3.48535 -6.19922 12.5068 -10.3486 22.5801 -10.3486c10.0723 0 19.0938 4.14844 22.6357 10.3486v13.7246c-3.59766 6.31055 -12.6191 10.5166 -22.6357 10.5166c-10.0176 0 -18.9805 -4.20605 -22.5801 -10.5166zM613.933 168.593v16.1572
-c-3.76367 6.36523 -13.3379 10.5146 -24.6826 10.5146c-11.1836 0 -20.9756 -4.20605 -24.6836 -10.5146v-16.1572c3.70801 -6.52734 13.5586 -10.8994 24.6836 -10.8994c11.3447 0 20.9189 4.25879 24.6826 10.8994zM376.4 182.038v89.7129h25.8994v-135.095h-25.6777
-l-62.5391 94.085v0.386719h-26.5098v40.623h29z" />
-    <glyph glyph-name="nutritionix" unicode="&#xf3d6;" horiz-adv-x="400" 
-d="M88 439.9c0 0 133.4 8.19922 121 -104.4c0 0 19.0996 74.9004 103 40.5996c0 0 -17.7002 -74 -88 -56c0 0 14.5996 54.6006 66.0996 56.6006c0 0 -39.8994 10.2998 -82.0996 -48.7998c0 0 -19.7998 94.5 -93.5996 99.6992c0 0 75.1992 -19.3994 77.5996 -107.5
-c0 -0.0996094 -106.4 -7 -104 119.801zM400 124.3c0 -48.5 -9.7002 -95.2998 -32 -132.3c-42.2002 -30.9004 -105 -48 -168 -48c-62.9004 0 -125.8 17.0996 -168 48c-22.2998 37 -32 83.7998 -32 132.3c0 48.4004 17.7002 94.7002 40 131.7
-c42.2002 30.9004 97.0996 48.5996 160 48.5996c63 0 117.8 -17.5996 160 -48.5996c22.2998 -37 40 -83.2998 40 -131.7zM120 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM120 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28
-s12.5 -28 28 -28s28 12.5 28 28zM120 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28
-s12.5 -28 28 -28s28 12.5 28 28zM192 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28
-s12.5 -28 28 -28s28 12.5 28 28zM264 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28
-s12.5 -28 28 -28s28 12.5 28 28zM336 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM360 192c-4.7998 22.2998 -7.40039 36.9004 -16 56c-38.7998 19.9004 -90.5 32 -144 32s-105.2 -12.0996 -144 -32
-c-8.7998 -19.5 -11.2002 -33.9004 -16 -56c42.2002 7.90039 98.7002 14.7998 160 14.7998s117.8 -6.89941 160 -14.7998z" />
-    <glyph glyph-name="page4" unicode="&#xf3d7;" horiz-adv-x="496" 
-d="M248 -56c-137 0 -248 111 -248 248s111 248 248 248c20.9004 0 41.2998 -2.59961 60.7002 -7.5l-266.4 -376.5h205.7v-112zM248 87.5996h-149.4l149.4 213.601v-213.601zM344 56h111.4c-26.9004 -41 -65.7002 -73.5 -111.4 -92.7002v92.7002zM401.4 194.2v-16.7002
-l-21.2002 8.2998zM381.1 139.7c5.90039 0 8.2002 -4.7002 8.2002 -10.6006v-10h-16.2002v7.7002c0 6.60059 1.30078 12.9004 8 12.9004zM496 192c0 -37.2998 -8.2002 -72.7002 -23 -104.4h-129v333.101c89.2998 -37.5 152 -125.8 152 -228.7zM360.4 304.4h68.1992v47.5996
-h-13.8994v-32.5996h-13.9004v29.5996h-13.8994v-29.5996h-12.7002v32.5996h-13.9004v-47.5996h0.100586zM428.5 119.1h-26.5v11c0 15.4004 -5.59961 25.2002 -20.9004 25.2002c-15.3994 0 -20.6992 -10.5996 -20.6992 -25.8994v-25.3008h68.1992v15h-0.0996094zM428.5 222.1
-l-68.2002 -29.6992v-12.4004l68.2002 -29.5v16.5996l-14.4004 5.7002v26.5l14.4004 5.90039v16.8994zM423.7 290.6h-35.6006v-26.5996h13.9004v12.2002h11c8.59961 -15.7998 1.2998 -35.2998 -18.5996 -35.2998c-22.5 0 -28.3008 25.2998 -15.5 37.6992l-11.6006 10.6006
-c-16.2002 -17.5 -12.2002 -63.9004 27.1006 -63.9004c34 0 44.6992 35.9004 29.2998 65.2998z" />
-    <glyph glyph-name="palfed" unicode="&#xf3d8;" horiz-adv-x="576" 
-d="M384.9 254.1c0.0996094 -53.3994 -46.5 -96.1992 -83.3008 -96.1992c-12.5 0 -14.3994 3.39941 -15.0996 6.19922c0.5 39.1006 1.7002 80.4004 3 119.801c40.2002 14.3994 95.4004 17.5996 95.4004 -29.8008zM190.4 181.9
-c-0.200195 0.599609 -0.400391 2.09961 -0.600586 4.59961c0 25.5996 37 60.9004 58.5 75.9004c-1.2002 -36.4004 -5.5 -198.101 -1.39941 -242.5c3 -32.3008 26.7998 -32.9004 36.3994 -22.3008c5.90039 6.60059 5.5 15.7002 5.2998 19.1006v0.200195
-c-1.7998 25.5996 -2.7998 60.5996 -2.69922 100c60.7998 -14.4004 140.1 60.2998 140.1 138.199c0 71 -63 94.2002 -135.2 72c-2.89941 14.6006 -18.2998 20.1006 -29.5 11.1006c-7.5 -6.2002 -9.5 -15.7998 -10.5 -28.2002c-57.7998 -30.9004 -100.7 -84.5 -100.7 -126.5
-c0 -24.9004 15.6006 -43 37.1006 -43c35.0996 0 41 44.0996 14.3994 44.0996c-4.69922 0 -11 -2.69922 -11.1992 -2.69922zM8 266.9c0 38.5996 38.4004 37.3994 38.4004 37.3994h29c15.5 70.1006 120.5 74.2998 120.5 74.2998h28.0996v19.1006
-c0 18.3994 21.0996 18.3994 21.0996 18.3994h85.8008c18.3994 0 21.0996 -18.3994 21.0996 -18.3994v-19.1006h28c89.2002 0 112.1 -48.6992 119.4 -74.2998h30.0996c38.5 0 38.4004 -37.3994 38.4004 -37.3994c0 -38.6006 -38.4004 -37.4004 -38.4004 -37.4004h-30
-l-22.4004 -217.2c0 -43.8994 -44.6992 -44.2998 -44.6992 -44.2998h-288.9c-44.7002 0 -44.7002 44.2998 -44.7002 44.2998l-22.3994 217.2h-30c-38.5 0 -38.4004 37.4004 -38.4004 37.4004z" />
-    <glyph glyph-name="patreon" unicode="&#xf3d9;" horiz-adv-x="512" 
-d="M512 253.2c0 -101.3 -82.4004 -183.8 -183.8 -183.8c-101.7 0 -184.4 82.3994 -184.4 183.8c0 101.6 82.7002 184.3 184.4 184.3c101.399 0 183.8 -82.7002 183.8 -184.3zM0 -53.5v491h90v-491h-90z" />
-    <glyph glyph-name="periscope" unicode="&#xf3da;" 
-d="M370 384.4c38.4004 -40.7002 59.5 -94.3008 59.5 -150.801c0 -74.2998 -57.4004 -159.5 -82 -192.6c-8 -10.7998 -79.2998 -105 -120.9 -105c-34 0 -88.7998 56.5 -125.399 104.9c-24.9004 32.8994 -82.7002 117.6 -82.7002 192.699c0 118.2 93.4004 214.4 208.1 214.4
-c53.9004 0 104.801 -22.5996 143.4 -63.5996zM226.6 -45.9004c37.3008 0 184.801 167.301 184.7 279.4c0 107.3 -83.8994 196.3 -184.7 196.3c-106.1 0 -190 -88.8994 -190 -196.3c0 -112.1 147.5 -279.4 190 -279.4zM338 241.2c0 -59.1006 -51.0996 -109.7 -110.8 -109.7
-c-100.601 0 -150.7 108.2 -92.9004 181.8v-0.399414c0 -24.5 20.1006 -44.4004 44.7998 -44.4004c24.7002 0 44.8008 19.9004 44.8008 44.4004c0 18.1992 -11.1006 33.7998 -26.9004 40.6992c76.5996 19.2002 141 -39.2998 141 -112.399z" />
-    <glyph glyph-name="phabricator" unicode="&#xf3db;" horiz-adv-x="496" 
-d="M323 185.9c0 0 21.5996 -19.6006 20.9004 -20.7002l-8.10059 -19.7998c-0.5 -1.40039 -29.7002 -0.5 -29.7002 -0.5l-9.09961 -9.10059s1.59961 -31.5 0.200195 -32.0996l-20 -7.5c-1.2998 -0.5 -21.7998 23.2998 -21.7998 23.2998l-13.1006 0.200195
-s-19.2998 -24.1006 -20.7002 -23.5l-20.0996 8.2998c-1.40039 0.5 -1.2002 32.2998 -1.2002 32.2998l-9.39941 9.2998s-28.9004 -0.899414 -29.5 0.5l-9.5 20c-0.600586 1.40039 21.0996 21.2002 21.0996 21.2002l-0.0996094 12.9004s-21.6006 19.5996 -21 21
-l8.09961 19.7998c0.5 1.2998 29.7002 0.400391 29.7002 0.400391l9.09961 9.09961s-1.59961 28.4004 -0.200195 28.9004l20 8.2998c1.40039 0.599609 21.9004 -20.7998 21.9004 -20.7998l13.0996 -0.200195s19.3008 21.5996 20.7002 21l20.1006 -9.2002
-c1.39941 -0.599609 1.19922 -29.0996 1.19922 -29.0996l9.40039 -9.30078s28.9004 0.900391 29.5 -0.5l9.5 -20c0.599609 -1.39941 -21.0996 -21.1992 -21.0996 -21.1992zM278.1 194.6c-0.699219 17 -15.5 30.3008 -32.7998 29.5
-c-17.2998 -0.699219 -30.7998 -15.1992 -30.0996 -32.2998c0.700195 -17.0996 15.5 -30.3994 32.7998 -29.5996s30.7998 15.2998 30.0996 32.3994zM479.3 232.5c22.2998 -22.2998 22.2998 -58.7002 0 -81c-67.3994 -67.4004 -44.2998 -44.4004 -95.2998 -95.2998
-c-74.4004 -74.5 -194.7 -74.9004 -269.8 -1.60059l-0.100586 -0.0996094c-51 51 -27.5 27.5996 -97.3994 97c-22.2998 22.2998 -22.2998 58.7002 0 81c67.8994 67.4004 44.7998 44.2998 95.7002 95.2998c74.3994 74.4004 194.699 74.9004 269.8 1.60059l0.0996094 0.0996094
-zM140.4 84.2002c59.5996 -59.5 156 -59.6006 215.6 -0.100586c59.5996 59.6006 59.5 156.101 0 215.601c-59.5996 59.5 -156.1 59.5996 -215.6 0c-59.6006 -59.5 -59.6006 -156 0 -215.5z" />
-    <glyph glyph-name="phoenix-framework" unicode="&#xf3dc;" horiz-adv-x="640" 
-d="M212.9 103.7c-36.7002 -1.2002 -108.7 29.2998 -127.7 106.399c-8.7002 35.3008 -2.7002 51.8008 -8 86.1006c-8.2002 53.3994 -32.1006 72.2002 -55.9004 76.5c-6.2002 1.09961 -12.3994 1.2998 -18.7002 0.299805
-c-0.799805 -0.0996094 -1.59961 -0.200195 -2.39941 -0.200195c-0.100586 0.200195 -0.100586 0.299805 -0.200195 0.5c0.700195 0.600586 1.40039 1.2002 2.2002 1.7998c36.8994 26.9004 92 38.4004 136.3 35c123.6 -9.5 141.3 -156.6 252.5 -173.1
-c6.09961 -0.900391 12.2998 -1.09961 18.5 -1.7002c0.700195 -0.0996094 1.40039 -0.0996094 2.5 -0.200195c-2.09961 -2.19922 -21.5996 -11.7998 -36.5 -14.5c-18.4004 -3.39941 -35.7002 -0.0996094 -51.2998 10.3008c-14.5 9.7998 -24.5 23.5 -38.9004 27.3994
-c-13 3.60059 -34.0996 1.7002 -35.8994 -19.5996c-1.30078 -15.9004 14.1992 -51.7998 51.7998 -74.6006c40.3994 -24.5 101.399 -26.8994 134.7 -14.7998c0.299805 0.100586 0.699219 0.200195 1.09961 0.299805c0.200195 0.100586 0.400391 0 1 -0.0996094
-c-23.5996 -28.4004 -71.2002 -49.9004 -108.2 -45.4004c-50.3994 6.2002 -77.7002 75.9004 -113.7 97.5c-19.0996 11.5 -49.0996 7 -52 -18.5c-1.09961 -10 2.10059 -19 6.40039 -27.5996c24.4004 -48.5996 65.5996 -47 68 -49.5996
-c-2.7998 -0.800781 -21.7998 -2.10059 -25.5996 -2.2002zM75.2998 383.1c13.1006 -14.5 34.2002 -7.89941 35.2998 6.80078c-12.3994 -0.700195 -24.5 -2.2002 -36.5996 -4.80078c0.400391 -0.799805 0.400391 -1 1.2998 -2zM272.2 32.5996
-c-42.7998 -1.19922 -92 26.7002 -123.5 61.4004c-4.60059 5 -16.7998 20.2002 -18.6006 23.4004l0.400391 0.399414c6.59961 -4.09961 25.7002 -18.5996 54.7998 -27c24.2002 -7 48.1006 -6.2998 71.6006 3.2998c22.6992 9.30078 41 0.5 43.0996 -2.89941
-c-18.5 -3.7998 -20.0996 -4.40039 -24 -7.90039c-5.09961 -4.39941 -4.59961 -11.7002 7 -17.2002c26.2002 -12.3994 63 2.80078 97.2002 -25.3994c2.39941 -2 8.09961 -7.7998 10.0996 -10.7002c-0.0996094 -0.200195 -0.299805 -0.299805 -0.399414 -0.5
-c-4.80078 1.5 -16.4004 7.5 -40.2002 9.2998c-24.7002 2 -46.2998 -5.2998 -77.5 -6.2002zM447 284.6c16.4004 5.2002 41.2998 13.4004 66.5 3.30078c16.0996 -6.5 26.2002 -18.7002 32.0996 -34.6006c3.5 -9.39941 5.10059 -19.7002 5.10059 -28.7002
-c-0.200195 0 -0.400391 0 -0.600586 -0.0996094c-0.199219 0.400391 -0.399414 0.900391 -0.5 1.2998c-5 22 -29.8994 43.7998 -67.5996 29.9004c-50.2002 -18.6006 -130.4 -9.7002 -176.9 48c-0.699219 0.899414 -2.39941 1.7002 -1.2998 3.2002
-c0.100586 0.199219 2.10059 -0.600586 3 -1.30078c18.1006 -13.3994 38.2998 -21.8994 60.2998 -26.1992c30.5 -6.10059 54.6006 -2.90039 79.9004 5.19922zM549.7 167.1c-32.4004 -0.199219 -33.7998 -50.0996 -103.601 -64.3994
-c-18.1992 -3.7002 -38.6992 -4.60059 -44.8994 -4.2002v0.400391c2.7998 1.5 14.7002 2.59961 29.7002 16.5996c7.89941 7.2998 15.2998 15.0996 22.7998 22.9004c19.5 20.1992 41.3994 42.1992 81.8994 39c23.1006 -1.80078 29.3008 -8.2002 36.1006 -12.7002
-c0.299805 -0.200195 0.399414 -0.5 0.700195 -0.900391c-0.5 0 -0.700195 -0.0996094 -0.900391 0c-7 2.7002 -14.2998 3.2998 -21.7998 3.2998zM537.4 191.2c-0.100586 -0.200195 -0.100586 -0.400391 -0.200195 -0.600586c-28.9004 4.40039 -48 7.90039 -68.5 -4
-c-17 -9.89941 -31.4004 -20.5 -62 -24.3994c-27.1006 -3.40039 -45.1006 -2.40039 -66.1006 8c-0.299805 0.200195 -0.599609 0.399414 -1 0.599609c0 0.200195 0.100586 0.299805 0.100586 0.5c24.8994 -3.7998 36.3994 -5.09961 55.5 5.7998
-c22.2998 12.9004 40.0996 26.6006 71.2998 31c29.5996 4.10059 51.2998 -2.5 70.9004 -16.8994zM268.6 350.7c-0.599609 0.599609 -1.09961 1.2002 -2.09961 2.2998c7.59961 0 29.7002 1.2002 53.4004 -8.40039c19.6992 -8 32.1992 -21 50.1992 -32.8994
-c11.1006 -7.2998 23.4004 -9.2998 36.4004 -8.10059c4.2998 0.400391 8.5 1.2002 12.7998 1.7002c0.400391 0.100586 0.900391 0 1.5 -0.299805c-0.599609 -0.400391 -1.2002 -0.900391 -1.7998 -1.2002c-8.09961 -4 -16.7002 -6.2998 -25.5996 -7.09961
-c-26.1006 -2.60059 -50.3008 3.7002 -73.4004 15.3994c-19.2998 9.90039 -36.4004 22.9004 -51.4004 38.6006zM640 112.3c-3.5 -3.09961 -22.7002 -11.5996 -42.7002 -5.2998c-12.2998 3.90039 -19.5 14.9004 -31.5996 24.0996
-c-10 7.60059 -20.9004 7.90039 -28.1006 8.40039c0.600586 0.799805 0.900391 1.2002 1.2002 1.40039c14.7998 9.19922 30.5 12.1992 47.2998 6.5c12.5 -4.2002 19.2002 -13.5 30.4004 -24.2002c10.7998 -10.4004 21 -9.90039 23.0996 -10.5
-c0.100586 0.0996094 0.200195 0 0.400391 -0.400391zM427.5 -24.7002c2.2002 -1.2002 1.59961 -1.5 1.5 -2c-18.5 1.40039 -33.9004 7.60059 -46.7998 22.2002c-21.7998 24.7002 -41.7002 27.9004 -48.6006 29.7002c0.5 0.200195 0.800781 0.399414 1.10059 0.399414
-c13.0996 -0.0996094 26.0996 -0.699219 38.8994 -3.89941c25.3008 -6.40039 35 -25.4004 41.6006 -35.2998c3.2002 -4.80078 7.2998 -8.30078 12.2998 -11.1006z" />
-    <glyph glyph-name="playstation" unicode="&#xf3df;" horiz-adv-x="576" 
-d="M570.9 75.7002c-11.3008 -14.2002 -38.8008 -24.2998 -38.8008 -24.2998l-205.1 -73.6006v54.2998l150.9 53.8008c17.0996 6.09961 19.7998 14.7998 5.7998 19.3994c-13.9004 4.60059 -39.1006 3.2998 -56.2002 -2.89941l-100.5 -35.5v56.3994
-c23.2002 7.7998 47.0996 13.6006 75.7002 16.7998c40.8994 4.5 90.8994 -0.599609 130.2 -15.5c44.1992 -14 49.1992 -34.6992 38 -48.8994zM346.5 168.2v139c0 16.2998 -3 31.2998 -18.2998 35.5996c-11.7002 3.7998 -19 -7.09961 -19 -23.3994v-347.9l-93.7998 29.7998
-v414.7c39.8994 -7.40039 98 -24.9004 129.199 -35.4004c79.5 -27.2998 106.4 -61.2998 106.4 -137.8c0 -74.5 -46 -102.8 -104.5 -74.5996zM43.2002 37.7998c-45.4004 12.7998 -53 39.5 -32.2998 54.7998c19.0996 14.2002 51.6992 24.9004 51.6992 24.9004l134.5 47.7998
-v-54.5l-96.7998 -34.5996c-17.0996 -6.10059 -19.7002 -14.7998 -5.7998 -19.4004c13.9004 -4.59961 39.0996 -3.2998 56.2002 2.90039l46.3994 16.8994v-48.7998c-51.5996 -9.2998 -101.399 -7.2998 -153.899 10z" />
-    <glyph glyph-name="pushed" unicode="&#xf3e1;" horiz-adv-x="432" 
-d="M407 336.1c21.7002 -1.89941 33.7998 -28 17.4004 -44.7998l-235.2 -231.3l-35.2998 -80.7998c-11 -17.2002 -41.2002 -14.2998 -47.7002 7l-105.101 348.3c-4.59961 18.2998 6.30078 33.9004 21.4004 36.5996l271.3 44.4004c17.9004 3.40039 39.1006 -13.5 28.7002 -37
-l-14 -33.4004zM297.6 394.4l-189 -31l177.4 -16.3008l16.7998 39.9004c2.2998 4.90039 -0.0996094 8.09961 -5.2002 7.40039zM22.7002 340.1l157.899 -244.3l96.9004 230.7l-248.7 22.7002c-5.09961 0.899414 -9.2002 -4 -6.09961 -9.10059zM136 -8.40039
-c0 0 28.2002 64.1006 35.2002 79.1006l-127.7 197.6l83.0996 -275.5c1.5 -4.2998 6.80078 -5.2002 9.40039 -1.2002zM408.8 306.1c3.10059 3.30078 1.40039 7.5 -2.59961 8.60059l-106.4 9.7002l-89.7002 -213.7z" />
-    <glyph glyph-name="python" unicode="&#xf3e2;" 
-d="M439.8 247.5c10.7002 -42.9004 11.2002 -75.0996 0 -108.6c-10.7998 -32.5 -22.2998 -54.2002 -53.3994 -54.2002h-160.2v-13.6006h106.7v-40.6992c0 -30.8008 -26.5 -46.5 -53.4004 -54.3008c-40.5 -11.6992 -73 -9.89941 -106.8 0
-c-28.2002 8.30078 -53.4004 25.3008 -53.4004 54.3008v101.8c0 29.2998 24.2002 54.2998 53.4004 54.2998h106.8c35.5996 0 66.7998 31 66.7998 67.7998v47.4004h40.1006c31.0996 0 45.6992 -23.2998 53.3994 -54.2002zM286.2 44c-11 0 -20 -9 -20.1006 -20.2998
-c0 -11.2002 9.10059 -20.4004 20.1006 -20.4004c11.0996 0 20.0996 9.10059 20.0996 20.4004c0 11.2002 -9 20.2998 -20.0996 20.2998zM167.8 199.9c-36.2998 0 -66.7998 -31.1006 -66.7998 -66.4004v-48.7998h-36.7002c-31.0996 0 -49.2002 22.5996 -56.7998 54.2002
-c-10.2002 42.5 -9.7998 67.8994 0 108.6c8.5 35.5 35.7002 54.2002 66.7998 54.2002h147v13.5996h-106.899v40.7002c0 30.9004 8.19922 47.5996 53.3994 55.5996c32.1006 5.7002 71 6 106.8 0.100586c29 -4.90039 53.4004 -26.6006 53.4004 -55.6006v-101.899
-c0 -29.7998 -23.7002 -54.2998 -53.4004 -54.2998h-106.8zM161.1 342.5c11.1006 0 20.1006 9.09961 20.1006 20.2998s-9.10059 20.4004 -20.1006 20.4004c-11.0996 0 -20 -9.10059 -20.0996 -20.4004c0 -11.2002 9 -20.2998 20.0996 -20.2998z" />
-    <glyph glyph-name="red-river" unicode="&#xf3e3;" 
-d="M353.2 416c52.3994 0 94.7998 -42.4004 94.7998 -94.7998v-258.4c0 -52.3994 -42.4004 -94.7998 -94.7998 -94.7998h-258.4c-52.3994 0 -94.7998 42.4004 -94.7998 94.7998v258.4c0 52.3994 42.4004 94.7998 94.7998 94.7998h258.4zM144.9 247.1
-c-0.600586 12.4004 11.6992 24.6006 24 24h56.2998c27 0 48.8994 21.9004 48.8994 48.9004h-154.199c-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998zM321.2 175.1c27 0 48.8994 21.9004 48.8994 48.9004h-154.199
-c-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998c-0.600586 12.4004 11.6992 24.6006 24 24h56.2998z" />
-    <glyph glyph-name="wpressr" unicode="&#xf3e4;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM419.33 281.4c2.41016 5.47949 0.459961 8.2793 -5.62012 8.26953c-104.8 0.00976562 -107.69 -0.0302734 -130.78 0.0302734
-c-4.31934 0.00976562 -7.10938 -1.82031 -8.83984 -5.78027c-5.70996 -13.0996 -11.5195 -26.1504 -17.2998 -39.21c-2.57031 -5.7998 -1 -8.26953 5.26953 -8.26953c25.2607 0 50.5205 -0.0107422 75.7803 0.0195312
-c10.0303 0.00976562 8.54004 -13.6602 -3.89941 -13.6396c-26.4307 0.0498047 -52.8604 0 -79.29 0.0498047c-4.91016 0.00976562 -8.33008 -1.88965 -10.3506 -6.5c-4.2998 -9.83008 -32.1494 -73.0801 -32.1895 -73.1602
-c-3.2002 -7.16016 -16.2607 -6.09961 -11.2803 5.33008c8.26953 18.9902 16.6504 37.9297 24.9795 56.8896c2.25 5.11035 -0.0996094 8.74023 -5.65918 8.75c-15.21 0.0205078 -30.4307 -0.0400391 -45.6406 0.0400391
-c-3.35938 0.0107422 -5.41016 -1.29004 -6.76953 -4.38965c-31.4307 -71.8701 -29.7803 -67.3203 -30.0098 -67.6904c-3.87012 -6.37012 -14.8604 -3.34961 -10.9502 5.60059c5.66992 13.0098 11.3701 26.0098 17.0898 39c13.5703 30.7793 27.1396 61.5596 40.7402 92.3301
-c2.54004 5.75 -0.419922 10.5801 -6.66016 10.5898c-14.2402 0.0302734 -28.4805 -0.0498047 -42.7197 0.0498047c-4.26074 0.0302734 -6.84082 -1.76953 -8.54004 -5.65039c-12.8604 -29.3896 -25.8203 -58.7295 -38.75 -88.0791
-c-8.62012 -19.5605 -17.2305 -39.1201 -25.8906 -58.6602c-1.58008 -3.55078 -1.47949 -6.78027 1.20996 -9.73047c11.2207 -12.3096 22.4707 -24.6094 33.6807 -36.9395c2.08984 -2.30078 4.58984 -3.4502 7.71973 -3.4502c45.9395 0.0195312 91.8701 0.00976562 137.81 0
-c3.86035 0 6.37988 1.78027 7.91992 5.29004c10.3203 23.5 20.7607 46.9395 30.9502 70.5c2.08984 4.83008 5.21973 6.75 10.3398 6.71973c23.0205 -0.110352 46.0303 -0.0400391 69.0508 -0.0498047c6.0791 0 10.5293 2.72949 12.9697 8.24023
-c15.2598 34.4795 30.4502 68.9893 45.6299 103.5z" />
-    <glyph glyph-name="replyd" unicode="&#xf3e6;" 
-d="M320 -32h-192c-70.4004 0 -128 57.5996 -128 128v192c0 70.4004 57.5996 128 128 128h192c70.4004 0 128 -57.5996 128 -128v-192c0 -70.4004 -57.5996 -128 -128 -128zM193.4 174.8c-6.10059 2 -11.6006 3.10059 -16.4004 3.10059
-c-7.2002 0 -13.5 -1.90039 -18.9004 -5.60059c-5.39941 -3.7002 -9.59961 -9 -12.7998 -15.7998h-1.09961l-4.2002 18.2998h-28v-138.899h36.0996v89.6992c1.5 5.40039 4.40039 9.80078 8.7002 13.2002c4.2998 3.40039 9.7998 5.10059 16.2002 5.10059
-c4.59961 0 9.7998 -1 15.5996 -3.10059zM308.6 71.4004c-3.19922 -2.40039 -7.69922 -4.80078 -13.6992 -7.10059s-12.8008 -3.5 -20.4004 -3.5c-12.2002 0 -21.0996 3 -26.5 8.90039c-5.5 5.89941 -8.5 14.7002 -9 26.3994h83.2998
-c0.900391 4.80078 1.60059 9.40039 2.10059 13.9004c0.5 4.40039 0.699219 8.59961 0.699219 12.5c0 10.7002 -1.59961 19.7002 -4.69922 26.9004c-3.2002 7.19922 -7.30078 13 -12.5 17.1992c-5.2002 4.30078 -11.1006 7.30078 -17.8008 9.2002
-c-6.69922 1.7998 -13.5 2.7998 -20.5996 2.7998c-21.0996 0 -37.5 -6.09961 -49.2002 -18.2998s-17.5 -30.5 -17.5 -55c0 -22.7998 5.2002 -40.7002 15.6006 -53.7002c10.3994 -13.0996 26.7998 -19.5996 49.1992 -19.5996c10.7002 0 20.9004 1.5 30.4004 4.59961
-c9.5 3.10059 17.0996 6.80078 22.5996 11.2002zM286.8 141.7c3.7998 -5.40039 5.2998 -13.1006 4.60059 -23.1006h-51.7002c0.899414 9.40039 3.7002 17 8.2002 22.6006c4.5 5.59961 11.5 8.5 21 8.5c8.19922 0.0996094 14.0996 -2.60059 17.8994 -8zM366.7 139.2
-c4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996s-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002
-c-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004s2 -11.7002 6.10059 -15.5996zM366.7 38.7002c4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996
-s-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002c-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004c0 -6.59961 2 -11.7002 6.10059 -15.5996z" />
-    <glyph glyph-name="resolving" unicode="&#xf3e7;" horiz-adv-x="496" 
-d="M281.2 169.8l-197.9 -57.2002l-28.5996 98.6006l188.2 54.0996c52.6992 15.2998 65 8.10059 71.0996 -12.7998l11.2002 -39.2998c5.59961 -19.9004 2 -30.1006 -44 -43.4004zM248.5 440c137 0 248.5 -111.4 247.5 -247.7c0 -136.899 -111.5 -248.3 -248.5 -248.3
-c-46 0 -89.5 12.7002 -126.3 34.7002l-23 80.2002l286.8 -37.3008l48.0996 13.3008l-9.69922 34.1992l-220.4 27.1006l92.5996 26.5996c30.2002 8.7002 42 15.7998 61.4004 33.2002c24.5 23 31.7002 45.5 23.5 73.5996l-10.7002 37.8008
-c-8.7002 30.1992 -25.0996 49.0996 -61.3994 55.1992c-25.1006 3.5 -44.5 2 -79.3008 -8.19922l-221.899 -63.9004c26 108.8 124.2 189.5 241.3 189.5zM38.2998 59.4004c-24 38.3994 -38.2998 83.2998 -38.2998 131.8z" />
-    <glyph glyph-name="rocketchat" unicode="&#xf3e8;" horiz-adv-x="576" 
-d="M284.046 223.2c0.0341797 0 0.0664062 -0.00195312 0.100586 -0.00195312c18.8496 0 34.1592 -15.2754 34.2168 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1143 15.2861 -34.1143 34.1143c0 18.7588 15.1748 34.002 33.9072 34.1133zM173.596 223.2
-c0.0332031 0 0.0673828 -0.00195312 0.100586 -0.00195312c18.8496 0 34.1592 -15.2754 34.2168 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1143 15.2861 -34.1143 34.1143c0 18.7588 15.1748 34.002 33.9072 34.1133zM394.519 223.2
-c0.0351562 0 0.0683594 -0.00195312 0.102539 -0.00195312c18.8496 0 34.1592 -15.2754 34.2148 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1133 15.2861 -34.1133 34.1143c0 18.7588 15.1738 34.002 33.9062 34.1133zM548.326 278.519
-c17.3076 -26.9443 26.0674 -55.9189 26.0898 -86.9395c0 -30.209 -8.76074 -59.2021 -26.0703 -86.125c-15.5342 -24.1934 -37.3076 -45.5703 -64.6787 -63.6191c-52.8672 -34.8164 -122.354 -53.9746 -195.667 -53.9746
-c-0.150391 -0.000976562 0.0664062 -0.00585938 -0.0830078 -0.00585938c-24.5488 0 -48.5908 2.18359 -71.9443 6.36621c-14.8564 -14.2842 -31.3604 -26.5059 -49.5098 -36.5889c-66.7744 -33.3467 -125.6 -20.9092 -155.324 -10.2002
-c-5.54492 1.96289 -9.51758 7.25488 -9.51758 13.4697c0 3.82715 1.50879 7.30469 3.96289 9.87109c20.9619 21.6748 55.6416 64.5342 47.1162 103.49c-33.1426 33.9004 -51.1123 74.7764 -51.1123 118.148c0 42.5605 17.9697 83.4365 51.1123 117.337
-c8.52148 38.9521 -26.1582 81.7939 -47.1201 103.47c-2.45996 2.56738 -3.97656 6.0498 -3.97656 9.88281c0 6.21973 3.98047 11.5156 9.53125 13.4785c29.7246 10.71 88.5488 23.1211 155.302 -10.2109c18.1504 -10.0811 34.6553 -22.3027 49.5107 -36.5879
-c23.3457 4.18066 47.0137 6.35742 71.5547 6.35742c0.15918 0 0.318359 -0.000976562 0.476562 -0.000976562c73.293 0 142.78 -19.1826 195.666 -54c27.3711 -18.0479 49.1465 -39.4453 64.6816 -63.6182zM284.987 38.0996c128.612 0 232.866 67.376 232.866 150.487
-c0 83.0957 -104.274 150.469 -232.866 150.469c-128.593 0 -232.847 -67.3691 -232.847 -150.469c0 -36.2002 19.7861 -69.4375 52.7783 -95.4004c9.28809 -29.5986 3.84668 -62.958 -16.3252 -100.078c-0.960938 -1.79297 -1.8584 -3.58496 -2.8418 -5.35645
-c18.6367 1.63574 36.5557 6.875 52.5225 14.8701c13.5889 7.65625 25.9609 16.8633 37.1377 27.585l20.1289 19.3926c28.2617 -7.47852 57.8037 -11.501 88.4033 -11.501c0.347656 0 0.695312 0 1.04297 0.000976562z" />
-    <glyph glyph-name="rockrms" unicode="&#xf3e9;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM405.4 20.5l-101.5 118.9s73.5996 0.199219 74.1992 0.199219c29.6006 -1.09961 46.6006 33.3008 27.6006 56.1006l-157.7 185.1c-13.2002 17.2998 -40.0996 18.4004 -54.5 0
-l-147.1 -172.5h90l84.2998 98.9004l84.5996 -99.2998h-75.2998c-30.5 0 -44.5 -35.7002 -26.5996 -56.1006l112 -131.3h90z" />
-    <glyph glyph-name="schlix" unicode="&#xf3ea;" 
-d="M350.5 290.3l-54.2002 46.1006l73.4004 39l78.2998 -44.2002zM192 325.9l45.7002 28.1992l34.7002 -34.5996l-55.4004 -29zM126.9 319.3l31.8994 22.1006l17.2002 -28.4004l-36.7002 -22.5zM103.6 231.1l-8.7998 34.8008l29.6006 18.2998l13.0996 -35.2998z
-M82.4004 314.8l23.8994 18.1006l8.90039 -24l-26.7002 -18.3008zM59 241.5l-3.59961 28.4004l22.2998 15.5l6.09961 -28.7002zM28.4004 224.9l20.7998 12.7998l3.2998 -33.4004l-22.9004 -12zM1.40039 180l19.1992 10.2002l0.400391 -38.2002l-21 -8.7998zM60.5 120.7
-l-28.2998 -8.2998l-1.60059 46.7998l25.1006 10.7002zM99 184.8l-31.0996 -13l-5.2002 40.7998l27.3994 14.4004zM123.2 71l-41.6006 -5.90039l-8.09961 63.5l35.2002 10.8008zM151.7 210.9l21.2002 -57.1006l-46.2002 -13.5996l-13.7002 54.0996zM237.4 -19.5996
-l-70.9004 3.2998l-24.2998 95.7998l55.2002 8.59961zM152.5 260.1l42.2002 22.4004l28 -45.9004l-50.7998 -21.2998zM193.5 165.2l61.2998 18.7002l52.7998 -86.6006l-79.7998 -11.2998zM244.9 250.8l67.2998 28.7998l65.5 -65.3994l-88.6006 -26.2002z" />
-    <glyph glyph-name="searchengin" unicode="&#xf3eb;" horiz-adv-x="460" 
-d="M220.6 317.7l-67.1992 -209.3v130.3l-54.7002 -24.2002l54.7002 190.3v-115.3zM137.4 414.4l-1.30078 -4.7002l-15.1992 -52.9004c-40.3008 -15.5 -68.9004 -54.5996 -68.9004 -100.3c0 -52.2998 34.2998 -95.9004 83.4004 -105.5v-53.5996
-c-77.9004 10.5 -135.4 78.1992 -135.4 159c0 80.5 59.7998 147.199 137.4 158zM448.8 -32.7998c-11.2002 -11.2002 -23.0996 -12.2998 -28.5996 -10.5c-5.40039 1.7998 -27.1006 19.8994 -60.4004 44.3994c-33.2998 24.6006 -33.5996 35.7002 -43 56.7002
-c-9.39941 20.9004 -30.3994 42.6006 -57.5 52.4004l-9.7002 14.7002c-24.6992 -16.9004 -53 -26.9004 -81.2998 -28.7002l2.10059 6.59961l15.8994 49.5c46.5 11.9004 80.9004 54 80.9004 104.2c0 54.5 -38.4004 102.1 -96 107.1v52.1006
-c83.2002 -5.10059 148.8 -74.5 148.8 -159.3c0 -33.6006 -11.2002 -64.7002 -29 -90.4004l14.5996 -9.59961c9.80078 -27.1006 31.5 -48 52.4004 -57.4004s32.2002 -9.7002 56.7998 -43c24.6006 -33.2002 42.7002 -54.9004 44.5 -60.2998
-c1.7998 -5.40039 0.700195 -17.2998 -10.5 -28.5zM438.9 -14.9004c0 4.40039 -3.60059 8 -8 8c-4.40039 0 -8 -3.59961 -8 -8c0 -4.39941 3.59961 -8 8 -8c4.39941 0 8 3.60059 8 8z" />
-    <glyph glyph-name="servicestack" unicode="&#xf3ec;" horiz-adv-x="496" 
-d="M88 232c81.7002 -10.2002 273.7 -102.3 304 -232h-392c99.5 8.09961 184.5 137 88 232zM120 384c102.8 -15.5 335.3 -167.9 376 -384h-96c-26.2998 126.7 -150.7 216.7 -233.6 250.4c1.2998 49.6992 -14.1006 98 -46.4004 133.6z" />
-    <glyph glyph-name="sistrix" unicode="&#xf3ee;" 
-d="M448 -1l-30.5 -31l-146 148.1c-28.7002 -23.6992 -65.2002 -37.8994 -105 -37.8994c-91.7998 0 -166.5 75.7998 -166.5 168.899c0 93.1006 74.7002 168.9 166.6 168.801c91.8008 0 166.5 -75.8008 166.5 -168.9c0 -37 -11.8994 -71.2998 -31.8994 -99.2002zM166.5 117.2
-c70.7002 0 128.1 58.2998 128.1 129.899c0 71.6006 -57.5 129.9 -128.1 129.9s-128.1 -58.2998 -128.1 -129.9c0 -71.5996 57.5 -129.899 128.1 -129.899z" />
-    <glyph glyph-name="slack-hash" unicode="&#xf3ef;" 
-d="M446.2 177.6c6.2002 -19 -3.90039 -39.6992 -22.9004 -45.6992l-45.3994 -15.1006l15.6992 -47c6.10059 -19.0996 -3.89941 -39.7002 -23 -45.8994c-21.2998 -6.10059 -40.0996 6 -46 22.8994l-15.6992 47l-93.6006 -31.2998l15.7002 -47
-c6.09961 -19.0996 -3.90039 -39.7002 -23 -45.9004c-21.2998 -6.09961 -40.0996 6 -46 22.9004l-15.7002 47c-45.7002 -15.2002 -50.8994 -17.7998 -57.7002 -16.7998c-14.5 0.599609 -28.5996 10.0996 -33.5996 24.5996c-6.09961 19 4 39.7002 23 45.9004l45.4004 15.0996
-l-30.3008 90c-45.6992 -15.2002 -50.8994 -17.7998 -57.6992 -16.7998c-14.5 0.599609 -28.6006 10.0996 -33.6006 24.5996c-6.09961 19.1006 3.90039 39.7002 23 45.9004l45.2998 15l-15.6992 47c-6.10059 19.0996 3.89941 39.7002 23 45.9004
-c19.0996 6.19922 39.7998 -3.90039 46 -22.9004l15.6992 -47l93.4004 31.2002l-15.7002 47c-6.09961 19.0996 3.90039 39.7002 23 45.8994c19.1006 6.2002 39.7998 -3.89941 46 -22.8994l15.7002 -47l45.4004 15.0996c19.0996 6.2002 39.7998 -3.89941 46 -22.8994
-c6.09961 -19.1006 -3.90039 -39.7002 -23 -45.9004l-45.4004 -15.0996l30.2998 -90l45.4004 15.0996c19.0996 6.2002 39.7998 -3.90039 46 -22.9004zM192.1 130.4l93.5 31.2998l-30.2998 90.2002l-93.5 -31.3008z" />
-    <glyph glyph-name="speakap" unicode="&#xf3f3;" 
-d="M64 56.2197c-79.4102 88.1904 -72 224.36 16.6396 304.141c88.6406 79.7793 224.801 73 304.21 -15.2402c79.4102 -88.2402 72 -224.36 -16.6396 -304.14c-18.7402 -16.8701 64 -43.0908 42 -52.2607c-82.0596 -34.21 -253.91 -35 -346.229 67.5h0.0195312z
-M277.31 267.82l38.5 40.8594c-9.60938 8.89062 -32 26.8301 -76.1699 27.6006c-52.3301 0.910156 -95.8594 -28.2998 -96.7695 -80c-0.200195 -11.3301 0.290039 -36.7207 29.4199 -54.8301c34.46 -21.4199 86.5195 -21.5098 86 -52.2598
-c-0.370117 -21.2803 -26.4199 -25.8105 -38.5898 -25.6006c-3 0.0498047 -30.2305 0.459961 -47.6104 24.6201l-40 -42.6104c28.1602 -27 59 -32.6191 83.4902 -33.0498c10.2295 -0.179688 96.4199 -0.330078 97.8398 81
-c0.280273 15.8105 -2.07031 39.7197 -28.8604 56.5898c-34.3594 21.6406 -85 19.4502 -84.4297 49.75c0.410156 23.25 31 25.3701 37.5303 25.2607c0.429688 0 26.6201 -0.260742 39.6201 -17.3701z" />
-    <glyph glyph-name="staylinked" unicode="&#xf3f5;" horiz-adv-x="440" 
-d="M382.7 155.5l44.2998 -41.2998c3.7002 -3.5 3.2998 -9 -0.700195 -12.2002l-198 -163.9c-9.89941 -7.59961 -17.2998 -0.799805 -17.2998 -0.799805l-208.7 196.101c-3.5 3.5 -3 9 1.2002 12.1992l45.7998 34.9004c4.2002 3.2002 10.4004 3 13.9004 -0.5l151.899 -147.5
-c3.7002 -3.5 10 -3.7002 14.2002 -0.400391l93.2002 74c4.09961 3.2002 4.5 8.7002 0.900391 12.2002l-84 81.2998c-3.60059 3.5 -9.90039 3.7002 -14 0.5l-0.100586 -0.0996094c-4.09961 -3.2002 -10.3994 -3 -14 0.5l-68.0996 64.2998
-c-3.5 3.5 -3.10059 9 1.09961 12.2002l57.2998 43.5996c4.10059 3.2002 10.3008 3 13.8008 -0.5l170 -167.3zM437.2 238.9c3.7002 -3.5 3.39941 -9 -0.700195 -12.2002l-45.7998 -35.7998c-4.10059 -3.2002 -10.4004 -3 -14.1006 0.5l-160.399 159
-c-3.60059 3.5 -9.7998 3.69922 -13.9004 0.5l-92.2002 -71.5c-4.19922 -3.30078 -4.69922 -8.7002 -1.09961 -12.2002l94.5996 -91.7998c3.7002 -3.5 10 -3.60059 14.2002 -0.400391l0.100586 0.0996094c4.19922 3.2002 10.5996 3 14.1992 -0.5l57.1006 -54.3994
-c3.7002 -3.5 3.2998 -9 -0.900391 -12.2002l-7.7002 -6l0.300781 -0.299805l-50.2002 -38.7998c-4.2002 -3.30078 -10.6006 -3.10059 -14.2998 0.399414l-171.7 165.101l-42.2998 41.6992c-3.60059 3.5 -3 9 1.19922 12.2002l206.801 162.101
-c8.2998 6.59961 14.7998 2.2998 16.2998 1.09961z" />
-    <glyph glyph-name="steam-symbol" unicode="&#xf3f6;" 
-d="M395.5 270.5c0 -33.7998 -27.5 -61 -61 -61c-33.7998 0 -61 27.2998 -61 61s27.2998 61 61 61c33.5 0 61 -27.2002 61 -61zM448 270.3c0 -63 -51 -113.8 -113.7 -113.8l-109.3 -79.7998c-4 -43 -40.5 -76.7998 -84.5 -76.7998c-40.5 0 -74.7002 28.7998 -83 67
-l-57.5 23.0996v107.3l97.2002 -39.2998c15.0996 9.2002 32.2002 13.2998 52 11.5l71 101.7c0.5 62.2998 51.5 112.8 114 112.8c62.7998 0 113.8 -51 113.8 -113.7zM203 85c0 34.7002 -27.7998 62.5 -62.5 62.5c-4.5 0 -9 -0.5 -13.5 -1.5l26 -10.5
-c25.5 -10.2002 38 -39 27.7002 -64.5c-10.2002 -25.5 -39.2002 -38 -64.7002 -27.5c-10.2002 4 -20.5 8.2998 -30.7002 12.2002c10.5 -19.7002 31.2002 -33.2002 55.2002 -33.2002c34.7002 0 62.5 27.7998 62.5 62.5zM410.5 270.3c0 42 -34.2998 76.2002 -76.2002 76.2002
-c-42.2998 0 -76.5 -34.2002 -76.5 -76.2002c0 -42.2002 34.2998 -76.2002 76.5 -76.2002c41.9004 -0.0996094 76.2002 33.9004 76.2002 76.2002z" />
-    <glyph glyph-name="sticker-mule" unicode="&#xf3f7;" horiz-adv-x="576" 
-d="M561.7 248.4c-1.2998 -0.300781 0.299805 0 0 0zM555.5 325.8c20.2002 -50.0996 20.5996 -45.2002 20.5996 -52.8994c0 -7.5 -4.09961 -11 -7.19922 -16.5c-1.5 -3 -4.60059 -7.5 -7.2002 -8c-0.400391 0 -3 -0.5 -13.4004 -2.5c-7.2002 -1 -13.3994 4.5 -14.8994 9.5
-c-1.60059 4.69922 2.7998 10.0996 -11.8008 22.8994c-10.2998 10 -21.0996 11.2998 -31.8994 17c-9.7998 5.7002 -11.9004 -1 -18 -8c-18 -22.8994 -34 -46.8994 -52 -69.7998c-11.7998 -15 -24.2002 -30.4004 -33.5 -47.4004
-c-3.90039 -6.7998 -9.5 -28.0996 -10.2998 -29.8994c-6.2002 -17.7002 -5.5 -25.7998 -16.5 -68.2998c-3.10059 -10 -5.7002 -21.4004 -8.7002 -32.4004c-2.2002 -6.7998 -7.40039 -49.2998 -0.5 -59.4004c2.09961 -3.5 8.7002 -4.5 11.2998 -8
-c0.0996094 -0.0996094 9.59961 -18.1992 9.2998 -20c0 -6.09961 -9.39941 -5.59961 -11.2998 -6.5c-4.7998 -2.89941 -3.7998 -5.89941 -6.40039 -7.39941c-5.89941 -2.90039 -32.0996 -3.2002 -36.5 0.5c-4.09961 3 -2.19922 11.8994 -1.5 15
-c2.2002 15 -2.5 7.89941 -9.7998 11.5c-3.09961 1.5 -4.09961 5.5 -4.59961 10c-0.5 1.5 -1 2.5 -1.5 3.5c-1.7002 10.7002 6.7998 33.5996 8.2002 43.3994c4.89941 23.7002 -0.700195 37.2002 1.5 46.9004c3.69922 16.2002 4.09961 3.5 4.09961 29.9004
-c-1.40039 25.8994 3.2998 36.8994 0.5 38.8994c-14.7998 0 -64.2998 -10.7002 -112.2 -2c-46.0996 8.90039 -59.3994 29 -65.3994 30.9004c-10.3008 4.5 -23.2002 -0.5 -27.3008 -7c-0.0996094 -0.100586 -35 -70.6006 -39.5996 -87.7998
-c-6.2002 -20.5 -0.5 -47.4004 4.09961 -66.8008c0 -0.0996094 4.5 -14.5996 10.3008 -19.5c2.09961 -1.5 5.09961 -2.5 7.19922 -4.5c2.80078 -2.69922 9.40039 -15.1992 9.80078 -16c2.59961 -4.5 3.59961 -8 -1.5 -10.5c-3.60059 -2 -9.30078 -2.5 -14.4004 -2.5
-c-2.59961 -0.5 -1.5 -3.5 -3.09961 -5c-2.90039 -2.7998 -20.7002 -6.09961 -29.9004 -2.5c-2.59961 1 -5.7002 3 -6.2002 5c-1.5 4 2.10059 9 -1 12.5c-4.5 2.90039 -13.0996 2 -17 12c-2.2002 5.40039 -2.59961 7.60059 -2.59961 49.4004
-c0 9.7002 -5.90039 38.7002 -8.2002 46.9004c-1.5 5.5 -1.5 11.5 0 16c0.299805 0.899414 4.09961 4.59961 4.09961 13c-1 1.5 -4.59961 0.5 -5.09961 1.5c-10.4004 80.5996 -5.90039 79 -7.7002 98.2998c-1.5 16 -10.8994 43.8994 -6.7002 64.2998
-c0.5 2.40039 3.40039 21 24.2002 38.9004c31 26.6992 48.4004 38.2998 159 11.5c1.10059 -0.400391 66.2998 -21.1006 110.7 9c15.5 11.2998 28.7998 11.2998 35.5 16c0.0996094 0.0996094 61.7002 52.0996 87 65.2998c47.2002 29.3994 69.9004 16.7002 75.0996 18
-c4.7002 1 13.4004 25.7998 17 25.7998c5.5 0 1.60059 -20.2002 3.60059 -25.9004c0.5 -2 3.59961 -5 6.2002 -5c2.2998 0 1.69922 0.800781 10.2998 5c8.39941 5.40039 14.8994 17.6006 20.5996 17c11.7002 -1.59961 -19 -41.5996 -19 -46.8994
-c0 -2 0.200195 -0.799805 4.60059 -9.5c2.59961 -5.5 4.59961 -13.5 6.19922 -20c8.30078 -29.7002 5.7002 -14.6006 13.4004 -36.9004z" />
-    <glyph glyph-name="studiovinari" unicode="&#xf3f8;" horiz-adv-x="512" 
-d="M480.3 260.3l4.2002 -28v-28l-25.0996 -44.0996l-39.8008 -78.4004l-56.0996 -67.5l-79.0996 -37.7998l-17.7002 -24.5l-7.7002 -12l-9.59961 -4s17.2998 63.5996 19.3994 63.5996c2.10059 0 20.2998 -0.699219 20.2998 -0.699219l66.7002 38.5996l-92.5 -26.0996
-l-55.8994 -36.8008l-22.8008 -28l-6.59961 -1.39941l20.7998 73.5996l6.90039 5.5l20.7002 -12.8994l88.2998 45.1992l56.7998 51.5l14.7998 68.4004l-125.399 -23.2998l15.1992 18.2002l-173.399 53.2998l81.8994 10.5l-166 122.899l114.9 -18.0996l-101.3 108
-l252.899 -126.6l-31.5 38l124.4 -74.4004l-143.3 99l18.7002 -38.4004l-49.6006 18.1006l-45.5 84.2998l194.601 -122l-42.9004 55.7998l108 -96.3994l12 8.89941l-21 16.4004l4.2002 37.7998l37.7998 10.4004l29.2002 -24.7002l11.5 -4.2002l-7 -6.2002l8.5 -12
-l-13.1006 -7.39941l-10.2998 -20.2002z" />
-    <glyph glyph-name="supple" unicode="&#xf3f9;" horiz-adv-x="640" 
-d="M640 185.5c0 -64.0996 -109 -116.1 -243.5 -116.1c-24.7998 0 -48.5996 1.7998 -71.0996 5c7.69922 -0.400391 15.5 -0.600586 23.3994 -0.600586c134.5 0 243.5 56.9004 243.5 127.101c0 29.3994 -19.0996 56.3994 -51.2002 78
-c60 -21.1006 98.9004 -55.1006 98.9004 -93.4004zM47.7002 220.1c0.0996094 -29.3994 19.2998 -56.5 51.5996 -78c-60.2002 21 -99.2002 55 -99.2998 93.3008c-0.0996094 64.0996 108.8 116.3 243.3 116.699c24.7002 0 48.5 -1.69922 71 -4.89941
-c-7.7002 0.299805 -15.3994 0.5 -23.2998 0.5c-134.5 -0.299805 -243.4 -57.4004 -243.3 -127.601zM107.9 180.2l8.7998 10.8994s8.7998 -10.0996 20.7002 -10.0996c6.5 0 12.2998 3.5 12.2998 10.0996c0 14.5 -40.2002 13.3008 -40.2002 39.9004
-c0 13.9004 12 24.0996 28.5 24.0996c10 0 25.4004 -4.69922 25.4004 -16.7998v-7.89941h-14.2002v3.89941c0 4 -5.60059 6.60059 -11.2998 6.60059c-7.2002 0 -12.5 -3.7002 -12.5 -9.10059c0 -14.5996 40.1992 -11.7002 40.1992 -39.7002
-c0 -13.5996 -10.5 -25.0996 -28.3994 -25.0996c-18.7998 0 -29.2998 13.2002 -29.2998 13.2002zM228.7 253.8h15.7002v-55c0 -18.8994 -13.3008 -31.8994 -33.4004 -31.8994c-20.2998 0 -33.7002 13 -33.7002 31.8994v55h15.7998v-54.5
-c0 -11.2002 7.10059 -17.7002 17.8008 -17.7002c10.6992 0 17.7998 6.5 17.7998 17.8008v54.3994zM263.1 168.4v72h-7.7998v13.3994h39.1006c16 0 27.1992 -11.2002 27.1992 -27.7998s-11.1992 -28.0996 -27.1992 -28.0996h-15.5v-29.5h-15.8008zM278.9 211.4h12.5996
-c8.90039 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.8994v-29.0996zM335.9 168.4v72h-7.80078v13.3994h39.1006c16 0 27.2002 -11.2002 27.2002 -27.7998s-11.2002 -28.0996 -27.2002 -28.0996h-15.5v-29.5h-15.7998zM351.6 211.4h12.6006
-c9 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.9004v-29.0996zM408.7 176.6h0.0996094v61.2002c0 1.60059 -0.899414 2.60059 -2.59961 2.60059h-5.2002v13.3994h15.4004c5.7998 0 8.19922 -2.5 8.19922 -8.2002v-61.1992
-c0 -1.60059 0.900391 -2.60059 2.60059 -2.60059h18.5996c1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.40039 -8.19922 -8.2002 -8.19922h-37.5996c-5.80078 0 -8.2002 2.39941 -8.2002 8.19922zM472.1 176.6h-0.0996094v63.9004h-7.7998
-v13.4004h51.5996c5.7002 0 8.2002 -2.5 8.2002 -8.2002v-13h-14.2002v5.2002c0 1.59961 -0.899414 2.59961 -2.59961 2.59961h-19.2002v-22.4004h27.7002v-13.3994h-27.7002v-20.2998c0 -1.60059 0.900391 -2.60059 2.59961 -2.60059h19.7002
-c1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.5 -8.19922 -8.2002 -8.19922h-38.7002c-5.7998 0 -8.2002 2.39941 -8.2002 8.19922zM531 252.6h-2.7002v1.2002h7v-1.2002h-2.7002v-5.89941h-1.59961v5.89941zM536.7 253.8h2.39941
-l2.10059 -5.09961l2.09961 5.09961h2.2998v-7.09961h-1.5v5.7002l-2.2998 -5.7002h-1.2998l-2.2998 5.7002v-5.7002h-1.5v7.09961z" />
-    <glyph glyph-name="telegram-plane" unicode="&#xf3fe;" 
-d="M446.7 349.4l-67.6006 -318.801c-5.09961 -22.5 -18.3994 -28.0996 -37.2998 -17.5l-103 75.9004l-49.7002 -47.7998c-5.5 -5.5 -10.0996 -10.1006 -20.6992 -10.1006l7.39941 104.9l190.9 172.5c8.2998 7.40039 -1.7998 11.5 -12.9004 4.09961l-236 -148.6
-l-101.6 31.7998c-22.1006 6.90039 -22.5 22.1006 4.59961 32.7002l397.4 153.1c18.3994 6.90039 34.5 -4.09961 28.5 -32.1992z" />
-    <glyph glyph-name="uber" unicode="&#xf402;" 
-d="M414.1 416c18.7002 0 33.9004 -15.2002 33.8008 -33.9004v-380.199c0 -18.7002 -15.2002 -33.9004 -33.9004 -33.9004h-380.1c-18.7002 0 -33.9004 15.2002 -33.9004 34v380.1c0 18.7002 15.2002 33.9004 33.9004 33.9004h380.199zM237.6 56.9004
-c74.6006 7.5 129 74.0996 121.5 148.6c-7 69.4004 -65.3994 122.2 -135.1 122.2s-128.1 -52.7998 -135.1 -122.2h94.3994v20.4004c0 3.7998 3.10059 6.7998 6.7998 6.7998h67.9004c3.7998 0 6.7998 -3.10059 6.7998 -6.7998v-67.9004
-c0 -3.7998 -3.09961 -6.7998 -6.7998 -6.7998h-67.9004c-3.7998 0 -6.7998 3.09961 -6.7998 6.7998v20.4004h-94.3994c7.5 -74.6006 74.0996 -129 148.699 -121.5z" />
-    <glyph glyph-name="uikit" unicode="&#xf403;" 
-d="M443.9 320v-256l-225.9 -128l-218 128v214.3l87.5996 -45.0996v-117l133.5 -75.5l135.801 75.5v151l-101.101 57.5996l87.6006 53.1006zM308.6 398.9l-87.3994 -53l-86 47.2998l88.5996 54.7998z" />
-    <glyph glyph-name="uniregistry" unicode="&#xf404;" horiz-adv-x="384" 
-d="M192 -32c-39.5 0 -76.2002 11.7998 -106.7 32.2002h213.5c-30.5996 -20.4004 -67.2998 -32.2002 -106.8 -32.2002zM102.9 161.1c0 -2.5 0.0996094 -5 0.299805 -7.39941h-103.101c-0.0996094 2.39941 -0.0996094 4.89941 -0.0996094 7.39941v12.4004h102.9v-12.4004z
-M123.4 104.1c8.89941 -10.5996 20.0996 -19.0996 33 -24.7998h-138.301c-3.7998 8 -7 16.2998 -9.59961 24.7998h114.9zM105.7 138.8c2 -7.89941 5.2002 -15.3994 9.2002 -22.2998h-109.7c-1.7002 7.2998 -3 14.7002 -3.90039 22.2998h104.4zM102.9 208.1v-17.2998h-102.9
-v17.2998h102.9zM102.9 381.3v-4.89941h-102.9v4.89941h102.9zM102.9 416v-2.5h-102.9v2.5h102.9zM102.9 346.7v-7.40039h-102.9v7.40039h102.9zM102.9 242.7v-14.7998h-102.9v14.7998h102.9zM102.9 312v-9.90039h-102.9v9.90039h102.9zM102.9 277.4v-12.4004h-102.9v12.4004
-h102.9zM269.1 116.5c4 6.90039 7.10059 14.4004 9.2002 22.2998h104.4c-0.799805 -7.59961 -2.10059 -15 -3.90039 -22.2998h-109.7zM281.1 302.2v9.7998h102.9v-9.7998h-102.9zM281.1 265v12.4004h102.9v-12.4004h-102.9zM281.1 339.3v7.40039h102.9v-7.40039h-102.9z
-M281.1 416h102.9v-2.5h-102.9v2.5zM78.0996 5.09961c-11.7998 8.7002 -23.5996 18.7002 -33.1992 29.7002h293.1c-9.5 -11.0996 -20.4004 -21 -32.2002 -29.7002h-227.7zM281.1 376.4v4.89941h102.9v-4.89941h-102.9zM281.1 227.9v14.7998h102.9v-14.7998h-102.9z
-M38.7998 42.2998c-6.59961 8.5 -10.5996 17.6006 -15.7998 27.2002h338.9c-5.2002 -9.59961 -11.1006 -18.7002 -17.8008 -27.2002h-305.3zM227.6 79.4004c12.8008 5.59961 24.1006 14.0996 32.9004 24.7998h115c-2.7002 -8.60059 -4.7998 -16.7998 -8.5 -24.7998h-139.4z
-M281.1 161.1v12.4004h102.9v-12.4004c0 -2.5 -0.0996094 -4.89941 -0.200195 -7.39941h-103.1c0.299805 2.39941 0.399414 4.89941 0.399414 7.39941zM281.1 190.8v17.2998h102.9v-17.2998h-102.9z" />
-    <glyph glyph-name="untappd" unicode="&#xf405;" horiz-adv-x="640" 
-d="M401.3 398.1c-79.7998 -160.1 -84.5996 -152.5 -87.8994 -173.199l-5.2002 -32.8008c-1.90039 -12 -6.60059 -23.5 -13.7002 -33.3994l-148.9 -207.8c-7.59961 -10.6006 -20.3994 -16.2002 -33.3994 -14.6006c-40.2998 5 -77.7998 32.2002 -95.2998 68.5
-c-5.7002 11.7998 -4.5 25.7998 3.09961 36.4004l148.9 207.899c7.09961 9.90039 16.3994 18 27.1992 23.7002l29.3008 15.5c18.5 9.7998 9.69922 11.9004 135.6 138.9c1 4.7998 1 7.2998 3.59961 8c3 0.700195 6.60059 1 6.30078 4.59961l-0.400391 4.60059
-c-0.200195 1.89941 1.2998 3.59961 3.2002 3.59961c4.5 0.0996094 13.2002 -1.2002 25.5996 -10c12.2998 -8.90039 16.4004 -16.7998 17.7002 -21.0996c0.599609 -1.80078 -0.599609 -3.7002 -2.40039 -4.2002l-4.5 -1.10059
-c-3.39941 -0.899414 -2.5 -4.39941 -2.2998 -7.39941c0.100586 -2.7998 -2.2998 -3.60059 -6.5 -6.10059zM230.1 411.6c-3.19922 0.800781 -8.19922 1.2002 -6.7998 5.40039c1.2998 4.2998 5.40039 12.2002 17.7002 21.0996c12.4004 8.90039 21.0996 10.1006 25.5996 10
-c4.2002 -0.0996094 3.10059 -4.89941 2.80078 -8.19922c-0.300781 -3.60059 3.2998 -3.80078 6.2998 -4.60059c2.59961 -0.700195 2.59961 -3.2998 3.59961 -8c9.10059 -9.2002 17.6006 -17.8994 25.6006 -26.0996c1.2998 -1.40039 1.19922 -3.5 -0.100586 -4.90039
-c-15.8994 -16.3994 -29.2998 -30.5996 -40.5 -42.5996c-1 -1 -2.59961 -0.799805 -3.2998 0.5c-6.90039 13.5 -14.2998 28.0996 -22.2002 44c-4.2998 2.5 -6.59961 3.2998 -6.39941 6c0.199219 3 1.09961 6.5 -2.30078 7.39941zM620 41.2998
-c7.7002 -10.7002 8.7998 -24.7002 3.40039 -36.5996c-17.7002 -36.6006 -55.4004 -63.7002 -95.7002 -68.6006c-12.9004 -1.5 -25.5 4.10059 -33.1006 14.7002l-148.899 207.9c-7.10059 9.89941 -11.7998 21.3994 -13.7002 33.3994
-c-1.59961 9.80078 -2 19.1006 -0.299805 29.8008c1.89941 12 2.7002 6 49 94.7998c0.700195 1.39941 2.59961 1.59961 3.59961 0.5c16.2998 -18 19.2998 -23 30.5 -28.9004c29.7998 -15.7002 43.2002 -20.5996 56.4004 -39.0996z" />
-    <glyph glyph-name="ussunnah" unicode="&#xf407;" horiz-adv-x="512" 
-d="M156.8 162.9l5.7002 -14.4004h-8.2002c-1.2998 3.2002 -3.09961 7.7002 -3.7998 9.5c-2.5 6.2998 -1.09961 8.40039 0 10c1.90039 2.7002 3.2002 4.40039 3.59961 5.2002c0 -2.2002 0.800781 -5.7002 2.7002 -10.2998zM454.1 144.1
-c-2.09961 -13.7998 -5.69922 -27.0996 -10.5 -39.6992l43 -23.4004l-44.7998 18.7998c-5.2998 -13.2002 -12 -25.5996 -19.8994 -37.2002l34.1992 -30.1992l-36.7998 26.3994c-8.39941 -11.7998 -18 -22.5996 -28.7002 -32.2998l24.9004 -34.7002l-28.0996 31.7998
-c-11 -9.59961 -23.1006 -18 -36.1006 -25.0996l15.7002 -37.2002l-19.2998 35.2998c-13.1006 -6.7998 -27 -12.0996 -41.6006 -15.8994l6.7002 -38.4004l-10.5 37.4004c-14.2998 -3.40039 -29.2002 -5.2998 -44.5 -5.40039l-1.7998 -38.2998l-1.90039 38.4004
-c-15.2998 0.0996094 -30.1992 2 -44.5 5.2998l-10.5996 -37.2998l6.7002 38.1992c-14.6006 3.7002 -28.6006 9.10059 -41.7002 15.8008l-19.2002 -35.1006l15.6006 37c-13 7 -25.2002 15.4004 -36.2002 25.1006l-27.9004 -31.6006l24.7002 34.4004
-c-10.7002 9.7002 -20.4004 20.5 -28.7998 32.2998l-36.5 -26.2002l33.8994 29.9004c-7.89941 11.5996 -14.5996 24.0996 -20 37.2998l-44.3994 -18.7002l42.5996 23.2002c-4.7998 12.7002 -8.39941 26.0996 -10.5 39.9004l-51 -9l50.2998 14.1992
-c-1.09961 8.5 -1.69922 17.1006 -1.69922 25.9004c0 4.7002 0.199219 9.40039 0.5 14.0996l-55.4004 2.90039l56 2.7998c1.2998 13.1006 3.7998 25.7998 7.5 38.1006l-57.0996 16.0996l58.8994 -10.4004c4 12 9.10059 23.5 15.2002 34.4004l-55.0996 30l58.2998 -24.5996
-c6.2998 10.5996 13.5 20.3994 21.5996 29.5996l-49.5 43.5996l53.9004 -38.6992c8.09961 8.59961 17 16.5 26.5996 23.5996l-40 55.5996l45.6006 -51.5996c9.5 6.59961 19.6992 12.2998 30.2998 17.2002l-27.2998 64.8994l33.7998 -62.0996
-c10.5 4.40039 21.3994 7.90039 32.7002 10.4004l-12.4004 70.6992l19.5 -69.1992c11 2.09961 22.2998 3.19922 33.7998 3.39941l3.7002 72.2002l3.59961 -72.2002c11.5 -0.200195 22.8008 -1.39941 33.8008 -3.5l19.5996 69.2998l-12.4004 -70.6992
-c11.3008 -2.60059 22.2002 -6.10059 32.6006 -10.5l33.8994 62.1992l-27.3994 -65.0996c10.5996 -4.90039 20.7002 -10.7002 30.2002 -17.2002l45.7998 51.7998l-40.1006 -55.8994c9.5 -7.10059 18.4004 -15 26.5 -23.6006l54.2002 38.9004l-49.7002 -43.9004
-c8 -9.09961 15.2002 -18.8994 21.5 -29.3994l58.7002 24.7002l-55.5 -30.2002c6.10059 -10.9004 11.1006 -22.2998 15.1006 -34.2998l59.2998 10.3994l-57.5 -16.2002c3.7002 -12.1992 6.2002 -24.8994 7.5 -37.8994l56.2998 -2.7002l-56 -2.7998
-c0.299805 -4.60059 0.5 -9.2998 0.5 -14.1006c0 -8.69922 -0.599609 -17.2998 -1.59961 -25.7998l50.6992 -14.2998zM432.3 175.1c0 97.5 -79 176.5 -176.5 176.5s-176.5 -79 -176.5 -176.5s79 -176.5 176.5 -176.5s176.5 79 176.5 176.5zM408.3 175.1
-c0 -84.2998 -68.2998 -152.6 -152.6 -152.6s-152.601 68.2998 -152.601 152.6c0 84.3008 68.3008 152.601 152.601 152.601s152.6 -68.2998 152.6 -152.601zM195 207c0 -2.09961 1.2998 -3.7998 3.59961 -5.09961c3.30078 -1.90039 6.2002 -4.60059 8.2002 -8.2002
-c2.7998 5.7002 4.2998 9.5 4.2998 11.2002c0 2.19922 -1.09961 4.39941 -3.19922 7c-2.10059 2.5 -3.2002 5.19922 -3.30078 7.69922c-6.5 -6.7998 -9.59961 -10.8994 -9.59961 -12.5996zM154.3 226c0 -2.09961 1.2998 -3.7998 3.60059 -5.09961
-c3.5 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922c-6.5 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM135.3 226
-c0 -2.09961 1.2998 -3.7998 3.60059 -5.09961c3.2998 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922
-c-6.40039 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM340.2 138.1c-8.40039 3 -8.7002 6.80078 -8.7002 15.6006v112.3c-8.2002 -12.5 -14.2002 -18.5996 -18 -18.5996c6.2998 -14.4004 9.5 -23.9004 9.5 -28.3008v-64.2998c0 -2.2002 -2.2002 -6.5 -4.7002 -6.5h-18
-c-2.7998 7.5 -10.2002 26.9004 -15.2998 40.2998c-2 -2.5 -7.2002 -9.19922 -10.7002 -13.6992c2.40039 -1.60059 4.10059 -3.60059 5.2002 -6.30078c2.59961 -6.69922 6.40039 -16.5 7.90039 -20.1992h-9.2002c-3.90039 10.3994 -9.60059 25.3994 -11.7998 31.0996
-c-2 -2.5 -7.2002 -9.2002 -10.7002 -13.7002c2.39941 -1.59961 4.09961 -3.59961 5.2002 -6.2998c0.799805 -2 2.7998 -7.2998 4.2998 -10.9004h-9.2002c-1.5 4.10059 -5.59961 14.6006 -8.40039 22c-2 -2.5 -7.19922 -9.19922 -10.6992 -13.6992
-c2.5 -1.60059 4.2998 -3.60059 5.19922 -6.30078c0.200195 -0.599609 0.5 -1.39941 0.600586 -1.69922h-17.7002c-4.59961 13.8994 -11.4004 27.6992 -11.4004 34.0996c0 2.2002 0.300781 5.09961 1.10059 8.2002c-8.7998 -10.7998 -14 -15.9004 -14 -25
-c0 -7.5 10.3994 -28.2998 10.3994 -33.2998c0 -1.7002 -0.5 -3.30078 -1.39941 -4.90039c-9.60059 12.7002 -15.5 20.7002 -18.7998 20.7002h-12l-11.2002 28c-3.7998 9.59961 -5.7002 16 -5.7002 18.7998c0 3.7998 0.5 7.7002 1.7002 12.2002
-c-1 -1.2998 -3.7002 -4.7002 -5.5 -7.10059c-0.799805 2.10059 -3.10059 7.7002 -4.60059 11.5c-2.09961 -2.5 -7.5 -9.09961 -11.1992 -13.5996c0.899414 -2.2998 3.2998 -8.09961 4.89941 -12.2002c-2.5 -3.2998 -9.09961 -11.7998 -13.5996 -17.7002
-c-4 -5.2998 -5.7998 -13.2998 -2.7002 -21.7998c2.5 -6.7002 2 -7.89941 -1.7002 -14.0996h61.7002c5.5 0 14.2998 -14 15.5 -22c13.2002 16 15.4004 19.5996 16.7998 21.5996h107c3.90039 0 7.2002 1.90039 9.90039 5.7998zM360.3 164.7v101.6
-c-9 -12.5 -15.8994 -18.5996 -20.7002 -18.5996c7.10059 -14.4004 10.7002 -23.9004 10.7002 -28.2998v-66.3008c0 -17.5 8.60059 -20.3994 24 -20.3994c8.10059 0 12.5 0.799805 13.7002 2.7002c-4.2998 1.59961 -7.59961 2.5 -9.90039 3.2998
-c-8.09961 3.2002 -17.7998 7.39941 -17.7998 26z" />
-    <glyph glyph-name="vaadin" unicode="&#xf408;" 
-d="M224.5 307.3c1.5 17.6006 4.90039 52.7002 49.7998 52.7002h98.6006c20.6992 0 32.0996 7.7998 32.0996 21.5996v12.3008c0 12.1992 9.2998 22.0996 21.5 22.0996s21.5 -9.90039 21.5 -22.0996v-36.5c0 -42.9004 -21.5 -62 -66.7998 -62h-100.5
-c-30.1006 0 -33 -14.7002 -33 -27.1006c0 -1.2998 -0.100586 -2.5 -0.200195 -3.7002c-0.700195 -12.2998 -10.9004 -22.1992 -23.4004 -22.1992s-22.6992 9.7998 -23.3994 22.1992c-0.100586 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 12.2998 -3 27.1006 -33 27.1006
-h-100.7c-45.2998 0 -66.7998 19.0996 -66.7998 62v36.5c0 12.1992 9.40039 22.0996 21.5996 22.0996c12.2002 0 21.5 -9.90039 21.5 -22.0996v-12.3008c0 -13.7998 11.4004 -21.5996 32.1006 -21.5996h98.5996c44.7998 0 48.2998 -35.0996 49.7998 -52.7002h0.900391z
-M224 -8c-11.5 0 -21.4004 7 -25.7002 16.2998c-1.09961 1.7998 -97.0996 169.5 -98.2002 171.4c-11.8994 19.7002 3.2002 44.2998 27.2002 44.2998c13.9004 0 23.4004 -6.40039 29.7998 -20.2998l66.9004 -117.7l66.9004 117.7c6.5 13.8994 15.8994 20.2998 29.7998 20.2998
-c24 0 39.0996 -24.7002 27.2002 -44.2998c-1.10059 -1.7998 -97.1006 -169.601 -98.2002 -171.4c-4.2998 -9.2998 -14.2002 -16.2998 -25.7002 -16.2998z" />
-    <glyph glyph-name="viber" unicode="&#xf409;" horiz-adv-x="512" 
-d="M444 398.1c42.2002 -36.6992 65.5996 -117.899 49.7998 -246.5c-15.2002 -124.6 -109.1 -136.6 -125.7 -142c-7.19922 -2.2998 -70.2998 -18.0996 -152.5 -11.1992c-9.09961 -10.5 -21.0996 -24.3008 -29.7998 -33.7002
-c-15.8994 -17.1006 -25.7002 -33 -42.2998 -27.7998c-13.7998 4.19922 -13 25.0996 -13 25.0996l0.0996094 51.5996h-0.0996094c-120.1 33.8008 -118.4 158.4 -117 224.9s14.2998 120.2 50.9004 156.8c65.7998 60.4004 200.899 52.2998 200.899 52.2998
-c114.601 -0.5 166 -37.7998 178.7 -49.5zM457.9 161c13.2998 107.3 -4.90039 180.5 -40.6006 211.1c-10.7998 9.80078 -57.2002 39 -154.1 39.4004c0 0 -114.7 7.5 -170.4 -43c-31 -30.5996 -41.5 -76.0996 -42.5996 -131.6
-c-1.10059 -55.5 -7.10059 -161.601 94.7002 -189.801c-0.100586 0 -0.100586 0 0 0c0 0 -0.400391 -78.7998 -0.400391 -85.6992c-0.0996094 -10.5 5.7002 -11 11 -5.7002c16.2002 16.2998 68.2002 79 68.2002 79c69.7002 -4.5 125.2 9.2998 131.2 11.2002
-c14 4.5 90.0996 11.0996 103 115.1zM318.9 241.8c0.399414 -8.59961 -12.5 -9.2002 -12.9004 -0.599609c-1.09961 22 -11.4004 32.7002 -32.5996 33.8994c-8.60059 0.5 -7.80078 13.4004 0.699219 12.9004c27.9004 -1.5 43.4004 -17.5 44.8008 -46.2002zM339.2 230.5
-c1 42.4004 -25.5 75.5996 -75.7998 79.2998c-8.5 0.600586 -7.60059 13.5 0.899414 12.9004c58 -4.2002 88.9004 -44.1006 87.7998 -92.5c-0.0996094 -8.60059 -13.0996 -8.2002 -12.8994 0.299805zM386.2 217.1c0.0996094 -8.59961 -12.9004 -8.69922 -12.9004 -0.0996094
-c-0.599609 81.5 -54.8994 125.9 -120.8 126.4c-8.5 0.0996094 -8.5 12.8994 0 12.8994c73.7002 -0.5 133 -51.3994 133.7 -139.2zM374.9 119v-0.200195c-10.8008 -19 -31 -40 -51.8008 -33.2998l-0.199219 0.299805c-21.1006 5.90039 -70.8008 31.5 -102.2 56.5
-c-16.2002 12.7998 -31 27.9004 -42.4004 42.4004c-10.2998 12.8994 -20.7002 28.2002 -30.7998 46.5996c-21.2998 38.5 -26 55.7002 -26 55.7002c-6.7002 20.7998 14.2002 41 33.2998 51.7998h0.200195c9.2002 4.7998 18 3.2002 23.9004 -3.89941
-c0 0 12.3994 -14.8008 17.6992 -22.1006c5 -6.7998 11.7002 -17.7002 15.2002 -23.7998c6.10059 -10.9004 2.2998 -22 -3.7002 -26.5996l-12 -9.60059c-6.09961 -4.89941 -5.2998 -14 -5.2998 -14s17.7998 -67.2998 84.2998 -84.2998c0 0 9.10059 -0.799805 14 5.2998
-l9.60059 12c4.59961 6 15.7002 9.7998 26.5996 3.7002c14.7002 -8.2998 33.4004 -21.2002 45.7998 -32.9004c7 -5.69922 8.60059 -14.3994 3.80078 -23.5996z" />
-    <glyph glyph-name="vimeo" unicode="&#xf40a;" 
-d="M403.2 416c24.7002 0 44.7998 -20.0996 44.7998 -44.7998v-358.4c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v358.4c0 24.7002 20.0996 44.7998 44.7998 44.7998h358.4zM377 267.2
-c1.90039 42.2002 -13.7998 63.7998 -47.0996 64.7002c-44.9004 1.39941 -75.3008 -23.9004 -91.2002 -76c19.8994 8.5 49.2998 10.7998 45.7998 -22.4004c-1 -11.2002 -8.2998 -27.5 -21.7998 -48.9004c-37.7002 -59.3994 -46.9004 -39.5996 -67.6006 91.6006
-c-5.7998 36.8994 -21.2998 54.0996 -46.5 51.7002c-22.2998 -2 -57.8994 -38.4004 -95.1992 -71.2002l15.1992 -19.6006c14.5 10.1006 23 15.2002 25.4004 15.2002c21 0 31.9004 -54.7002 57.4004 -148c13.0996 -34.8994 29 -52.2998 47.8994 -52.2998
-c30.4004 0 67.7002 28.5996 111.7 85.7998c42.5996 54.7002 64.5996 97.9004 66 129.4z" />
-    <glyph glyph-name="vnv" unicode="&#xf40b;" horiz-adv-x="640" 
-d="M104.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5s-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006
-l36.7002 74.5c5.59961 9.5 8.39941 18.0996 18.7998 18.0996h32.7998c20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.7998 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.0996zM499.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5
-s-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006l36.7998 74.5c5.60059 9.5 8.40039 18.0996 18.7998 18.0996h32.9004
-c20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.9004 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.1992zM337.6 256c34.1006 0 46.4004 -30.4004 46.4004 -30.4004l55.9004 -111.5s10.3994 -18.0996 -10.4004 -18.0996h-32.7998
-c-10.4004 0 -13.2002 8.7002 -18.7998 18.0996l-36.7002 74.5s-5.2002 13.1006 -21.1006 13.1006c-15.8994 0 -21.0996 -13.1006 -21.0996 -13.1006l-36.7002 -74.5c-5.59961 -9.39941 -8.39941 -18.0996 -18.7998 -18.0996h-32.9004
-c-20.7998 0 -10.3994 18.0996 -10.3994 18.0996l55.8994 111.5s12.2002 30.4004 46.4004 30.4004h35.0996z" />
-    <glyph glyph-name="whatsapp-square" unicode="&#xf40c;" 
-d="M224 325.2c35.2002 0 68.2002 -13.7002 93.2002 -38.7002c24.8994 -24.9004 40.0996 -58 40.0996 -93.2002c0 -72.7002 -60.7002 -131.8 -133.3 -131.8h-0.0996094c-23.7002 0 -46.9004 6.40039 -67.1006 18.4004l-4.7998 2.89941l-49.9004 -13.0996l13.3008 48.5996
-l-3.10059 5c-13.2002 20.9004 -20.2002 45.2002 -20.2002 70.1006c0.100586 72.6992 59.2002 131.8 131.9 131.8zM301.5 136.8c3.2998 9.2002 3.2998 17.2002 2.40039 19.1006c-1 1.59961 -3.60059 2.59961 -7.60059 4.59961s-23.5 11.5996 -27.0996 12.9004
-c-3.60059 1.2998 -6.2998 2 -8.90039 -2c-2.59961 -3.90039 -10.2002 -12.9004 -12.5 -15.5c-2.2998 -2.7002 -4.59961 -3 -8.59961 -1c-23.2998 11.6992 -38.6006 20.7998 -53.9004 47.0996c-4.09961 7 4 6.40039 11.6006 21.5996
-c1.39941 2.60059 0.699219 4.90039 -0.300781 6.90039s-8.89941 21.5 -12.1992 29.4004c-3.2002 7.69922 -6.5 6.69922 -8.90039 6.7998c-2.2998 0.0996094 -5 0.0996094 -7.59961 0.0996094c-2.7002 0 -7 -1 -10.6006 -5c-3.7002 -4 -13.8994 -13.5996 -13.8994 -33.0996
-s14.1992 -38.4004 16.1992 -41c2 -2.60059 28 -42.6006 67.7002 -59.7998c25.1006 -10.8008 34.9004 -11.8008 47.5 -9.90039c7.60059 1.09961 23.4004 9.5 26.7002 18.7998zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48
-v352c0 26.5 21.5 48 48 48h352zM223.9 34.7998c87.3994 0 160.1 71.1006 160.1 158.5c0 42.4004 -18 82.2002 -47.9004 112.2c-30 30 -69.7998 46.5 -112.199 46.5c-87.4004 0 -158.5 -71.0996 -158.601 -158.5c0 -28 7.2998 -55.2998 21.2002 -79.2998l-22.5 -82.2002
-l84.0996 22.0996c23.1006 -12.5996 49.2002 -19.2998 75.8008 -19.2998z" />
-    <glyph glyph-name="whmcs" unicode="&#xf40d;" 
-d="M448 287l-29.0996 -7l-2.2002 -12.0996l20.8994 -18.8008l-10.2998 -20.0996l-28.7998 8.7998l-7.7998 -8.09961l8.7998 -28l-20.4004 -12.1006l-20.6992 21.6006l-11.6006 -3.5l-6.7002 -28.7998l-22.5996 0.299805l-6.7002 28.5l-11.5996 2.89941l-19.4004 -20.3994
-l-19.8994 11.5996l8.09961 26.9004l-7.2002 8.59961l-29.5996 -7.5l-10.4004 18.5l20.1006 19.9004l-2.40039 12.0996l-28.7998 7.5l0.299805 21.7002l28.5 7.7998l2.90039 10.4004l-20.7002 21l11 19.0996l28.5 -7.5l8.09961 8.40039l-8.09961 27.7002l19.3994 11
-l19.7002 -21l12.1006 3.19922l6.19922 26.4004h22.6006l7 -26.4004l10.7002 -3.19922l21.2998 21l19.0996 -11.6006l-7.5 -28.2002l7.2002 -7.5l29 7.5l10.4004 -19.3994l-20.1006 -20.7002l2.2002 -10.4004l28.5 -8.7998v-21.2998zM328.8 241.8
-c31.4004 0 56.7998 25.2998 56.7998 56.7998c0 31.4004 -25.3994 56.8008 -56.7998 56.8008c-31.3994 0 -56.7998 -25.4004 -56.7998 -56.8008c0 -31.3994 25.5 -56.7998 56.7998 -56.7998zM401.1 225.4l46.9004 -14.5v-39.9004l-55.0996 -13.4004l-4.10059 -22.6992
-l38.9004 -35.3008l-19.2002 -37.8994l-54 16.7002l-14.5996 -15.2002l16.6992 -52.5l-38.2998 -22.7002l-38.8994 40.5l-21.7002 -6.59961l-12.6006 -54l-42.3994 0.5l-12.6006 53.5996l-21.6992 5.59961l-36.4004 -38.3994l-37.4004 21.7002l15.2002 50.5l-13.7002 16.0996
-l-55.5 -14.0996l-19.6992 34.7998l37.8994 37.3994l-4.7998 22.8008l-54 14.0996l0.5 40.9004l53.5 14.6992l5.7002 19.7002l-38.9004 39.4004l20.7002 35.7998l53.5996 -14.0996l15.2002 15.6992l-15.2002 52l36.4004 20.7002l36.7998 -39.3994l22.7002 6.09961l11.5996 52
-h42.4004l11.5996 -45.9004l-22.5996 5.90039l-6.2998 1.7002l-3.2998 -5.7002l-11 -19.0996l-3.30078 -5.60059l4.60059 -4.59961l17.2002 -17.4004l-0.300781 -1l-23.7998 -6.5l-6.2002 -1.7002l-0.0996094 -6.39941l-0.200195 -12.9004
-c-47.5 -10.3994 -83.2998 -52.7998 -83.2998 -103.5c0 -58.2998 47.2998 -105.7 105.7 -105.7c50.5 0 92.7002 35.4004 103.2 82.8008l13.1992 -0.200195l6.90039 -0.100586l1.59961 6.7002l5.60059 24l1.89941 0.600586l17.1006 -17.8008l4.7002 -4.89941l5.7998 3.39941
-l20.3994 12.1006l5.80078 3.5l-2 6.5z" />
-    <glyph glyph-name="wordpress-simple" unicode="&#xf411;" horiz-adv-x="512" 
-d="M256 440c136.7 0 248 -111.2 248 -248c0 -136.7 -111.3 -248 -248 -248s-248 111.3 -248 248c0 136.8 111.3 248 248 248zM33 192c0 -88.2002 51.2998 -164.5 125.7 -200.7l-106.4 291.4c-12.3994 -27.7002 -19.2998 -58.4004 -19.2998 -90.7002zM256 -31
-c26 0 50.9004 4.5 74 12.5996c-0.599609 1 -1.09961 2 -1.59961 3.10059l-68.5 187.8l-66.9004 -194.4c20 -5.89941 41.0996 -9.09961 63 -9.09961zM286.7 296.5l80.7002 -239.6l22.1992 74.2998c9.7002 30.8994 17 53 17 72.0996c0 27.6006 -9.89941 46.7002 -18.3994 61.5
-c-11.2998 18.4004 -21.9004 33.9004 -21.9004 52.2998c0 20.5 15.5 39.6006 37.4004 39.6006c1 0 1.89941 -0.100586 2.89941 -0.200195c-39.6992 36.2998 -92.5996 58.5 -150.6 58.5c-77.9004 0 -146.4 -40 -186.3 -100.5
-c5.2998 -0.200195 10.2002 -0.299805 14.3994 -0.299805c23.3008 0 59.4004 2.7998 59.4004 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961l81.1992 -241.5l48.8008 146.3l-34.7002 95.2002
-c-12 0.700195 -23.4004 2.09961 -23.4004 2.09961c-12 0.700195 -10.5996 19.1006 1.40039 18.4004c0 0 36.7998 -2.7998 58.7002 -2.7998c23.2998 0 59.3994 2.7998 59.3994 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961z
-M368.1 -0.700195c66.3008 38.6006 110.9 110.4 110.9 192.7c0 38.7998 -9.90039 75.2002 -27.2998 107c1 -7.09961 1.5 -14.7002 1.5 -22.9004c0 -22.6992 -4.2998 -48.0996 -17 -79.8994z" />
-    <glyph glyph-name="xbox" unicode="&#xf412;" horiz-adv-x="512" 
-d="M369.9 129.8c44.2998 -54.2998 64.6992 -98.7998 54.3994 -118.7c-7.89941 -15.0996 -56.7002 -44.5996 -92.5996 -55.8994c-29.6006 -9.2998 -68.4004 -13.2998 -100.4 -10.2002c-38.2002 3.7002 -76.8994 17.4004 -110.1 39
-c-27.9004 18.2002 -34.2002 25.7002 -34.2002 40.5996c0 29.9004 32.9004 82.3008 89.2002 142.101c32 33.8994 76.5 73.7002 81.3994 72.5996c9.40039 -2.09961 84.3008 -75.0996 112.301 -109.5zM188.6 304.2c-66.3994 -81.5 -106 -155.4 -120.3 -194.4
-c-9.7998 -26.5 -13.7002 -53 -9.5 -64c2.7998 -7.39941 0.200195 -4.7002 -9.2998 9.90039c-23.2002 35.5 -34.9004 70.3994 -40.5 120.899c-1.90039 16.7002 -1.2002 26.3008 4.2002 60.5c6.7998 42.7002 31.0996 92 60.2998 122.4
-c12.4004 12.9004 13.5 13.2002 28.7002 8.09961c28.2998 -9.5 56.7002 -36.5 86.3994 -63.3994zM500.2 240.7c4.7002 -22.6006 5.09961 -70.9004 0.799805 -93.4004c-3.59961 -18.5 -11.2002 -42.5 -18.5996 -58.7002c-5.5 -12.1992 -19.3008 -35.7998 -25.4004 -43.5
-c-3.09961 -3.89941 -3.09961 -3.89941 -1.40039 4.60059c2.30078 11.2002 -0.599609 31.5996 -7.39941 52.2998c-20.7002 62.9004 -80.5 149 -122.9 202.3c23.2998 21.4004 41 38.2998 64.2998 52.7998c11.8008 7.40039 28.7002 13.9004 36 13.9004
-c7.10059 0 57.7002 -50.2998 74.6006 -130.3zM141.3 405c-14.5996 -0.700195 -14 0.0996094 9.40039 11.2002c81.2002 38.2998 170 27.5996 233.899 -11.7002c-13.3994 0.599609 -43.5 5.90039 -107.399 -25.2002c-11.2002 -5.5 -20.9004 -9.7998 -21.6006 -9.7002
-c-4.59961 0.900391 -66.5996 37.9004 -114.3 35.4004z" />
-    <glyph glyph-name="yandex" unicode="&#xf413;" horiz-adv-x="256" 
-d="M153.1 132.2l-87.3994 -196.2h-63.7002l96 209.8c-45.0996 22.9004 -75.2002 64.4004 -75.2002 141.101c-0.0996094 107.399 68 161.1 148.9 161.1h82.2998v-512h-55.0996v196.2h-45.8008zM198.9 401.5h-29.4004c-44.4004 0 -87.4004 -29.4004 -87.4004 -114.6
-c0 -82.3008 39.4004 -108.801 87.4004 -108.801h29.4004v223.4z" />
-    <glyph glyph-name="yandex-international" unicode="&#xf414;" horiz-adv-x="320" 
-d="M129.5 -64v166.1l-111 297.9h55.7998l81.7998 -229.7l94.1006 277.7h51.2998l-120.7 -347.8v-164.2h-51.2998z" />
-    <glyph glyph-name="apple-pay" unicode="&#xf415;" horiz-adv-x="640" 
-d="M116.9 289.5c-7.5 -8.90039 -19.5 -15.9004 -31.5 -14.9004c-1.5 12 4.39941 24.8008 11.2998 32.6006c7.5 9.09961 20.5996 15.5996 31.2998 16.0996c1.2002 -12.3994 -3.7002 -24.7002 -11.0996 -33.7998zM127.8 272.3c6.7998 -0.5 26.2998 -2.5 38.7998 -21.0996
-c-1 -0.799805 -23.1992 -13.5 -22.8994 -40.2998c0.299805 -32 28 -42.6006 28.2998 -42.9004c-0.200195 -0.799805 -4.40039 -15.0996 -14.5 -29.9004c-8.90039 -13 -18 -25.6992 -32.5 -26c-14 -0.199219 -18.7002 8.40039 -34.7998 8.40039
-c-16 0 -21.2002 -8.09961 -34.5 -8.59961c-14 -0.5 -24.6006 13.7998 -33.5 26.7998c-18.2002 26.2998 -32.1006 74 -13.2998 106.3c9.09961 16.0996 25.6992 26.2002 43.5996 26.5c13.7998 0.299805 26.4004 -9.09961 34.7998 -9.09961
-c8.2002 0 23.1006 10.8994 40.5 9.89941zM228.2 308.5h73.2002c37.6992 0 64.0996 -26 64.0996 -64s-26.7998 -64.2998 -65.0996 -64.2998h-41.9004v-66.6006h-30.2998v194.9zM258.5 283v-77.4004h34.7998c26.4004 0 41.4004 14.2002 41.4004 38.8008
-c0 24.5996 -15 38.5996 -41.2998 38.5996h-34.9004zM420.7 112.1c-28.1006 0 -47.7002 16.8008 -47.7998 42c0 25 19 39.4004 54.0996 41.5l37.7998 2.30078v10.7998c0 15.8994 -10.3994 24.5 -28.8994 24.5c-15.2002 0 -26.3008 -7.90039 -28.6006 -19.9004h-27.2998
-c0.900391 25.2002 24.7002 43.6006 56.7998 43.6006c34.6006 0 57.1006 -18.2002 57.1006 -46.3008v-97h-28v23.4004h-0.600586c-8 -15.2998 -25.5996 -24.9004 -44.5996 -24.9004zM428.9 135.2c20.5 0 36 13 36 31.2002v11l-33.6006 -2.10059
-c-18.8994 -1.09961 -28.7998 -8.2002 -28.7998 -20.5c0 -11.7998 10.2998 -19.5996 26.4004 -19.5996zM531.4 60.5996c-2.30078 0 -9.80078 0.300781 -11.6006 0.700195v23.4004c1.90039 -0.200195 6.5 -0.5 8.90039 -0.5c13.3994 0 20.8994 5.7002 25.5 20.2998
-l2.7998 8.59961l-51.2002 141.9h31.6006l35.5996 -115.1h0.599609l35.6006 115.1h30.7998l-53.0996 -149c-12.1006 -34.0996 -26 -45.4004 -55.5 -45.4004z" />
-    <glyph glyph-name="cc-apple-pay" unicode="&#xf416;" horiz-adv-x="576" 
-d="M302.2 229.6c0 -17.1992 -10.5 -27.0996 -29 -27.0996h-24.2998v54.2002h24.3994c18.4004 0 28.9004 -9.7998 28.9004 -27.1006zM349.7 167c0 8.59961 6.89941 13.5 20.2002 14.4004l23.5 1.5v-7.7002c0 -12.7998 -10.8008 -21.9004 -25.2002 -21.9004
-c-11.2998 0 -18.5 5.40039 -18.5 13.7002zM576 369v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM127.8 250.8c8.40039 -0.700195 16.7998 4.2002 22.1006 10.4004
-c5.19922 6.39941 8.59961 15 7.69922 23.7002c-7.39941 -0.300781 -16.5996 -4.90039 -21.8994 -11.3008c-4.7998 -5.5 -8.90039 -14.3994 -7.90039 -22.7998zM188.4 176.3c-0.200195 0.200195 -19.6006 7.60059 -19.8008 30c-0.199219 18.7002 15.3008 27.7002 16 28.2002
-c-8.7998 13 -22.3994 14.4004 -27.0996 14.7002c-12.2002 0.700195 -22.5996 -6.90039 -28.4004 -6.90039c-5.89941 0 -14.6992 6.60059 -24.2998 6.40039c-12.5 -0.200195 -24.2002 -7.2998 -30.5 -18.6006c-13.0996 -22.5996 -3.39941 -56 9.2998 -74.3994
-c6.2002 -9.10059 13.7002 -19.1006 23.5 -18.7002c9.30078 0.400391 13 6 24.2002 6c11.2998 0 14.5 -6 24.2998 -5.90039c10.2002 0.200195 16.5 9.10059 22.8008 18.2002c6.89941 10.4004 9.7998 20.4004 10 21zM323.8 229.7c0 26.5996 -18.5 44.7998 -44.8994 44.7998
-h-51.2002v-136.4h21.2002v46.6006h29.2998c26.7998 0 45.5996 18.3994 45.5996 45zM413.8 206c0 19.7002 -15.7998 32.4004 -40 32.4004c-22.5 0 -39.0996 -12.9004 -39.7002 -30.5h19.1006c1.59961 8.39941 9.39941 13.8994 20 13.8994c13 0 20.2002 -6 20.2002 -17.2002
-v-7.5l-26.4004 -1.59961c-24.5996 -1.5 -37.9004 -11.5996 -37.9004 -29.0996c0 -17.7002 13.7002 -29.4004 33.4004 -29.4004c13.2998 0 25.5996 6.7002 31.2002 17.4004h0.399414v-16.4004h19.6006v68h0.0996094zM516 237.1h-21.5l-24.9004 -80.5996h-0.399414
-l-24.9004 80.5996h-22.2998l35.9004 -99.2998l-1.90039 -6c-3.2002 -10.2002 -8.5 -14.2002 -17.9004 -14.2002c-1.69922 0 -4.89941 0.200195 -6.19922 0.300781v-16.4004c1.19922 -0.400391 6.5 -0.5 8.09961 -0.5c20.7002 0 30.4004 7.90039 38.9004 31.7998z" />
-    <glyph glyph-name="fly" unicode="&#xf417;" horiz-adv-x="384" 
-d="M197.8 20.2002c12.9004 -11.7002 33.7002 -33.2998 33.2002 -50.7002c0 -0.799805 -0.0996094 -1.59961 -0.0996094 -2.5c-1.80078 -19.7998 -18.8008 -31.0996 -39.1006 -31c-25 0.0996094 -39.8994 16.7998 -38.7002 35.7998c1 16.2002 20.5 36.7002 32.4004 47.6006
-c2.2998 2.09961 2.7002 2.69922 5.59961 3.59961c3.40039 0 3.90039 -0.299805 6.7002 -2.7998zM331.9 380.7c23.8994 -40 27.7998 -73.2998 20.7998 -112.5c-15.2002 -69.9004 -103.601 -166.5 -155.9 -215.7c-1.7002 -1.59961 -1.39941 -1.40039 -3.5 -2.09961
-l-3.2998 0.0996094c-1.7002 0.599609 -4.5 3.5 -6.2002 5.09961c-58.7998 57.8008 -148.7 151.601 -155.8 233.801c-1.5 71.3994 29.2998 113.399 82.9004 141.3c9.89941 4.09961 37 17.2998 81.0996 17.2998c22 0.200195 51.0996 -4.5 76.5996 -15.2002
-c24.7002 -11.5 47 -26.3994 63.3008 -52.0996zM186.8 96.0996v325.7c-57.8994 -5.5 -72.7002 -89.2002 -69.2998 -136.7c4.09961 -58.2998 41.2998 -137.899 69.2998 -189zM328.7 268c15.7998 54.9004 -10.9004 134.7 -99.7002 153
-c38.2002 -25.5996 49.5996 -85.5 48 -131.4c-2 -58.5996 -39.4004 -140 -67.2002 -191.899c41.6006 42.2998 102.5 113.5 118.9 170.3z" />
-    <glyph glyph-name="node" unicode="&#xf419;" horiz-adv-x="640" 
-d="M316.3 -4c-2.09961 0 -4.2002 0.599609 -6.09961 1.59961l-19.2002 11.4004c-2.90039 1.59961 -1.5 2.2002 -0.5 2.5c3.7998 1.2998 4.59961 1.59961 8.7002 4c0.399414 0.200195 1 0.0996094 1.39941 -0.0996094l14.8008 -8.80078
-c0.5 -0.299805 1.2998 -0.299805 1.7998 0l57.7998 33.4004c0.5 0.299805 0.900391 0.900391 0.900391 1.59961v66.7002c0 0.700195 -0.300781 1.2998 -0.900391 1.60059l-57.7998 33.2998c-0.5 0.299805 -1.2002 0.299805 -1.7998 0l-57.8008 -33.2998
-c-0.599609 -0.300781 -0.899414 -1 -0.899414 -1.60059v-66.7002c0 -0.599609 0.399414 -1.19922 0.899414 -1.5l15.8008 -9.09961c8.59961 -4.2998 13.8994 0.799805 13.8994 5.7998v65.9004c0 0.899414 0.700195 1.7002 1.7002 1.7002h7.2998
-c0.900391 0 1.7002 -0.700195 1.7002 -1.7002v-65.9004c0 -11.5 -6.2002 -18 -17.0996 -18c-3.30078 0 -6 0 -13.3008 3.60059l-15.1992 8.69922c-3.7002 2.2002 -6.10059 6.2002 -6.10059 10.5v66.7002c0 4.2998 2.2998 8.40039 6.10059 10.5l57.7998 33.4004
-c3.7002 2.09961 8.5 2.09961 12.0996 0l57.7998 -33.4004c3.7002 -2.2002 6.10059 -6.2002 6.10059 -10.5v-66.7002c0 -4.2998 -2.2998 -8.39941 -6.10059 -10.5l-57.7998 -33.3994c-1.7002 -1.10059 -3.7998 -1.7002 -6 -1.7002zM363 61.7998
-c0 -12.5996 -10.5 -19.7998 -29 -19.7998c-25.2998 0 -30.5996 11.5996 -30.5996 21.2998c0 1 0.799805 1.7002 1.69922 1.7002h7.5c0.900391 0 1.60059 -0.599609 1.7002 -1.40039c1.10059 -7.59961 4.5 -11.3994 19.7998 -11.3994
-c12.2002 0 17.4004 2.7002 17.4004 9.2002c0 3.69922 -1.5 6.39941 -20.4004 8.2998c-15.7998 1.59961 -25.5996 5 -25.5996 17.7002c0 11.5996 9.7998 18.5996 26.2998 18.5996c18.5 0 27.6006 -6.40039 28.7998 -20.2002
-c0.100586 -0.5 -0.0996094 -0.899414 -0.399414 -1.2998c-0.299805 -0.299805 -0.700195 -0.5 -1.2002 -0.5h-7.5c-0.799805 0 -1.40039 0.5 -1.59961 1.2998c-1.80078 8 -6.2002 10.6006 -18.1006 10.6006c-13.2998 0 -14.7998 -4.60059 -14.7998 -8.10059
-c0 -4.2002 1.7998 -5.39941 19.7998 -7.7998c17.7998 -2.40039 26.2002 -5.7002 26.2002 -18.2002zM417.5 111.9c0 -6.10059 -5 -11.1006 -11.0996 -11.1006c-6.10059 0 -11.1006 5 -11.1006 11.1006c0 6.2998 5.2002 11.0996 11.1006 11.0996
-c6 0.0996094 11.0996 -4.7998 11.0996 -11.0996zM415.7 111.9c0 5.19922 -4.2002 9.2998 -9.40039 9.2998c-5.09961 0 -9.2998 -4.10059 -9.2998 -9.2998c0 -5.2002 4.2002 -9.40039 9.2998 -9.40039c5.2002 0.0996094 9.40039 4.2998 9.40039 9.40039zM411.2 105.7
-h-2.60059c-0.0996094 0.599609 -0.5 3.7998 -0.5 3.89941c-0.199219 0.700195 -0.399414 1.10059 -1.2998 1.10059h-2.2002v-5h-2.39941v12.5h4.2998c1.5 0 4.40039 0 4.40039 -3.2998c0 -2.30078 -1.5 -2.80078 -2.40039 -3.10059
-c1.7002 -0.0996094 1.7998 -1.2002 2.09961 -2.7998c0.100586 -1 0.300781 -2.7002 0.600586 -3.2998zM408.4 114.5c0 1.7002 -1.2002 1.7002 -1.80078 1.7002h-2v-3.5h1.90039c1.59961 0 1.90039 1.09961 1.90039 1.7998zM137.3 257l-0.200195 -95
-c0 -1.2998 -0.699219 -2.59961 -1.7998 -3.2002c-1.09961 -0.700195 -2.59961 -0.700195 -3.7002 0l-36.3994 20.9004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v44.4004c0 2.59961 -1.40039 5.09961 -3.7002 6.40039l-15.5 8.89941
-c-1.09961 0.700195 -2.39941 1 -3.7002 1c-1.2998 0 -2.5 -0.299805 -3.69922 -1l-15.5 -8.89941c-2.30078 -1.30078 -3.7002 -3.80078 -3.7002 -6.40039v-44.4004c0 -2.59961 -1.40039 -5 -3.7002 -6.39941l-36.4004 -20.9004
-c-1.19922 -0.700195 -2.59961 -0.700195 -3.69922 0c-1.10059 0.700195 -1.80078 1.90039 -1.80078 3.2002l-0.0996094 95c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2002 35.2998c1.09961 0.599609 2.19922 1 3.39941 1h0.600586
-c1.19922 -0.100586 2.39941 -0.400391 3.39941 -1l61.2998 -35.2998c2.30078 -1.30078 3.7002 -3.7002 3.7002 -6.40039zM472.5 360.7v-176.4c0 -2.59961 -1.40039 -5.09961 -3.7002 -6.39941l-61.2998 -35.4004c-2.2998 -1.2998 -5.09961 -1.2998 -7.40039 0
-l-61.2998 35.4004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v70.7998c0 2.60059 1.40039 5.10059 3.7002 6.40039l61.2998 35.4004c2.30078 1.2998 5.10059 1.2998 7.40039 0l15.2998 -8.80078c1.7002 -1 3.90039 0.300781 3.90039 2.2002v94
-c0 2.7998 3 4.60059 5.5 3.2002l36.5 -20.4004c2.2998 -1.19922 3.7998 -3.69922 3.7998 -6.39941zM426.5 231.8c0 0.700195 -0.400391 1.2998 -0.900391 1.60059l-21 12.1992c-0.599609 0.300781 -1.2998 0.300781 -1.89941 0l-21 -12.1992
-c-0.600586 -0.300781 -0.900391 -0.900391 -0.900391 -1.60059v-24.2998c0 -0.700195 0.400391 -1.2998 0.900391 -1.59961l21 -12.1006c0.599609 -0.299805 1.2998 -0.299805 1.7998 0l21 12.1006c0.599609 0.299805 0.900391 0.899414 0.900391 1.59961v24.2998h0.0996094
-zM636.3 232.5l-36.7002 -21.2998c-2.5 -1.40039 -5.59961 0.399414 -5.59961 3.2002v17.3994c0 1.2998 -0.799805 2.5 -1.90039 3.2002l-19.1992 11.0996c-1.10059 0.700195 -2.60059 0.700195 -3.7002 0l-19.2002 -11.0996
-c-1.2002 -0.700195 -1.90039 -1.90039 -1.90039 -3.2002v-22.2002c0 -1.2998 0.700195 -2.5 1.90039 -3.19922l61.7002 -35.4004c2.5 -1.40039 2.5 -5 0 -6.40039l-36.7998 -20.5c-2.30078 -1.2998 -5.10059 -1.2998 -7.30078 0l-60.8994 34.7002
-c-2.2998 1.2998 -3.7002 3.7002 -3.7002 6.40039v70.7998c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2998 35.3994c2.2998 1.2998 5.09961 1.2998 7.40039 0l60.8994 -35.3994c2.2998 -1.30078 3.7002 -3.80078 3.7002 -6.40039v-17.0996
-c0 -2.60059 -1.40039 -5.10059 -3.7002 -6.40039zM559 229l11.7998 6.7998c0.400391 0.299805 1 0.299805 1.40039 0l11.7998 -6.7998c0.400391 -0.200195 0.700195 -0.700195 0.700195 -1.2002v-13.5996c0 -0.5 -0.299805 -0.900391 -0.700195 -1.2002l-11.7998 -6.7998
-c-0.400391 -0.299805 -1 -0.299805 -1.40039 0l-11.7998 6.7998c-0.400391 0.200195 -0.700195 0.700195 -0.700195 1.2002v13.5996c0 0.5 0.299805 0.900391 0.700195 1.2002zM304.8 185.5c0 -0.599609 -0.0996094 -1.2002 -0.200195 -1.7002
-c-0.5 -2 -1.7998 -3.7002 -3.59961 -4.7002l-61 -35.1992c-2.2002 -1.30078 -5 -1.40039 -7.40039 0l-61.1992 35.1992c-2.10059 1.2002 -4 3.60059 -4 6.40039v70.4004c0 2.69922 1.59961 5.09961 3.89941 6.39941l61.1006 35.2002
-c2.39941 1.40039 5.2998 1.2002 7.39941 0l61.1006 -35.2002c2.2998 -1.2998 3.89941 -3.7998 3.89941 -6.39941v-70.4004zM230.5 310.4l-0.799805 -0.5h1.09961zM306.7 180.2l-0.400391 0.700195v-0.900391z" />
-    <glyph glyph-name="osi" unicode="&#xf41a;" horiz-adv-x="512" 
-d="M8 181.56c2.2998 135.801 97.3994 232.441 213.799 248.102c138.8 18.5996 255.601 -75.7998 278 -201.101c21.2998 -118.8 -44 -230 -151.6 -274c-9.2998 -3.7998 -14.4004 -1.69922 -18 7.7002c-17.7998 46.2998 -35.5996 92.6328 -53.3994 138.999
-c-3.09961 8.10059 -1 13.2002 7 16.7998c24.2002 11 39.2998 29.4004 43.2998 55.8008c0.561523 3.60547 0.852539 7.2998 0.852539 11.0615c0 37.3613 -28.7998 67.9971 -65.3525 71.1377c-39 3.40039 -71.7998 -23.6992 -77.5 -59.6992
-c-5.19922 -33 11.1006 -63.7002 41.9004 -77.7002c9.59961 -4.40039 11.5 -8.60059 7.7998 -18.4004c-17.8994 -46.5996 -35.7998 -93.2324 -53.7002 -139.899c-2.59961 -6.90039 -8.2998 -9.30078 -15.5 -6.5c-52.5996 20.2998 -101.399 61 -130.8 119
-c-24.8994 49.1992 -25.2002 87.6992 -26.7998 108.699zM28.8994 183.461c0.399414 -6.59961 0.599609 -14.3008 1.2998 -22.1006c6.2998 -71.9004 49.5996 -143.5 131 -183.101c3.2002 -1.5 4.39941 -0.799805 5.59961 2.2998c14.9004 39.1006 29.9004 78.2012 45 117.302
-c1.2998 3.2998 0.600586 4.7998 -2.39941 6.69922c-31.6006 19.9004 -47.3008 48.5 -45.6006 86c1 21.6006 9.2998 40.5 23.7998 56.3008c30 32.6992 77 39.7998 115.5 17.5996c27.4619 -15.834 45.9629 -45.4971 45.9629 -79.4463
-c0 -3.75879 -0.321289 -7.3125 -0.762695 -10.9541c-3.59961 -30.5996 -19.2998 -53.8994 -45.7002 -69.7998c-2.69922 -1.59961 -3.5 -2.89941 -2.2998 -6c15.2002 -39.2002 30.2666 -78.4336 45.2002 -117.7c1.2002 -3.09961 2.40039 -3.7998 5.59961 -2.2998
-c35.5 16.6006 65.2002 40.2998 88.1006 72c34.7998 48.2002 49.0996 101.9 42.2998 161c-13.7002 117.5 -119.4 214.8 -255.5 198c-106.1 -13 -195.3 -102.5 -197.1 -225.8z" />
-    <glyph glyph-name="react" unicode="&#xf41b;" horiz-adv-x="512" 
-d="M418.2 270.8c54.3994 -18.7002 93.7998 -48.0996 93.7998 -78.3994c0 -31.7002 -41.7998 -62.6006 -99.5 -81.7002c-3.09961 -1 -6.2002 -2 -9.40039 -2.90039c1.10059 -4.59961 2.10059 -9.09961 3 -13.5c11.4004 -57.5996 2.60059 -104.899 -24.3994 -120.5
-c-26.1006 -15.0996 -68.4004 -0.200195 -111.2 36.6006c-4.59961 4 -9.2002 8.09961 -13.5996 12.3994c-3.5 -3.39941 -7 -6.59961 -10.5 -9.7002c-44.2002 -38.6992 -89.6006 -54.6992 -116.601 -39.0996c-26.2002 15.0996 -34.3994 59.0996 -23.8994 114.6
-c1.19922 6.10059 2.5 12 4 18c-4.60059 1.30078 -9.10059 2.80078 -13.6006 4.30078c-55.5 19 -96.2998 50.2998 -96.2998 81.5c0 30.1992 38.2998 59.3994 91.7002 77.8994c5.89941 2.10059 12.2002 4.10059 18.5996 5.90039
-c-1.39941 5.59961 -2.59961 11.0996 -3.7002 16.7002c-11 56.3994 -3.19922 101.5 23 116.699c27.3008 15.9004 72.9004 -1.09961 118.4 -41.5c2.7998 -2.5 5.59961 -5.09961 8.2998 -7.69922c4 3.89941 8.2002 7.7998 12.5 11.5
-c43.4004 37.7998 86.2998 53.5 112.601 38.3994c27.2998 -15.7998 35.3994 -63.7002 23.0996 -123.3c-0.799805 -3.7002 -1.59961 -7.40039 -2.5 -11.0996c5.40039 -1.60059 10.7998 -3.30078 16.2002 -5.10059zM282.9 355.7c-4 -3.5 -7.80078 -7 -11.7002 -10.7002
-c15.3994 -16.7002 29.5996 -34.5 42.5996 -53.0996c22.6006 -2 45.1006 -5.60059 67.2998 -10.6006c0.900391 3.2998 1.60059 6.60059 2.30078 10c10.5996 51.5 4.09961 90.7002 -12.8008 100.4c-15.7998 9.09961 -50.5 -3.60059 -87.6992 -36zM167.2 140.5
-c-5 8.59961 -9.7002 17.2998 -14.2998 26.0996c-6.40039 -15.1992 -11.9004 -30.0996 -16.3008 -44.5c15.3008 -3.2998 30.8008 -5.7998 46.4004 -7.5c-5.5 8.5 -10.7002 17.2002 -15.7998 25.9004zM136.9 260.8c4.39941 -14.0996 9.69922 -28.7002 16 -43.5996
-c4.5 8.7998 9.2998 17.5 14.1992 26c4.90039 8.59961 10.1006 17.0996 15.4004 25.3994c-15.9004 -2 -31.2002 -4.59961 -45.5996 -7.7998zM164.3 191.9c6.7002 -13.8008 13.7998 -27.3008 21.5 -40.6006s15.9004 -26.2998 24.6006 -39
-c14.6992 -0.899414 29.8994 -1.39941 45.5996 -1.39941s31.2002 0.5 46.0996 1.59961c8.5 12.7998 16.6006 25.7002 24.2002 39c7.7002 13.4004 14.9004 27 21.6006 40.7998c-6.80078 13.7002 -14 27.2002 -21.7002 40.4004s-15.7998 26.0996 -24.2998 38.7002
-c-14.9004 1.09961 -30.3008 1.69922 -45.9004 1.69922s-30.9004 -0.599609 -45.9004 -1.69922c-8.59961 -12.7002 -16.7998 -25.6006 -24.3994 -38.9004c-7.60059 -13.2998 -14.7998 -26.7998 -21.4004 -40.5996zM344.9 140.7c-5 -8.60059 -10.1006 -17.2002 -15.5 -25.6006
-c15.7998 1.80078 31.5 4.5 47 8c-4.90039 15.1006 -10.5 29.8008 -16.9004 44.3008c-4.7002 -9 -9.5 -17.9004 -14.5996 -26.7002zM359.3 217.2c6.10059 14.2002 11.5 28.5996 16.1006 43.3994c-14.4004 3.30078 -29.8008 6 -45.9004 8
-c5.2998 -8.2998 10.4004 -16.6992 15.2998 -25.1992c5 -8.60059 9.7998 -17.4004 14.5 -26.2002zM256.2 329.7c-10 -10.9004 -20.1006 -22.9004 -29.9004 -35.7998c19.7998 0.899414 39.7002 0.899414 59.5 0c-9.2002 12.3994 -19.0996 24.3994 -29.5996 35.7998zM140.2 391
-c-15.7998 -9.09961 -22 -45.5996 -12.6006 -94c1.10059 -5.2002 2.2002 -10.4004 3.5 -15.5c22.2002 4.90039 44.6006 8.40039 67.2002 10.4004c13.1006 18.5996 27.4004 36.3994 42.9004 53.0996c-2.60059 2.40039 -5.10059 4.7998 -7.60059 7
-c-39.2998 34.7998 -76.5996 48.7998 -93.3994 39zM115.7 127.4c6.89941 22 15.2002 43.5996 24.7998 64.5c-9.5 20.5996 -17.7002 41.8994 -24.5 63.5996c-5.7998 -1.7002 -11.5996 -3.5 -17.2998 -5.5c-45.6006 -15.9004 -77.2002 -39.2998 -77.2002 -57.5996
-c1.90039 -12.1006 8.7002 -22.9004 18.7998 -29.9004c17.5 -13.9004 41.7002 -24.5 63 -31.2002c4.10059 -1.39941 8.2002 -2.7002 12.4004 -3.89941zM232.3 29.4004c3.2002 2.7998 6.40039 5.7998 9.60059 8.89941c-15.5 16.7998 -30 34.7002 -43.2002 53.4004
-c-22.9004 1.7002 -45.5 5 -67.9004 9.7998c-1.39941 -5.5 -2.59961 -11.0996 -3.7002 -16.7002c-9 -47.5 -2.39941 -82.7998 13.5 -92c11.4004 -4.5 24.2002 -4 35.3008 1.2998c20.7998 8.2002 39.8994 20.2002 56.3994 35.3008zM256.8 53.7002
-c10.5 11.5996 20.4004 23.7002 29.6006 36.3994c-10 -0.5 -20.1006 -0.699219 -30.4004 -0.699219c-10 0 -19.9004 0.199219 -29.5 0.599609c9.90039 -13.0996 20.0996 -25.2998 30.2998 -36.2998zM387.5 23.7002c3.2002 22.2002 2.40039 44.7002 -2.5 66.2998
-c-0.799805 4 -1.7002 8.09961 -2.7002 12.2002c-22.5 -5.10059 -45.2998 -8.60059 -68.2002 -10.5c-12.7998 -18.7998 -26.8994 -36.7002 -42.1992 -53.6006c4.2998 -4 8.5 -7.89941 12.6992 -11.5c36.6006 -31.3994 70.5 -43.3994 86.4004 -34.1992
-c9.59961 7.69922 15.5996 19.0996 16.5 31.2998zM405.7 131.2c49.8994 16.5 84.7998 41.7998 84.7998 61.3994c0 18.2002 -32.7002 42 -79.2998 58c-4.7998 1.60059 -9.7998 3.2002 -15 4.7002c-6.7998 -21.5 -14.9004 -42.5 -24.5 -62.8994
-c9.89941 -20.7002 18.5 -42 25.5 -63.8008c2.89941 0.800781 5.7002 1.7002 8.5 2.60059zM256 146.2c-25.2998 0 -45.7998 20.5 -45.7998 45.7998s20.5 45.7998 45.7998 45.7998s45.7998 -20.5 45.7998 -45.7998s-20.5 -45.7998 -45.7998 -45.7998z" />
-    <glyph glyph-name="autoprefixer" unicode="&#xf41c;" horiz-adv-x="640" 
-d="M318.4 432l164.1 -480h-77.5l-25.2002 81.4004h-119.5l-25.3994 -81.4004h-77.5zM278.1 90.0996h83.6006l-40.9004 130.4h-1.5zM640 43l-158.5 -9.5l-19.4004 56.5l167.9 -15.5996zM177.9 90l-19.4004 -56.4004l-158.5 9.40039l10 31.2998z" />
-    <glyph glyph-name="less" unicode="&#xf41d;" horiz-adv-x="640" 
-d="M612.7 229c0 -11 6.7998 -22.5996 27.2998 -23.2998v-27.2998c-20.5 -1 -27.2998 -12.6006 -27.2998 -23.6006c0 -20.3994 3.2002 -32 3.2002 -54.5996c0 -34.2002 -12.7002 -45.2002 -40.5 -45.2002h-20.5v25.2002h6.2998v0.5c13.5996 0 17.2998 4.7002 17.2998 22.5996
-c0 17.2998 -1.59961 32.6006 -1.59961 51.5c0 24.2002 7.7998 33.6006 23.5996 37.2998v1.60059c-15.7002 3.7002 -23.5996 13.0996 -23.5996 37.2998c0 18.9004 1.59961 35.2002 1.59961 51.5c0 17.4004 -3.09961 22.0996 -17.2998 22.0996h-6.2998v24.2002h20.5
-c27.8994 0 40.5 -11 40.5 -45.2002c0 -22 -3.2002 -34.0996 -3.2002 -54.5996zM507.1 197c20.5 -6.7998 43 -18.9004 43 -47.7998c0 -28.9004 -22.5996 -51 -64.5996 -51c-20 0 -44.0996 9 -59.9004 22.0996l21 30.5c14.2002 -11 27.4004 -16.2998 40.5 -16.2998
-c14.2002 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.7998 15.8008 -32.0996 22.1006c-18.9004 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994c24.1992 0 42.0996 -10.5 55.1992 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.5996 13.0996
-s-17.9004 -4.69922 -17.9004 -12.5996c0 -10.5 14.7002 -14.2002 30.5 -20.5zM148.2 137.6c1.59961 0 3.09961 0 6.2002 0.800781l5.2998 -34.2002c-5.7002 -2.10059 -13.6006 -3.7002 -23.6006 -3.7002c-32.0996 0 -43.0996 21 -43.0996 53.0996v150.801h-14.0996
-c-13.6006 0 -17.3008 -4.80078 -17.3008 -22.1006s1.60059 -32.5996 1.60059 -51.5c0 -24.2002 -7.7998 -33.5996 -23.6006 -37.2998v-1.59961c15.7002 -3.7002 23.6006 -13.1006 23.6006 -37.3008c0 -19.3994 -1.60059 -34.1992 -1.60059 -51.5
-c0 -17.2998 4.2002 -22.5996 17.3008 -22.5996h6.2998v-24.2002h-20.5c-27.9004 0 -40.5 11 -40.5 45.2002c0 22.5996 3.2002 34.2002 3.2002 53.5996c0 11 -6.80078 22.6006 -27.3008 23.1006v27.2998c20.5 1 27.3008 12.5996 27.3008 23.5996
-c0 19.4004 -3.2002 32 -3.2002 54.6006c0 34.2002 12.5996 45.2002 41 45.2002h74.5996v-178.2c0 -9.90039 4.7002 -13.1006 8.40039 -13.1006zM379.9 197c20.5 -6.7998 43.0996 -18.9004 43 -47.7998c0 -28.9004 -22.6006 -51 -64.6006 -51
-c-20 0 -44.0996 9 -59.8994 22.0996l20.5 30.5c14.1992 -11 27.3994 -16.2998 40.5 -16.2998c14.1992 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.8008 15.8008 -32.1006 22.1006c-18.8994 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994
-c24.2002 0 42.0996 -10.5 55.2002 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.6006 13.0996c-11.5996 0 -17.8994 -4.69922 -17.8994 -12.5996c0 -10.5 14.6992 -14.2002 31 -20.5zM224.9 265.8c44.0996 0 67.2998 -33.0996 66.6992 -75.7002
-c0 -8.39941 -1.09961 -15.6992 -1.59961 -19.3994h-95.2002c4.2002 -24.2002 20.5 -34.2002 41.5 -34.2002c11.6006 0 22.6006 3.2002 34.2002 10l15.7998 -27.7998c-16.2998 -11.1006 -37.2998 -17.9004 -56.2002 -17.9004c-45.0996 0 -79.2998 30.5 -79.2998 82.5
-c-1 50.4004 35.7002 82.5 74.1006 82.5zM194.9 199.6h56.7998c0 17.9004 -7.40039 31 -26.2998 31c-14.7002 0 -27.3008 -10 -30.5 -31z" />
-    <glyph glyph-name="sass" unicode="&#xf41e;" horiz-adv-x="640" 
-d="M301.84 69.0801c-0.299805 -0.599609 -0.599609 -1.08008 0 0zM550.97 156.08c57.9092 0.300781 90.5703 -37.0801 88.9707 -71.0801c-1.10059 -26.9004 -25.6904 -37.9004 -30.29 -38.7002c-3.30078 -0.599609 -5.10059 -0.700195 -5.60059 1.90039
-c-0.299805 1.7998 0.900391 2.7002 4.7998 5.09961c3.90039 2.40039 15.6006 10.5 17.7002 25c2.10059 14.5 -8.7998 49.2998 -64.4795 55.7998c-26 3 -46.3906 -0.599609 -62.0898 -7.19922c2.89941 -7.60059 5.09961 -15.5 5.39941 -23.4004
-c0.799805 -17.5 -11.29 -30.4004 -23.79 -39.5996c-6.50391 -4.72559 -13.8096 -8.50879 -21.5898 -11.1006c-5.2002 -2.2002 -12.2002 -4.5 -17.0996 -3.5c-10.9004 2.2002 -16.7002 11.7998 -9.30078 33.1006c4 11.5 15.5 29 34.0908 44.0996
-c-4.30078 8.7002 -8.99023 17.5996 -11.3906 25.7002c-2.58984 8.31934 -4.7002 17.0566 -6.2002 25.7998c0 0 -15.2998 -31.7197 -35.0898 -60.6201c-1.09961 -1.7002 -2.2998 -3.39941 -3.39941 -5c3.7998 -9 6.89941 -18.5996 7.2998 -28.2002
-c0.700195 -17.3994 -6.90039 -30.5996 -19.4004 -39.7998c-6.1377 -4.40625 -12.9531 -8.00488 -20.1895 -10.5996c-3.90039 -1.7998 -12 -4.60059 -23.5 -5.40039c-6.29004 -0.5 -12.29 -0.0996094 -15.6904 2.5c-4.59961 3.40039 -5.2002 7.7998 -2.7998 13.7002
-c2 5 17.21 22.4004 30 37.5996c3.5 4.2002 6.90039 8.5 9.90039 12.5c-0.0556641 0.0507812 -0.0927734 0.121094 -0.100586 0.200195c0 0 2.2998 3 6.10059 8.2002c-4.7002 10.0996 -10.6006 20.5 -13.4004 30c-2.58984 8.32031 -4.7002 17.0576 -6.2002 25.7998
-c0 0 -15.4902 -39.7002 -31.6895 -71.5c-12.4902 -24.5996 -20.79 -39.5 -24.5908 -46v-0.299805s-0.5 -0.900391 -1.5 -2.40039c-0.5 -0.799805 -0.699219 -1.19922 -0.699219 -1.19922v0.0996094c-4.20996 -6.2002 -13.6104 -18.2998 -23 -18.2998
-c-25.7002 0 -16.3008 52.2002 -16.3008 52.2002s-7.5 -19.3008 -16 -35.9004c-6.88965 -13.5996 -13.0898 -25 -26.8896 -25c-3.90039 0 -10.1904 0.0996094 -15.3896 5c-11.8008 11.2002 -20.9004 39.7002 -19.1006 61.7002c1.5 18.7998 4.40039 31.7998 8.40039 42.5996
-c-7.10059 -3.89941 -15.2002 -8.39941 -23.4902 -13.2998c-4.2998 -2.5 -8.59961 -5 -12.7998 -7.5c0.0996094 -0.299805 0.299805 -0.5 0.400391 -0.799805c10.5996 -20.4004 13.3896 -65.2002 -9.60059 -99.5s-65.7803 -55.2002 -107.57 -43.6006
-c-13.3896 3.80078 -33.79 31.6006 -16.29 70.4004c15.4902 34.2002 77.3809 66.5996 93.6709 74.7002c1.39941 0.799805 2.89941 1.59961 4.5 2.5c-32.4902 28.3994 -113.671 66.7998 -125.061 125.7c-3.2002 16.5996 4.58984 56.2998 53.2803 101.899
-c40.9902 38.2998 97.9697 67.7002 150.66 86.4004c88.4297 31.3994 181.949 12.8994 196.31 -43.5c14.1006 -55.5 -33.9902 -121.8 -95.7695 -145.601c-54.9902 -21.2998 -100.471 -17.8994 -119.17 -11.7998c-21.29 7 -33.79 21 -36.79 28.9004
-c-1.2002 3.09961 -3.30078 8.2998 0 10.0996c2 1.10059 2.7998 0.799805 8.09961 -5.09961c5.09961 -5.60059 25.4902 -20.6006 64.2803 -16.2998c101.77 11.3994 163.06 90.5 143.66 133c-13.4902 29.7998 -91.8408 43.1992 -189.841 -5.60059
-c-119.569 -59.5996 -126.069 -108.7 -127.069 -127.399c-2.7998 -51.3008 63.2793 -78.3008 99.0693 -116.5c0.5 -0.5 0.900391 -1 1.40039 -1.5c6.7002 3.69922 13.7998 7.59961 20.7002 11.3994c18 9.90039 35.0996 19.2002 43 23.5
-c12.5801 18.2998 38.1797 38.5 56.5801 38.5c29.4893 0 19.3896 -42.3994 19.3896 -42.3994s0.599609 2 1.40039 2c0.799805 0 4.09961 5.5 13.1992 2.19922c9.40039 -3.5 7.2002 -10 7.30078 -10.6992c0.0996094 -1.30078 -11 -38.9004 -15.7002 -63.1006
-c-2.2002 -11.5 -0.900391 -19.8994 -0.299805 -19.8994c0.899414 0 2.7998 2.89941 4.5 6.09961v0.0996094s1.2998 2.40039 3.5 6.7002c0 0.200195 -0.200195 -0.299805 -0.5 -0.799805c0.199219 0.400391 0.5 0.900391 0.899414 1.7002
-c2.60059 5 6.2002 12.3994 10.4004 21.5996c8.18945 18.1006 39.4795 87.7002 42.0801 95.4004c2.59961 7.7002 4 15.7002 5.2998 19.0996c1.2998 3.40039 12.4102 6 25.2998 5.90039c12.8906 -0.100586 14.1904 -5.60059 14.29 -6.7002
-c0.100586 -1.09961 -6.2002 -16.4004 -7.59961 -27.2002c-1.40039 -10.7998 -0.100586 -16.2002 1.09961 -25.2998c0.799805 -6 4.5 -13.5 8.90039 -22c13.2998 21.7998 36.79 63.5996 39.0898 75.2998c1.25195 6.51465 3.06152 12.9941 5.2998 19.1006
-c1.29004 3.39941 12.3896 6 25.29 5.89941c12.9004 -0.0996094 14.2002 -5.59961 14.2998 -6.7002c0.100586 -1.09961 -6.2002 -16.3994 -7.59961 -27.1992c-1.40039 -10.8008 -0.100586 -16.2002 1.09961 -25.3008c1 -7.7998 7.10059 -18.1992 13 -30.0996
-c17.4492 8.59473 37.2061 13.5 57.957 13.5h0.0429688zM121.79 11.3799c19.4004 21.0996 27.3896 47.9199 19.0996 78.3203c-1 -0.600586 -2 -1.10059 -2.89941 -1.7002c0 0 -0.400391 -0.200195 -1.2002 -0.700195c-4.7998 -2.89941 -8.7002 -5.2998 -11.4004 -6.89941
-c-11.7998 -7.40039 -29.5898 -19.4004 -43.3896 -32.4004c-22.6904 -21.4199 -27.3896 -51 -15.4902 -57.9199c11.0898 -6.40039 36.8906 1.2002 55.2803 21.2998zM256.15 102.78c4 9.7998 19.6992 53.2998 16.1992 59.2002c-2.59961 4.5 -13.6992 0.899414 -23.79 -10.4004
-c-6.2998 -7 -16.8994 -25 -21.8994 -40.0996c-9.90039 -30 -5.60059 -60.5 1.39941 -62.3008c8.2002 -2.09961 21.6904 37.9004 28.0908 53.6006zM367.15 49.7803c7.7998 4.7998 24.96 16.8994 25.0898 34.7998c0 0.599609 -0.100586 1.09961 -0.100586 1.59961
-c-3.98926 -5.19922 -7.68945 -9.89941 -10.8896 -13.8994c-5.5 -6.7998 -19.4004 -21.7002 -19.4004 -21.7002s-2 -1.90039 -1.09961 -2.40039c1.2002 -0.699219 3.7002 0.200195 6.40039 1.60059zM452.73 69.2803c9.68945 3.5 25.7998 11.8994 25.8994 34.3994
-c-0.0830078 3.7627 -0.750977 7.4043 -1.89941 10.8008c-10.4102 -9.2002 -16.4004 -18.8008 -19 -24.5c-6.7002 -14.6006 -7 -19.3008 -5 -20.7002z" />
-    <glyph glyph-name="vuejs" unicode="&#xf41f;" 
-d="M356.9 383.7h91.0996l-224 -383.7l-224 383.7h176l48 -88.6006l56 88.6006h76.9004zM55.7002 351.7l168.3 -288.2l168.2 288.2h-53.7998l-114.4 -198.2l-114.5 198.2h-53.7998z" />
-    <glyph glyph-name="angular" unicode="&#xf420;" 
-d="M185.7 179.9l38.0996 91.5996l38.1006 -91.5996h-76.2002zM223.8 416l207.8 -74.4004l-31.7998 -275.699l-176 -97.9004l-176 97.9004l-31.7998 275.699zM354 74.2002l-130.2 292.3l-130.1 -292.3h48.7002l26.1992 65.3994h110.601l26.2002 -65.3994h48.5996z" />
-    <glyph glyph-name="aviato" unicode="&#xf421;" horiz-adv-x="640" 
-d="M107.2 164.5l-19 41.7998h-52.1006l-19 -41.7998h-17.0996l62.2002 131.4l62.2002 -131.4h-17.2002zM62.2002 262.6l-19.6006 -42.5h39.2002zM174.9 160.2l-62.2002 131.399h17.0996l45.1006 -96l45.0996 96h17zM255.5 164.5v127.1h15.5v-127.1h-15.5zM464.6 280.1
-v-115.6h-17.2998v115.6h-41.2002v11.5h99.6006v-11.5h-41.1006zM640 229.2c0 -9.2002 -1.7002 -17.7998 -5.09961 -25.7998c-3.40039 -8 -8.2002 -15.1006 -14.2002 -21.1006s-13.1006 -10.7998 -21.1006 -14.2002c-8 -3.39941 -16.5996 -5.09961 -25.7998 -5.09961
-s-17.7998 1.7002 -25.7998 5.09961c-8 3.40039 -15.0996 8.2002 -21.0996 14.2002s-10.8008 13 -14.2002 21.1006c-3.40039 8 -5.10059 16.5996 -5.10059 25.7998s1.7002 17.7998 5.10059 25.7998c3.39941 8 8.2002 15.0996 14.2002 21.0996s13 8.40039 21.0996 11.9004
-c8 3.40039 16.5996 5.09961 25.7998 5.09961s17.7998 -1.69922 25.7998 -5.09961s15.1006 -5.7998 21.1006 -11.9004c6 -6 10.7002 -13.0996 14.2002 -21.0996c3.39941 -8 5.09961 -16.5996 5.09961 -25.7998zM624.5 229.2c0 7.2998 -1.2998 14 -3.90039 20.2998
-c-2.59961 6.2998 -6.19922 11.7002 -10.7998 16.2998c-4.59961 4.60059 -10 8.2002 -16.2002 10.9004c-6.19922 2.7002 -12.7998 4 -19.7998 4s-13.5996 -1.2998 -19.7998 -4s-11.5996 -6.2998 -16.2002 -10.9004c-4.59961 -4.59961 -8.2002 -10 -10.7998 -16.2998
-s-3.90039 -13.0996 -3.90039 -20.2998c0 -7.2998 1.30078 -14 3.90039 -20.2998c2.59961 -6.30078 6.2002 -11.7002 10.7998 -16.3008c4.60059 -4.59961 10 -8.19922 16.2002 -10.8994s12.7998 -4 19.7998 -4s13.6006 1.2998 19.7998 4
-c6.2002 2.7002 11.6006 6.2998 16.2002 10.8994c4.60059 4.60059 8.2002 10 10.7998 16.3008c2.60059 6.2998 3.90039 13.0996 3.90039 20.2998zM529.7 132.5c6 -0.900391 10.5 -6 10.7002 -12.2998c0 -6.7998 -5.60059 -12.4004 -12.4004 -12.4004
-s-12.4004 5.60059 -12.4004 12.4004c0 6.2002 4.60059 11.2998 10.5 12.2002v5.7998l-80.2998 -9v-5.40039c5.60059 -1.09961 9.90039 -6.09961 9.90039 -12.0996c0 -6.7998 -5.60059 -10.2002 -12.4004 -10.2002s-12.3994 3.40039 -12.3994 10.2002
-c0 5.89941 4.19922 11 9.89941 12.0996v4.90039l-28.3994 -3.2002v-23.7002h5.89941v-13.7998h-5.89941v6.59961h-5v-6.59961h-5.90039v13.7998h5.90039v23.2002l-38.3008 -4.2998c-8.09961 -11.5 -19 -13.6006 -19 -13.6006l0.100586 -6.69922l5.09961 -0.200195
-l0.100586 -12.1006h-4.10059l-0.0996094 5h-5.2002l-0.0996094 -5h-4.10059l0.100586 12.1006l5.09961 0.200195l0.0996094 6.69922s-10.8994 2.2002 -19 13.6006l-38.2998 4.2998v-23.2002h5.90039v-13.7998h-5.90039v6.59961h-5v-6.59961h-5.89941v13.9004h5.89941
-v23.6992l-28.3994 3.2002v-4.89941c5.59961 -1.10059 9.89941 -6.10059 9.89941 -12.1006c0 -6.7998 -5.59961 -10.2002 -12.3994 -10.2002c-6.80078 0 -12.4004 3.40039 -12.4004 10.2002c0 5.90039 4.2002 11 9.90039 12.1006v5.39941l-80.3008 9v-5.7998
-c5.90039 -0.900391 10.5 -6 10.5 -12.2002c0 -6.7998 -5.59961 -12.3994 -12.3994 -12.3994s-12.4004 5.59961 -12.4004 12.3994c0 6.2002 4.60059 11.2998 10.5 12.2002v6.2998l-88.8994 10l242.899 -13.5c-0.599609 2.2002 -1.09961 4.60059 -1.39941 7.2002
-c-0.300781 2.09961 -0.5 4.2002 -0.600586 6.5l-64.7998 8.09961l64.9004 -1.89941c0 0.399414 0 0.799805 0.0996094 1.09961c2.7998 17.2002 25.5 23.7002 25.5 23.7002l1.09961 26.4004h-23.5996l-19 -41.8008h-17.0996l62.1992 131.4l62.2002 -131.4h-17.0996
-l-19 41.8008h-23.7998l1.09961 -26.3008s22.7002 -6.5 25.5 -23.6992c0 -0.400391 0.0996094 -0.700195 0.0996094 -1.10059l64.9004 1.90039l-64.7998 -8.10059c-0.100586 -2.2998 -0.299805 -4.5 -0.600586 -6.5c-0.299805 -2.59961 -0.799805 -5 -1.39941 -7.19922
-l242.899 13.3994l-88.8994 -10v-6.2998zM328.9 220.1h17.8994l1.7002 40.3008l1.7002 -40.3008h17.8994l-19.5996 42.5z" />
-    <glyph glyph-name="ember" unicode="&#xf423;" horiz-adv-x="640" 
-d="M639.9 193.4c1.09961 -10.8008 -5.30078 -14.3008 -5.30078 -14.3008s-26.5996 -19.5996 -47 -13.6992c-20.3994 5.89941 -21.5 43.1992 -21.5 43.1992h-1.89941l-20.7002 -57.1992s-8.2998 -27.9004 -20.7002 -22.8008
-c-12.3994 5.10059 -12.0996 18.6006 -12.0996 18.6006s-19.2998 -21.2998 -54.7998 -18.6006c-31.1006 2.30078 -41.1006 26.7002 -41.1006 26.7002s-20.7998 -14.3994 -79.0996 -25.8994c-26.1006 -2.90039 -44.6006 12.8994 -44.6006 12.8994
-c-2.39941 -2.39941 -18 -10.2002 -18 -10.2002s-22.2998 -10.2998 -30.8994 5.30078c-8.60059 15.5996 -3 63.6992 -3 63.6992h-1.60059s-12.8994 -26.2998 -19.5996 -49.8994c-6.7002 -23.6006 -15 -21.2002 -15 -21.2002s-15.2998 -1.40039 -18.7998 11.4004
-c-3.5 12.8994 5.59961 59.6992 5.59961 59.6992l-1.2998 -0.299805s-0.799805 1.40039 -12.5996 -23.5996c-20.1006 -48.9004 -24.9004 -50 -36.5 -47.9004c-11.6006 2.10059 -12.1006 16.7002 -12.1006 16.7002l-15.8994 -8.7998s-38.6006 -16.6006 -58.8008 -1.2998
-c-13.3994 10.1992 -18 22.1992 -19.5996 29.6992c0 0 -17 1.80078 -28.0996 6.10059c-11.1006 4.2998 0.0996094 18.2998 0.0996094 18.2998s3.5 5.2998 10 0s18.7998 -2.90039 18.7998 -2.90039c1 8.5 2.5 19.7002 7.7998 31.5c11 24.7002 27.6006 33 41.3008 33.3008
-c13.6992 0.199219 23.3994 -3.5 31.6992 -15.3008c18.6006 -45.8994 -49.3994 -69.1992 -49.3994 -69.1992s-1.7998 -12.1006 16.7002 -11.8008c18.5996 0.200195 46.7998 20.4004 46.7998 20.4004c1.2998 15.4004 12.0996 63.5 15 70.7002
-c2.89941 7.2002 14.2002 5.89941 14.2002 5.89941s8.89941 1.90039 10.5 -7.5c1.69922 -9.39941 -6.40039 -47.5996 -6.40039 -47.5996l1.2998 -1.59961c0.799805 3.69922 20.4004 36.5 20.4004 36.5s11.2998 19.5996 28.5 18.7998s-0.799805 -53.5 -0.799805 -53.5
-l1.2998 -1.60059l1.2998 2.40039c2.2002 5.90039 27.7002 44.5996 27.7002 44.5996s9.59961 11.3008 18.5 8.60059c8.7998 -2.60059 9.39941 -6.7002 9.89941 -14.2002s-7 -52.0996 -7 -52.0996s-4.2998 -29.2002 5.40039 -28.7002s20.2002 10.7002 20.2002 10.7002
-s7.5 57.5996 12.5996 105.1c5.10059 47.5 27.1006 79.5 27.1006 79.5s6.5 10 23.5 16.7002c11.1992 4 23.3994 1.2998 29.1992 -23.1006c9.5 -41 -23.2998 -87.8994 -36.8994 -105.199c5.89941 5.7998 15.7998 12.0996 27.2002 5.2998
-c40.2998 -25.2998 7.2998 -80.9004 7.2998 -80.9004c11.7998 3.7998 33 18 33 18s0.5 6.10059 0.700195 7.5c7.19922 41.2998 32 56.2002 36.5996 59.7002c4.7998 3.59961 47.0996 19.7998 49 -24s-52.9004 -59.0996 -52.9004 -59.0996s4.80078 -12.6006 25 -9.40039
-c20.2002 3.2002 43.3008 22.7998 43.3008 22.7998c0.799805 18 12.5996 61 15 67.2002c2.39941 6.2002 17.1992 6.5 18.7998 3c2.2002 -7 0.299805 -37.5996 0.299805 -37.5996l1.59961 0.5c5.90039 17.5 18.3008 31.1992 18.3008 31.1992s9.89941 9.7002 18 7.30078
-c8.09961 -2.30078 5.09961 -30.4004 5.09961 -30.4004s-4.2998 -30.7002 9.40039 -32c13.6992 -1.40039 29.2998 10.7002 29.2998 10.7002s9.59961 3.89941 10.7002 -6.7998zM61.9004 188.1c0 0 6.19922 -1.89941 19.8994 7.60059
-c13.7002 9.39941 16.4004 24.3994 9.10059 31.3994c-7.2002 6.90039 -28.2002 -7 -29 -39zM334.7 311.9c0 0 -15.9004 -54.5 -16.4004 -70.7002c0 0 44.5 72 40 96.2002c-4.5 24.1992 -23.5996 -25.5 -23.5996 -25.5zM357.5 173.5
-c12.5996 33.0996 -3.59961 45.5 -3.59961 45.5s-23.4004 12.9004 -33.3008 -20.2002c-9.89941 -33.0996 -6.39941 -44.8994 -6.39941 -44.8994s30.7002 -13.4004 43.2998 19.5996zM442.1 188.1c0 0 15.7002 -1.09961 26.4004 14.2002s1.2998 25.5 1.2998 25.5
-s-8.59961 11.1006 -19.5996 -9.09961c-11.1006 -20.1006 -8.10059 -30.6006 -8.10059 -30.6006z" />
-    <glyph glyph-name="font-awesome-flag" unicode="&#xf425;" 
-d="M444.373 88.5762c0 -7.16797 -6.14453 -10.2402 -13.3125 -13.3125c-28.6719 -12.2881 -59.3916 -23.5518 -92.1592 -23.5518c-46.0801 0 -67.584 28.6719 -122.88 28.6719c-39.9365 0 -81.9209 -14.3359 -115.713 -29.6953
-c-2.04785 -1.02441 -4.0957 -1.02441 -6.14355 -2.04883v-77.8232c0 -21.4053 -16.1221 -34.8164 -33.792 -34.8164c-19.4561 0 -34.8164 15.3604 -34.8164 34.8164v374.783c-13.3115 10.2402 -22.5273 26.624 -22.5273 45.0566c0 31.7441 25.5996 57.3438 57.3438 57.3438
-s57.3438 -25.5996 57.3438 -57.3438c0 -18.4326 -8.19141 -34.8164 -22.5273 -45.0566v-31.7432c4.12402 1.37402 58.7676 28.6719 114.688 28.6719c65.2705 0 97.6758 -27.6484 126.976 -27.6484c38.9121 0 81.9209 27.6484 92.1602 27.6484
-c8.19238 0 15.3604 -6.14453 15.3604 -13.3125v-240.64z" />
-    <glyph glyph-name="gitter" unicode="&#xf426;" horiz-adv-x="384" 
-d="M66.4004 125.5h-50.4004v322.5h50.4004v-322.5zM166.9 371.9v-435.9h-50.4004v435.9h50.4004zM267.5 371.9v-435.9h-50.4004v435.9h50.4004zM368 372v-247h-50.4004v247h50.4004z" />
-    <glyph glyph-name="hooli" unicode="&#xf427;" horiz-adv-x="640" 
-d="M144.5 96v16c12.2998 -6.59961 25.0996 -12.2002 38.2998 -16.7998zM202.2 101.3c29.5 -10.7002 55.3994 -13.5 75.2998 -13.2998c-24.7998 -7 -58.2002 -5.2998 -94.7002 7.2002l19.4004 0.799805v5.2998zM611.1 216.5c-16 0 -28.8994 13 -28.8994 28.9004
-c0 15.8994 13 24.5 28.8994 24.5c16 0 28.9004 -8.5 28.9004 -24.5s-13 -28.9004 -28.9004 -28.9004zM582.1 96v110.5h57.9004v-110.5h-57.9004zM508.4 96v168l57.8994 27.2998v-195.3h-57.8994zM477.4 215.4c18.0996 -18.1006 16.6992 -33.8008 16.7998 -52.6006
-c0 -18.7002 1.39941 -34.2998 -16.7998 -52.5c-18.1006 -18.2002 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.10059 -50.4004 17.0996c-18.1992 18.2002 -16.7998 33.7998 -16.7998 52.5s-1.39941 34.4004 16.7998 52.6006
-c18.1006 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM437.6 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.6992 10.8994c-3.40039 0 -10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5
-c8.89941 0 10.6992 8.90039 10.6992 12.5zM331.4 215.4c18.1992 -18.1006 16.6992 -33.8008 16.6992 -52.3008c0 -18.6992 1.5 -34.2998 -16.6992 -52.5c-18.1006 -18.1992 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.09961 -50.4004 17.0996
-c-18.1992 18.2002 -16.7998 33.8008 -16.7998 52.5c0 15.6006 -0.899414 29.1006 9.2998 43.7002c-16 11.7998 -58 37.4004 -99.8994 58.2998v-54.2998c8 13.7002 22.7002 22 38.5 21.9004c27.2002 0 40.5996 -18.7002 40.5996 -37.4004v-93.8994
-c-20.3994 7.5 -39.7002 17.3994 -57.7002 29.5996v48.7002c0 8.09961 -1.5 15 -10.5996 15s-10.7998 -11.2998 -10.7998 -18.2002v-29.7998l-4.5 3.59961c-22.9004 18.9004 -40.2998 35.6006 -53.4004 50.2998v-31c11 -9.7998 23.6006 -20.1992 38.4004 -31.3994
-c6.39941 -4.90039 12.8994 -9.40039 19.3994 -13.6006v-28.5996h-57.8994v73.7002c-86.7002 78 -61.7998 110.8 -61.7998 110.8c8.2998 18.2998 42.8994 22.2002 97.2998 0.0996094l22.5 10.6006v-20.7002c29.5996 -14.5996 63.8994 -31.5 102.1 -61.0996
-c1.60059 2.09961 3.40039 4.09961 5.2998 6c18.2002 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM65.2002 264l29.2002 13.7002c-26.9004 10.0996 -50.9004 13.5 -64.4004 2.09961c-3.7002 -3.09961 -13.5 -24.5996 35.2002 -79.0996
-v63.2998zM291.7 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.7002 10.8994s-10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5s10.7002 8.90039 10.7002 12.5z" />
-    <glyph glyph-name="strava" unicode="&#xf428;" horiz-adv-x="384" 
-d="M158.4 448l150.199 -292h-88.5l-61.6992 116.1l-62.2002 -116.1h-89.2002zM308.6 156h67.6006l-111.5 -220l-112.2 220h67.5996l44.6006 -88.2002z" />
-    <glyph glyph-name="stripe" unicode="&#xf429;" horiz-adv-x="640" 
-d="M165 303.3l0.0996094 -38.5h33.7002v-37.7998h-33.7002v-63.2002c0 -26.2002 28 -18 33.7002 -15.7002v-33.7998c-5.89941 -3.2002 -16.5996 -5.89941 -31.2002 -5.89941c-26.2998 0 -46.0996 17 -46.0996 43.2998l0.200195 142.399zM254.1 251.7
-c10.4004 19.0996 31.1006 15.2002 37.1006 13.0996v-40.7998c-5.7002 1.7998 -23.4004 4.5 -33.9004 -9.2998v-103.101h-44.2998v153.2h38.4004zM346.4 324v-36.2002l-44.6006 -9.5v36.2002zM44.9004 219.7c0 -20 67.8994 -10.5 67.8994 -63.4004
-c0 -32 -25.3994 -47.7998 -62.2998 -47.7998c-15.2998 0 -32 3 -48.5 10.0996v40c14.9004 -8.09961 33.9004 -14.1992 48.5996 -14.1992c9.90039 0 17 2.69922 17 10.8994c0 21.2002 -67.5 13.2002 -67.5 62.4004c0 31.3994 24 50.2002 60 50.2002
-c14.7002 0 29.4004 -2.30078 44.1006 -8.10059v-41.7998c-13.5 7.2998 -30.7002 11.4004 -44.2002 11.4004c-9.2998 -0.100586 -15.0996 -2.80078 -15.0996 -9.7002zM640 186.4c0 -4.30078 -0.400391 -13.6006 -0.599609 -15.9004h-86.9004
-c2 -20.7998 17.2002 -26.9004 34.5 -26.9004c17.5996 0 31.5 3.7002 43.5996 9.80078v-33.4004c-12.0996 -6.7002 -28 -11.5 -49.1992 -11.5c-43.2002 0 -73.5 24.7002 -73.5 78.2002c0 45.2002 25.6992 81.0996 67.8994 81.0996s64.2002 -35.8994 64.2002 -81.3994z
-M552.1 203.2h45.9004c0 20 -11.5996 28.3994 -22.5 28.3994c-11.0996 0 -23.4004 -8.39941 -23.4004 -28.3994zM439.2 267.8c31.2002 0 60.5996 -28.0996 60.5 -79.7002c0 -56.3994 -29 -79.5996 -60.7998 -79.5996c-15.5 0 -25 6.5 -31.4004 11.2002l-0.0996094 -50.2002
-l-44.4004 -9.40039v204.801h39.0996l2.30078 -11c6.19922 5.69922 17.3994 13.8994 34.7998 13.8994zM428.6 145.3c16.5 0 27.5 17.9004 27.4004 41.7998c0 23.2002 -11.2002 41.4004 -27.4004 41.4004c-10.1992 0 -16.5996 -3.7002 -21.1992 -8.7998l0.299805 -66
-c4.2998 -4.60059 10.5 -8.40039 20.8994 -8.40039zM301.9 111.6v153.2h44.5996v-153.2h-44.5996z" />
-    <glyph glyph-name="stripe-s" unicode="&#xf42a;" horiz-adv-x="384" 
-d="M155.3 293.4c0 -64.2002 218 -33.7002 218 -203.9c0 -102.6 -81.7002 -153.6 -200.3 -153.6c-55.2773 0.125 -108.22 11.7861 -156 32.3994v128.5c47.9004 -26 108.9 -45.5 156.1 -45.5c31.8008 0 54.7002 8.5 54.7002 34.9004c0 68.0996 -216.8 42.5 -216.8 200.399
-c0 101 77.0996 161.4 192.8 161.4c47.2998 0 94.5 -7.2002 141.8 -26.0996v-134.301c-43.3994 23.4004 -98.5 36.7002 -141.899 36.7002c-29.7998 0 -48.4004 -8.59961 -48.4004 -30.8994z" />
-    <glyph glyph-name="typo3" unicode="&#xf42b;" 
-d="M178.7 369.6c0 -66.3994 83.3994 -264.899 140.6 -264.899c6.90039 0 11.5 0 18.5 2.2998c-49.3994 -79.5 -110.399 -139 -146.7 -139c-77.2998 0 -184.1 234 -184.1 337.5c0 16.2998 3.90039 29.4004 9.2998 37.0996c27 32.4004 106.8 57.9004 176.3 66.4004
-c-8.5 -7 -13.8994 -14.7002 -13.8994 -39.4004zM301.5 416c71.7998 0 138.8 -11.5996 138.8 -52.5c0 -82.5996 -52.5 -182.3 -78.7998 -182.3c-47.9004 0 -101.7 132.1 -101.7 198.5c0 30.8994 11.6006 36.2998 41.7002 36.2998z" />
-    <glyph glyph-name="amazon-pay" unicode="&#xf42c;" horiz-adv-x="640" 
-d="M14 122.7c2.2998 4.2002 5.2002 4.89941 9.7002 2.5c10.3994 -5.60059 20.5996 -11.4004 31.2002 -16.7002c39.8447 -19.8691 83.1084 -35.7148 127.399 -46.2998c20.5771 -4.96484 41.8789 -8.95996 63.2002 -11.7998
-c26.4932 -3.56152 53.5293 -5.40039 80.9922 -5.40039c4.97266 0 9.06348 0.0800781 14.0078 0.200195c17.4004 0.399414 34.7998 1.7998 52.0996 3.7998c56.8682 6.62891 112.369 21.4697 163.301 42.7998c2.89941 1.2002 5.89941 2 9.09961 1.2002
-c6.7002 -1.7998 9 -9 4.09961 -13.9004c-2.98828 -2.74707 -6.16797 -5.2002 -9.59961 -7.39941c-30.7002 -21.1006 -64.2002 -36.4004 -99.5996 -47.9004c-24.0801 -7.76074 -49.5137 -13.7686 -75.1006 -17.5996c-17.4854 -2.67871 -35.0918 -4.29395 -53.2002 -4.7998
-c-0.847656 -0.0517578 -1.68066 -0.152344 -2.5 -0.300781h-21.0996c-0.818359 0.148438 -1.65234 0.249023 -2.5 0.300781c-3.59961 0.199219 -7.2002 0.299805 -10.7002 0.399414c-17.1182 0.776367 -33.8633 2.55957 -50.3994 5.2998
-c-27.5244 4.48633 -54.7959 11.6387 -80.4004 20.9004c-54.1943 19.5449 -103.535 49.2734 -145.6 87c-1.80078 1.59961 -3 3.7998 -4.40039 5.7002v2zM172 382.9c2.7998 0 5.5 0 8.2998 -0.100586c3.2998 -0.5 6.60059 -0.799805 9.7998 -1.5
-c21.3008 -4.39941 35.4004 -17.2998 43.9004 -36.8994c6.90039 -15.9004 8.59961 -32.7002 8.09961 -49.8008c-0.399414 -15.3994 -3.2998 -30.1992 -10.2998 -44.0996c-9.2002 -18.4004 -23.3994 -30.9004 -43.7998 -34.9004c-22.5 -4.39941 -43.0996 0.5 -61 15.4004
-c-0.5 0.5 -1.09961 1 -2.2002 1.90039v-72.4004c0 -1 0 -2 -0.0996094 -3c-0.299805 -3 -2.10059 -5 -5 -5c-7 -0.0996094 -14.1006 -0.0996094 -21.1006 0c-2.89941 0.0996094 -4.69922 2 -4.89941 5c-0.100586 1 -0.100586 2 -0.100586 3v209.3
-c0 6.90039 1.30078 8.2002 8.2002 8.2002h11.5c4.60059 0 6.90039 -2 7.60059 -6.59961c0.5 -2.7002 0.899414 -5.5 1.2998 -8.2002c0.0537109 -0.494141 0.193359 -0.970703 0.399414 -1.40039c2.5 1.90039 4.7002 3.7002 7.10059 5.40039
-c10.8691 7.98535 23.957 13.3662 38 15.0996zM124.6 341c0.100586 -14.0996 0 -28 0 -42.0996c0 -14.1006 0.100586 -28.1006 0 -42.2002c-0.00585938 -0.0849609 -0.0126953 -0.165039 -0.0126953 -0.250977c0 -1.29102 0.686523 -2.42188 1.71289 -3.04883
-c11.2002 -7.90039 23.4004 -13.3008 37.4004 -13.9004c20.2002 -0.900391 35.7998 7.2002 42.5996 28.5c3.2002 10 4 20.2002 4 30.5996c0 11.2002 -1 22.3008 -4.89941 33c-6.40039 17.5 -18.6006 24.8008 -33.5 25.9004
-c-16.8008 1.2998 -31.9004 -3.7002 -45.6006 -13.2002c-1.02734 -0.605469 -1.71289 -1.7168 -1.71289 -2.99414c0 -0.103516 0.00390625 -0.205078 0.0126953 -0.305664zM330.3 382.9c4 0 8 0 11.9004 0.0996094c3.59961 -0.5 7.2002 -0.799805 10.7998 -1.2998
-c7.7002 -1.10059 15.0996 -3.10059 21.7998 -7.10059c11.6006 -6.89941 17.1006 -17.5 19 -30.3994c0.597656 -3.93945 0.905273 -7.87793 0.905273 -11.9834c0 -0.305664 -0.00195312 -0.611328 -0.00488281 -0.916992v-106
-c0.00292969 -0.157227 0.00488281 -0.282227 0.00488281 -0.44043c0 -0.794922 -0.0351562 -1.58203 -0.105469 -2.35938c-0.0742188 -2.59277 -2.19336 -4.67969 -4.7998 -4.7002c-5.39941 -0.0996094 -10.8994 -0.0996094 -16.2998 0
-c-2.90039 0.100586 -4.7998 2.10059 -5.40039 5.2002c-0.699219 3.59961 -1.19922 7.2002 -1.7998 11c-0.583984 -0.296875 -1.11816 -0.665039 -1.59961 -1.09961c-11.7998 -9.7002 -25.2002 -16.1006 -40.2998 -18.4004c-13.1006 -2 -26 -1.2002 -37.9004 5.40039
-c-12.4004 6.89941 -19.4004 17.6992 -21.4004 31.6992c-1.5 10.5 -0.799805 20.9004 3.90039 30.7002c6.09961 12.6006 16.5 20.4004 29.4004 24.9004c10.7998 3.7998 22 4.5 33.2998 3.89941c10.9355 -0.680664 21.6748 -2.35449 32 -4.89941
-c0.399414 -0.100586 0.799805 0 1.2998 -0.100586c0.107422 0.453125 0.174805 0.921875 0.200195 1.40039c-0.100586 8.2998 0 16.5996 -0.299805 24.9004c-0.200195 5.89941 -1.60059 11.5996 -5.30078 16.3994c-4.19922 5.5 -10.2998 7.40039 -16.7998 8.40039
-c-12.5 1.89941 -24.8994 0.899414 -37.2002 -1.40039c-7.89941 -1.5 -15.6992 -3.7002 -23.5 -5.7002c-4.69922 -1.19922 -6.69922 0.100586 -6.7998 4.90039c-0.0996094 3.2998 0.100586 6.59961 0 9.90039c-0.0996094 3.89941 1.7002 6.5 5.2998 7.69922
-c5.90039 2 11.8008 4.2002 17.9004 5.80078c9.3125 2.27539 18.9932 3.68164 28.9004 4.09961c0.899414 0.0996094 1.89941 0.299805 2.89941 0.400391zM365.3 255.2c-0.0996094 4.7002 0.100586 9.2998 0.100586 14.0996s-0.100586 9.5 0 14.2998
-c0 1.60059 -0.5 2.40039 -2.10059 2.60059c-8.39941 1.09961 -16.5996 2.7002 -25 3.39941c-2.34766 0.273438 -4.66895 0.400391 -7.08984 0.400391c-6.15625 0 -12.1016 -0.90918 -17.71 -2.59961c-8 -2.60059 -13.9004 -7.30078 -16.4004 -15.6006
-c-0.914062 -3.01953 -1.40527 -6.22168 -1.40527 -9.53906c0 -3.43457 0.527344 -6.74707 1.50586 -9.86035c1.77637 -6.16602 6.41895 -11.1133 12.3994 -13.3008c5.40039 -2.19922 11.1006 -2.39941 16.8008 -1.7998c13.8994 1.40039 26.1992 6.7998 37.3994 14.9004
-c0.90918 0.594727 1.50684 1.61719 1.50684 2.7832c0 0.0732422 -0.00195312 0.145508 -0.00683594 0.216797zM625.2 125.8v-17.2998c-0.700195 -3.59961 -1.2998 -7.2998 -2.10059 -10.9004c-4.39941 -20.2998 -11.8994 -39.1992 -24.6992 -55.5996
-c-3.97559 -4.76562 -8.1582 -9.17773 -12.7002 -13.4004c-1.33008 -1.21289 -2.98242 -2.09082 -4.7998 -2.5c-2.90039 -0.699219 -4.60059 1.2002 -4.10059 4.10059c0.243164 1.03027 0.584961 2.04785 1 3c5.7998 14.7998 11.7002 29.7002 15.7998 45.0996
-c2.10059 7.60059 3.90039 15.2998 3.5 23.2998c-0.199219 5.2002 -2.5 9 -7.59961 10.4004c-4.60352 1.3623 -9.46191 2.29004 -14.4004 2.7002c-11.3994 0.899414 -22.8994 0.200195 -34.2998 -0.900391c-7.7998 -0.799805 -15.5 -1.7002 -23.2998 -2.5
-c-0.607422 -0.0693359 -1.20215 -0.104492 -1.82715 -0.104492c-0.125 0 -0.249023 0.00195312 -0.373047 0.00488281c-1.5 -0.100586 -3.2002 0.299805 -3.59961 1.7998c-0.129883 0.450195 -0.197266 0.930664 -0.197266 1.42285
-c0 0.939453 0.253906 1.82031 0.697266 2.57715c1.00879 1.39258 2.25 2.56836 3.7002 3.5c12.0996 8.2998 25.6992 12.9004 40 15.5996c8.68945 1.59961 17.376 2.43945 26.5254 2.43945c4.26953 0 8.49707 -0.182617 12.6738 -0.539062
-c7.24512 -0.454102 14.3311 -1.80273 21 -3.90039c4.30078 -1.39941 8.10059 -3.2998 9.10059 -8.2998zM493.1 249c0.300781 -0.700195 0.501953 -1.2998 0.902344 -2.40039c2.59961 7.7002 5.2002 15 7.7002 22.2002l34.7998 100
-c0.5 1.40039 1.09961 2.7002 1.59961 4.10059c0.980469 3.02734 3.81543 5.21777 7.16699 5.21777c0.179688 0 0.357422 -0.00585938 0.533203 -0.0185547c6.60059 0 13.2998 0.100586 19.9004 0c2.7998 0 4.09961 -1.59961 3.7002 -4.39941
-c-0.335938 -1.89648 -0.884766 -3.76465 -1.60059 -5.5c-23.3662 -59.9336 -46.8994 -119.801 -70.5996 -179.601c-2.58691 -6.37598 -5.6875 -12.5654 -9.2002 -18.3994c-8.7998 -14.9004 -22.4004 -21.7998 -39.5 -21.4004c-5.7666 0.225586 -11.3984 0.905273 -16.9004 2
-c-5.39941 0.900391 -7.2998 3.40039 -7.39941 8.90039c-0.100586 3.2666 -0.100586 6.56641 0 9.89941c0.0996094 3.5 1.7998 5 5.2002 4.80078c2.5 -0.200195 5 -0.800781 7.5 -1c1.57227 -0.178711 3.11328 -0.264648 4.7334 -0.264648
-c3.68457 0 7.25879 0.473633 10.666 1.36426c7.2002 1.90039 12.2002 6.7998 15.2002 13.2998c3.40039 7.2998 6 15 9.2998 22.2998c1.90039 4.2002 1.5 7.7002 -0.200195 11.8008c-19.7998 48.5 -39.5 97 -59.1006 145.5
-c-0.770508 1.95117 -1.41797 4.02051 -1.90039 6.09961c-0.5 2.5 0.700195 4.5 3.2002 4.5c7.7002 0.0996094 15.2998 0 22.9004 -0.0996094c3.2002 0 5.2998 -1.90039 6.39941 -4.80078c2.10059 -5.59961 4.30078 -11.1992 6.30078 -16.8994
-c12.8994 -35.7666 25.7988 -71.5 38.6982 -107.2z" />
-    <glyph glyph-name="cc-amazon-pay" unicode="&#xf42d;" horiz-adv-x="576" 
-d="M124.7 246.2c0.0996094 11.7998 0 23.5 0 35.2998v35.2998c0 1.2998 0.399414 2 1.39941 2.7002c11.5 8 24.1006 12.0996 38.2002 11.0996c12.5 -0.899414 22.7002 -7 28.1006 -21.6992c3.2998 -8.90039 4.09961 -18.2002 4.09961 -27.7002
-c0 -8.7002 -0.700195 -17.2998 -3.40039 -25.6006c-5.69922 -17.7998 -18.6992 -24.6992 -35.6992 -23.8994c-11.7002 0.5 -21.9004 5 -31.4004 11.7002c-0.900391 0.799805 -1.40039 1.59961 -1.2998 2.7998zM279.6 231.6c-5.19922 2 -8.7998 5.7002 -10.3994 11.2002
-c-1.7002 5.40039 -1.7002 10.7998 -0.100586 16.2002c2 6.90039 7 10.9004 13.7002 13.0996c6.7998 2.2002 13.7998 2.5 20.7998 1.90039c7 -0.700195 13.9004 -2 20.9004 -2.90039c1.40039 -0.199219 1.7998 -0.799805 1.7998 -2.19922c-0.0996094 -4 0 -8 0 -12
-c0 -3.90039 -0.0996094 -7.90039 0 -11.8008c0 -1.19922 -0.399414 -1.89941 -1.2998 -2.5c-9.40039 -6.7998 -19.7002 -11.2998 -31.2998 -12.5c-4.7998 -0.5 -9.5 -0.299805 -14.1006 1.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352
-c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM368.5 344.1c0.400391 -1.69922 0.900391 -3.39941 1.59961 -5.09961c16.5 -40.5996 32.9004 -81.2998 49.5 -121.9c1.40039 -3.5 1.7002 -6.39941 0.200195 -9.89941
-c-2.7998 -6.2002 -4.89941 -12.6006 -7.7998 -18.7002c-2.59961 -5.5 -6.7002 -9.5 -12.7002 -11.2002c-4.2002 -1.09961 -8.5 -1.2998 -12.8994 -0.899414c-2.10059 0.199219 -4.2002 0.699219 -6.30078 0.799805c-2.7998 0.200195 -4.19922 -1.10059 -4.2998 -4
-c-0.0996094 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.60059 1.60059 -6.7002 6.2002 -7.5c4.7002 -0.800781 9.40039 -1.60059 14.2002 -1.7002c14.2998 -0.299805 25.7002 5.39941 33.0996 17.8994c2.90039 4.90039 5.60059 10.1006 7.7002 15.4004
-c19.7998 50.0996 39.5 100.3 59.2002 150.5c0.599609 1.5 1.09961 3 1.2998 4.59961c0.400391 2.40039 -0.700195 3.60059 -3.09961 3.7002c-5.60059 0.100586 -11.1006 0 -16.7002 0c-3.10059 0 -5.2998 -1.39941 -6.40039 -4.2998
-c-0.399414 -1.09961 -0.899414 -2.2998 -1.2998 -3.40039l-29.0996 -83.6992c-2.10059 -6.10059 -4.2002 -12.1006 -6.5 -18.6006c-0.400391 0.900391 -0.600586 1.40039 -0.800781 1.90039c-10.7998 29.8994 -21.5996 59.8994 -32.3994 89.7998
-c-1.7002 4.7002 -3.5 9.5 -5.2998 14.2002c-0.900391 2.5 -2.7002 4 -5.40039 4c-6.40039 0.0996094 -12.7998 0.200195 -19.2002 0.0996094c-2.2002 0 -3.2998 -1.59961 -2.7998 -3.7002zM242.4 242c1.69922 -11.7002 7.59961 -20.7998 18 -26.5996
-c9.89941 -5.5 20.6992 -6.2002 31.6992 -4.60059c12.7002 1.90039 23.9004 7.2998 33.8008 15.5c0.399414 0.299805 0.799805 0.600586 1.39941 1c0.5 -3.2002 0.900391 -6.2002 1.5 -9.2002c0.5 -2.59961 2.10059 -4.2998 4.5 -4.39941
-c4.60059 -0.100586 9.10059 -0.100586 13.7002 0c2.2998 0.0996094 3.7998 1.59961 4 3.89941c0.0996094 0.800781 0.0996094 1.60059 0.0996094 2.30078v88.7998c0 3.59961 -0.199219 7.2002 -0.699219 10.7998c-1.60059 10.7998 -6.2002 19.7002 -15.9004 25.4004
-c-5.59961 3.2998 -11.7998 5 -18.2002 5.89941c-3 0.400391 -6 0.700195 -9.09961 1.10059h-10c-0.799805 -0.100586 -1.60059 -0.300781 -2.5 -0.300781c-8.2002 -0.399414 -16.2998 -1.39941 -24.2002 -3.5c-5.09961 -1.2998 -10 -3.19922 -15 -4.89941
-c-3 -1 -4.5 -3.2002 -4.40039 -6.5c0.100586 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.10059 1.80078 -5.2002 5.7002 -4.10059c6.5 1.7002 13.1006 3.5 19.7002 4.7998c10.2998 1.90039 20.7002 2.7002 31.0996 1.2002
-c5.40039 -0.799805 10.5 -2.39941 14.1006 -7c3.09961 -4 4.2002 -8.7998 4.39941 -13.7002c0.300781 -6.89941 0.200195 -13.8994 0.300781 -20.7998c0 -0.399414 -0.100586 -0.700195 -0.200195 -1.2002c-0.400391 0 -0.799805 0 -1.10059 0.100586
-c-8.7998 2.09961 -17.6992 3.59961 -26.7998 4.09961c-9.5 0.5 -18.8994 -0.0996094 -27.8994 -3.2002c-10.8008 -3.7998 -19.5 -10.2998 -24.6006 -20.7998c-4.09961 -8.2998 -4.59961 -17 -3.39941 -25.7998zM98.7002 341.1v-175.3c0 -0.799805 0 -1.7002 0.0996094 -2.5
-c0.200195 -2.5 1.7002 -4.09961 4.10059 -4.2002c5.89941 -0.0996094 11.7998 -0.0996094 17.6992 0c2.5 0 4 1.7002 4.10059 4.10059c0.0996094 0.799805 0.0996094 1.7002 0.0996094 2.5v60.7002c0.900391 -0.700195 1.40039 -1.2002 1.90039 -1.60059
-c15 -12.5 32.2002 -16.5996 51.0996 -12.8994c17.1006 3.39941 28.9004 13.8994 36.7002 29.1992c5.7998 11.6006 8.2998 24.1006 8.7002 37c0.5 14.3008 -1 28.4004 -6.7998 41.7002c-7.10059 16.4004 -18.9004 27.2998 -36.7002 30.9004
-c-2.7002 0.599609 -5.5 0.799805 -8.2002 1.2002h-7c-1.2002 -0.200195 -2.40039 -0.300781 -3.59961 -0.5c-11.7002 -1.40039 -22.3008 -5.80078 -31.8008 -12.7002c-2 -1.40039 -3.89941 -3 -5.89941 -4.5c-0.100586 0.5 -0.299805 0.799805 -0.400391 1.2002
-c-0.399414 2.2998 -0.700195 4.59961 -1.09961 6.89941c-0.600586 3.90039 -2.5 5.5 -6.40039 5.60059h-9.7002c-5.89941 0.0996094 -6.89941 -1 -6.89941 -6.80078zM493.6 109c-2.69922 0.700195 -5.09961 0 -7.59961 -1c-43.9004 -18.4004 -89.5 -30.2002 -136.8 -35.7998
-c-14.5 -1.7002 -29.1006 -2.7998 -43.7002 -3.2002c-26.5996 -0.700195 -53.2002 0.799805 -79.5996 4.2998c-17.8008 2.40039 -35.5 5.7002 -53 9.90039c-37 8.89941 -72.7002 21.7002 -106.7 38.7998c-8.7998 4.40039 -17.4004 9.2998 -26.1006 14
-c-3.7998 2.09961 -6.19922 1.5 -8.19922 -2.09961v-1.7002c1.19922 -1.60059 2.19922 -3.40039 3.69922 -4.7998c36 -32.2002 76.6006 -56.5 122 -72.9004c21.9004 -7.90039 44.4004 -13.7002 67.3008 -17.5c14 -2.2998 28 -3.7998 42.1992 -4.5
-c3 -0.0996094 6 -0.200195 9 -0.400391c0.700195 0 1.40039 -0.199219 2.10059 -0.299805h17.7002c0.699219 0.100586 1.39941 0.299805 2.09961 0.299805c14.9004 0.400391 29.7998 1.80078 44.5996 4c21.4004 3.2002 42.4004 8.10059 62.9004 14.7002
-c29.5996 9.60059 57.7002 22.4004 83.4004 40.1006c2.7998 1.89941 5.69922 3.7998 8 6.19922c4.2998 4.40039 2.2998 10.4004 -3.30078 11.9004zM544 136.7c-0.799805 4.2002 -4 5.7998 -7.59961 7c-5.7002 1.89941 -11.6006 2.7998 -17.6006 3.2998
-c-11 0.900391 -22 0.400391 -32.7998 -1.59961c-12 -2.2002 -23.4004 -6.10059 -33.5 -13.1006c-1.2002 -0.799805 -2.40039 -1.7998 -3.09961 -3c-0.600586 -0.899414 -0.700195 -2.2998 -0.5 -3.39941c0.299805 -1.30078 1.69922 -1.60059 3 -1.5
-c0.599609 0 1.19922 0 1.7998 0.0996094l19.5 2.09961c9.59961 0.900391 19.2002 1.5 28.7998 0.800781c4.09961 -0.300781 8.09961 -1.2002 12 -2.2002c4.2998 -1.10059 6.2002 -4.40039 6.40039 -8.7002c0.299805 -6.7002 -1.2002 -13.0996 -2.90039 -19.5
-c-3.5 -12.9004 -8.2998 -25.4004 -13.2998 -37.7998c-0.299805 -0.799805 -0.700195 -1.7002 -0.799805 -2.5c-0.400391 -2.5 1 -4 3.39941 -3.5c1.40039 0.299805 3 1.09961 4 2.09961c3.7002 3.60059 7.5 7.2002 10.6006 11.2002
-c10.6992 13.7998 17 29.5996 20.6992 46.5996c0.700195 3 1.2002 6.10059 1.7002 9.10059c0.200195 4.7002 0.200195 9.59961 0.200195 14.5z" />
-    <glyph glyph-name="ethereum" unicode="&#xf42e;" horiz-adv-x="320" 
-d="M311.9 187.2l-151.9 -92.7998l-152 92.7998l152 260.8zM160 64.5996l152 92.8008l-152 -221.4l-152 221.4z" />
-    <glyph glyph-name="korvue" unicode="&#xf42f;" horiz-adv-x="446" 
-d="M386.5 414c32.7002 0 59.5 -26.7998 59.5996 -59.5v-327c0 -32.7002 -26.5 -59.5 -59.5 -59.5h-327.1c-32.7002 0 -59.5 26.7998 -59.5 59.4004v327.1c0 32.7002 26.7998 59.5 59.5 59.5h327zM87.0996 327.2v-132h187.5l81.2002 132h-110.899l-61.8008 -116v116h-96z
-M248.9 55.0996h118.399l-88.5996 130.801h-191.5v-130.801h96v113.601z" />
-    <glyph glyph-name="elementor" unicode="&#xf430;" 
-d="M425.6 416c12.4004 0 22.4004 -10 22.4004 -22.4004v-403.199c0 -12.4004 -10 -22.4004 -22.4004 -22.4004h-403.199c-12.4004 0 -22.4004 10 -22.4004 22.4004v403.199c0 12.4004 10 22.4004 22.4004 22.4004h403.199zM164.3 92.5v199h-39.7998v-199h39.7998z
-M323.6 92.5v39.7998h-119.5v-39.7998h119.5zM323.6 172.1v39.8008h-119.5v-39.8008h119.5zM323.6 251.8v39.7998h-119.5v-39.7998h119.5z" />
-    <glyph glyph-name="youtube-square" unicode="&#xf431;" 
-d="M186.8 245.9l95.2002 -54.1006l-95.2002 -54.0996v108.2zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM406 191.7c0 0 0 59.5996 -7.59961 88.2002
-c-4.2002 15.7998 -16.5 28.1992 -32.2002 32.3994c-28.2998 7.7002 -142.2 7.7002 -142.2 7.7002s-113.9 0 -142.2 -7.7002c-15.7002 -4.2002 -28 -16.5996 -32.2002 -32.3994c-7.59961 -28.5 -7.59961 -88.2002 -7.59961 -88.2002s0 -59.6006 7.59961 -88.2002
-c4.2002 -15.7998 16.5 -27.7002 32.2002 -31.9004c28.2998 -7.59961 142.2 -7.59961 142.2 -7.59961s113.9 0 142.2 7.7002c15.7002 4.2002 28 16.0996 32.2002 31.8994c7.59961 28.5 7.59961 88.1006 7.59961 88.1006z" />
-    <glyph glyph-name="flipboard" unicode="&#xf44d;" 
-d="M0 416h448v-448h-448v448zM358.4 236.8v89.6006h-268.801v-268.801h89.6006v89.6006h89.5996v89.5996h89.6006z" />
-    <glyph glyph-name="hips" unicode="&#xf452;" horiz-adv-x="640" 
-d="M251.6 290.4v-201.801c0 -1.89941 -0.899414 -2.7998 -2.7998 -2.7998h-40.8994c-1.60059 0 -2.7002 1.40039 -2.7002 2.7998v201.801c0 1.39941 1.09961 2.7998 2.7002 2.7998h40.8994c1.90039 0 2.7998 -0.900391 2.7998 -2.7998zM156.5 280
-c18.7002 -13.5 28 -31.9004 28 -55.2998v-136.101c0 -1.89941 -0.900391 -2.7998 -2.7002 -2.7998h-27.2998c-9.09961 0 -16.4004 7.2998 -16.4004 16.2998v122.601c0 0.899414 2.7002 27 -45.7998 27c-48.5996 0 -45.7998 -26.2002 -45.7998 -27v-136.101
-c0 -1.89941 -0.900391 -2.7998 -2.7998 -2.7998h-41c-1.7998 0 -2.7002 0.900391 -2.7002 2.7998v279.2c0 1.7998 0.900391 2.7002 2.7002 2.7002h40.8994c1.90039 0 2.80078 -0.900391 2.80078 -2.7002v-81.2002c15.1992 7.7002 31.6992 11.5 49.7998 11.4004
-c24 -0.0996094 44.2002 -6.2002 60.2998 -18zM634.9 169.9c5.5 -12.6006 6.59961 -25.6006 3.09961 -39.1006c-9.59961 -36.8994 -44.9004 -45.5 -45.5996 -45.7998c-10.5 -3.09961 -23.6006 -4.2998 -36.3008 -4.2998c-16.5996 0 -32.5996 2.7002 -48.1992 8.2002
-c-9.7002 3.39941 -14.6006 10.2998 -14.6006 20.6992v34.4004c0 2.09961 2.2998 3.7002 4.40039 2.2998c13.7002 -10.2002 34.0996 -19.0996 58.3994 -19.0996c23.3008 0 32.8008 4.5 36.5 13.5996c3 7.90039 -0.599609 16.1006 -12.1992 21.2002l-53.6006 23.5
-c-21.3994 9.40039 -33.7998 24 -37.2002 43.5996c-5.69922 33.7002 22.2002 53.3008 22.7002 53.7002c13.2002 9.60059 32 15.4004 58.5 15.4004c19 0 37.4004 -3.2998 55.1006 -9.90039c1.2998 -0.5 1.89941 -1.2998 1.89941 -2.59961v-44.7002
-c0 -2.09961 -2.2998 -3.40039 -4 -2.40039c-39.7002 20.7002 -76.5996 12.3008 -84 6.80078c-6.59961 -4.90039 -6 -12.5 2.60059 -16.1006l57.5996 -25.2998c16.5 -7.09961 28.0996 -18.4004 34.9004 -34.0996zM376.2 298.2c60.3994 0 108.7 -48.2998 108.6 -108.601
-c0 -60.1992 -48.2002 -108.699 -108.7 -108.699c-21.8994 0 -41.1992 6.39941 -57.6992 19.0996v-88.7998c0 -1.7998 -0.900391 -2.7002 -2.80078 -2.7002h-40.8994c-2.10059 0 -2.7002 1.90039 -2.7002 2.7002v183.5c0 83.3994 72.5 103.5 104.2 103.5zM376.2 127.3
-c34.8994 0 62.2998 27.9004 62.2002 62.2002c0 34.5996 -27.7002 62.2002 -62.2002 62.2002c-34.6006 0 -62.2002 -27.7002 -62.2002 -62.2002c0 -17.2002 6 -31.7998 18.2002 -44c12.0996 -12.0996 26.7998 -18.2002 44 -18.2002zM228.3 375.5
-c15.9004 0 28.9004 -12.7002 28.9004 -28.9004c0 -15.7998 -12.7002 -28.8994 -28.9004 -28.8994s-28.8994 13.2998 -28.8994 28.8994c0.0996094 16 13 28.9004 28.8994 28.9004z" />
-    <glyph glyph-name="php" unicode="&#xf457;" horiz-adv-x="640" 
-d="M320 343.5c-171.3 0 -303.2 -72.2002 -303.2 -151.5s131.8 -151.5 303.2 -151.5c171.3 0 303.2 72.2002 303.2 151.5s-131.8 151.5 -303.2 151.5zM320 360.3c176.7 0 320 -75.2998 320 -168.3s-143.3 -168.3 -320 -168.3s-320 75.2998 -320 168.3s143.3 168.3 320 168.3z
-M218.2 205.5c7.39941 38.4004 -18.4004 34.2998 -56.4004 34.2998l-13.7002 -70.5996c34.3008 0 62.2002 -4.2002 70.1006 36.2998zM97.4004 97.7002l32.6992 168.7h70.7002c21.2002 0 36.7998 -5.5 46.5 -16.7002c18.6006 -21.4004 11.7998 -64.1006 -14.2998 -88.1006
-c-23.5996 -22.0996 -49.0996 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.6992zM283.1 311.3h36.5l-8.69922 -44.7998c31.5 0 60.6992 2.2998 74.7998 -10.7002c14.7998 -13.5996 7.7002 -31 -8.2998 -113.1h-37c15.3994 79.3994 18.2998 86 12.6992 92
-c-5.39941 5.7998 -17.6992 4.59961 -47.3994 4.59961l-18.7998 -96.5996h-36.5zM505 205.5c7.40039 38.4004 -18.2002 34.2998 -56.4004 34.2998l-13.6992 -70.5996c33.3994 0 62.0996 -4.7998 70.0996 36.2998zM384.2 97.7002l32.7998 168.7h70.7002
-c21.2002 0 36.7998 -5.5 46.5 -16.7002c18.5996 -21.4004 11.7998 -64.1006 -14.2998 -88.1006c-23.1006 -21.5996 -47 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.7998z" />
-    <glyph glyph-name="quinscape" unicode="&#xf459;" horiz-adv-x="512" 
-d="M313.6 -26.5996c4.40039 -4.40039 8.10059 -9 13.3008 -12.5c-21.7051 -6.54492 -44.666 -10.1084 -68.4922 -10.1084c-0.636719 0 -1.27246 0.00292969 -1.9082 0.0078125c-135 0 -244.5 109.5 -244.5 244.601c0 135.1 109.4 244.6 244.5 244.6
-s244.6 -109.5 244.6 -244.6c0 -35.3008 -6.89941 -67.4004 -20.2998 -97.7002c-3 5.7002 -7.2002 10.2002 -11.2002 15.2998c11.2002 93.5 -62.0996 176.6 -157 176.6c-87.2578 0 -158.1 -70.8418 -158.1 -158.1s70.8418 -158.1 158.1 -158.1h1zM313.5 -26.5
-l0.400391 -0.0996094zM391.9 142.4c54.7393 0 99.1992 -44.4414 99.1992 -99.1797v-0.0205078c0 -54.75 -44.4492 -99.2002 -99.1992 -99.2002s-99.2002 44.4502 -99.2002 99.2002s44.4502 99.2002 99.2002 99.2002z" />
-    <glyph glyph-name="readme" unicode="&#xf4d5;" horiz-adv-x="576" 
-d="M528.3 401.5c26.4004 -0.200195 47.7002 -21.7002 47.7002 -48.0996v-245.7c0 -26.5 -21.5 -48 -48 -48h-89.7002c-102.1 0 -132.6 -24.4004 -147.3 -75c-0.799805 -2.7998 -5.2998 -2.7998 -6 0c-14.5996 50.5996 -45.0996 75 -147.3 75h-89.7002
-c-26.5 0 -48 21.5 -48 48v245.8c0 26.5 21.5 48 48 48h139.7c48.0996 0 89.7998 -33.2998 100.399 -80.2998c10.5 47 52.3008 80.2998 100.4 80.2998h139.8zM242 136.1h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004
-c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM242 197h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.60059 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM242 257.9h0.0996094v22.8994
-c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 136.2h0.100586v22.8994c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994
-c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 197.1h0.100586v22.9004c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM501.3 258h0.100586v22.7998
-c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.7998c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5z" />
-    <glyph glyph-name="java" unicode="&#xf4e4;" horiz-adv-x="384" 
-d="M277.74 135.1c-94.5 -24.8994 -277 -13.2998 -224.5 12.1006c44.5 21.3994 80.5996 19 80.5996 19s-93.0996 -22.1006 -33 -30.1006c25.4004 -3.39941 76 -2.59961 123.101 1.30078c38.5 3.19922 77.1992 10.1992 77.1992 10.1992s-13.5996 -5.7998 -23.3994 -12.5z
-M192.34 167.2c-48.5 43.7998 -84.0996 82.2998 -60.2002 118.2c35.1006 52.5 132.2 78.0996 110.7 162.6c0 0 53.1602 -53.2002 -50.5 -135c-83.0996 -65.5996 -19 -103.1 0 -145.8zM306.94 343.4c-111.601 -64.7002 -91 -83.5 -64.1006 -121.301
-c28.7998 -40.5 -33.8994 -72.8994 -33.8994 -72.8994s31.1992 25.5996 6.5 54c-83.7002 96.3994 91.5996 140.2 91.5 140.2zM300.84 72.9004c96.1006 49.8994 51.6006 97.8994 20.6006 91.3994c-3.75195 -0.703125 -7.4834 -1.72656 -11 -3
-c2.01367 2.86523 4.85742 5.07227 8.19922 6.2998c61.3008 21.6006 108.5 -63.5996 -19.7998 -97.2998c0.78125 0.773438 1.44922 1.63965 2 2.60059zM348 10.5996c53 -23.8994 -115.16 -72 -319.4 -38.7998c-74.8994 12.1006 36.1006 54.5 56.4004 40.2002
-c0 0 -6.5 0.400391 -17.7002 -2c-10.7998 -2.2998 -45.0996 -13.4004 -26.7998 -21.2998c50.7998 -22.1006 233.7 -16.7998 291.6 0.700195c30.4004 9.2998 15.9004 21.1992 15.9004 21.1992zM124.44 52c0 0 -19.6006 -11.4004 13.8994 -15.2002
-c40.6006 -4.59961 61.2998 -4 106 4.5c8.91016 -5.33594 18.4062 -9.99512 28.2002 -13.7998c-100.2 -42.9004 -226.8 2.5 -148.1 24.5zM304.24 -45.2002c69.7998 13.2002 76.2002 29.7002 76.2002 29.7002c-3.30078 -43.5996 -144.9 -52.7998 -237.101 -46.9004
-c-60.5996 3.90039 -72.3994 13.7002 -72.3994 13.6006c57.5 -9.5 154.6 -11.2002 233.3 3.59961zM260.64 95c6.01562 -5.61719 13.1807 -10.0039 21.1006 -12.7998c-121.3 -35.5 -256.3 -2.90039 -169.5 25.8994c0 0 -21.9004 -16.1992 11.5996 -19.6992
-c43.2998 -4.5 77.6006 -4.80078 136.8 6.59961z" />
-    <glyph glyph-name="pied-piper-hat" unicode="&#xf4e5;" horiz-adv-x="640" 
-d="M640 423.1c-80.7998 -53.5996 -89.4004 -92.5 -96.4004 -104.399c-6.69922 -12.2002 -11.6992 -60.2998 -23.2998 -83.6006c-11.7002 -23.5996 -54.2002 -42.1992 -66.0996 -50c-11.7002 -7.7998 -28.2998 -38.0996 -41.9004 -64.1992
-c-108.1 4.39941 -167.399 -38.8008 -259.2 -93.6006c29.4004 9.7002 43.3008 16.7002 43.3008 16.7002c94.1992 36 139.3 68.2998 281.1 49.2002c1.09961 0 1.90039 -0.600586 2.7998 -0.799805c3.90039 -2.2002 5.2998 -6.90039 3.10059 -10.8008l-53.9004 -95.7998
-c-2.5 -4.7002 -7.7998 -7.2002 -13.0996 -6.09961c-126.801 23.7998 -226.9 -17.2998 -318.9 -18.6006c-73.4004 -1.09961 -97.5 33.5 -97.5 35.1006c0 1.09961 0.599609 1.7002 1.7002 1.7002c0 0 38.2998 0 103.1 15.2998c73.6006 140.3 139.2 189.399 210.601 189.399
-c0 0 71.6992 0 90.5996 -61.8994c22.7998 39.7002 28.2998 49.2002 28.2998 49.2002c5.2998 9.39941 35 77.1992 86.4004 141.399c51.5 64 90.3994 79.9004 119.3 91.7998z" />
-    <glyph glyph-name="creative-commons-by" unicode="&#xf4e7;" horiz-adv-x="496" 
-d="M314.9 253.6v-101.399h-28.3008v-120.5h-77.0996v120.399h-28.2998v101.5c0 4.40039 1.59961 8.2002 4.59961 11.3008c3.10059 3.09961 6.90039 4.69922 11.2998 4.69922h101.9c4.09961 0 7.7998 -1.59961 11.0996 -4.69922
-c3.10059 -3.2002 4.80078 -6.90039 4.80078 -11.3008zM213.4 317.3c0 23.2998 11.5 35 34.5 35s34.5 -11.7002 34.5 -35c0 -23 -11.5 -34.5 -34.5 -34.5s-34.5 11.5 -34.5 34.5zM247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248
-c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3z" />
-    <glyph glyph-name="creative-commons-nc" unicode="&#xf4e8;" horiz-adv-x="496" 
-d="M247.6 440c139.801 0 248.4 -107.9 248.4 -248c0 -147.2 -118.5 -248 -248.4 -248c-134.5 0 -247.6 110.8 -247.6 248c0 132.9 104.7 248 247.6 248zM55.7998 258.9c-7.39941 -20.4004 -11.0996 -42.7002 -11.0996 -66.9004c0 -110.9 92.0996 -202.4 203.7 -202.4
-c122.399 0 177.199 101.801 178.5 104.101l-93.4004 41.5996c-7.7002 -37.0996 -41.2002 -53 -68.2002 -55.3994v-38.1006h-28.7998v38.2002c-27.5 0.299805 -52.5996 10.2002 -75.2998 29.7002l34.0996 34.5c31.7002 -29.4004 86.4004 -31.7998 86.4004 2.2002
-c0 6.19922 -2.2002 11.1992 -6.60059 15.0996c-14.1992 6 -1.7998 0.0996094 -219.3 97.4004zM248.4 395.7c-38.4004 0 -112.4 -8.7002 -170.5 -93l94.7998 -42.5c10 31.2998 40.3994 42.8994 63.7998 44.2998v38.0996h28.7998v-38.0996
-c22.7002 -1.2002 43.4004 -8.90039 62 -23l-32.2998 -33.2002c-42.7002 29.9004 -83.5 8 -70 -11.0996c53.4004 -24.1006 43.7998 -19.7998 93 -41.6006l127.1 -56.6992c4.10059 17.3994 6.2002 35.0996 6.2002 53.0996c0 57 -19.7998 105 -59.2998 143.9
-c-39.2998 39.8994 -87.2002 59.7998 -143.6 59.7998z" />
-    <glyph glyph-name="creative-commons-nc-eu" unicode="&#xf4e9;" horiz-adv-x="496" 
-d="M247.7 440c140.7 0 248.3 -109 248.3 -248c0 -147.1 -118.1 -248 -248.3 -248c-136 0 -247.7 111.7 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c122.601 0 177.3 102.2 178.8 104.3l-128.3 56.8008h-90.2998
-c9.2002 -39.3008 39.0996 -50.2002 67.2998 -50.2002c19.1006 0 38.6006 6.2002 47.2998 10.7998l10 -46.0996c-14.1992 -7.90039 -38.1992 -15.8008 -64.7998 -15.8008c-57.3994 0 -113.2 34.3008 -124.6 101.301h-27v29.5h22.7998
-c0 16.2998 0.400391 13.2998 0.400391 19.5h-23.3008v29.5h4.7002l-65.7002 29.0996c-7.19922 -20.7998 -10.8994 -42.7998 -10.8994 -66c0 -110.2 91.5996 -202.7 203.6 -202.7zM231.6 179.9l-0.5 0.399414l0.900391 -0.399414h-0.400391zM308.8 199.4l136.101 -60.5
-c4.19922 16.5996 6.2998 34.1992 6.2998 52.8994c0 113.2 -90 203.4 -203 203.4c-13 0 -106.101 3.2002 -170.7 -93.6006l81.5996 -36.0996c4.10059 7.2002 8.60059 14 13.9004 20.0996c23.7002 26.5 56.9004 42.3008 95.9004 42.3008
-c25.2998 0 47.2998 -5.80078 62.2998 -12.4004l-11.6006 -47.2998c-10.7998 4.59961 -27.7998 10 -46.0996 10c-20 0 -38.2002 -6.60059 -51.0996 -22.4004c-3.40039 -3.7998 -6.30078 -8.7998 -8.80078 -14.2998l28.6006 -12.5996h70.2998v-29.5h-3.7002z" />
-    <glyph glyph-name="creative-commons-nc-jp" unicode="&#xf4ea;" horiz-adv-x="496" 
-d="M247.7 440c140.8 0 248.3 -109.2 248.3 -248c0 -147.2 -118.1 -248 -248.3 -248c-135.9 0 -247.7 111.6 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c118.101 0 173.7 96.1006 175.2 98.2998l-81 36.1006v-35.7002h-64.2002v-56h-61.7002v56h-63.7998
-v38.7002h63.7998v18.7002l-5.69922 11.7998h-58.1006v38.5996h27.9004l-127 56.5c-6 -19.0996 -9 -39.2002 -9 -60.2998c0 -110.2 91.5996 -202.7 203.6 -202.7zM335.9 126.6l-54.7002 24.3008l-2.90039 -5.60059v-18.7002h57.6006zM342.4 178l101 -45.0996
-c5.19922 18.3994 7.89941 38 7.89941 59c0 113.399 -90.2002 203.399 -203 203.399c-91.0996 0 -145.899 -54 -173.7 -98.0996l81.9004 -36.5l-27.2998 51h65.7998l39.5996 -85.7002l23 -10.2002l43.4004 96h65.7998l-63 -116h38.6006v-17.7998z" />
-    <glyph glyph-name="creative-commons-nd" unicode="&#xf4eb;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8
-c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM342.4 251v-42.5h-180.301v42.5h180.301zM342.4 171.2v-42.5h-180.301v42.5h180.301z" />
-    <glyph glyph-name="creative-commons-pd" unicode="&#xf4ec;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM248 -9.5c76.0996 0 142.4 42.4004 176.7 104.8c-1.40039 0.299805 12.5 -5.7998 -217.9 96.7998c0.200195 -32 16.1006 -71.8994 53.9004 -71.8994
-c18.7002 0 30.7998 10.3994 36.2998 16.7002l36.0996 -43.9004c-25.8994 -22.7998 -56.5 -29.5 -79.3994 -29.5c-46.5 0 -120.4 27.9004 -120.4 126.9c0 11.3994 1.2002 22.3994 3.2998 32.8994l-78.7998 35.1006c-45.5996 -129.9 51 -267.9 190.2 -267.9zM442.2 140.5
-c0.200195 -0.200195 0.299805 -0.299805 0.599609 -0.400391c4.40039 16.6006 6.7998 34 6.7998 52c0 111.101 -90.3994 201.5 -201.5 201.5c-70.3994 0 -132.399 -36.2998 -168.5 -91.1992l74.9004 -33.4004c19.7998 31.0996 53.2998 51.5996 100.7 51.5996
-c20.0996 0 51 -4.19922 78.0996 -27.5l-40.3994 -41.5996c-19.8008 19.7002 -55.9004 23 -74.7002 -11z" />
-    <glyph glyph-name="creative-commons-pd-alt" unicode="&#xf4ed;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 -10.7998c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3
-c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8zM316.7 262c21.3994 0 70 -5.2002 70 -68.5996c0 -63.5 -48.6006 -68.6006 -70 -68.6006h-53.2002v137.2h53.2002zM317.5 153.5c24 0 34.5 15.2998 34.5 39.9004
-c0 42 -31.2002 39.8994 -35 39.8994l-19.4004 -0.0996094v-79.7002h19.9004zM203.7 262c33.7002 0 50.5 -15.5 50.5 -46.5c0 -9 -3 -46.5 -57.1006 -46.5h-27v-44.2998h-34.5996v137.3h68.2002zM198.8 194.7c27.9004 0 30 41.5996 -0.899414 41.5996h-28.3008v-41.5996
-h29.2002z" />
-    <glyph glyph-name="creative-commons-remix" unicode="&#xf4ee;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8
-c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM410.1 187.6l4.90039 -2.19922v-70c-7.2002 -3.60059 -63.4004 -27.5 -67.2998 -28.8008c-6.5 1.80078 -113.7 46.8008 -137.3 56.2002l-64.2002 -26.5996l-63.2998 27.5v63.7998
-l59.2998 24.7998c-0.700195 0.700195 -0.400391 -5 -0.400391 70.4004l67.2998 29.7002l151.9 -62.9004v-61.5996zM339.7 106.1v43.8008h-0.400391v1.7998l-113.8 46.5v-45.2002l113.8 -46.9004v0.400391zM347.2 163.7l39.8994 16.3994l-36.7998 15.5l-39 -16.3994z
-M399.5 125.6v43l-44.2998 -18.5996v-43.4004z" />
-    <glyph glyph-name="creative-commons-sa" unicode="&#xf4ef;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8
-c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM137.7 227c13 83.9004 80.5 95.7002 108.899 95.7002c99.8008 0 127.5 -82.5 127.5 -134.2c0 -63.5996 -41 -132.9 -128.899 -132.9c-38.9004 0 -99.1006 20 -109.4 97h62.5
-c1.5 -30.0996 19.6006 -45.1992 54.5 -45.1992c23.2998 0 58 18.1992 58 82.7998c0 82.5 -49.0996 80.5996 -56.7002 80.5996c-33.0996 0 -51.6992 -14.5996 -55.7998 -43.7998h18.2002l-49.2002 -49.2002l-49 49.2002h19.4004z" />
-    <glyph glyph-name="creative-commons-sampling" unicode="&#xf4f0;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8
-c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM252 342.1c2.7998 0.300781 11.5 -1 11.5 -11.5l6.59961 -107.199l4.90039 59.2998c0 6 4.7002 10.5996 10.5996 10.5996c5.90039 0 10.6006 -4.7002 10.6006 -10.5996
-c0 -2.5 -0.5 5.7002 5.7002 -81.5l5.7998 64.2002c0.299805 2.89941 2.89941 9.2998 10.2002 9.2998c3.7998 0 9.89941 -2.2998 10.5996 -8.90039l11.5 -96.5l5.2998 12.7998c1.7998 4.40039 5.2002 6.60059 10.2002 6.60059h58v-21.2998h-50.9004l-18.1992 -44.3008
-c-3.90039 -9.89941 -19.5 -9.09961 -20.8008 3.10059l-4 31.8994l-7.5 -92.5996c-0.299805 -3 -3 -9.2998 -10.1992 -9.2998c-3 0 -9.80078 2.09961 -10.6006 9.2998c0 1.90039 0.600586 -5.7998 -6.2002 77.9004l-5.2998 -72.2002
-c-1.09961 -4.7998 -4.7998 -9.2998 -10.5996 -9.2998c-2.90039 0 -9.7998 2 -10.6006 9.2998c0 1.89941 0.5 -6.7002 -5.7998 87.7002l-5.7998 -94.8008c0 -6.2998 -3.59961 -12.3994 -10.5996 -12.3994c-5.2002 0 -10.6006 4.09961 -10.6006 12l-5.7998 87.7002
-c-5.7998 -92.5 -5.2998 -84 -5.2998 -85.9004c-1.10059 -4.7998 -4.7998 -9.2998 -10.6006 -9.2998c-3 0 -9.7998 2.09961 -10.5996 9.2998c0 0.700195 -0.400391 1.09961 -0.400391 2.59961l-6.19922 88.6006l-4.90039 -56.7002
-c-0.700195 -6.5 -6.7002 -9.2998 -10.5996 -9.2998c-5.80078 0 -9.60059 4.09961 -10.6006 8.89941l-11.0996 76.4004c-2 -4 -3.5 -8.40039 -11.1006 -8.40039h-51.3994v21.3008h44.7998l13.7002 27.8994c4.39941 9.90039 18.2002 7.2002 19.8994 -2.7002l3.10059 -20.3994
-l8.39941 97.8994c0 6 4.80078 10.6006 10.6006 10.6006c0.5 0 10.5996 0.200195 10.5996 -12.4004l4.90039 -69.0996l6.59961 92.5996c0 10.1006 9.5 10.6006 10.2002 10.6006c0.599609 0 10.5996 -0.700195 10.5996 -10.6006l5.30078 -80.5996l6.19922 97.8994
-c0.100586 1.10059 -0.599609 10.3008 9.90039 11.5z" />
-    <glyph glyph-name="creative-commons-sampling-plus" unicode="&#xf4f1;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8
-c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM355.4 189.7l58.3994 0.299805v-23.2002h-50.5l-18 -43.3994c-4.59961 -11 -20.8994 -8.7002 -22.2998 3.09961l-2.7002 22.2998l-6.7998 -83
-c-1.09961 -14.0996 -22 -14.2002 -23.0996 0.100586l-4.90039 64.3994l-4.59961 -58.5996c-1.10059 -14.2998 -22.3008 -14.1006 -23.2002 0.200195l-4.5 71.7998l-4.90039 -80.5c-0.899414 -14.5 -22.2998 -14.5 -23.2002 -0.100586l-4.7998 73.3008l-4.59961 -70.4004
-c-0.900391 -14.2998 -22.1006 -14.5 -23.2002 -0.0996094l-5.7002 78.2998l-3.7998 -43.6006c-1.2002 -13.6992 -21.0996 -14.1992 -23.0996 -0.699219l-10.7002 73.0996c-2 -3.90039 -6 -6.40039 -10.4004 -6.40039h-51.2998v23.2002h43.9004l13.1992 27.7002
-c4.90039 10.2998 20.3008 8.09961 22 -3.2998l1.80078 -12.2002l7.69922 89.7998c1.2002 14.1006 22.1006 14.1006 23.2002 -0.200195l4.10059 -57l5.2998 80.2002c1 14.4004 22.2998 14.4004 23.2002 0l4.2998 -66.2998l5.09961 83.7002
-c0.900391 14.3994 22.2998 14.5 23.2002 0l5.90039 -94.2998l3.5 44.8994c1.09961 14.2002 22.0996 14.2998 23.1992 0l5.2002 -68.7998l4.2998 51.4004c1.10059 13.7998 21.4004 14.2998 23.1006 0.399414l11 -92.7998l4 9.5c1.7002 4.40039 6 7.2002 10.7002 7.2002z
-M277.4 184.5c4.09961 0 7.5 3.40039 7.5 7.5c0 4.2002 -3.40039 7.5 -7.5 7.5h-21.9004v21.9004c0 4.19922 -3.40039 7.5 -7.5 7.5s-7.5 -3.40039 -7.5 -7.5v-21.9004h-21.9004c-4.09961 0 -7.5 -3.40039 -7.5 -7.5c0 -4.2002 3.40039 -7.5 7.5 -7.5h21.9004v-21.9004
-c0 -4.19922 3.40039 -7.5 7.5 -7.5c4.2002 0 7.5 3.40039 7.5 7.5v21.9004h21.9004z" />
-    <glyph glyph-name="creative-commons-share" unicode="&#xf4f2;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8
-c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM349.4 262.9c7.7998 0 13.6992 -6.10059 13.6992 -13.7002v-182.5c0 -7.7002 -6.09961 -13.7002 -13.6992 -13.7002h-135.101c-7.7002 0 -13.7002 6 -13.7002 13.7002v54h-54
-c-7.7998 0 -13.6992 6 -13.6992 13.7002v182.5c0 8.19922 6.59961 12.6992 12.3994 13.6992h136.4c7.7002 0 13.7002 -6 13.7002 -13.6992v-54h54zM159.9 147.7h40.6992v101.399c0 7.40039 5.80078 12.6006 12 13.7002h55.8008v40.2998h-108.5v-155.399zM336.1 235.8h-108.5
-v-155.399h108.5v155.399z" />
-    <glyph glyph-name="creative-commons-zero" unicode="&#xf4f3;" horiz-adv-x="496" 
-d="M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8
-c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM248 334.8c81.9004 0 102.5 -77.2998 102.5 -142.8s-20.5996 -142.8 -102.5 -142.8s-102.5 77.2998 -102.5 142.8s20.5996 142.8 102.5 142.8zM248 280.9
-c-42.0996 0 -44.0996 -60.1006 -44.0996 -88.9004c0 -9.2998 0.199219 -21.7002 1.89941 -34.4004l54.5 100.2c5.7002 9.7998 2.7998 16.7998 -3.09961 21.9004c-2.7998 0.700195 -5.90039 1.2002 -9.2002 1.2002zM288.8 234.7l-60.8994 -105.2
-c-12.5 -18.7002 6.59961 -26.4004 20.0996 -26.4004c42.0996 0 44.0996 60 44.0996 88.9004c0 11.2998 -0.399414 27.2998 -3.2998 42.7002z" />
-    <glyph glyph-name="ebay" unicode="&#xf4f4;" horiz-adv-x="640" 
-d="M606 258.5h34l-99.2002 -194.8h-35.8994l28.5 54.0996l-61.5 116.101c3.09961 -6.60059 4.7998 -14.5 4.7998 -23.8008v-65.5996c0 -9.2998 0.299805 -18.5996 1 -26.7998h-29.7998c-0.800781 6.89941 -1.10059 13.5996 -1.10059 20.2002
-c-16.0996 -19.8008 -35.2998 -25.5 -61.8994 -25.5c-39.5 0 -60.6006 20.8994 -60.6006 45c0 3.19922 0.200195 6.19922 0.700195 9c-8.40039 -32.3008 -36.4004 -54.2002 -73.2998 -54.2002c-23.2998 0 -45.1006 8.2998 -58.7002 24.8994
-c0 -6.59961 -0.400391 -13.1992 -1.09961 -19.5h-31.5c0.5 10.2002 1.09961 22.8008 1.09961 33.1006v169.5h32.0996v-80.6006c15.7002 18.7002 37.4004 24.2002 58.7002 24.2002c35.7002 0 75.4004 -24.0996 75.4004 -76.2002c0 -5.59961 -0.5 -11 -1.5 -16.1992
-c7.09961 24.3994 34.2998 33.5 76.7002 34.3994c13.6992 0.299805 29 0.400391 41.6992 0.400391v3.39941c0 23.4004 -15 33 -41 33c-19.2998 0 -33.5996 -8 -35 -21.7998h-33.6992c3.59961 34.4004 39.6992 43.1006 71.5 43.1006c27.3994 0 51.7998 -7 63.2998 -26
-l-10.9004 20.5996h37.5l54.9004 -109.9zM243.7 134.2c29.7998 0 50.2002 21.5 50.2002 53.7998c0 32.4004 -20.4004 53.7998 -50.2002 53.7998c-29.6006 0 -50.2002 -21.3994 -50.2002 -53.7998c0 -32.2998 20.5996 -53.7998 50.2002 -53.7998zM444.6 181.5v3.2998
-c-11.7998 0 -26.2998 -0.0996094 -39.3994 -0.599609c-29.1006 -0.900391 -47.2002 -6.2002 -47.2002 -25.2998c0 -12.4004 9.90039 -25.8008 35 -25.8008c33.7002 0 51.5996 18.4004 51.5996 48.4004zM32.7002 179.9c3.5 -58.3008 79.2002 -57.4004 91.2002 -21.6006
-h33.0996c-6.40039 -34.3994 -43 -46.0996 -74.4004 -46.0996c-57.1992 0 -82.5 31.5 -82.5 74c0 46.7998 26.2002 77.5996 83 77.5996c45.3008 0 78.4004 -23.7002 78.4004 -75.3994v-8.5h-128.8zM127.7 201.3c-2.2998 54.7002 -87.5 56.6006 -94.4004 0h94.4004z" />
-    <glyph glyph-name="keybase" unicode="&#xf4f5;" 
-d="M286.17 29c9.93457 0 18 -8.06543 18 -18s-8.06543 -18 -18 -18s-18 8.06543 -18 18s8.06543 18 18 18zM398.09 176.6c22.9102 -33.46 35.9102 -72.3398 35.9102 -110.92c0 -31.6797 -5 -60.6797 -14.5996 -86.2295
-c-3.04004 -8.0498 -10.9502 -12.7197 -18.3701 -11.1504c-6.83984 1.24023 -11.1201 9.28027 -8.60059 15.7402c11.1904 28.71 14.8799 58.3398 14.8799 81.6396c-0.0634766 9.75 -1.02246 19.1807 -2.7998 28.4307c-0.649414 -1.06055 -1.12988 -2.2207 -1.84961 -3.2207
-c-17.29 -24.5293 -50.54 -33.8896 -84.7402 -23.8398c-78.8701 23.1699 -178.02 3.81055 -236.25 -38.5898l24.6602 74.1104l-46.8203 -59.8301c2.4834 -18.6582 7.96191 -36.7539 15.7598 -53.1299c6.25 -13.1904 0.460938 -18.2402 -3.75 -20.1104
-c-4.76953 -2.12012 -13.8594 -2.7998 -19.6396 7.33008c-6.41504 11.584 -11.4131 24.3486 -14.5596 37.5596l-23.3203 -29.7998v33.6406c0 55.7695 0 125.109 62.6504 188.409c13.7461 13.917 29.1787 25.7891 46.29 35.54l-8.93066 0.540039
-c-27.8799 1.64062 -49.2402 24.8506 -47.6299 51.8506l2.36035 36.6797c0 -6.24023 0.139648 45.8799 50.75 45.8799c2.05957 0 -0.470703 0.120117 41.0596 -2.33008c2.82715 -0.19043 5.60742 -0.616211 8.29004 -1.25c7.41992 11.3398 15.6504 22.8301 24.3398 34.8906
-l5.48047 7.55957l22.8994 -13.5195c-11.29 -24 -10 -33 -9.39941 -35c9.08008 0.229492 20 -1.6709 32.4102 -5.77051c31.2002 -10.3584 53.6846 -39.8262 53.6846 -74.4844c0 -10.4883 -2.0625 -20.498 -5.80469 -29.6455
-c6.18652 -2.13965 12.3135 -4.56348 18.3799 -7.27051c47.8896 -21.2598 77.7598 -59.0898 87.2598 -73.71zM142.37 319.42c1.87695 6.54492 4.25684 13.041 7 19.1699l-29.1104 1.73047c0.610352 -0.0507812 -12.2598 0.849609 -13.2598 -11.3203l-2.41016 -36.6602
-c-0.00683594 -0.174805 -0.00292969 -0.34375 -0.00292969 -0.520508c0 -6.60449 5.22461 -11.998 11.7627 -12.2695l22.3809 -1.33984c-0.457031 3.73438 -0.692383 7.34863 -0.692383 11.2061c0 2.81836 0.125977 5.6084 0.37207 8.36426l-13.1299 0.779297l1.38965 21.79
-zM290.79 147.24c2.27441 1.75195 3.72949 4.50586 3.72949 7.59668c0 2.19922 -0.742188 4.22559 -1.98926 5.84277l-81.0898 96.3203c-1.9043 2.21094 -4.72949 3.60156 -7.87305 3.60156c-2.42578 0 -4.65918 -0.833984 -6.42773 -2.23145
-c-2.27344 -1.74805 -3.72754 -4.49902 -3.72754 -7.58594c0 -2.19531 0.741211 -4.21973 1.98828 -5.83398c0.0898438 -0.140625 18.5996 -22.1406 18.5996 -22.1406l-16.9102 -13.29c-1.75879 -1.34863 -2.88477 -3.47461 -2.88477 -5.86133
-c0 -1.68359 0.564453 -3.23633 1.51465 -4.47852c0.0800781 -0.109375 2.37988 -2.91113 3.7998 -4.5293c1.4209 -1.61914 3.50977 -2.63477 5.83105 -2.63477c1.79395 0 3.44531 0.610352 4.75977 1.63477l17.0898 13.4492l14.1396 -16.7393l-34.5703 -27.1807
-c-1.74805 -1.34961 -2.86621 -3.46875 -2.86621 -5.84668c0 -1.69043 0.569336 -3.24805 1.52637 -4.49316l15.7803 -18.6396c1.48438 -1.72363 3.68555 -2.80762 6.13574 -2.80762c1.88379 0 3.61816 0.645508 4.99414 1.72754l34.4199 27l9.68066 -11.4902
-c1.92676 -2.2041 4.76465 -3.58789 7.91992 -3.58789c2.4209 0 4.65234 0.820312 6.42969 2.19824zM187.44 29c9.93359 0 18 -8.06543 18 -18s-8.06641 -18 -18 -18c-9.93457 0 -18 8.06543 -18 18s8.06543 18 18 18z" />
-    <glyph glyph-name="mastodon" unicode="&#xf4f6;" 
-d="M433 268.89c0 0 0.799805 -71.6992 -9 -121.5c-6.23047 -31.5996 -55.1104 -66.1992 -111.23 -72.8994c-20.0996 -2.40039 -93.1191 -14.2002 -178.75 6.7002c0 -0.116211 -0.00390625 -0.119141 -0.00390625 -0.235352c0 -4.63281 0.307617 -9.19434 0.904297 -13.665
-c6.62988 -49.5996 49.2197 -52.5996 89.6299 -54c40.8105 -1.2998 77.1201 10.0996 77.1201 10.0996l1.7002 -36.8994s-28.5098 -15.2998 -79.3203 -18.1006c-28.0098 -1.59961 -62.8193 0.700195 -103.33 11.4004c-112.229 29.7002 -105.63 173.4 -105.63 289.1
-c0 97.2002 63.7197 125.7 63.7197 125.7c61.9209 28.4004 227.96 28.7002 290.48 0c0 0 63.71 -28.5 63.71 -125.7zM357.88 143.69c0 122 5.29004 147.71 -18.4199 175.01c-25.71 28.7002 -79.7197 31 -103.83 -6.10059l-11.5996 -19.5l-11.6006 19.5
-c-24.0098 36.9004 -77.9297 35 -103.83 6.10059c-23.6094 -27.1006 -18.4092 -52.9004 -18.4092 -175h46.7295v114.2c0 49.6992 64 51.5996 64 -6.90039v-62.5098h46.3301v62.5c0 58.5 64 56.5996 64 6.89941v-114.199h46.6299z" />
-    <glyph glyph-name="r-project" unicode="&#xf4f7;" horiz-adv-x="581" 
-d="M581 221.4c0 -54.8008 -33.9004 -104.301 -88.4004 -139.7l67.4004 -113.7h-112l-40.0996 75.4004c-21.8008 -6.5 -45.1006 -11.2002 -69.4004 -13.9004v-61.5h-99.0996v61.9004c-136.101 16.0996 -239.4 95.6992 -239.4 191.5c0 107.5 130.1 194.6 290.5 194.6
-s290.5 -87.0996 290.5 -194.6zM114.2 206.9c0 -52.8008 51.0996 -98.4004 125.2 -119.9v208.3h199s90.5996 -1.59961 90.5996 -87.8994c0 -86.3008 -86.5996 -92.7002 -86.5996 -92.7002s17.5996 -5.2998 27.7998 -10.5c1.7002 -0.799805 4 -2.10059 6.39941 -3.7002
-c43.8008 21.4004 70.3008 56.2998 70.3008 106.4c0 92.2998 -90 133 -211.9 133s-220.8 -59.5 -220.8 -133zM339.3 168.6c49.6006 0 87.7998 -8.19922 87.7998 28.3008c0 34.0996 -30 27.2998 -87.7998 27.2998v-55.6006zM338.4 96.0996v-22.0996
-c17.5996 0.0996094 34.5 1 50.5996 2.90039c-5.09961 7.5 -13.2002 19.1992 -24 19.1992h-26.5996z" />
-    <glyph glyph-name="researchgate" unicode="&#xf4f8;" 
-d="M0 416h448v-448h-448v448zM262.2 81.5996v7.30078c-10 0 -20 6.89941 -27.2002 14.6992c-12.2002 13.3008 -28.5996 34.7002 -42.2002 58.9004c22.5 5.2998 39.2002 26.4004 39.2002 47.5c0 31.2002 -24.2002 45.5996 -55.9004 45.5996
-c-17.7998 0 -45.0996 -1.59961 -70.8994 -0.599609v-8.09961c15.5996 -2.90039 22 -1.30078 22 -23.9004v-109.4c0 -22.5996 -6.5 -21 -22 -23.8994v-8.10059c7.5 0.200195 20.5 0.800781 33.5996 0.800781c12.5 0 28.7002 -0.5 35.6006 -0.800781v8.10059
-c-19.8008 2.7002 -25.8008 0.399414 -25.8008 23.8994v46.4004c6.7002 -0.599609 12.5 -0.599609 21.4004 -0.599609c16.9004 -30.3008 33 -53 42.2002 -63.6006c16.7998 -20.2002 43.3994 -17.2002 50 -14.2002zM285.1 216.6c38.7002 0 34 29.4004 34 49.9004h-30.3994
-v-10.7002h17.8994c0 -15.8994 -7.39941 -26.7998 -21.5 -26.7998c-11.2998 0 -17.8994 9.90039 -17.8994 23.2998v26.7998c0 12.4004 11.7998 19.7002 19.7002 19.7002c14.1992 0 19.6992 -12.5 19.6992 -12.5l10.7002 7.2002s-5.2002 17.9004 -30.3994 17.9004
-c-25.2002 0 -34 -18.2002 -34 -30.4004v-32.2002c0 -16.5 8.89941 -32.2002 32.1992 -32.2002zM168.6 171.9c-9.39941 0 -13.5996 0.299805 -20 0.799805v69.7002c6.40039 0.599609 15 0.599609 22.5 0.599609c23.3008 0 37.2002 -12.2002 37.2002 -34.5
-c0 -21.9004 -15 -36.5996 -39.7002 -36.5996z" />
-    <glyph glyph-name="teamspeak" unicode="&#xf4f9;" horiz-adv-x="512" 
-d="M244.2 101.21c-2.40039 -12.5 -10.6006 -20 -22.5 -24.2998c-9.2002 -3.2002 -50.1006 -1.60059 -61.7002 -1c-18 1.2998 -33.2002 8.5 -43.4004 24c-14.5 22.5 -19.5 47.7002 -14.5 73.8994c4.60059 24.5 24.6006 34.7002 46.3008 22.7002
-c15.1992 -7.5 42.5 -27.3994 63.3994 -46.5996c20.4004 -18.7002 34.7998 -36.4004 32.4004 -48.7002zM449.2 80.4102c6.7002 -5.41016 11.2002 -22 11.5996 -32.1006c1 -50.3994 -23.8994 -68 -46.5996 -85.3994c-65.1006 -50 -295.101 -16.9004 -145.4 -6.40039
-c127.4 9 164.101 96.1006 172.101 121.5c0.679688 2.0918 2.64941 3.60352 4.9668 3.60352c1.2666 0 2.42871 -0.452148 3.33301 -1.20312zM511.2 202.81c0 -17.1992 1.89941 -34.5996 -1 -51.6992c-4 -24.7002 -29.1006 -41.7002 -53.2002 -36.7002
-c-7.2002 1.7002 -9.40039 7.2002 -9.40039 14.2002c0 28.0996 0.800781 56.3994 0 84.5996c-1.89941 75.79 -36.1992 132.79 -102.3 169.4c-111 60.3896 -253.2 -7 -277.8 -131.5c-6.09961 -30.4004 -1.7002 -48.3008 -3.7002 -125.801
-c-0.299805 -7.19922 -4.2998 -11.1992 -12 -11.5c-30.7998 -1.39941 -51.7998 18.2002 -51.7998 49v20.9004l0.799805 26.4902c2.40039 15.5 10.7002 27 24.9004 34c3.5 1.7998 5.7002 3.5 6.39941 7.7998c6.10059 33.4102 19.5 64 39.3008 91.71
-c2.2998 3.09961 4 5.2998 1 9.2998c-3.7002 5.40039 -1 10.2002 3 14.5c28.0996 31.7998 61.8994 55.1006 102 67.4004c96 29.4668 180.1 9.29688 252.3 -60.5098c6.7002 -6.40039 15.5 -12.9004 7 -24.4004c-1.2998 -1.7998 1.09961 -3.5 2.2002 -5
-c20.0586 -27.0264 34.2529 -59.1357 40.3994 -93.5898c0.900391 -3.7002 3 -5.10059 5.90039 -6.40039c17.3994 -8.7998 25.7002 -23.2998 26 -42.2002zM351.6 71.3096l-51.5996 7.7002c-22.7998 5.90039 -51 32.7002 22.2002 60.7998
-c21.5996 8.5 85.7002 37.2002 87.7998 -8c0.900391 -32 -21.9004 -63.2998 -58.4004 -60.5z" />
-    <glyph glyph-name="first-order-alt" unicode="&#xf50a;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -48.21c132.66 0 240.21 107.55 240.21 240.21s-107.55 240.21 -240.21 240.21s-240.21 -107.55 -240.21 -240.21s107.55 -240.21 240.21 -240.21z
-M248 411.71c121.34 0 219.71 -98.3701 219.71 -219.71s-98.3701 -219.71 -219.71 -219.71s-219.71 98.3701 -219.71 219.71s98.3701 219.71 219.71 219.71zM248 -19.5098c116.81 0 211.51 94.7002 211.51 211.51s-94.7002 211.51 -211.51 211.51
-s-211.51 -94.6895 -211.51 -211.51s94.7002 -211.51 211.51 -211.51zM434.23 143.47c-4.46582 -17.1914 -11.3633 -33.7256 -20.1309 -48.6895l-74.1299 35.8799l61.4805 -54.8203c-10.709 -14.1553 -23.0713 -26.5469 -37.2002 -37.29l-54.7998 61.5703l35.8799 -74.2705
-c-14.9385 -8.80469 -31.4502 -15.7354 -48.6299 -20.2295l-27.29 78.4697l4.79004 -82.9297c-8.61035 -1.17969 -17.4004 -1.7998 -26.3301 -1.7998s-17.7197 0.620117 -26.3301 1.7998l4.75977 82.46l-27.1494 -78.0303
-c-17.1836 4.48828 -33.7021 11.4092 -48.6504 20.2002l35.9297 74.3398l-54.8701 -61.6396c-14.1318 10.7412 -26.5 23.1299 -37.2197 37.2793l61.5898 54.9004l-74.2598 -35.9297c-8.77051 14.9639 -15.6709 31.4971 -20.1396 48.6895l77.8398 27.1104l-82.2305 -4.75977
-c-1.15918 8.56934 -1.7793 17.3193 -1.7793 26.21c0 9 0.629883 17.8398 1.81934 26.5098l82.3799 -4.76953l-77.9395 27.1592c4.5 17.1895 11.4307 33.7148 20.2295 48.6699l74.2207 -35.9199l-61.5205 54.8604c10.7412 14.1328 23.1299 26.501 37.2803 37.2197
-l54.7598 -61.5293l-35.8301 74.1699c14.9521 8.76465 31.4717 15.6621 48.6504 20.1299l26.8701 -77.25l-4.70996 81.6094c8.60938 1.18066 17.3896 1.80078 26.3193 1.80078c8.93066 0 17.71 -0.620117 26.3203 -1.80078l-4.74023 -82.1592l27.0498 77.7598
-c17.2705 -4.5 33.6006 -11.3506 48.6309 -20.1699l-35.8203 -74.1201l54.7197 61.4697c14.1426 -10.7178 26.5186 -23.0908 37.2402 -37.2295l-61.4502 -54.7705l74.1201 35.8604c8.78906 -14.9492 15.71 -31.4678 20.2002 -48.6504l-77.8105 -27.0996l82.2402 4.75
-c1.19043 -8.66016 1.82031 -17.5 1.82031 -26.4902c0 -8.87988 -0.610352 -17.6299 -1.78027 -26.1904l-82.1201 4.75z" />
-    <glyph glyph-name="fulcrum" unicode="&#xf50b;" horiz-adv-x="320" 
-d="M95.75 283.86l-35.3799 -43.5508l-35.3701 43.5508l35.3799 43.5498zM144.23 448v-211.11l-41.0801 -44.8896l41.0801 -44.8896v-211.11l-20.5107 198.18l-51 57.8203l50.9707 57.8203zM223.9 283.86l35.3799 43.5498l35.3799 -43.5498l-35.3799 -43.5508zM175.42 236.86
-v211.14l20.5801 -198.18l51 -57.8203l-51 -57.8203l-20.5801 -198.18v211.11l41.0801 44.8896z" />
-    <glyph glyph-name="galactic-republic" unicode="&#xf50c;" horiz-adv-x="496" 
-d="M248 -56c-136.75 0 -248 111.25 -248 248s111.25 248 248 248s248 -111.25 248 -248s-111.25 -248 -248 -248zM248 423.47c-127.63 0 -231.47 -103.84 -231.47 -231.47s103.84 -231.47 231.47 -231.47s231.47 103.84 231.47 231.47s-103.84 231.47 -231.47 231.47z
-M275.62 401.66c37.6602 -4.91016 72.21 -19.7402 100.96 -41.7998l-17.3896 -17.3604c-23.9795 17.7627 -52.7207 29.9941 -83.5703 34.54v24.6201zM220.25 401.59v-24.54c-30.9697 -4.60938 -59.4502 -16.8301 -83.5195 -34.6699h-0.0800781l-17.2803 17.3604
-c28.7197 22.0498 63.2402 36.9102 100.88 41.8496zM232.5 351.42h31v-82.8604c10.0498 -2.0293 19.3701 -6.00977 27.6201 -11.5l58.6699 58.6709l21.9297 -21.9307l-58.6699 -58.6699c5.46973 -8.24023 9.48047 -17.5996 11.5 -27.6201h82.8701v-31h-82.8701
-c-2.03027 -10.0195 -6.04004 -19.3096 -11.5 -27.54l58.6699 -58.6895l-21.9297 -21.9307l-58.6699 58.6904c-8.25 -5.49023 -17.5703 -9.52051 -27.6201 -11.5498v-82.9004h-31v82.9004c-10.0039 2.02148 -19.4531 6.00977 -27.6699 11.4697l-58.6201 -58.6201
-l-21.9297 21.9297l58.6699 58.6904c-5.45996 8.23047 -9.4502 17.5205 -11.4697 27.54h-82.9004v31h82.9004c2.01953 10.0303 6 19.3896 11.4697 27.6201l-58.6699 58.6699l21.9297 21.9297l58.6201 -58.5898c8.25 5.48047 17.6299 9.38965 27.6699 11.4199v82.8701z
-M415.74 320.7c22.0996 -28.7402 36.9795 -63.3398 41.9297 -101.03h-24.6201c-4.58496 30.8906 -16.8604 59.665 -34.6699 83.6699zM80.1904 320.57l17.3896 -17.3906c-17.8301 -24.0693 -29.9902 -52.5596 -34.5898 -83.5195h-24.6504
-c4.94043 37.6494 19.79 72.1895 41.8506 100.91zM38.3398 164.33l24.6504 0.00976562c4.58984 -30.9502 16.7002 -59.4502 34.5098 -83.5195l-17.3604 -17.3906c-22.0498 28.7207 -36.8799 63.2607 -41.7998 100.9zM433.04 164.33h24.6201
-c-4.9502 -37.6699 -19.8506 -72.2197 -41.9297 -100.96l-17.3604 17.3604c17.8701 24.0996 30.0596 52.6094 34.6699 83.5996zM136.66 41.6201c24.0703 -17.8604 52.6094 -30.0205 83.5996 -34.6504v-24.6396c-37.6602 4.9502 -72.2295 19.8398 -100.96 41.9297z
-M359.19 41.5703h0.0791016l17.3105 -17.3906c-28.75 -22.0596 -63.29 -36.9297 -100.96 -41.8496v24.5703c30.9902 4.58984 59.4795 16.8301 83.5703 34.6699z" />
-    <glyph glyph-name="galactic-senate" unicode="&#xf50d;" horiz-adv-x="512" 
-d="M249.86 414.52h12.2793v-26.0693c13.5801 -20.6201 23.8604 -108.59 24.4902 -215.351c-11.7402 15.6201 -19.1299 33.3301 -19.1299 48.2402v16.8799c0.0302734 5.32031 -0.75 10.5303 -2.19043 15.6504c-0.649414 2.13965 -1.38965 4.07031 -2.61914 5.82031
-c-1.23047 1.73926 -3.44043 3.79004 -6.68066 3.79004c-3.25 0 -5.4502 -2.04004 -6.67969 -3.79004c-1.23047 -1.74023 -1.96973 -3.68066 -2.62012 -5.82031c-1.44043 -5.12012 -2.21973 -10.3301 -2.19043 -15.6504v-16.8799
-c0 -14.9102 -7.38965 -32.6201 -19.1299 -48.2402c0.610352 106.761 10.8906 194.73 24.4707 215.351v26.0693zM223.52 266.75c-1.59961 -22.4004 -2.75 -46.5195 -3.47949 -72.0703c-23.2998 -11.2793 -40.7705 -33.1602 -46.3203 -59.5098
-c-7.71973 -2.25977 -22.71 -3.91992 -40.4893 -4.21973c-7.51074 3.66016 -16.5 5.85938 -26.1807 6.04004c1.90039 14.9102 5.87012 29.1699 11.6504 42.4199c15.4395 -8.10059 30.9297 -8.66016 35.4697 -0.959961c4.57031 7.74023 -3.58984 21.04 -18.3203 30.6602
-c8.68066 11.7695 18.9805 22.2998 30.5605 31.0898c9.50977 -15.5898 23.3594 -24.4404 31.3594 -19.8203c8.05078 4.65039 7.19043 21.1699 -1.70996 37.29c8.76074 3.88965 17.9404 6.92969 27.46 9.08008zM288.48 266.75
-c9.45508 -2.12695 18.7754 -5.23145 27.4492 -9.08008c-8.89941 -16.1299 -9.75977 -32.6396 -1.70996 -37.29c8 -4.62012 21.8506 4.23047 31.3604 19.8203c11.5801 -8.79004 21.8799 -19.3203 30.5596 -31.0898c-14.7197 -9.61035 -22.8896 -22.9199 -18.3193 -30.6602
-c4.54004 -7.7002 20.0293 -7.14062 35.4697 0.959961c5.79004 -13.25 9.75 -27.5098 11.6504 -42.4199c-9.68066 -0.19043 -18.6709 -2.37988 -26.1807 -6.04004c-17.7793 0.299805 -32.7695 1.95996 -40.4902 4.21973c-5.5498 26.3496 -23.0293 48.2305 -46.3193 59.5098
-c-0.719727 25.5508 -1.87988 49.6699 -3.46973 72.0703zM256 258.15c3.23047 0 5.86035 -8.81055 6.08984 -19.9307h0.0498047v-16.8799c0 -41.4199 49.0107 -95.04 93.4902 -95.04c52 0 122.76 1.4502 156.37 -29.1699v-2.50977
-c-9.41992 -17.1104 -20.5801 -33.1699 -33.1797 -47.9697c-12.5303 21.0898 -51.5898 40.96 -108.021 41.3496c-45.6797 -1.01953 -79.0195 -20.3301 -90.7598 -40.8701c-0.00976562 -0.00976562 0.00976562 -0.0400391 0 -0.0498047
-c-7.66992 -2.13965 -15.8496 -3.23047 -24.04 -3.20996c-8.19043 -0.0205078 -16.3701 1.07031 -24.04 3.20996c-0.00976562 0.00976562 0.00976562 0.0400391 0 0.0498047c-11.7295 20.54 -45.0801 39.8506 -90.7598 40.8701
-c-56.4307 -0.400391 -95.5 -20.2598 -108.021 -41.3496c-12.5996 14.7998 -23.7598 30.8496 -33.1797 47.9697v2.50977c33.6201 30.6201 104.37 29.1699 156.37 29.1699c44.4795 0 93.4902 53.6201 93.4902 95.04v16.8799h0.0498047
-c0.229492 11.1201 2.85938 19.9307 6.08984 19.9307zM256 161.56c-22.4199 0 -40.5996 -18.1797 -40.5996 -40.5996s18.1797 -40.6504 40.5996 -40.6504s40.5996 18.2305 40.5996 40.6504s-18.1797 40.5996 -40.5996 40.5996zM256 153.92
-c18.1904 0 32.96 -14.7695 32.96 -32.96s-14.7695 -32.96 -32.96 -32.96s-32.96 14.7695 -32.96 32.96s14.7695 32.96 32.96 32.96zM256 147.78c-14.8096 0 -26.8203 -12.0107 -26.8203 -26.8203s12.0107 -26.8203 26.8203 -26.8203s26.8203 12.0107 26.8203 26.8203
-s-12.0107 26.8203 -26.8203 26.8203zM141.2 81.1104c18.75 -0.419922 35.1895 -4.18066 48.6094 -9.66992c12.5508 -16.0303 29.1602 -30.04 49.5801 -33.0703c0.100586 -0.00976562 0.169922 -0.0302734 0.270508 -0.0498047
-c0.0498047 -0.0107422 0.109375 -0.0400391 0.160156 -0.0507812c5.23926 -1.06934 10.6396 -1.59961 16.1895 -1.59961c5.56055 0 10.9502 0.530273 16.1904 1.59961c0.0498047 0.0107422 0.109375 0.0400391 0.160156 0.0507812
-c0.0996094 0.00976562 0.179688 0.0292969 0.269531 0.0498047c20.4199 3.04004 37.04 17.04 49.5801 33.0703c13.4199 5.5 29.8496 9.25 48.6104 9.66992c10.1797 -0.0800781 21.5996 -0.360352 30.5 -1.66016c-0.430664 -4.41992 -1.51074 -18.6299 -7.11035 -29.7598
-c-9.11035 2.55957 -18.3604 3.89941 -27.6201 3.89941c-41.2803 -0.939453 -71.4795 -34.3496 -78.2598 -74.4697l-0.110352 -4.7002c-10.3994 -1.91992 -21.1797 -2.93945 -32.21 -2.93945c-11.0195 0 -21.8096 1.0293 -32.21 2.93945l-0.109375 4.7002
-c-6.78027 40.1201 -36.9805 73.5303 -78.2607 74.4697c-9.25977 0 -18.5098 -1.33984 -27.6201 -3.89941c-5.59961 11.1299 -6.67969 25.3398 -7.10938 29.7598c8.89941 1.2998 20.3096 1.58984 30.5 1.66016z" />
-    <glyph glyph-name="jedi-order" unicode="&#xf50e;" 
-d="M398.5 74.4004c0 0 26.2998 16.1992 49.9004 77.6992c0 0 -17 -183.3 -222 -185.699h-4.10059c-205.1 2.39941 -222 185.699 -222 185.699c23.2002 -61.5996 49.4004 -77.6992 49.4004 -77.6992c-95.9004 122.1 -17.2002 233.1 -17.2002 233.1
-c-45.4004 -85.7002 41.4004 -170.5 41.4004 -170.5c-105 171.6 60.5 271.5 60.5 271.5c-96.9004 -72.5996 10.0996 -190.7 10.0996 -190.7c-85.7998 -158.399 68.5996 -230.1 68.5996 -230.1s0.400391 16.8994 2.2002 85.7002l-34.5 -36.2002l24.2002 47.3994
-l-62.5996 9.10059l62.5996 9.09961l-20.2002 55.5l31.4004 -45.8994c2.2998 87.8994 7.89941 305.899 7.89941 306.899v2.40039v-1v1v-2.40039c0.100586 -1.7998 5.7002 -219.2 7.90039 -306.899l31.4004 45.8994l-20.2002 -55.5l62.5996 -9.09961l-62.5996 -9.10059
-l24.2002 -47.3994s-30.2002 31.7002 -34.5 36.2002c1.7998 -68.8008 2.19922 -85.7002 2.19922 -85.7002s154.4 71.7002 68.6006 230.1c0 0 107 118 10.0996 190.7c0 0 165.5 -100 60.5 -271.5c0 0 86.7998 84.7002 41.4004 170.5c0 0 78.7002 -111 -17.2002 -233.1z" />
-    <glyph glyph-name="mandalorian" unicode="&#xf50f;" 
-d="M232.27 -63.8896c-1 3.25977 -1.68945 15.8301 -1.38965 24.5801c0.549805 15.8896 1 24.7197 1.40039 28.7598c0.639648 6.2002 2.87012 20.7197 3.2793 21.3799c0.600586 1 0.400391 27.8701 -0.239258 33.1299c-0.310547 2.58008 -0.629883 11.9004 -0.69043 20.7305
-c-0.129883 16.4697 -0.530273 20.1191 -2.72949 24.7598c-1.10059 2.31934 -1.23047 3.83984 -1 11.4297c0.0546875 1.30957 0.0830078 2.62695 0.0830078 3.9502c0 3.00586 -0.142578 5.82715 -0.423828 8.75977c-2 13 -3.45996 27.7002 -3.25 33.9004
-s0.430664 7.14941 2.06055 9.66992c3.0498 4.70996 6.50977 14 8.62012 23.2695c2.25977 9.86035 3.87988 17.1807 4.58984 20.7402c1.1123 5.11914 2.61816 10.2246 4.41992 15.0498c2.26953 6.25 2.49023 15.3906 0.370117 15.3906
-c-0.299805 0 -1.37988 -1.2207 -2.41016 -2.70996c-1.03027 -1.49023 -4.75977 -4.80078 -8.29004 -7.36035c-8.37012 -6.08008 -11.7002 -9.38965 -12.6602 -12.5801s-1 -7.22949 -0.160156 -7.75977c0.34082 -0.209961 1.29004 -2.40039 2.11035 -4.87988
-c0.926758 -2.82617 1.42773 -5.84375 1.42773 -8.97754c0 -2.19824 -0.241211 -4.3252 -0.708008 -6.38281c-0.389648 -1.76953 -1 -5.46973 -1.45996 -8.22949c-0.459961 -2.76074 -1 -6.46094 -1.25 -8.2207c-0.181641 -1.55176 -0.731445 -3.01367 -1.5498 -4.25977
-c-1 -1 -1.13965 -0.910156 -2.0498 0.530273c-0.724609 1.4541 -1.22656 3.07324 -1.44043 4.75c-0.25 1.73926 -1.62988 7.10938 -3.08008 11.9297c-3.2793 10.9004 -3.51953 16.1504 -1 21c0.800781 1.39648 1.38086 2.96875 1.66992 4.61035
-c0 2.38965 -2.19922 5.31934 -7.40918 9.88965c-7 6.17969 -8.62988 7.91992 -10.2305 11.2998c-1.70996 3.60059 -3.05957 4.06055 -4.54004 1.54004c-1.78027 -3 -2.59961 -9.10938 -3 -22l-0.339844 -12.1895l2 -2.25c3.20996 -3.7002 12.0703 -16.4502 13.7803 -19.8301
-c3.41016 -6.74023 4.33984 -11.6904 4.41016 -23.5605c0.0693359 -11.8701 0.949219 -22.75 2 -24.71c0.359375 -0.660156 0.509766 -1.34961 0.339844 -1.51953s0.410156 -2.08984 1.29004 -4.27051c1.02539 -2.84082 1.73633 -5.8916 2.05957 -9
-c0.37207 -3.50684 0.950195 -6.99219 1.70996 -10.3701c2.23047 -9.55957 2.77051 -14.0801 2.39062 -20.1396c-0.200195 -3.26953 -0.530273 -11.0703 -0.730469 -17.3203c-1.30957 -41.7598 -1.84961 -58 -2 -61.21c-0.120117 -2 -0.389648 -11.5098 -0.599609 -21.0693
-c-0.360352 -16.3008 -1.30078 -27.3701 -2.41992 -28.6504c-0.640625 -0.729492 -8.07031 4.91016 -12.5205 9.49023c-3.75 3.87012 -4 4.79004 -2.83008 9.9502c0.700195 3 2.25977 18.29 3.33008 32.6191c0.360352 4.78027 0.80957 10.5 1 12.7109
-c0.830078 9.36914 1.66016 20.3496 2.61035 34.7793c0.55957 8.45996 1.33008 16.4404 1.71973 17.7305s0.889648 9.88965 1.12988 19.1094l0.429688 16.7705l-2.25977 4.2998c-1.71973 3.28027 -4.87012 6.94043 -13.2197 15.3398
-c-6 6.07031 -11.8398 12.2998 -12.9102 13.8506l-1.9502 2.80957l0.75 10.9004c1.08984 15.71 1.10059 48.5693 0 59.0596l-0.889648 8.7002l-3.28027 4.51953c-5.85938 8.08008 -5.7998 7.75 -6.21973 33.2705c-0.100586 6.07031 -0.379883 11.5 -0.629883 12.0596
-c-0.830078 1.87012 -3.0498 2.66016 -8.54004 3.05078c-8.86035 0.619141 -11 1.89941 -23.8506 14.5498c-6.14941 6 -12.3398 12 -13.75 13.1895c-2.80957 2.41992 -2.79004 2 -0.55957 9.62988l1.34961 4.65039l-1.68945 3
-c-0.764648 1.42578 -1.62793 2.78223 -2.58984 4.07031c-1.33008 1.50977 -5.5 10.8896 -6 13.4893c-0.100586 0.362305 -0.154297 0.743164 -0.154297 1.13672c0 1.05469 0.385742 2.02148 1.02441 2.76367c2.22949 2.86035 3.39941 5.67969 4.44922 10.7305
-c2.33008 11.1895 7.74023 26.0898 10.6006 29.2197c3.17969 3.46973 7.7002 1 9.41016 -5c1.33984 -4.79004 1.36914 -9.79004 0.0996094 -18.5498c-0.53418 -3.65918 -0.869141 -7.33594 -1 -11.1104c0 -4 0.19043 -4.69043 2.25 -7.38965
-c3.33008 -4.37012 7.72949 -7.41016 15.2002 -10.5205c1.71777 -0.71582 3.30566 -1.67969 4.71973 -2.84961c11.1699 -10.7207 18.6201 -16.1807 22.9502 -16.8506c5.17969 -0.799805 8 -4.54004 10 -13.3896c1.30957 -5.65039 4 -11.1396 5.45996 -11.1396
-c1.2041 0.246094 2.3418 0.729492 3.33008 1.38965c2 1.21973 2.25 1.73047 2.25 4.17969c-0.267578 6.07031 -0.943359 12.0078 -2 17.8398c-0.370117 1.66016 -0.780273 4.06055 -0.930664 5.35059c-0.149414 1.29004 -0.609375 3.84961 -1 5.68945
-c-2.5498 11.1602 -3.64941 15.46 -4.09961 16c-1.5498 2 -4.08008 10.2002 -4.92969 15.9209c-1.64062 11.1094 -4 14.2295 -12.9102 17.3896c-4.92969 1.81641 -9.44238 4.50195 -13.3398 7.87988c-1.15039 1 -4 3.21973 -6.35059 5.05957
-c-2.34961 1.84082 -4.40918 3.53027 -4.59961 3.76074c-0.848633 0.733398 -1.73926 1.39648 -2.69043 2c-6.23926 4.21973 -8.83984 7 -11.2598 12l-2.43945 5l-0.220703 13l-0.219727 13l6.91016 6.5498c3.9502 3.75 8.47949 7.34961 10.5898 8.42969
-c3.30957 1.69043 4.4502 1.89062 11.3701 2c8.53027 0.19043 10.1201 0 11.6602 -1.55957c1.54004 -1.56055 1.35938 -6.40039 -0.290039 -8.5c-0.592773 -0.666992 -1.05273 -1.45508 -1.33984 -2.32031c0 -0.580078 -2.61035 -4.91016 -5.41992 -9
-c-1.03906 -2.12988 -1.85156 -4.44727 -2.37012 -6.82031c20.4395 -13.3896 21.5498 -3.76953 14.0693 -29l11.3604 -2.51953c3.11035 8.66016 6.46973 17.2598 8.61035 26.2197c0.290039 7.62988 -12 4.19043 -15.4004 8.68066
-c-2.33008 5.92969 3.12988 14.1797 6.05957 19.1992c1.60059 2.33984 6.62012 4.7002 8.82031 4.15039c0.879883 -0.219727 4.16016 0.349609 7.37012 1.28027c2.41992 0.759766 4.97461 1.33398 7.5498 1.67969c2.05957 0.222656 4.08984 0.666016 6 1.29004
-c3.65039 1.11035 4.5 1.16992 6.35059 0.400391c1.85156 -0.636719 3.82324 -1.10352 5.81934 -1.36035c2.12598 -0.287109 4.17285 -0.953125 6 -1.91016c1.55078 -0.908203 3.24414 -1.64746 5 -2.16992c2.51074 -0.679688 3 -0.570312 7.05078 1.66992l4.34961 2.40039
-l10.7402 0.389648c10.4395 0.400391 10.8096 0.469727 15.2598 2.67969l4.58008 2.32031l2.45996 -1.42969c1.75977 -1 3.13965 -2.73047 4.84961 -6c2.36035 -4.51074 2.37988 -4.58008 1.37012 -7.37012c-0.879883 -2.44043 -0.889648 -3.2998 -0.0996094 -6.39062
-c0.526367 -2.03027 1.24219 -4.03516 2.09961 -5.90918c0.62793 -1.22852 1.08203 -2.5918 1.31055 -4c0.30957 -4.33008 0 -5.30078 -2.41016 -6.91992c-2.16992 -1.4707 -7 -7.91016 -7 -9.34082c-0.249023 -1.03906 -0.614258 -2.05762 -1.07031 -3
-c-5 -11.5098 -6.75977 -13.5596 -14.2598 -17c-9.2002 -4.19922 -12.2998 -5.18945 -16.21 -5.18945c-3.10059 0 -4 -0.25 -4.54004 -1.25977c-1.17383 -1.44238 -2.53613 -2.67969 -4.08984 -3.70996c-1.82715 -1.21973 -3.32031 -2.84668 -4.37988 -4.78027
-c-0.486328 -1.22852 -1.36426 -2.24707 -2.49023 -2.91016c-0.941406 -0.387695 -1.77246 -0.97168 -2.4502 -1.70996c-2.22168 -1.9502 -4.53613 -3.73047 -7 -5.37988c-3.33008 -2.33984 -6.87012 -5 -7.87012 -6c-0.666992 -0.71875 -1.47168 -1.29688 -2.37988 -1.7002
-c-0.837891 -0.376953 -1.5625 -0.941406 -2.12988 -1.65039c-1.31055 -1.38965 -1.49023 -2.10938 -1.13965 -4.59961c0.310547 -2.00488 0.795898 -3.99707 1.41992 -5.87988c1.31934 -3.7998 1.30957 -7.86035 0 -10.5703
-c-1.31055 -2.70996 -0.890625 -6.64941 1.34961 -9.58984c2 -2.62988 2.16016 -4.55957 0.709961 -8.83984c-0.692383 -2.67969 -1.06152 -5.48926 -1.06152 -8.38379c0 -0.183594 -0.000976562 -0.34375 0.00195312 -0.526367
-c0 -4.87988 0.219727 -6.28027 1.45996 -8.37988c1.23926 -2.09961 1.81934 -2.48047 3.23926 -2.32031c2 0.230469 2.30078 1.0498 4.70996 12.1201c2.18066 10 3.70996 11.9199 13.7607 17.0801c2.93945 1.50977 7.45996 4 10 5.44043
-c2.54004 1.43945 6.79004 3.68945 9.37012 4.90918c5.99512 2.625 11.1807 6.62598 15.2197 11.6709c7.10938 8.78906 10 16.2197 12.8496 33.2998c0.362305 2.81152 1.37402 5.46387 2.86035 7.72949c1.39648 2.17676 2.40332 4.6748 2.88965 7.31055
-c1 5.2998 2.85059 9.08008 5.58008 11.5098c4.7002 4.17969 6 1.08984 4.58984 -10.8701c-0.459961 -3.86035 -1.09961 -10.3301 -1.43945 -14.3799l-0.610352 -7.36035l4.4502 -4.08984l4.4502 -4.08984l0.109375 -8.41992
-c0.0605469 -4.62988 0.470703 -9.53027 0.919922 -10.8896l0.820312 -2.4707l-6.42969 -6.2793c-8.54004 -8.33008 -12.8799 -13.9307 -16.7598 -21.6104c-1.77051 -3.49023 -3.74023 -7.11035 -4.38086 -8c-2.17969 -3.11035 -6.45996 -13 -8.75977 -20.2598
-l-2.29004 -7.2207l-7 -6.48926c-3.83008 -3.57031 -8 -7.25 -9.16992 -8.16992c-3.0498 -2.32031 -4.25977 -5.15039 -4.25977 -10c-0.00878906 -0.204102 -0.0126953 -0.40918 -0.0126953 -0.614258c0 -2.39062 0.583984 -4.65332 1.60254 -6.64648
-c0.789062 -1.54785 1.49512 -3.17871 2.08984 -4.83008c0.350586 -1.05859 0.887695 -2.03809 1.57031 -2.88965c1.40039 -1.58984 1.91992 -16.1201 0.830078 -23.2197c-0.679688 -4.48047 -3.62988 -12 -4.7002 -12c-1.79004 0 -4.05957 -9.27051 -5.07031 -20.7402
-c-0.179688 -2 -0.620117 -5.94043 -1 -8.7002s-1 -10 -1.34961 -16.0498c-0.770508 -12.2197 -0.19043 -18.7705 2 -23.1504c3.41016 -6.68945 0.519531 -12.6895 -11 -22.8398l-4 -3.49023l0.0703125 -5.18945c0.0546875 -3.05273 0.448242 -6.01562 1.13965 -8.87012
-c4.61035 -16 4.73047 -16.9199 4.37988 -37.1299c-0.459961 -26.4004 -0.259766 -40.2705 0.629883 -44.1504c0.489258 -2.28223 0.853516 -4.63086 1.08008 -7c0.169922 -2 0.660156 -5.33008 1.08008 -7.35938c0.469727 -2.26074 0.780273 -11 0.790039 -22.7402v-19.0605
-l-1.80957 -2.62988c-2.70996 -3.91016 -15.1104 -13.54 -15.4902 -12.29zM261.8 -18.7803c-0.179688 0.299805 -0.330078 6.87012 -0.330078 14.5898c0 14.0605 -0.889648 27.54 -2.25977 34.4502c-0.400391 2 -0.80957 9.7002 -0.900391 17.0605
-c-0.149414 11.9297 -1.39941 24.3701 -2.63965 26.3799c-0.660156 1.06934 -3 17.6602 -3 21.2998c0 4.23047 1 6 5.28027 9.12988s4.85938 3.13965 5.47949 0.719727c0.280273 -1.09961 1.4502 -5.61914 2.60059 -10c3.92969 -15.1191 4.13965 -16.2695 4.0498 -21.7393
-c-0.0996094 -5.78027 -0.129883 -6.12988 -1.74023 -17.7305c-1 -7.07031 -1.16992 -12.3896 -1 -28.4297c0.169922 -19.4004 -0.639648 -35.7305 -2 -41.2705c-0.709961 -2.7793 -2.7998 -5.47949 -3.42969 -4.42969zM190.8 18.7998
-c-0.761719 3.52051 -1.3457 7.14453 -1.72949 10.79c-0.382812 3.64648 -0.967773 7.27051 -1.73047 10.79c-0.513672 2.0957 -0.854492 4.27344 -1 6.49023c-0.30957 3.18945 -0.910156 7.45996 -1.33008 9.47949c-1 4.79004 -3.34961 19.3506 -3.41992 21.0703
-c0 0.740234 -0.339844 4.0498 -0.700195 7.36035c-0.669922 6.20996 -0.839844 27.6699 -0.219727 28.29c1 1 6.62988 -2.76074 11.3301 -7.43066l5.28027 -5.25l-0.450195 -6.46973c-0.25 -3.55957 -0.599609 -10.2295 -0.780273 -14.8301
-c-0.179688 -4.59961 -0.490234 -9.87012 -0.669922 -11.71s-0.610352 -9.36035 -0.939453 -16.7197c-0.790039 -17.4102 -1.94043 -31.29 -2.65039 -32c-0.113281 -0.119141 -0.273438 -0.194336 -0.450195 -0.194336c-0.239258 0 -0.446289 0.135742 -0.549805 0.333984
-h0.00976562zM103.62 285.39c21.0703 -12.79 17.8398 -14.1494 28.4902 -17.6592c13 -4.29004 18.8701 -7.13086 23.1494 -16.8701c-43.6602 -36.1406 -69.0098 -57.8604 -76.71 -70.8604c-31 -52 -6 -101.59 62.75 -87.21c-14.1797 -29.2305 -78 -28.6299 -98.6797 4.90039
-c-24.6797 39.9492 -22.0898 118.3 61 187.659v0.0400391zM314.41 106.39c56.6602 -6.87988 82.3203 37.7402 46.54 89.2305c0 0 -26.8701 29.3398 -64.2803 68c3 15.4502 9.49023 32.1201 30.5703 53.8203c89.2002 -63.5107 92 -141.61 92.46 -149.36
-c4.2998 -70.6396 -78.7002 -91.1797 -105.29 -61.71v0.0195312z" />
-    <glyph glyph-name="old-republic" unicode="&#xf510;" horiz-adv-x="496" 
-d="M235.76 437.77c7.5 0.310547 15 0.280273 22.5 0.0908203c3.61035 -0.140625 7.2002 -0.400391 10.79 -0.730469c4.91992 -0.269531 9.79004 -1.03027 14.6699 -1.62012c2.93066 -0.429688 5.83008 -0.979492 8.75 -1.45996
-c7.90039 -1.33008 15.6699 -3.28027 23.3906 -5.39941c12.2393 -3.4707 24.1895 -7.91992 35.7598 -13.21c26.5596 -12.2402 50.9395 -29.21 71.6299 -49.8809c20.0303 -20.0898 36.7197 -43.5498 48.8896 -69.1895c1.12988 -2.58984 2.44043 -5.10059 3.4707 -7.74023
-c2.80957 -6.42969 5.38965 -12.9697 7.58008 -19.6299c4.13965 -12.3301 7.33984 -24.9902 9.41992 -37.8301c0.569336 -3.13965 1.04004 -6.2998 1.39941 -9.46973c0.549805 -3.83008 0.94043 -7.69043 1.18066 -11.5605
-c0.829102 -8.33984 0.839844 -16.7295 0.769531 -25.0996c-0.0703125 -4.96973 -0.259766 -9.94043 -0.75 -14.8896c-0.240234 -3.38086 -0.509766 -6.76074 -0.979492 -10.1201c-0.390625 -2.7207 -0.630859 -5.45996 -1.11035 -8.16992
-c-0.900391 -5.15039 -1.7002 -10.3105 -2.87012 -15.4102c-4.09961 -18.5 -10.2998 -36.5498 -18.5098 -53.6299c-15.7705 -32.8301 -38.8301 -62.1699 -67.1201 -85.1201c-17.2012 -14.0635 -36.3066 -25.8115 -56.9102 -34.8604
-c-6.20996 -2.67969 -12.46 -5.25 -18.8701 -7.41016c-3.50977 -1.16016 -7.00977 -2.37988 -10.5703 -3.38965c-6.61914 -1.87988 -13.2891 -3.63965 -20.0391 -5c-4.66016 -0.910156 -9.34082 -1.73047 -14.0303 -2.48047c-5.25 -0.65918 -10.5 -1.43945 -15.79 -1.73926
-c-6.69043 -0.660156 -13.4102 -0.839844 -20.1201 -0.810547c-6.82031 -0.0292969 -13.6504 0.120117 -20.4502 0.790039c-3.29004 0.230469 -6.57031 0.5 -9.83008 0.950195c-2.71973 0.389648 -5.45996 0.629883 -8.16992 1.11035
-c-4.12012 0.719727 -8.25 1.37012 -12.3496 2.21973c-4.25 0.939453 -8.49023 1.88965 -12.6904 3.01953c-8.62988 2.16992 -17.0801 5.01074 -25.4102 8.13086c-10.4893 4.11914 -20.79 8.75 -30.6396 14.25c-2.13965 1.14941 -4.28027 2.28906 -6.34961 3.56934
-c-11.2207 6.58008 -21.8604 14.1006 -31.9199 22.3398c-34.6807 28.4102 -61.4102 66.4307 -76.3506 108.7c-3.08984 8.74023 -5.70996 17.6504 -7.7998 26.6797c-1.48047 6.16016 -2.52051 12.4209 -3.58008 18.6602
-c-0.400391 2.35059 -0.610352 4.73047 -0.950195 7.08984c-0.599609 3.96094 -0.75 7.96094 -1.16992 11.9404c-0.799805 9.46973 -0.709961 18.9902 -0.509766 28.4902c0.139648 3.50977 0.339844 7.00977 0.700195 10.5098
-c0.30957 3.16992 0.459961 6.37012 0.919922 9.52051c0.410156 2.80957 0.649414 5.64941 1.16016 8.43945c0.699219 3.94043 1.2998 7.90039 2.11914 11.8203c3.43066 16.5195 8.4707 32.7295 15.2607 48.1797c1.14941 2.91992 2.58984 5.71973 3.85938 8.58984
-c8.05078 16.71 17.9004 32.5605 29.4902 47.0605c20 25.3799 45.1006 46.6797 73.2705 62.4697c7.5 4.15039 15.1592 8.0498 23.0693 11.3701c15.8203 6.87988 32.4102 11.9502 49.3105 15.3799c3.50977 0.669922 7.04004 1.24023 10.5596 1.84961
-c2.62012 0.470703 5.28027 0.700195 7.91016 1.08008c3.53027 0.530273 7.09961 0.680664 10.6504 1.04004c2.45996 0.240234 4.90918 0.360352 7.35938 0.509766zM244.4 413.36c-9.23047 -0.100586 -18.4307 -0.990234 -27.5703 -2.23047
-c-7.2998 -1.08008 -14.5303 -2.59961 -21.71 -4.2998c-13.9102 -3.5 -27.4805 -8.33984 -40.46 -14.4199c-10.46 -4.99023 -20.5898 -10.7002 -30.1797 -17.2197c-4.18066 -2.9209 -8.40039 -5.80078 -12.3408 -9.03027
-c-5.08008 -3.96973 -9.97949 -8.16992 -14.6797 -12.5898c-2.50977 -2.24023 -4.80957 -4.7002 -7.21973 -7.06055c-28.2207 -28.79 -48.4404 -65.3896 -57.5 -104.689c-2.04004 -8.44043 -3.54004 -17.0205 -4.44043 -25.6504
-c-1.09961 -8.88965 -1.43945 -17.8496 -1.41016 -26.7998c0.110352 -7.13965 0.379883 -14.2803 1.2207 -21.3701c0.620117 -7.12012 1.87012 -14.1602 3.19922 -21.1797c1.07031 -4.65039 2.03027 -9.32031 3.33008 -13.9102
-c6.29004 -23.3799 16.5 -45.7002 30.0703 -65.75c8.63965 -12.9805 18.7803 -24.9297 29.9805 -35.7705c16.2793 -15.8193 35.0498 -29.04 55.3398 -39.2197c7.2793 -3.51953 14.6602 -6.87012 22.2695 -9.62988c5.04004 -1.75977 10.0605 -3.57031 15.2197 -4.98047
-c11.2607 -3.22949 22.7705 -5.59961 34.3906 -7.05957c2.91016 -0.290039 5.80957 -0.610352 8.71973 -0.900391c13.8203 -1.08008 27.7402 -1 41.54 0.430664c4.4502 0.599609 8.91992 0.989258 13.3496 1.7793c3.63086 0.670898 7.28027 1.25 10.8701 2.10059
-c4.12988 0.979492 8.28027 1.91016 12.3604 3.07031c26.5 7.33984 51.5801 19.71 73.5801 36.1992c15.7803 11.8203 29.96 25.7607 42.1201 41.2803c3.25977 4.02051 6.16992 8.30957 9.12988 12.5498c3.38965 5.06055 6.58008 10.25 9.59961 15.54
-c2.40039 4.44043 4.74023 8.91016 6.9502 13.4502c5.69043 12.0498 10.2803 24.6201 13.75 37.4902c2.58984 10.0098 4.75 20.1602 5.90039 30.4502c1.76953 13.4697 1.93945 27.0996 1.29004 40.6494c-0.290039 3.89062 -0.669922 7.77051 -1 11.6602
-c-2.23047 19.0801 -6.79004 37.9102 -13.8203 55.7998c-5.9502 15.1299 -13.5303 29.6299 -22.6104 43.1299c-12.6895 18.8008 -28.2393 35.6807 -45.9697 49.8301c-25.0498 20 -54.4697 34.5498 -85.6504 42.0801c-7.7793 1.92969 -15.6895 3.33984 -23.6299 4.4502
-c-3.90918 0.589844 -7.84961 0.820312 -11.7695 1.24023c-7.38965 0.569336 -14.8105 0.719727 -22.2197 0.580078zM139.26 364.47c13.2998 8.89062 28.0801 15.3799 43.2998 20.1807c-3.16992 -1.77051 -6.43945 -3.38086 -9.5293 -5.29004
-c-11.21 -6.68066 -21.5205 -14.9004 -30.3799 -24.4902c-6.80078 -7.42969 -12.7607 -15.7305 -17.0107 -24.8896c-3.29004 -6.86035 -5.63965 -14.1904 -6.85938 -21.7109c-0.930664 -4.84961 -1.2998 -9.80957 -1.16992 -14.75
-c0.129883 -13.6592 4.43945 -27.0791 11.29 -38.8193c5.91992 -10.2197 13.6299 -19.3301 22.3594 -27.2598c4.85059 -4.36035 10.2402 -8.09082 14.9502 -12.6006c2.25977 -2.18945 4.49023 -4.41992 6.42969 -6.91016c2.62012 -3.30957 4.89062 -6.98926 5.99023 -11.0996
-c0.900391 -3.02051 0.660156 -6.2002 0.69043 -9.31055c0.0195312 -4.09961 -0.0400391 -8.19922 0.0292969 -12.2998c0.140625 -3.54004 -0.0195312 -7.08984 0.110352 -10.6299c0.0800781 -2.37988 0.0205078 -4.75977 0.0498047 -7.13965
-c0.160156 -5.77051 0.0605469 -11.5303 0.150391 -17.2998c0.109375 -2.91016 0.0195312 -5.82031 0.129883 -8.74023c0.0302734 -1.62988 0.129883 -3.28027 -0.0302734 -4.91016c-0.910156 -0.120117 -1.81934 -0.179688 -2.72949 -0.160156
-c-10.9902 0 -21.8799 2.62988 -31.9502 6.92969c-6 2.7002 -11.8105 5.89062 -17.0898 9.83008c-5.75 4.19043 -11.0898 8.95996 -15.79 14.3105c-6.53027 7.24023 -11.9805 15.3896 -16.6201 23.9502c-1.07031 2.0293 -2.24023 4.01953 -3.17969 6.12012
-c-1.16016 2.63965 -2.62012 5.13965 -3.66992 7.81934c-4.05078 9.68066 -6.57031 19.9404 -8.08008 30.3105c-0.490234 4.43945 -1.09082 8.87988 -1.2002 13.3496c-0.700195 15.7305 0.839844 31.5498 4.66992 46.8203c2.12012 8.14941 4.76953 16.1797 8.30957 23.8301
-c6.32031 14.1992 15.3398 27.1797 26.3008 38.1895c6.2793 6.2002 13.1299 11.8398 20.5293 16.6699zM314.63 384.59c2.74023 -0.740234 5.41016 -1.74023 8.08984 -2.67969c6.36035 -2.33008 12.6807 -4.83984 18.71 -7.95996
-c13.1104 -6.44043 25.3105 -14.8105 35.8203 -24.9697c10.2002 -9.9502 18.7402 -21.6006 25.1396 -34.3408c1.28027 -2.75 2.64062 -5.45996 3.81055 -8.25977c6.30957 -15.0996 10 -31.2598 11.2295 -47.5703c0.410156 -4.54004 0.44043 -9.08984 0.450195 -13.6396
-c0.0703125 -11.6396 -1.49023 -23.25 -4.2998 -34.5303c-1.96973 -7.26953 -4.34961 -14.4893 -7.86035 -21.1797c-3.17969 -6.63965 -6.67969 -13.1602 -10.8398 -19.2402c-6.93945 -10.4697 -15.5996 -19.8701 -25.8203 -27.2197
-c-10.4795 -7.63965 -22.6396 -13.0195 -35.3994 -15.3799c-3.50977 -0.69043 -7.08008 -1.08008 -10.6602 -1.20996c-1.84961 -0.0605469 -3.71973 -0.160156 -5.55957 0.0996094c-0.280273 2.15039 0 4.31055 -0.0107422 6.45996
-c-0.0292969 3.73047 0.140625 7.4502 0.100586 11.1699c0.189453 7.02051 0.0195312 14.0508 0.209961 21.0703c0.0292969 2.37988 -0.0302734 4.75977 0.0292969 7.13965c0.170898 5.07031 -0.0390625 10.1406 0.140625 15.21
-c0.0996094 2.99023 -0.240234 6.04004 0.509766 8.95996c0.660156 2.5 1.78027 4.86035 3.08984 7.08008c4.45996 7.31055 11.0605 12.96 17.6807 18.2607c5.37988 4.17969 10.4697 8.76953 15.0195 13.8398c7.67969 8.37012 14.1699 17.8799 18.7803 28.2695
-c2.5 5.93066 4.51953 12.1006 5.5498 18.46c0.860352 4.37012 1.05957 8.83008 1.00977 13.2705c-0.0195312 7.84961 -1.39941 15.6494 -3.63965 23.1699c-1.75 5.72949 -4.27051 11.1797 -7.08984 16.4502c-3.87012 6.92969 -8.65039 13.3096 -13.96 19.1992
-c-9.94043 10.8506 -21.75 19.9404 -34.6006 27.1006c-1.84961 1.01953 -3.83984 1.82031 -5.62988 2.96973zM213.83 326.14c0.979492 1.18066 1.99023 2.33008 3.12012 3.37988c-0.610352 -0.929688 -1.27051 -1.80957 -1.9502 -2.67969
-c-3.09961 -3.87988 -5.54004 -8.30957 -7.03027 -13.0596c-0.870117 -3.27051 -1.67969 -6.60059 -1.72949 -10c-0.0703125 -2.52051 -0.0800781 -5.07031 0.319336 -7.57031c1.13086 -7.62988 4.33008 -14.8496 8.77051 -21.1201c2 -2.7002 4.25 -5.26953 6.91992 -7.33008
-c1.62012 -1.26953 3.53027 -2.08984 5.33984 -3.0498c3.11035 -1.67969 6.32031 -3.22949 9.07031 -5.47949c2.66992 -2.09082 4.5498 -5.33008 4.39941 -8.79004c-0.00976562 -73.6709 0 -147.341 -0.00976562 -221.021c0 -1.34961 -0.0800781 -2.7002 0.0400391 -4.04004
-c0.129883 -1.47949 0.820312 -2.83008 1.46973 -4.14941c0.860352 -1.66016 1.78027 -3.34082 3.18066 -4.62012c0.849609 -0.770508 1.96973 -1.40039 3.14941 -1.24023c1.5 0.200195 2.66016 1.34961 3.4502 2.57031c0.959961 1.50977 1.67969 3.15918 2.28027 4.84961
-c0.759766 2.12988 0.439453 4.41992 0.540039 6.62988c0.139648 4.03027 -0.0205078 8.06055 0.139648 12.0898c0.0302734 5.89062 0.0302734 11.7705 0.0605469 17.6602c0.139648 3.62012 0.0292969 7.24023 0.109375 10.8604
-c0.150391 4.0293 -0.0195312 8.05957 0.140625 12.0898c0.0292969 5.99023 0.0292969 11.9795 0.0693359 17.9697c0.140625 3.62012 0.0205078 7.24023 0.110352 10.8604c0.139648 3.92969 -0.0205078 7.85938 0.139648 11.7803
-c0.0302734 5.98926 0.0302734 11.9795 0.0605469 17.9697c0.160156 3.93945 -0.00976562 7.87988 0.189453 11.8193c0.290039 -1.43945 0.129883 -2.91992 0.220703 -4.37988c0.189453 -3.60938 0.419922 -7.22949 0.759766 -10.8398
-c0.320312 -3.43945 0.439453 -6.88965 0.859375 -10.3193c0.370117 -3.10059 0.510742 -6.2207 0.950195 -9.31055c0.570312 -4.08984 0.870117 -8.20996 1.54004 -12.29c1.45996 -9.04004 2.83008 -18.1104 5.08984 -26.9902c1.13086 -4.81934 2.40039 -9.60938 4 -14.2998
-c2.54004 -7.89941 5.7207 -15.6699 10.3105 -22.6201c1.72949 -2.63965 3.87012 -4.97949 6.09961 -7.20996c0.270508 -0.25 0.549805 -0.509766 0.879883 -0.709961c0.600586 -0.25 1.31055 0.0703125 1.7002 0.570312c0.709961 0.879883 1.16992 1.93945 1.7002 2.92969
-c4.0498 7.7998 8.17969 15.5605 12.3398 23.3105c0.700195 1.30957 1.44043 2.62012 2.56055 3.60938c1.75 1.57031 3.83984 2.69043 5.97949 3.62988c2.87988 1.2207 5.90039 2.19043 9.03027 2.41992c6.58008 0.620117 13.1094 -0.75 19.5596 -1.84961
-c3.69043 -0.580078 7.40039 -1.16992 11.1299 -1.41016c3.74023 -0.0996094 7.48047 -0.0498047 11.21 0.280273c8.55078 0.919922 16.9902 2.95996 24.9404 6.25c5.2998 2.24023 10.46 4.83008 15.3096 7.92969c11.46 7.20996 21.46 16.5703 30.04 27.0107
-c1.16992 1.41992 2.25 2.89941 3.45996 4.2793c-1.19922 -3.24023 -2.66992 -6.37012 -4.15918 -9.47949c-1.25 -2.90039 -2.84082 -5.61035 -4.27051 -8.41992c-5.16016 -9.62988 -11.0195 -18.9102 -17.75 -27.5205
-c-4.03027 -5.20996 -8.53027 -10.0498 -13.3301 -14.5703c-6.63965 -6.0498 -14.0703 -11.3691 -22.4297 -14.7598c-8.20996 -3.37012 -17.3105 -4.62988 -26.0898 -3.29004c-3.56055 0.580078 -7.01074 1.69043 -10.4102 2.87988
-c-2.79004 0.970703 -5.39062 2.38086 -8.03027 3.69043c-3.42969 1.70996 -6.63965 3.80957 -9.70996 6.08008c2.70996 -3.06055 5.69043 -5.86035 8.7002 -8.61035c4.26953 -3.75977 8.74023 -7.30957 13.6299 -10.2295c3.98047 -2.4502 8.29004 -4.40039 12.8398 -5.51074
-c1.45996 -0.369141 2.95996 -0.459961 4.4502 -0.599609c-1.25 -1.09961 -2.62988 -2.04004 -3.99023 -2.97949c-9.60938 -6.54004 -20.0098 -11.8604 -30.6895 -16.4307c-20.8604 -8.7002 -43.1699 -13.9697 -65.7402 -15.3398
-c-4.66016 -0.240234 -9.32031 -0.360352 -13.9805 -0.360352c-4.97949 0.110352 -9.96973 0.130859 -14.9199 0.650391c-11.2002 0.759766 -22.29 2.73047 -33.1699 5.42969c-10.3496 2.70996 -20.5498 6.12012 -30.2998 10.5508
-c-8.70996 3.85938 -17.1201 8.41992 -24.9902 13.79c-1.83008 1.30957 -3.74023 2.5293 -5.37012 4.0791c6.60059 1.19043 13.0303 3.39062 18.9902 6.48047c5.74023 2.86035 10.9902 6.66016 15.6299 11.0703c2.24023 2.18945 4.29004 4.58984 6.19043 7.08984
-c-3.43066 -2.12988 -6.93066 -4.15039 -10.6201 -5.78027c-4.41016 -2.16016 -9.07031 -3.76953 -13.8105 -5.01953c-5.72949 -1.52051 -11.7393 -1.73047 -17.6094 -1.14062c-8.12988 0.950195 -15.8604 4.27051 -22.5098 8.98047
-c-4.32031 2.93945 -8.2207 6.42969 -11.96 10.0596c-9.93066 10.1602 -18.2002 21.8105 -25.6602 33.8604c-3.94043 6.26953 -7.53027 12.75 -11.1201 19.2197c-1.0498 2.04004 -2.15039 4.0498 -3.17969 6.10059c2.84961 -2.9209 5.56934 -5.9707 8.42969 -8.88086
-c8.99023 -8.96973 18.5596 -17.4395 29.1602 -24.4795c7.5498 -4.90039 15.6699 -9.23047 24.5596 -11.0303c3.11035 -0.729492 6.32031 -0.469727 9.46973 -0.80957c2.77051 -0.280273 5.56055 -0.200195 8.34082 -0.299805
-c5.0498 -0.0605469 10.1094 -0.0400391 15.1592 0.15918c3.65039 0.160156 7.27051 0.660156 10.8906 1.09082c2.06934 0.25 4.10938 0.709961 6.13965 1.19922c3.87988 0.950195 8.11035 0.959961 11.8301 -0.609375c4.75977 -1.85059 8.44043 -5.64062 11.3799 -9.70996
-c2.16016 -3.02051 4.06055 -6.2207 5.66016 -9.58008c1.16016 -2.43066 2.45996 -4.79004 3.5498 -7.26074c1 -2.23926 2.15039 -4.41992 3.41992 -6.51953c0.669922 -1.01953 1.40039 -2.15039 2.62012 -2.5498c1.06055 0.75 1.70996 1.91016 2.28027 3.03027
-c2.09961 4.15918 3.41992 8.64941 4.88965 13.0498c2.02051 6.58984 3.78027 13.2695 5.19043 20.0195c2.20996 9.25 3.25 18.7197 4.54004 28.1299c0.55957 3.98047 0.830078 7.99023 1.30957 11.9707c0.870117 10.6396 1.90039 21.2695 2.24023 31.9395
-c0.0800781 1.86035 0.240234 3.70996 0.25 5.57031c0.00976562 4.34961 0.25 8.68945 0.219727 13.0303c-0.00976562 2.37988 -0.00976562 4.75977 0 7.12988c0.0498047 5.06934 -0.200195 10.1396 -0.219727 15.21c-0.200195 6.60938 -0.709961 13.2002 -1.29004 19.7793
-c-0.730469 5.88086 -1.5498 11.7803 -3.12012 17.5107c-2.0498 7.75 -5.58984 15.0293 -9.7998 21.8193c-3.16016 5.07031 -6.79004 9.87988 -11.0898 14.0303c-3.87988 3.86035 -8.58008 7.08008 -13.9404 8.4502c-1.5 0.410156 -3.05957 0.450195 -4.58984 0.639648
-c0.0703125 2.99023 0.700195 5.93066 1.25977 8.85059c1.58984 7.70996 3.7998 15.2998 6.76074 22.5996c1.51953 4.03027 3.40918 7.90039 5.38965 11.7197c3.4502 6.56055 7.62012 12.79 12.46 18.46zM245.1 324.44
-c0.350586 0.0595703 0.709961 0.119141 1.07031 0.189453c0.19043 -1.79004 0.0898438 -3.58008 0.0996094 -5.37012v-38.1299c-0.00976562 -1.74023 0.130859 -3.49023 -0.149414 -5.21973c-0.360352 0.0302734 -0.709961 0.0498047 -1.06055 0.0498047
-c-0.949219 3.75 -1.71973 7.5498 -2.61914 11.3096c-0.380859 1.53027 -0.580078 3.09082 -1.07031 4.59082c-1.7002 0.239258 -3.42969 0.169922 -5.15039 0.199219c-5.05957 0.0107422 -10.1299 0 -15.1895 0.0107422
-c-1.66016 0.00976562 -3.32031 -0.0898438 -4.98047 0.0292969c-0.0302734 0.390625 -0.259766 0.910156 0.160156 1.18066c1.28027 0.649414 2.71973 0.879883 4.05957 1.34961c3.43066 1.13965 6.88086 2.16016 10.3105 3.31055
-c1.38965 0.479492 2.90039 0.719727 4.16016 1.54004c0.0400391 0.55957 0.0195312 1.12988 -0.0498047 1.67969c-1.23047 0.549805 -2.53027 0.870117 -3.81055 1.28027c-3.12988 1.0293 -6.29004 1.95996 -9.41016 3.01953c-1.79004 0.620117 -3.66992 1 -5.41016 1.79004
-c-0.0292969 0.370117 -0.0693359 0.730469 -0.109375 1.08984c5.08984 0.19043 10.2002 -0.0595703 15.2998 0.120117c3.36035 0.129883 6.73047 -0.0800781 10.0898 0.0703125c0.120117 0.389648 0.259766 0.769531 0.370117 1.16016
-c1.08008 4.93945 2.33008 9.8291 3.38965 14.75zM251.07 324.64c0.359375 -0.0498047 0.719727 -0.120117 1.08008 -0.199219c0.979492 -3.85059 1.72949 -7.76074 2.70996 -11.6104c0.359375 -1.41992 0.55957 -2.87988 1.0293 -4.27051
-c2.53027 -0.179688 5.07031 0.0107422 7.61035 -0.0498047c5.16016 -0.120117 10.3301 -0.120117 15.4902 -0.0693359c0.759766 0.00976562 1.51953 -0.0302734 2.2793 -0.0800781c-0.0390625 -0.360352 -0.0693359 -0.720703 -0.0996094 -1.08008
-c-1.82031 -0.830078 -3.78027 -1.25 -5.66992 -1.89062c-3.73047 -1.22949 -7.48047 -2.38965 -11.2197 -3.56934c-0.570312 -0.169922 -1.12012 -0.419922 -1.66992 -0.640625c-0.150391 -0.549805 -0.180664 -1.12012 -0.120117 -1.68945
-c0.870117 -0.480469 1.81934 -0.810547 2.76953 -1.08984c4.87988 -1.52051 9.73047 -3.14062 14.6299 -4.60059c0.379883 -0.129883 0.780273 -0.269531 1.12988 -0.490234c0.400391 -0.269531 0.230469 -0.790039 0.150391 -1.17969
-c-1.66016 -0.129883 -3.30957 -0.0302734 -4.96973 -0.0400391c-5.16992 -0.00976562 -10.3301 0.00976562 -15.5 -0.00976562c-1.61035 -0.0302734 -3.21973 0.0195312 -4.82031 -0.209961c-0.519531 -1.66992 -0.719727 -3.41992 -1.16992 -5.11035
-c-0.94043 -3.56934 -1.51953 -7.24023 -2.54004 -10.7793c-0.360352 -0.0107422 -0.709961 -0.0205078 -1.05957 -0.0605469c-0.290039 1.73047 -0.150391 3.48047 -0.150391 5.21973v38.1299c0.0205078 1.78027 -0.0800781 3.58008 0.110352 5.37012zM65.0498 279.67
-c1.12012 2.15039 2.08008 4.40039 3.37012 6.45996c-1.82031 -7.55957 -2.91016 -15.2695 -3.62012 -23c-0.799805 -7.70996 -0.849609 -15.4902 -0.540039 -23.2295c1.0498 -19.9404 5.54004 -39.8301 14.2305 -57.8809c2.99023 -5.98926 6.34961 -11.8291 10.5 -17.1094
-c6.12012 -7.46973 12.5293 -14.7598 19.8398 -21.0898c4.7998 -4.10059 9.99023 -7.78027 15.54 -10.8008c3.26953 -1.64941 6.50977 -3.38965 9.93945 -4.67969c5.01074 -2.03027 10.1904 -3.60938 15.4209 -4.93945c3.8291 -0.959961 7.7793 -1.41016 11.5195 -2.70996
-c5 -1.57031 9.46973 -4.61035 13.0303 -8.43066c4.92969 -5.22949 8.08984 -11.8701 10.2002 -18.6699c0.989258 -2.89941 1.58984 -5.91016 2.16992 -8.91992c0.149414 -0.75 0.219727 -1.51953 0.15918 -2.29004c-6.5 -2.78027 -13.2598 -5.05957 -20.2598 -6.17969
-c-4.10938 -0.780273 -8.29004 -0.990234 -12.46 -1.08008c-10.25 -0.240234 -20.4697 1.75977 -30.1201 5.12012c-3.73926 1.41992 -7.48926 2.84961 -11.0293 4.71973c-8.06055 3.83984 -15.6406 8.7002 -22.46 14.46c-2.9209 2.5498 -5.83008 5.12988 -8.40039 8.03027
-c-9.16016 9.83008 -16.2998 21.4102 -21.79 33.6494c-2.38965 5.55078 -4.61035 11.1807 -6.37012 16.96c-1.16992 3.94043 -2.36035 7.89062 -3.25977 11.9102c-0.75 2.94043 -1.21973 5.9502 -1.87012 8.91992c-0.459961 2.14062 -0.69043 4.32031 -1.03027 6.48047
-c-0.849609 5.42969 -1.2793 10.9297 -1.33008 16.4297c0.110352 6.18066 0.25 12.3701 1.07031 18.5c0.400391 2.86035 0.669922 5.74023 1.15039 8.60059c0.979492 5.69922 2.13965 11.3691 3.70996 16.9297c3.08984 11.6504 7.47949 22.9502 12.6895 33.8398z
-M428.78 286.11c1.09961 -1.66016 1.91016 -3.48047 2.7793 -5.26074c2.10059 -4.44922 4.24023 -8.89941 6.02051 -13.4893c7.61035 -18.7607 12.2998 -38.79 13.04 -59.0508c0.0195312 -1.75977 0.0703125 -3.51953 0.110352 -5.29004
-c0.129883 -9.56934 -1.27051 -19.0898 -3.18066 -28.4492c-0.729492 -3.58984 -1.54004 -7.16992 -2.58008 -10.6904c-4.04004 -14.7197 -10 -29 -18.4102 -41.7803c-8.20996 -12.5693 -19.0098 -23.5498 -31.8398 -31.4092
-c-5.72949 -3.59082 -11.79 -6.64062 -18.0498 -9.19043c-5.78027 -2.19043 -11.71 -4.03027 -17.7998 -5.11035c-6.40039 -1.0498 -12.9102 -1.51953 -19.4004 -1.22949c-7.91992 0.479492 -15.7793 2.07031 -23.21 4.84961
-c-1.93945 0.799805 -3.93945 1.45996 -5.83984 2.33008c-0.209961 1.50977 0.25 2.99023 0.530273 4.45996c1.16016 5.74023 3.03027 11.3604 5.7002 16.5801c2.36914 4.50977 5.51953 8.65039 9.45996 11.9004c2.42969 2.0498 5.23926 3.60938 8.15918 4.83008
-c3.58008 1.5 7.4707 1.96973 11.2402 2.83008c7.23047 1.70996 14.3701 3.92969 21.1504 7c10.3496 4.64941 19.71 11.3799 27.6494 19.46c1.59082 1.60938 3.23047 3.17969 4.74023 4.86914c3.37012 3.76074 6.70996 7.57031 9.85059 11.5303
-c7.47949 10.0703 12.8193 21.5898 16.71 33.4805c1.58008 5.2998 3.20996 10.5996 4.20996 16.0498c0.629883 2.87012 1.04004 5.78027 1.51953 8.67969c0.870117 6.08984 1.58984 12.2207 1.67969 18.3799c0.120117 6.65039 0.140625 13.3203 -0.529297 19.9404
-c-0.730469 7.99023 -1.87012 15.96 -3.70996 23.7803z" />
-    <glyph glyph-name="phoenix-squadron" unicode="&#xf511;" horiz-adv-x="512" 
-d="M96 384.62c46.4902 36.1299 105.55 56.0703 164.51 54.5703c29.5801 0.379883 59.1104 -5.37012 86.9102 -15.3301c-24.1299 4.62988 -49 6.33984 -73.3799 2.44922c-42.8701 -5.30957 -83.04 -27.1494 -111.83 -59.1797c5.66992 1 10.7803 3.66992 16 5.86035
-c18.1396 7.87012 37.4902 13.2598 57.2305 14.8301c19.7393 2.12988 39.6396 0.429688 59.2793 -1.91992c-14.4199 -2.79004 -29.1201 -4.57031 -43 -9.59082c-34.4297 -11.0693 -65.2695 -33.1592 -86.2998 -62.6299c-13.7998 -19.71 -23.6299 -42.8594 -24.6699 -67.1299
-c-0.349609 -16.4902 5.21973 -34.8096 19.8301 -44c8.0293 -4.85254 17.4395 -7.64648 27.498 -7.64648c3.4209 0 6.7793 0.289062 10.0215 0.90625c15.4502 2.45996 30.0703 8.64062 43.6006 16.3301c11.5195 6.82031 22.6699 14.5508 32 24.25
-c3.79004 3.2207 2.53027 8.4502 2.62012 12.79c-2.12012 0.339844 -4.37988 1.11035 -6.30078 -0.299805c-11.2676 -6.17773 -23.3838 -11.3975 -35.8193 -15.3701c-20 -6.16992 -42.1602 -8.45996 -62.1006 -0.779297c12.79 -1.73047 26.0605 -0.310547 37.7402 5.43945
-c20.2305 9.71973 36.8105 25.2002 54.4404 38.7705c27.625 21.2686 57.3311 39.7881 88.8994 55.3096c25.71 12 52.9404 22.7803 81.5703 24.1201c-15.6299 -13.7197 -32.1504 -26.5205 -46.7803 -41.3799c-14.5098 -14 -27.46 -29.5 -40.1094 -45.1807
-c-3.52051 -4.59961 -8.9502 -6.93945 -13.5801 -10.1592c-22.333 -15.0176 -40.1992 -35.627 -51.8906 -60.1006c-9.33008 -19.6797 -14.5 -41.8496 -11.7695 -63.6494c1.93945 -13.6904 8.70996 -27.5908 20.8994 -34.9102c12.9004 -8 29.0508 -8.07031 43.4805 -5.10059
-c32.7998 7.4502 61.4297 28.8906 81 55.8408c20.4404 27.5195 30.5195 62.1992 29.1602 96.3496c-0.520508 7.5 -1.57031 15 -1.66016 22.4902c8 -19.4805 14.8203 -39.71 16.6504 -60.8301c2 -14.2803 0.75 -28.7598 -1.62012 -42.9004
-c-1.91016 -11 -5.66992 -21.5098 -7.78027 -32.4297c19.9287 22.3428 33.9023 50.3545 39.3398 81.0703c1.48438 9.39258 2.25488 19.0225 2.25488 28.8301c0 27.0342 -5.95508 52.6875 -16.4648 75.8096c20.7803 -32 32.3398 -69.5801 35.71 -107.48
-c0.490234 -12.7295 0.490234 -25.5098 0 -38.2295c-2.89453 -35.0469 -13.3936 -68.4854 -29.5898 -97.75c-26.1201 -47.3398 -68 -85.6299 -117.19 -108c-78.29 -36.2305 -174.68 -31.3203 -248 14.6797c-39.0088 23.8643 -70.5215 57.7861 -91.4492 98.6602
-c-14.2646 28.0879 -23.2725 59.8086 -25.3604 92.9199v31.3398c3.92969 69.7402 40.8701 135.92 96 178.36zM318 304.29c5.50781 0.932617 10.9404 2.46973 16 4.47949c5 1.77051 9.24023 5.94043 10.3203 11.2207c-8.95996 -4.99023 -17.9805 -9.91992 -26.3203 -15.7002z
-" />
-    <glyph glyph-name="sith" unicode="&#xf512;" 
-d="M0 416l118.75 -69.71l-11.5195 58.9004l91.0596 -69.8701c8.5 1.50977 17.0996 2.29004 25.71 2.29004s17.21 -0.770508 25.71 -2.29004l91.0596 69.8701l-11.5195 -58.9004l118.75 69.71l-69.71 -118.75l58.8604 11.5195l-69.8408 -91.0293
-c3.04004 -17.0098 3.03027 -34.4404 0 -51.4502l69.8408 -91.0303l-58.8604 11.5205l69.71 -118.78l-118.75 69.71l11.5195 -58.8604l-91.0293 69.8408c-17.0098 -3.04004 -34.46 -3.04004 -51.4805 0l-91.0293 -69.8408l11.5195 58.8604l-118.75 -69.71l69.71 118.78
-l-58.8604 -11.5205l69.8408 91.0303c-1.49512 8.39453 -2.27539 16.7734 -2.27539 25.5947s0.780273 17.4609 2.27539 25.8555l-69.8408 91.0293l58.8604 -11.5195zM224 316.22c-31.7998 0 -63.6104 -12.0898 -87.8496 -36.3398c-48.4902 -48.4902 -48.5 -127.2 0 -175.7
-c48.5 -48.4893 127.21 -48.5195 175.699 -0.0292969c48.4902 48.4893 48.5 127.199 0 175.699c-24.25 24.25 -56.0498 36.3701 -87.8496 36.3701zM224 279.56c22.4199 0 44.8301 -8.51953 61.9199 -25.6094c34.1904 -34.1904 34.1797 -89.6904 0 -123.87
-c-34.1895 -34.1797 -89.6504 -34.1904 -123.84 0c-34.1904 34.1895 -34.1797 89.6895 0 123.87c17.0898 17.0898 39.5 25.6094 61.9199 25.6094z" />
-    <glyph glyph-name="trade-federation" unicode="&#xf513;" horiz-adv-x="496" 
-d="M248 439.2c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -43.5996c129.7 0 234.8 105.1 234.8 234.8s-105.1 234.8 -234.8 234.8s-234.8 -105.1 -234.8 -234.8s105.1 -234.8 234.8 -234.8zM403.1 284.9v-0.100586h-145.699
-v-34.7998h83.2998v-47h-83.2998v-195.8h-48.8008v196.8h-117.699l-36.7002 46h155.1v81.7002h193.8v-46.7998zM329.8 239.8h-82.8994v56.2002h145v24.4004h-171.801v-80.6006h-143.899l20.0996 -23.8994h123.8v-197.4h26.8008v197.4h82.8994v23.8994zM168.5 308.8l22 9.2998
-l-15.7998 -18.0996l15.7002 -18.0996l-22.2002 9.5l-12.2998 -20.5l2.09961 24l-23.2998 5.39941l23.5 5.40039l-2.10059 23.7998zM138.9 328.5l9.5 -10.2002l-13.8008 5.2998l-6.7998 -12.1992l0.799805 14.6992l-13.6992 2.7002l14.2998 3.7998l-1.7002 13.9004
-l8 -12.4004l12.7002 5.90039zM304.3 183.3l-9.2998 -10.7998l9.40039 -10.7002l-13.1006 5.5l-7.2998 -12.2002l1.2002 14.2002l-13.9004 3.2002l13.9004 3.2002l-1.2998 14.2002l7.2998 -12.2002zM411.2 260.5l-15 -17.5996l15.0996 -17l-21.2002 8.7998l-11.5 -19.6006
-l1.80078 22.9004l-22.2002 4.90039l22.2998 5.39941l-2.2002 22.7002l12 -19.5996zM248 418.1c125.3 0 226.9 -101.6 226.9 -226.899s-101.601 -226.9 -226.9 -226.9s-226.9 101.601 -226.9 226.9s101.601 226.899 226.9 226.899zM342.6 252h-83.1992v30.9004h145.699
-v50.6992h-197.8v-81.5996h-157.399l40 -49.9004h116.699v-196.8h52.7002v195.7h83.2998v51zM248 404.8c-94.5996 0 -174.9 -61.5996 -202.9 -146.8h157.4v81.5996h199.1c-38.7998 40.2002 -93.2998 65.2002 -153.6 65.2002zM248 -22.2998c117.9 0 213.5 95.5996 213.4 213.5
-c0 51.8994 -18.5 99.5 -49.3008 136.5v-50.7998h-145.6v-19.2002h83.2002v-62.7002h-83.2998v-195.8h-64.6006v196.8h-114.7l-43.7998 56.2998c-5.7998 -19.2998 -8.89941 -39.8994 -8.89941 -61.0996c0 -117.9 95.6992 -213.5 213.6 -213.5zM178.8 173l22.7002 9.2998
-l-16.9004 -17.0996l15.8008 -18.7998l-21.5 10.7998l-13 -20.9004l3.69922 23.7998l-23.7998 5.90039l23.7002 3.90039l-1.7002 24.5z" />
-    <glyph glyph-name="wolf-pack-battalion" unicode="&#xf514;" horiz-adv-x="512" 
-d="M267.73 -23.5303l-11.4404 -21.1396l-11.4404 21.1104l-10.5596 -15.8408l-5.28027 12.3203l-5.2793 -7v-29.8301c-21.0605 7.91992 -21.1104 66.8604 -25.5107 97.21c-4.62012 31.8799 0.879883 92.8105 -81.3701 149.11c8.88086 23.5996 12 49.4297 2.64062 80.0498
-c-27.8701 -3.33008 -53.9404 -10.5801 -63.3398 -54.0996l30.3496 -8.36035c-11.2002 -23.04 -17.0195 -46.7598 -13.2002 -72.1396l27.2705 7l6.16016 -33.4307l18.4697 7l8.7998 -33.4297l19.3496 7l-26.4297 -21.0596l-8.7998 28.1494l-24.6299 -5.28027l-7 35.6309
-l-26.3906 -14.5205c-0.25 20.0205 -6.95996 58.0605 8.80078 84.4502l-26.3906 -5.28027c-3.99023 22.0703 2.37988 39.21 7.91992 56.7402l-22.4297 -9.67969c0.44043 25.0693 29.9404 56.79 61.5898 58.5098c20.2197 1.08984 56.7305 25.1602 54.1006 51.8994
-c-1.95996 19.8701 -17.4502 42.6201 -43.1104 49.7002c43.9795 -36.5098 9.71973 -67.2998 -5.28027 -73.46c-4.39941 11.4404 -17.54 69.0801 0 130.2c40.4697 -22.8701 89.7002 -65.0996 93.21 -147.86l58.0605 -38.71l3.51953 -93.25l-107.33 59.8203l-7 -7
-l17.5801 -3.50977l44 -38.71l15.8398 5.2793l28.1504 -49.2598l3.51953 -119.64l-21.1094 -15.8398l32.5498 -15.8398l32.5498 15.8398l-21.1094 15.8398l3.51953 119.64l28.0996 49.25l15.8408 -5.28027l44 38.7109l17.5898 3.51953l-7 7l-107.3 -59.7695l3.51953 93.25
-l58 38.71c3.5498 82.6895 52.8096 124.92 93.2002 147.79c17.54 -61.1201 4.39941 -118.761 0 -130.2c-14.96 6.16016 -49.2803 36.9502 -5.28027 73.46c-25.6602 -7.08008 -41.1104 -29.8301 -43.1104 -49.7002c-2.63965 -26.7305 33.8809 -50.8096 54.1006 -51.9004
-c31.6396 -1.70996 61.1396 -33.4297 61.5801 -58.5l-22.4307 9.68066c5.54004 -17.5303 11.9209 -34.6699 7.9209 -56.7402l-26.3906 5.28027c15.7998 -26.3906 9.0498 -64.4502 8.7998 -84.4502l-26.3896 14.5195l-7 -35.6299l-24.5898 5.24023l-8.7998 -28.1504
-l-26.3906 21.1104l19.3506 -7l8.7998 33.3896l18.4697 -7l6.16016 33.4307l27.2803 -7.05078c3.7998 25.3809 -2.0498 49.1406 -13.2002 72.1406l30.3496 8.35938c-9.42969 43.5205 -35.4297 50.7305 -63.3398 54.1006
-c-9.35938 -30.6201 -6.24023 -56.4404 2.64062 -80.0498c-82.25 -56.3008 -76.75 -117.221 -81.3701 -149.11c-4.40039 -30.3496 -4.4502 -89.29 -25.5107 -97.21v29.9502l-5.2793 7l-5.28027 -12.3203zM346.9 71.4697l-15.8408 10.5303
-c7.4707 4.36035 13.7607 8.41992 19.3506 12.3203c-0.600586 -7.2207 -0.270508 -13.8398 -3.50977 -22.8398v-0.0107422zM375.05 120.73c-0.399414 -10.9404 -0.899414 -21.6602 -1.75977 -31.6709c-7.84961 1.86035 -15.5703 3.80078 -21.1104 7
-c8.24023 7.94043 15.5508 16.3203 22.8701 24.6807v-0.00976562zM399.68 115.45l-23.75 6.16016c6.78906 8.64844 12.9297 17.708 18.4707 27.2695c3.22949 -9.21973 5.2793 -20 5.2793 -33.4297zM403.2 196.39c19.4395 -12.8096 27.7998 -33.6592 29.9102 -56.2998
-c-12.3203 4.53027 -24.6299 9.31055 -36.9502 10.5605c5.05957 12 6.64941 28.1396 7 45.7393h0.0400391zM401.44 242.13c18.5596 -2.62988 35.1494 -9.18945 45.7598 -28.1494c-14.2197 -4.36035 -24.7803 -5.9707 -44 -14.0801
-c0.0800781 13.4092 -0.950195 27.9297 -1.75977 42.2295zM165.68 71.4805c-3.23926 9 -2.91016 15.5791 -3.50977 22.8398c5.58984 -3.90039 11.8799 -7.95996 19.3496 -12.3203zM137.53 120.74c7.31934 -8.36035 14.6299 -16.7402 22.8701 -24.6699
-c-5.54004 -3.2002 -13.2607 -5.14062 -21.1104 -7c-0.860352 10.0098 -1.36035 20.7295 -1.75977 31.6699zM112.89 115.46c0 13.4297 2 24.21 5.28027 33.4297c5.54102 -9.56152 11.6816 -18.6211 18.4697 -27.2695zM109.37 196.4h0.0898438
-c0.349609 -17.6006 2 -33.7402 7 -45.7402c-12.3701 -1.25 -24.6797 -6.03027 -37 -10.5605c2.11035 22.6406 10.4697 43.4902 29.9102 56.3008zM111.13 242.14c-0.80957 -14.2998 -1.83984 -28.8193 -1.75977 -42.2295c-19.2197 8.10938 -29.7803 9.71973 -44 14.0801
-c10.6299 18.9502 27.2295 25.5195 45.7598 28.1494z" />
-    <glyph glyph-name="hornbill" unicode="&#xf592;" horiz-adv-x="512" 
-d="M76.3799 77.7002c0.219727 -1.64648 0.333008 -3.32617 0.333008 -5.03125c0 -20.8623 -16.9375 -37.7998 -37.8008 -37.7998c-20.8623 0 -37.7998 16.9375 -37.7998 37.7998s16.9375 37.7998 37.7998 37.7998c1.84668 0 3.62207 -0.0927734 5.39746 -0.348633
-c-78.2793 111.35 52 190.53 52 190.53c-5.85938 -43 -8.23926 -91.1602 -8.23926 -91.1602c-67.3105 -41.4902 0.929688 -64.0605 39.8096 -72.8701c19.7207 -53.6396 71.2256 -91.8984 131.66 -91.9404c1.91992 0 3.76953 0.209961 5.66992 0.280273l0.110352 -18.8604
-c-99.2207 -1.38965 -158.7 29.1406 -188.94 51.6006zM184.38 405.4c109.75 73.9395 187.601 -54.0605 187.601 -54.0605c-43.04 5.86035 -91.1807 8.24023 -91.1807 8.24023c-43.0996 70.0098 -65.7998 -6.58008 -73.7998 -44.29
-c-51.5254 -20.7842 -87.8506 -71.208 -87.8896 -130.13c0 -0.910156 0.139648 -1.78027 0.139648 -2.67969l-21.8398 -0.150391c-1.41016 100.43 29.8701 160.09 52.4199 190c-1.02051 -0.0820312 -2.03711 -0.0888672 -3.07812 -0.0888672
-c-20.9453 0 -37.9492 17.0049 -37.9492 37.9502s17.0039 37.9502 37.9492 37.9502c15.0898 0 28.1338 -8.8252 34.248 -21.5918c2.35742 -4.91211 3.70117 -10.4102 3.70117 -16.2188c0 -1.67188 -0.109375 -3.31738 -0.321289 -4.93066zM488.57 271.23
-c-4.87012 -2.31934 -10.2754 -3.63965 -16.0244 -3.63965c-1.09375 0 -2.17578 0.046875 -3.24609 0.139648c84.4502 -113.45 -49 -194.61 -49 -194.61c5.87012 43.0303 8.20996 91.1602 8.20996 91.1602c66.6006 40.96 0.640625 63.54 -38.46 72.54
-c-20.5566 51.9932 -71.2275 88.7393 -130.49 88.7598c-2.75 0 -5.43945 -0.259766 -8.13965 -0.410156l-0.139648 22.5c93.6094 1.33008 151.72 -25.7998 183.45 -47.7402c-0.270508 1.82617 -0.375 3.67676 -0.375 5.57715c0 20.9395 17 37.9395 37.9395 37.9395
-c20.9404 0 37.9404 -17 37.9404 -37.9395c0 -15.1162 -8.85938 -28.1797 -21.665 -34.2764zM374.06 11.7598v-0.0595703c0.112305 0.000976562 0.239258 -0.0332031 0.351562 -0.0332031c20.9336 0 37.9297 -16.9961 37.9297 -37.9297
-c0 -20.9346 -16.9961 -37.9307 -37.9297 -37.9307c-15.0908 0 -28.1348 8.83203 -34.2412 21.6035c-2.0498 4.26074 -3.33984 9.0332 -3.63965 14c-111.98 -80.3398 -191.9 51 -191.9 51c43.0703 -5.87988 91.1904 -8.21973 91.1904 -8.21973
-c41.3301 -67.1709 63.9199 0.540039 72.7695 39.4893c53.3574 19.8584 91.3574 71.2188 91.3906 131.45c0 2.08008 -0.220703 4.08984 -0.300781 6.15039l19.5205 0.139648c1.28027 -89.9697 -23.71 -147.2 -45.1406 -179.66z" />
-    <glyph glyph-name="mailchimp" unicode="&#xf59e;" 
-d="M330.61 204.48c-2.50977 3.17969 -4.70996 8.31934 -5.9707 14.3193c-2.22949 10.6807 -1.98926 18.4102 4.24023 19.4199c6.23047 1.01074 9.25 -5.45996 11.4805 -16.1299c1.5 -7.17969 1.20996 -13.7803 -0.450195 -17.6094
-c-1.53418 0.198242 -3.02441 0.300781 -4.61328 0.300781c-1.58789 0 -3.15234 -0.102539 -4.68652 -0.300781zM277.05 196c-4.45996 1.95996 -10.2598 4.13965 -17.2598 3.7002c-12.5996 -0.770508 -21.75 -7.21973 -22.5996 -3.48047
-c-0.400391 1.83984 2.40918 4.87988 5.40918 7.06055c5.20117 3.80859 11.6621 6.06055 18.5967 6.06055c4.25391 0 8.31152 -0.84668 12.0137 -2.38086c8.63965 -3.7002 14.0098 -11.1504 12.1201 -13.0898c-1.08008 -1.12988 -3.81055 0.129883 -8.28027 2.12988z
-M268.05 190.87c9.68066 1.14941 16.8604 -4.62988 15.4004 -6.85059c-0.629883 -1.00977 -2.02051 -0.829102 -4.94043 -0.489258c-1.85449 0.286133 -3.73438 0.420898 -5.66895 0.420898c-4.59277 0 -8.99121 -0.838867 -13.0508 -2.37109
-c-4.04004 -1.62012 -4.30957 -1.15039 -5.20996 -0.810547c-1.53027 3.57031 4.40039 8.68066 13.4697 10.1006zM322.22 173.77c-3.40039 -6.91016 -17.7002 0.0703125 -14.2998 7c3.40039 6.93066 17.6797 -0.129883 14.2998 -7zM337.88 194.24
-c7.69922 -0.149414 7.42969 -16.0605 -0.259766 -15.9307c-7.69043 0.130859 -7.40039 16.0605 0.259766 15.9307zM119.09 115.34c4.0293 0.910156 3.40039 -1.25 3.37012 -0.359375c0.291016 -0.358398 0.464844 -0.818359 0.464844 -1.31445
-c0 -0.369141 -0.0966797 -0.71582 -0.264648 -1.01562c-3.16016 -7.37012 -20.1904 -7.68066 -21.5801 9c-0.910156 10.8594 9.30957 21.0293 -2.28027 28.6191c-2.02734 1.34277 -4.46289 2.14648 -7.0752 2.14648c-4.51465 0 -8.4873 -2.33691 -10.7744 -5.86621
-c-3.2998 -5.16016 -3.11035 -12.2002 -7.37988 -11.6299c-3.7207 0.540039 -3.70996 14.4805 5 24.0801c7.22949 8 25.9492 11.9297 35.0498 -5.54004c8.11035 -15.3896 -8.2002 -27.7695 -3 -35.7695c2.46973 -3.80078 7.14941 -2.66016 8.46973 -2.35059zM418.81 132.41
-c6.44043 0 16.5605 -7.5 16.5605 -25.2705c0 -17.7695 -7.37012 -37.9092 -9.11035 -42.3799c-54.3896 -130.279 -264.56 -130.06 -322.29 3c-31.5293 -0.0400391 -64.1699 26.9805 -67.5293 60.3799c-0.308594 2.71191 -0.438477 5.42383 -0.438477 8.2168
-c0 8.89062 1.60352 17.4102 4.53809 25.2832l-14.7598 12.5107c-67.5498 57.04 143.72 291.85 211.27 232.93c0.339844 -0.299805 22.9902 -22.5205 23.0498 -22.5703l12.5508 5.33008c59.2695 24.5303 107.359 12.6904 107.42 -26.4697
-c0.0292969 -20.3604 -12.9404 -44.1006 -33.7305 -65.6504c26.1699 -24.2998 20.0205 -71.6094 21.5205 -83c7.19922 -2 30.6992 -7.62012 41.0996 -18.54c18.3604 -19.25 5.52051 -39.5801 3.07031 -43.25c4.20996 -11.2998 3.42969 -8.79004 6.7793 -20.5195z
-M102.81 84.25c29.4502 -0.680664 38.6309 28.2002 34.0908 57.8398c-9.74023 62.9404 -90.1699 48.9805 -84 -12.3301c2.44922 -24.3594 27.0898 -44.8994 49.9092 -45.5098zM84.2998 198.45c19.3105 51.8096 51.54 99.5498 94.2002 132.399
-c31.6504 26.4102 65.7998 45.3506 65.7998 45.3506s-18.3896 21.3193 -23.9395 22.8896c-34.1699 9.23047 -107.94 -41.6494 -155.051 -108.88c-19.0596 -27.21 -46.3096 -75.3604 -33.2998 -100.21c1.58984 -3 10.71 -10.9297 15.5898 -15
-c8.18066 11.9102 21.54 20.5 36.7002 23.4502zM323.18 97.2998c2.58984 0.259766 0.560547 -2.53027 0.560547 -2.53027s-27.4004 -12.75 -71 0.740234c1.20996 -10.2295 11.1699 -14.8193 15.9395 -16.6699c31.4004 -12.21 86.6904 -2.58008 128.46 26
-c0.850586 0.589844 1.41992 0 0.730469 -1c-28.9697 -41.3496 -128.73 -54.7598 -151.37 -21.3496c-12.0801 17.8301 -0.599609 43.8594 19.5498 41.1494c6.7998 -0.769531 53.7705 -8 100.48 13.6807c27.4893 12.7598 37.8701 26.79 36.3096 38.1602
-c-0.537109 3.60742 -2.25 6.85156 -4.74023 9.28906c-5 4.83008 -12.79 8.60059 -26 12.3105c-4.35938 1.22949 -7.31934 2.00977 -10.5098 3.05957c-5.67969 1.83008 -8.47949 3.33008 -9.10938 14c-0.280273 4.62988 -1.09082 20.9102 -1.38086 27.6299
-c-0.519531 11.7607 -1.91992 27.8506 -11.9199 34.4902c-2.71094 1.73535 -5.94238 2.75098 -9.39746 2.75098c-1.44824 0 -2.85645 -0.177734 -4.20215 -0.510742c-5.69043 -0.969727 -9.06055 -4.00977 -13.2598 -7.50977
-c-12.4404 -10.3701 -22.9502 -12.0605 -34.6406 -11.5605c-6.98926 0.290039 -14.3994 1.37988 -22.8799 1.87988l-5 0.290039c-19.5801 1 -40.5693 -15.9092 -44.0693 -39.9092c-4.86035 -33.4307 19.3291 -50.7002 26.3291 -60.8301
-c1.04785 -1.25391 1.74121 -2.82812 1.9209 -4.54004c0 -1.94043 -1.25 -3.48047 -2.48047 -4.79004c-19.9805 -20.54 -26.3701 -53.1699 -18.8398 -80.3701c0.927734 -3.33594 2.13574 -6.6377 3.5498 -9.74023c17.7002 -41.2598 72.4902 -60.4795 126 -43
-c7.01562 2.29199 13.8936 5.20215 20.3398 8.58008c11.8203 5.84668 22.2969 13.7168 31.1504 23.3096c14.2002 14.8408 22.6396 30.9707 25.9297 50.8408c2.81055 18.6191 -7.78027 18.7598 -11.4395 18.0996c-1.37598 8.42188 -3.82812 16.6758 -7.12012 24.2803
-c-15.6299 -12.3506 -35.71 -20.9707 -51 -25.3506c-69.4004 -19.9102 -90.1904 6.35059 -96.4004 -13.8096c33.7705 -12.3701 69.5098 -7.07031 69.5098 -7.07031zM171.31 290.5l0.0605469 0.00976562c-0.107422 -0.130859 -0.170898 -0.297852 -0.170898 -0.480469
-c0 -0.419922 0.34082 -0.759766 0.759766 -0.759766c0.151367 0 0.292969 0.0439453 0.411133 0.120117c11.4199 8.30078 64.9502 42.7705 134.5 26.8301c0.860352 -0.189453 1.39941 1.29004 0.639648 1.7207c-11.3398 6.33984 -28.6895 10.6494 -41 10.7393
-c-0.405273 0.00976562 -0.732422 0.342773 -0.732422 0.750977c0 0.164062 0.0527344 0.31543 0.142578 0.439453c2.23535 2.92383 4.79492 5.49414 7.70996 7.74023c0.18457 0.140625 0.303711 0.362305 0.303711 0.611328
-c0 0.424805 -0.345703 0.770508 -0.770508 0.770508c-0.0175781 0 -0.0351562 -0.000976562 -0.0527344 -0.00195312c-17.5205 -1.08008 -37.5107 -9.4707 -49 -17.2998c-0.12207 -0.0859375 -0.271484 -0.136719 -0.431641 -0.136719
-c-0.414062 0 -0.75 0.335938 -0.75 0.75c0 0.0605469 0.0078125 0.120117 0.0214844 0.176758c0.899414 4.30957 3.72949 9.98926 5.18945 12.6494c0.0644531 0.108398 0.101562 0.236328 0.101562 0.371094c0 0.40332 -0.327148 0.730469 -0.730469 0.730469
-c-0.134766 0 -0.261719 -0.0371094 -0.371094 -0.101562c-18.4697 -9.4502 -39.0898 -26.2803 -55.8301 -45.6299z" />
-    <glyph glyph-name="megaport" unicode="&#xf5a3;" horiz-adv-x="496" 
-d="M214.5 238.4l33.4004 33.3994l33.3994 -33.3994v-66.4004l-33.2998 -33.2998l-33.5 33.5v66.2002zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM393.1 25.5996h0.100586v87.1006l-59.7002 59.7002v87.5996l-59.5 59.5
-v75.5996l-26.0996 19.2002l-26.1006 -19.2002v-75.5996l-59.5 -59.5v-87.9004l-59.5 -59.5v-87l26.1006 -19.1992l26.0996 19.1992v65.5l33.5 33.4004l33.4004 -33.4004v-65.5l26.0996 -19.1992l26.2002 19.1992v65.5l33.3994 33.4004l33.4004 -33.4004v-65.5l26 -19.1992z
-" />
-    <glyph glyph-name="nimblr" unicode="&#xf5a8;" horiz-adv-x="384" 
-d="M246.6 148.71c15.5703 0 27.1504 -11.46 27.1504 -27s-11.6201 -27 -27.1504 -27c-15.6992 0 -27.1494 11.5703 -27.1494 27s11.5498 27 27.1494 27zM113 121.75c0 15.6104 11.6797 27 27.1504 27c15.4697 0 27.1494 -11.46 27.1494 -27s-11.4697 -27 -27.1494 -27
-c-15.4404 0 -27.1504 11.3096 -27.1504 27zM191.76 289c98.3701 0 177.76 -78.9102 177.76 -176.48c0 -97.5693 -79.6094 -176.52 -177.76 -176.52c-98.1494 0 -177.76 78.8701 -177.76 176.52v335.48l45.25 -227c30.2002 48.2305 97.75 68 132.51 68zM191.76 -19.1201
-c73.2402 0 132.51 58.96 132.51 131.64c0 72.6807 -59.2393 131.54 -132.51 131.54c-73.2695 0 -132.51 -58.8994 -132.51 -131.59c0 -72.6895 59.2402 -131.59 132.51 -131.59z" />
-    <glyph glyph-name="rev" unicode="&#xf5b2;" 
-d="M289.67 173.11c0 -36.1895 -29.3809 -65.5703 -65.5703 -65.5703c-36.1885 0 -65.5693 29.3809 -65.5693 65.5703c0 36.1885 29.3906 65.5596 65.5801 65.5596c36.1631 -0.0439453 65.5156 -29.3965 65.5596 -65.5596zM429.22 178.16v-210.16h-210.16v0.110352
-c-110.939 2.70996 -200.06 93.4092 -200.06 205c0 108.569 84.2998 197.319 191 204.569v38.3203l108.77 -62.7803l-108.77 -62.79v39.1201c-80 -7.16016 -143 -74.5498 -143 -156.43c0 -86.6201 70.4902 -157.12 157.11 -157.12s157.09 70.5 157.09 157.12
-c-0.0263672 55.3057 -28.5371 103.871 -71.8105 131.84l45.3799 26.2002c44.3125 -36.582 72.8613 -91.4561 74.3203 -153h0.129883z" />
-    <glyph glyph-name="shopware" unicode="&#xf5b5;" horiz-adv-x="512" 
-d="M403.5 -7.41016c-40.9688 -30.4482 -91.7109 -48.4707 -146.63 -48.4707c-0.223633 0 -0.646484 -0.120117 -0.870117 -0.119141c-137.19 0 -248 111 -248 248c0 137.19 111 248 248 248h0.21582c63.5576 0 121.648 -24.0508 165.484 -63.5
-c0.716797 -0.65332 1.16699 -1.59375 1.16699 -2.63965c0 -1.9707 -1.59961 -3.57031 -3.57031 -3.57031c-0.155273 0 -0.306641 0.0107422 -0.457031 0.0302734c-18.2656 2.43848 -36.9023 3.69727 -55.8301 3.69727c-0.445312 0 -0.43457 -0.0166016 -0.879883 -0.0175781
-c-129.36 0 -222.399 -53.4697 -222.399 -155.35c0 -109 92.1299 -145.881 176.829 -178.73c33.6406 -13 65.4004 -25.3604 87 -41.5898c0.868164 -0.65332 1.42969 -1.69238 1.42969 -2.86133c0 -1.16992 -0.561523 -2.20508 -1.42969 -2.8584zM503 214.91
-c0.698242 -7.59375 0.950195 -15.1699 0.950195 -22.9443c0 -31.8691 -5.99902 -62.3467 -16.9307 -90.3662c-0.526367 -1.31445 -1.81543 -2.24023 -3.31738 -2.24023c-0.608398 0 -1.18066 0.152344 -1.68262 0.420898
-c-29.4893 16.3594 -61.6094 28.3398 -92.6797 39.9297c-60.2803 22.4902 -112.34 41.8896 -112.34 84.4902c0 1.45996 -3.87988 53.6299 80.25 53.6299c50.8604 0 92.7197 -17.4805 144.48 -60.4805c0.706055 -0.598633 1.17871 -1.46484 1.26953 -2.43945z" />
-    <glyph glyph-name="squarespace" unicode="&#xf5be;" horiz-adv-x="512" 
-d="M186.12 104.66l157.22 157.2c38.5703 38.5898 101.13 38.5898 139.72 0c38.5908 -38.5801 38.5908 -101.13 0 -139.721l-119.25 -119.239l-0.0400391 -0.0400391c-19.2891 -19.2705 -50.5498 -19.25 -69.8193 0.0400391l154.149 154.14
-c19.29 19.29 19.29 50.5703 0 69.8604s-50.5693 19.29 -69.8594 0l-157.181 -157.181c-9.64941 -9.64941 -25.29 -9.64941 -34.9395 0c-9.65039 9.65039 -9.65039 25.29 0 34.9404zM430.65 209.46c9.63965 -9.63965 9.63965 -25.2803 -0.0107422 -34.9297l-157.199 -157.2
-c-38.5801 -38.5703 -101.141 -38.5703 -139.721 0l-0.0195312 0.0195312c-9.64062 9.65039 -9.62988 25.29 0.0195312 34.9307l0.0107422 0.00976562c9.64941 9.63965 25.2793 9.62988 34.9199 -0.00976562l0.0498047 -0.0498047
-c19.29 -19.2607 50.5498 -19.2402 69.8193 0.0498047l157.2 157.18c9.64062 9.65039 25.2803 9.65039 34.9307 0zM168.66 122.13c-38.6006 -38.5801 -101.13 -38.5801 -139.73 0.00976562c-38.5801 38.5801 -38.5801 101.13 0 139.721l119.23 119.25l0.0195312 0.0195312
-c19.3008 19.2803 50.5703 19.2705 69.8506 -0.0195312l-154.17 -154.17l-0.0302734 -0.0302734c-19.2803 -19.2998 -19.2598 -50.5605 0.0302734 -69.8398l0.00976562 -0.0107422c19.29 -19.29 50.5703 -19.2793 69.8496 0.0107422l157.21 157.18
-c9.64062 9.63965 25.2705 9.63965 34.9102 0c9.64062 -9.65039 9.64062 -25.29 0 -34.9404zM81.3301 174.53c-9.64062 9.64941 -9.65039 25.29 0 34.9297l157.189 157.19c38.5908 38.5898 101.131 38.5898 139.721 0c9.64941 -9.64062 9.64941 -25.2803 0 -34.9307
-c-9.64062 -9.64941 -25.2803 -9.64941 -34.9307 0l-0.0195312 0.0205078c-19.29 19.2793 -50.5596 19.2695 -69.8398 -0.0205078l-157.21 -157.189c-9.64062 -9.64062 -25.2705 -9.64062 -34.9102 0z" />
-    <glyph glyph-name="themeco" unicode="&#xf5c6;" 
-d="M202.9 439.57c9.89941 5.72949 26 5.81934 35.9492 0.209961l191.15 -107.63c10 -5.60059 18 -19.4404 18 -30.8604v-217.29c0 -11.4404 -8.05957 -25.29 -18 -31l-191.19 -108.74c-9.92969 -5.66016 -26 -5.56934 -35.8496 0.209961l-185.1 108.41
-c-9.86035 5.78027 -17.8604 19.7402 -17.8604 31.1201v217.29c0 11.4404 8 25.3604 17.9102 31.0801zM125.5 239.74c-15.9404 0 -31.8896 -0.140625 -47.8301 -0.140625v-101.449h19.1299v29.8496h28.7002c49.71 0 49.5596 71.7402 0 71.7402zM265.64 139.45
-l-30.7295 34.6396c37 7.50977 34.7998 65.2305 -10.8701 65.5098c-16.0898 0 -32.1699 0.140625 -48.2598 0.140625v-101.59h19.1299v33.9092h18.4102l29.5596 -33.9092h22.7598v1.2998zM224.05 221.77c23.3398 0 23.2598 -32.46 0 -32.46h-29.1299v32.46h29.1299z
-M128.49 223.37c21.1797 0 21.1094 -38.8506 0 -38.8506h-32.3105v38.8408zM321.14 241.62c-68.46 0 -71 -105.8 0 -105.8c69.4805 0.00976562 69.4102 105.8 0 105.8zM321.14 224.23c44.1201 0 44.8008 -70.8604 0 -70.8604c-44.7998 0 -44.4297 70.8604 0 70.8604z" />
-    <glyph glyph-name="weebly" unicode="&#xf5cc;" horiz-adv-x="512" 
-d="M425.09 382.17c50.9102 0 87.5498 -35.1504 86.9199 -83.4697c0 -21.6201 -0.950195 -18.5498 -77.5 -227.2c-22.3799 -60.5703 -67.7695 -69.6699 -92.7402 -69.6699c-39.2393 0 -70.0391 19.46 -85.9297 54.29c-15.8896 -34.5205 -46.7002 -53.9805 -85.9297 -53.9805
-c-24.9697 0 -70.3701 8.78027 -92.7402 69.3506c-72.9902 200.21 -77.1699 204.52 -77.1699 233.479c0 43.3105 38.5898 77.2002 87.54 77.2002c40.21 0 73.2803 -25.7295 83.6602 -64.3301c18.4795 58.0498 65.5 64.3301 85.2803 64.3301
-c19.4492 0 66.7891 -6.26953 84.9492 -64.3301c10.3799 38.6006 43.7803 64.3301 83.6602 64.3301zM451.43 267.36c3.49023 11.1992 7.29004 19.3701 7.61035 27.2393c0 22.3906 -16.1602 35.71 -38.3301 35.71c-18.6904 0 -31.9902 -11.7998 -36.1104 -29.0498
-l-44.0293 -139.819h-0.950195l-44.6602 136.79c-6.01953 19.9697 -16.4697 32.0791 -38.96 32.0791s-32.9404 -12.4092 -38.96 -32.0791l-44.6602 -136.79h-0.950195l-44.0293 139.819c-4.12012 17.25 -17.4199 29.0498 -36.1104 29.0498
-c-22.4902 0 -38.3301 -13.0195 -38.3301 -29.3594c0 -10.5898 2.54004 -19.6699 7.91992 -34.5l64.9404 -175.23c7.91016 -21.4795 21.2197 -37.2197 46.2393 -37.2197c23.1201 0 37.0605 12.0996 44.0205 33.5996l39.2803 117.42h0.949219l39.2803 -117.42
-c6.65039 -21.4893 20.5898 -33.8994 44.0303 -33.8994c25.0195 0 38.3203 15.7295 46.2402 37.2197z" />
-    <glyph glyph-name="wix" unicode="&#xf5cf;" horiz-adv-x="640" 
-d="M393.38 316.31c0 -13.0293 2.08008 -32.6895 -28.6797 -43.8291c-9.52051 -3.4502 -15.9502 -9.66016 -15.9502 -9.66016c0 31 4.71973 42.2197 17.4004 48.8594c9.75 5.11035 27.2295 4.62988 27.2295 4.62988zM277.58 280.77
-c5.47949 26.3408 30.8799 38.3408 55.2998 35.2705l-65.5703 -247.93s-21.6396 -1.56055 -32.46 3.95996c-14.2197 7.25 -20.9893 12.8398 -29.5898 46.5693c-7.66992 30.0703 -29.1494 118.4 -31.1201 124.7c-4.30957 13.8105 -10.6396 14.9404 -15.3994 0
-c-2.00977 -6.29004 -23.4502 -94.6299 -31.1201 -124.7c-8.61035 -33.7295 -15.3701 -39.3193 -29.5898 -46.5693c-10.8301 -5.52051 -32.46 -3.95996 -32.46 -3.95996l-65.5703 247.93c23.8604 3 49.7305 -8.5498 55.2803 -35.2705l34.2393 -132.659l28.4805 108.569
-c7.76953 32.3506 21.0596 48.5303 48.4297 48.5303c27.6201 0 40.7402 -16.54 48.4307 -48.5303l28.4795 -108.569zM393.36 275.56v-8.97949l0.0195312 0.00976562v-150.27c-0.129883 -30.8301 -3.33008 -37.6807 -17.2598 -44.7803
-c-10.8203 -5.52051 -27.3701 -3.42969 -27.3701 -3.42969v152.069c0 21.25 -1.95996 27.9404 13.1797 35.2002c6.19043 2.96973 11.96 5.25 17.9707 8.61035c9.35938 5.22949 13.46 11.5693 13.46 11.5693zM556.8 191.48l82.9902 -123.36s-35.9297 -4.62012 -53.3203 11.21
-c-13.9102 12.6602 -23.7393 28.3398 -53.1396 70.7197c-0.5 0.770508 -6.25977 10.5205 -13.0703 0c-34.9297 -50.3496 -41.0195 -60.2598 -52.5098 -70.7197c-17.3799 -15.8301 -53.9502 -11.21 -53.9502 -11.21l82.9697 123.36l-83.1992 123.739
-s35.1094 5.98047 52.5 -9.84961c13.3799 -12.1797 24.8896 -30.2402 54.1797 -72.4697c6.82031 -10.54 12.5996 -0.730469 13.0703 0c29.7695 42.9199 40.8799 60.3691 54.1797 72.4697c17.3896 15.8301 52.5 9.84961 52.5 9.84961z" />
-    <glyph glyph-name="ello" unicode="&#xf5f1;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM391.84 154.8c2.48047 7.44043 -2.47949 15.71 -9.91992 17.3604c-7.43945 2.47949 -15.71 -2.48047 -17.3604 -9.91992
-c-14.0498 -52.9102 -62 -90.1104 -116.56 -90.1104s-102.51 37.2002 -116.56 90.1104c-1.65039 7.43945 -9.9209 11.5693 -17.3604 9.91992c-7.44043 -1.65039 -11.5703 -9.91992 -9.91992 -17.3604c16.5303 -65.3096 76.0498 -111.6 143.84 -111.6
-s127.31 46.29 143.84 111.6z" />
-    <glyph glyph-name="hackerrank" unicode="&#xf5f7;" horiz-adv-x="512" 
-d="M477.5 320c14.5 -25 14.4805 -230.92 -0.00976562 -256s-192.391 -128 -221.33 -128c-28.9404 0 -206.83 102.8 -221.32 128s-14.4102 230.79 0 256s192.351 128 221.32 128s206.84 -103.05 221.34 -128zM316.13 33.7803c3.95996 0 40.4404 35.7793 37.5605 38.6895
-c-0.870117 0.839844 -8.82031 1.49023 -17.6904 1.83984c0 32.4004 -3 19.0508 0.679688 210.341c0.0703125 3.65918 -1.04004 5.37988 -4.5 5.37988c-11.0801 0.0693359 -22.1602 0.0195312 -33.2295 -0.0605469c-3.25977 -0.0292969 -4.31055 -1.80957 -4.20996 -5.2002
-c1.58984 -48.8994 1.2002 -79.0898 1.2002 -83.6396h-80.2607c0.629883 25.7998 0.209961 79.6396 2.62988 105.39v3.16016c8.87012 0.350586 15.9004 0.970703 16.7705 1.83984c2.90039 2.91016 -34.3203 38.6904 -38.2705 38.6904
-c-3.94922 0 -41.4092 -35.7695 -38.4893 -38.6904c0.879883 -0.839844 7.58984 -1.48926 17.2598 -1.83984v-3.16992c3.15039 -128.67 1.07031 -179.229 0.150391 -212.67c-0.130859 -4.58008 1.63965 -6.10938 5.73926 -6.10938
-c10.1406 0.0292969 20.2803 -0.0800781 30.4102 -0.0800781c4.16016 -0.0605469 5.96973 1.39941 5.74023 5.93945c-1.83008 36.6797 -1.37012 65.7803 -1.37012 72.8799h79.9297c0 -2.41992 0.44043 -3.84961 0.44043 -5.84961
-c-0.350586 -17.7305 -0.94043 -60.0898 -0.94043 -86.3203c-11.29 -0.349609 -16.6797 -0.959961 -17.5498 -1.83008c-2.91016 -2.91992 34 -38.6895 38 -38.6895z" />
-    <glyph glyph-name="kaggle" unicode="&#xf5fa;" horiz-adv-x="320" 
-d="M304.2 -53.5l1.39941 -7.59961c-0.5 -2 -2.5 -3 -6 -3h-66.8994c-4 0 -7.5 1.7998 -10.5 5.2998l-110.5 140.6l-30.7998 -29.2998v-109c0 -5 -2.5 -7.5 -7.5 -7.5h-51.9004c-5 0 -7.5 2.5 -7.5 7.5v497c0 5 2.5 7.5 7.5 7.5h51.9004c5 0 7.5 -2.5 7.5 -7.5v-306
-l132.3 133.7c3.5 3.5 7 5.2998 10.5 5.2998h69.2002c7 0 7.89941 -7.7998 5.2998 -10.5l-139.8 -135.3z" />
-    <glyph glyph-name="markdown" unicode="&#xf60f;" horiz-adv-x="640" 
-d="M593.8 388.9c25.5 0 46.2002 -20.7002 46.2002 -46.1006v-301.6c0.0996094 -25.4004 -20.5996 -46.1006 -46.0996 -46.1006h-547.7c-25.5 0 -46.2002 20.7002 -46.2002 46.2002v301.5c0 25.4004 20.7002 46.1006 46.2002 46.1006h547.6zM338.5 87.4004h-0.200195v209.199
-h-61.5l-61.5 -76.8994l-61.5 76.8994h-61.5v-209.199h61.7002v120l61.5 -76.9004l61.5 76.9004v-120h61.5zM473.8 84.2998l92.2002 107.7h-61.5v104.6h-61.5v-104.6h-61.5z" />
-    <glyph glyph-name="neos" unicode="&#xf612;" horiz-adv-x="512" 
-d="M415.44 -64h-95.1104l-108.21 154.54v-91.0996l-86.4297 -63.4404h-97.6904v482.18l40.4697 29.8203h108.05l123.74 -176.13v112.68l86.4307 63.4502h97.6895v-461.5zM38.7695 412.73v-460.73l72 52.8799v249.12l215.5 -307.64h84.79l52.3506 38.1699h-78.2705
-l-316.14 450.47zM121.31 -53.8799l80 58.7803v101l-79.7598 114.399v-220.939l-72.5498 -53.25h72.3398zM80.6299 437.23l310.601 -442.57h82.3691v442.57h-79.75v-317.561l-222.939 317.561h-90.2803zM311 256.35l72 -102.81v278.53l-72 -53v-122.721z" />
-    <glyph glyph-name="zhihu" unicode="&#xf63f;" horiz-adv-x="640" 
-d="M170.54 299.87h122.68v-217.55h-49.5293l-42.0107 -26.3701l-7.70996 26.3701l-23.4297 0.00976562v217.54zM268.29 105.94v170.31h-72.8203v-170.31l11.9004 -0.0400391l5.08008 -17.4707l27.8994 17.5107h27.9404zM149.83 200.33
-c7.5 0 7.58984 -23.6104 7.58984 -23.6104h-61.6504c-0.879883 -13.1201 -3.50977 -26.6895 -7.86914 -40.6699l14.6191 11.6201c8.73047 -8.75 29.2109 -32.8896 36.79 -41.8096c9.15039 -13.1006 1.24023 -39.9902 1.24023 -39.9902l-53.96 64.9395
-c-12.6094 -48.3496 -35.5898 -69.25 -35.5898 -69.25c-10.0898 -8.96973 -30.5098 -15.75 -51 -9.89941c42.8301 33.2197 66.4502 75.2402 70.8496 125.1h-65.5801s3.82031 23.6201 15.5605 23.6201h52.2695c0.480469 6.56055 1.68066 62.9404 1.68066 73.4404h-28.8701
-c-2.62988 -7.87012 -3.03027 -8.64062 -5.14062 -14.5303c-11.4697 -21.0303 -30.9492 -21.5703 -36.8398 -22.21c17.4902 34.9795 27.3105 69.2197 30.7002 78.1201c8.2002 21.5693 32.2705 21.5693 32.2705 21.5693c-5.25 -14.0098 -9.63086 -27.5498 -13.1201 -40.6699
-h88.5c10.5498 0.25 8.58008 -22.3096 8.58008 -22.3096h-51.1602c0 -21.8701 -0.459961 -46.3604 -2.2002 -73.46h52.3301zM561.85 201.93l-19.2295 14.4307s30.8301 40.0498 36.8301 48.1992c8.72949 10.7402 27.3799 -4.05957 27.3799 -4.05957
-s-24.1504 -32.9297 -44.9805 -58.5703zM411.76 261.02l0.00976562 0.0107422c8.99023 -8.25 34.6602 -45.8604 34.6602 -45.8604l-19.46 -13.7295c-1.59961 2.40918 -41.1201 57.4492 -41.1201 57.4492s16.9004 10.3799 25.9102 2.12988zM640 189.65
-c0 0 0.950195 -23.79 -8.73047 -23.79h-122.359v-73.3203c0.780273 -28.0303 -15.3301 -45.3096 -44.8906 -45.3096c-9.84961 0 -16.1396 1.75977 -26.0195 6.56934c-12.9805 7.4502 -17.3203 17.8701 -19.3096 21.8398c15.6094 -0.65918 27.6094 -1.91992 41.6895 -1.80957
-c13.29 -0.870117 24.4805 7.15039 24.4805 21.1201v70.9199h-107.94c-22.6895 0.540039 -25.5098 22.8496 -25.5098 22.8496h133.47v99.8105c-12.8301 0 -31.6797 -0.830078 -56.5098 -2.43066c-26.46 -0.80957 -35.8398 -2.58984 -49.1504 0.890625
-c-8.16016 2.46973 -14.1797 10.7295 -15.7793 19.5498c67.1396 1.55957 232.359 18.0498 232.359 18.0498s20.1006 5.75977 23.1699 4.58008c12.8105 -6.25 0.589844 -33.4395 0.589844 -33.4395c-17.6396 -0.810547 -46.8896 -2.40039 -87.7695 -4.81055
-c-10.4297 -0.799805 -18.04 -1.2002 -22.8496 -1.2002v-101c0.149414 0 111.279 0.930664 131.06 0.930664z" />
-    <glyph glyph-name="alipay" unicode="&#xf642;" 
-d="M377.74 416c38.6895 0 70.0898 -31.5703 69.9297 -70.2598v-234.41c-48.6104 16.7002 -99.6895 36.04 -148.62 52.7402c23.1406 44.2998 38.3506 90.9199 38.3506 90.9199h-88.7705v31.2402h109.45v19.0098h-109.44v50.4199h-50.9199v-50.4199h-109.439v-19.0098h109.439
-v-31.2402h-92.0801v-16.7002h178.2s-9.91992 -30.25 -26.4502 -60.3398c-47.7793 14.71 -91.75 24.96 -127.13 24.96c-84.6396 0 -103.49 -42.4902 -99.5195 -81.5c3.30957 -31.0703 26.4502 -76.3701 97.04 -76.3701c64.4795 0 116.55 37.0303 148.62 81
-c61.0098 -28.0996 125.64 -62.8203 171.6 -88.4404c-0.5 -38.5195 -31.7402 -69.5996 -70.2598 -69.5996h-307.48c-38.8496 0 -70.2598 31.4102 -70.2598 70.2598v307.48c0 38.8496 31.4102 70.2598 70.2598 70.2598h307.48zM47.2803 125.05
-c-0.990234 17.5205 10.9102 50.5801 78.3594 50.5801c24.96 0 64.8105 -12.7295 109.44 -31.4102c-25.29 -33.2197 -65.7998 -72.8994 -117.87 -72.8994c-59.6797 0 -68.9404 33.5596 -69.9297 53.7295z" />
-    <glyph glyph-name="the-red-yeti" unicode="&#xf69d;" horiz-adv-x="512" 
-d="M488.23 206.3c2.95508 -3.9668 5.25098 -8.47559 6.76953 -13.2998c3.99121 -10.8701 7.04004 -22.4727 8.90039 -34.2002l-2.5 -0.5l-13 14.2998c-17.9004 -28.0996 -9.90039 -15.3994 -16.7002 -25.0996c0 -124.2 -101.3 -211.5 -223 -211.5
-c-61.5 0 -113.9 20.2002 -157.5 60.2002c-64.5 60.8994 -64.9004 125 -64.9004 150.5c-0.5 1.7998 -0.700195 3.5 -1.2002 5.2002l-20.1992 -22.4004c-6.80078 43 25.6992 74.2998 33 80.7002c0.5 1 0.699219 2.2002 1.19922 3.2002l-28.7998 1l-3 3.39941
-c8.5 3.5 25.2998 13.2998 40.2998 14.2998c7.63672 14.623 16.9365 28.0742 27.8008 40.3008c1.2998 6.39941 3.2998 14.1992 6.59961 25.7998l-7.59961 -4.7002l-1.7002 1.7002l1.7002 8.39941c10.6934 25.7754 26.6318 48.6221 46.6992 67.4004l-33 14.2998h3.7002
-c20.9004 4.90039 33.2002 3.2998 49.2002 0c-2.5 4.10059 -5.40039 10.5 -8.40039 18.9004c-1.36035 3.74219 -2.09961 7.81445 -2.09961 12.0244c0 4.69629 0.923828 9.17871 2.59961 13.2754c8.90039 -7.40039 14.3008 -24.5996 15.2002 -27
-c0.700195 3.59961 2.10059 21.2998 33.7002 45.5l1.83008 -0.5l-12 -44.2002c30 17.7002 63 21.9004 97.9004 11.7998c-12.7002 -12.1992 -24.3008 -28.8994 -42.5 -33c7.39941 -2.2998 28.6992 -9.69922 34.1992 -15.1992l-24.7998 7.09961
-c6.5 -6 19.6006 -16.4004 25.1006 -25.0996c23.7891 -1.09473 46.9111 -5.74414 68.3994 -13.3008l-0.5 0.5c29.4004 14.7002 37.7002 27.3008 74.7998 3c0 -30.1992 -2.2998 -23.3994 3 -29.7998c7.69336 6.50391 16.1553 12.0381 25.3008 16.5
-c13 6.40039 23.0996 4.7002 30.6992 -5.89941c11.8008 0 17.8008 -15.7002 18.4004 -27c14.7998 -2.90039 2.7002 -30.7002 2.5 -30.7002l-7.09961 -18.2002c7.7998 -7.7998 22.0996 -20.9004 31.6992 -44.7998zM398 336.8c-13.0996 8.90039 -22.7002 11.9004 -28.2998 8.5
-c8.09961 -7.2002 13 -14.2998 13.5 -20.7002c1.2002 -7.59961 -2.2002 -14.7998 -10.6006 -21.8994l-4.19922 -3.40039c4.2002 -6.89355 7.1416 -14.793 8.39941 -23.0996h2.5c-2.09961 13.8994 -2.5 11 0.700195 14.7998c11 -6.40039 14.9004 -14.5 16 -19.9004
-c21.7998 10.1006 29.5 12.7002 54.7998 20.9004l-18.2002 -16c11.4004 0 25.6006 0.299805 46.5 -8.40039c7 24.3008 7.10059 20.7002 2.5 20.7002l-4.69922 -11.2998c-1.7002 10.5 -2.90039 18.9004 -3.40039 25.2998c-0.5 6.7002 -3.90039 9.60059 -9.2998 10.1006
-c-0.0117188 -0.470703 -0.0126953 -0.894531 -0.0126953 -1.36816c0 -4.77148 0.594727 -9.40527 1.71289 -13.832l-1.7002 -5.90039c-2.90039 10.6006 -5.90039 20.2002 -9.2998 27.7998c-9.7002 17.7002 -30.2002 -9.19922 -43 -11.2998
-c4.53027 -0.25293 8.71777 -0.380859 13.3115 -0.380859c4.59277 0 9.15723 0.12793 13.6885 0.380859l-22.4004 -5.39941l3.40039 -4.7002c-5.5 0 -16.9004 -0.900391 -22.4004 17.2002zM358.4 346.9l-20.3008 -11.8008
-c11.3008 -7.59961 20.2002 -18.1992 27.8008 -31.1992c6.39941 2.89941 10.0996 5.09961 11.7998 7.59961c2.5 2.7998 2.5 4.7002 3 7.09961c0.599609 1.30078 0.799805 2.7002 -3.40039 11.1006c-7.5 11.7998 -16.2002 15.2998 -18.8994 17.2002zM91 304.9
-c-7.7998 -24.1006 -11.7002 -49.4004 -13.2002 -74.6006l13.2002 -5l1.2002 27c9.5 -16.3994 11.2002 -23.2998 12.2998 -28.7998c2.7998 2.09961 7.7002 7 22.5996 11.2998l1.2002 -1.7002l-7.59961 -10.5996c10.0996 3.5 19.5 3.5 28.2998 0.5l-10.5996 -8.40039
-c22.7998 -8.39941 26.5996 -7.59961 38.3994 -26.0996l-11.7998 1.2002c34.9297 -20.5 66 -47.9004 141.2 -63.2002c15.5996 24.0996 14 21.0996 14 22.9004l0.200195 0.199219l-0.200195 0.200195c-0.700195 1.90039 -14.1006 16.6006 -18.2002 20.7002
-c7.2998 -1.7998 6 -0.900391 10.7998 -3.7002c1.7002 -0.899414 -5.39941 5.40039 -21.8994 20.2002c16.5 -6.7002 27.5996 -15.5 33 -27.7998l1.69922 30.7002l-22.3994 17.6992l6.39941 5.90039c-7.2998 0 -31 3.7002 -49.1992 -16l-2.5 0.5
-c6.9668 14.3867 12.4512 30.0156 16 46c1.9209 9.16797 2.95508 18.5742 3 28.2998c0 19.5 -4.7002 38.4004 -13.5 56.6006c-6.40039 13.5 -16.5 25.2998 -30 35.3994c-6.5957 4.94238 -13.4805 9.43652 -20.7002 13.5c3 0.700195 1 1.2002 -5.40039 1.2002
-c-6.39941 0.200195 -13 0.700195 -19.3994 1.2002v-3c-10.2949 -1.63086 -19.2871 -7.22266 -25.3008 -15.2002h-1.19922l-5.40039 -3.40039c-1.2002 2.90039 0 6.30078 4.2002 9.30078l10.5996 11.2998l-3.39941 -0.5l2 3.39941
-c-2.30078 0.200195 -4.2002 0.5 -6.2002 0.700195l-0.5 1.2002l2.5 1.7002c2.2002 -0.200195 4.59961 -0.5 7.09961 -0.700195c2.9043 1.54785 6.22559 2.4375 9.74414 2.4375c1.45898 0 2.88184 -0.150391 4.25586 -0.4375l2.5 -1.2002l0.200195 -0.5
-c7.93457 0.514648 15.7422 1.49121 23.4004 2.90039c20.6992 2.89941 36.6992 11.2998 48.5 24.7998l-21.1006 0.5c-25.7998 0.5 -49.3994 -5.40039 -71.2998 -18.9004l-2.5 2.5l0.5 4.7002l1.7002 7.10059c1.66211 8.54199 3.83691 17.1143 6.39941 25.2998
-c-1.69922 -0.700195 -4.59961 -4.90039 -9.2998 -11.2998c-4.7002 -6.40039 -8.39941 -13 -10.0996 -19.4004c-1.0957 -5.14258 -3.14062 -10.0195 -5.90039 -14.2998l-13.5 29l8.40039 -35.7998l-0.5 -1.7002c-0.00585938 0 -0.0146484 0.0117188 -0.0195312 0.0117188
-c-5.57227 0 -10.9424 0.87207 -15.9805 2.48828c-3.40039 0.700195 -10.6006 1.2002 -20.9004 1.2002c0.5 0 -0.700195 0 -3.2002 -0.5c5.40039 -1.30078 13.5 -4.2002 24.8008 -8.40039l6.39941 1.2002c-4.2002 -3.40039 -10.8994 -10.1006 -20.2002 -19.4004
-c-9.39941 -8.89941 -20.1992 -26.0996 -32.5 -50.2002l4.2002 1.2002l10.1006 9.2998l-5.40039 -4.69922l13 12.2998l-2.5 -3.40039c-5.09961 -7.59961 -8.09961 -12.2998 -9.2998 -15.2002zM367.5 -25.0996c8.2998 40.2998 3.59961 55.1992 -0.700195 89.5
-c-35.5 -11.8008 -20.2998 -6 -32 -10.8008l10.5 -14.1992l-1.2002 -1.2002c-20.1992 6 -23.1992 10.7998 -27.7998 15c6 -22.2002 13.9004 -26.4004 29.5 -31.7002c-9.5 -9.59961 -25.3994 4 -34.3994 13l2.5 -23.5996l-4.2002 -3c-5 22.0996 -22 39.0996 -25.2998 39.0996
-c-44 -13 -79.1006 -5.7998 -113.9 10.5996c-1.59961 -0.399414 -70.5996 -18 -120.5 37.1006c13.7002 -35 32.2998 -63.7002 71.2998 -82.6006c-4.98047 10.3184 -12.0117 19.3135 -20.7002 26.6006c0 0 0.700195 3.7002 1.2002 10.0996
-c19.4004 -19.3994 50.7002 -39.5 93.2002 -60.2002c-59.5996 24.5 -59.9004 24.8008 -69.0996 29l16 -20.6992c-3 -1.30078 -6.7002 -0.5 -10.1006 1.19922c-12.5371 7.32422 -24.2949 15.5693 -35.3994 24.8008c1.89941 -2.2002 80.0996 -98.5 200.899 -74.3008
-c-43.0996 21.8008 -52.3994 52.4004 -66.5996 73.5l17.7002 -7.59961l-11.8008 23.0996c20.1006 -27.7998 28.6006 -35 38.4004 -44.2998l-30 16.5c12.5996 -27.0996 33.7002 -47 63.5 -58.7998c2.90039 1.5 9.09961 -1.09961 59 23.9004zM482.8 189.3l8.93066 -12.7998
-l-12.3008 32.5c10.9004 0 10 -0.0996094 21.2002 -3.40039c-8.16406 11.4756 -17.0879 22.0469 -27 32l-26.5996 23.1006l1.2002 3l23.5996 2.5c-10.6865 2.35742 -21.708 3.79199 -33 4.2002l-17.7002 -0.5l-0.5 2.89941l14.7998 13l-41.7998 -20.2002l-12.2998 18.9004
-l3.40039 -16l-2.5 -1.2002l-5.90039 4.2002h-10.0996l5.39941 -4.2002v-2l-13.5 -27.7998c-10.0996 -31.2002 -21.8994 -67.9004 -35.3994 -109.7l1.19922 16l-1.19922 -3v-0.5c-6.40039 -16 -13.6006 -29.5 -21.2002 -39.5996l9.2998 21.8994l-46.7002 -20.1992
-c11.7998 13.5 23.6006 19.3994 34.9004 18.8994c-71.2002 11.4004 -106.2 41 -110.4 46c3.60059 -6.2002 13.2002 -17.7998 16 -40.0996l-1.7002 -1.2002c-4.2998 15.5996 -16.3994 46.5996 -55.7998 69.5996l23.6006 -2.5c-10.5 12.6006 -36.3008 17.8008 -40.8008 16
-l-2.5 2.5l8.40039 8.40039l-22.2998 -5.7998l5.39941 13.5c-8.09961 -4.40039 -4.2998 -2.40039 -17 -8.90039l-1.69922 0.5c0.599609 0.600586 0.899414 -0.700195 -3 9.2998c-0.600586 -11 -0.400391 -8.59961 -1 -11.7998
-c-1.29785 -0.430664 -2.54785 -1.00781 -3.7002 -1.7002c-40 20.6006 -57.2002 11 -73 5.2002c36.7998 -6 29.2998 -4 38.3994 -9.2998c-25.7998 -12.2002 -31.8994 -12.5996 -51.3994 -70.0996l22.2695 22.2998l2.5 -16.4004c13.4004 -58 68.7002 -92.5 126.4 -83.3994
-l-26.1006 22.3994l44.8008 -22.3994l-1.2002 -3c4.59961 -1.7002 9.2998 -3 13.5 -4.2002c19.3359 -5.72266 39.5713 -8.83887 60.752 -8.83887c11.0293 0 21.8643 0.832031 32.4482 2.43848l-32.5 21.2002c35.7998 -7 50.6992 -31.4004 56.7998 -39.5996l-7.60059 29
-l1.2002 2.5l19 -27.9004l-9.2998 26.5996l21.9004 -13.5h1.19922l-3.39941 4.2002l7.09961 -4.7002l-14.2998 16l1.2002 3l7.59961 -7.09961c4.2998 1.2002 41.4004 10.5 80.9004 40.2998c47.8994 35.4004 68.0996 73.7998 71.5996 79.7002l-3 9.2998zM476.7 260.6
-l-18.2002 -1.19922l14.2998 -11.8008zM221.9 253.5c2.69922 -5.09961 5.69922 -12.4004 18.3994 -18.7998c-7.5 -10.9004 -8.2998 -10.5 -20.2002 -16c-7.59961 -7.7002 -13.5 -13.1006 -17.6992 -14.7998l7.09961 13c-5.38281 -1.97266 -11.167 -3.06836 -17.2295 -3.06836
-c-2.57324 0 -5.10156 0.194336 -7.57031 0.568359l-0.5 1.19922c19 2.10059 37.2002 9.40039 46.5 16c-4.10059 4.2002 -7.10059 11.3008 -8.7998 21.9004zM225.6 355.8c5.87793 -3.32715 10.7842 -8.04688 14.3008 -13.7998
-c14.6992 -24.0996 19.1992 -40.0996 11.2998 -47.7002c-7.90039 -7.59961 -16.7998 -7.09961 -26.1006 3c-9.2998 10.1006 -13.5 23.7002 -11.7998 39.6006c1.7002 15.8994 5.90039 22.2998 12.2998 18.8994zM220.9 309.5
-c7.09961 -21.2998 33.3994 -23.0996 26.8994 4.90039c-3.89941 16.5 -8.7998 27.0996 -15.2002 32.5c-6.59961 5.39941 -10.0996 6.69922 -11.2998 4.19922c-2.5 -2.89941 -3.5 -11.2998 -3 -24.7998c7.5 12.7998 11.6006 5.90039 12.5 4.7002l-0.5 -0.5
-c-0.799805 -1.7002 -2.59961 -3.09961 1.7002 -6.2002l1.2002 0.5v-4.7002c-1.7998 -12.5 -6.90039 -12.7998 -12.2998 -10.5996zM175.9 315c-2.41016 0.448242 -4.38965 2.04102 -5.40039 4.2002c-3.5 8.5 0 21.2002 8.09961 21.2002
-c2 -0.5 3.7002 -1.7002 5.40039 -4.7002c-1.5 -0.400391 -4.7002 -4.7998 0.700195 -5.90039h0.5c0 -13.7002 -7.7002 -15.0996 -9.2998 -14.7998zM216 365.1l-3.7002 2.40039l-0.5 2.5c18.2998 0 25.7998 -8.7998 28.2998 -14.2998
-c-6.94727 3.78809 -14.9268 5.97363 -23.3916 5.97363c-0.90918 0 -1.81152 -0.0244141 -2.70801 -0.0742188l-0.5 3zM144.2 315.7c1.59961 -1.60059 0.599609 -0.299805 4.89941 -6.60059c-25.3994 -4.69922 -23.1992 -12.2998 -30 -12.2998
-c0.300781 0.600586 7.10059 16 23.6006 16l-7.10059 7.60059c9.40039 0.5 15.2002 2.09961 19.9004 -5.90039c0.0214844 8.14648 1.03027 16.0225 2.90039 23.5996c2 7.60059 3.69922 11.8008 5.39941 13.5c1 1.5 16.2998 15.7002 29 22.4004
-c2.33496 1.68262 5.22168 2.67676 8.31641 2.67676c1.8291 0 3.57715 -0.34668 5.18359 -0.976562c0.321289 -0.390625 0.515625 -0.889648 0.515625 -1.43457c0 -0.0898438 -0.00488281 -0.178711 -0.015625 -0.265625l-13 -7.59961
-c7.60059 -11.8008 10.5 -25.3008 8.7998 -41.3008c-1.11328 -11.292 -6.61426 -21.3291 -14.7998 -28.2998l2.90039 -4.7002c-30 2.2002 -24.7998 6.80078 -46.5 23.6006zM162.9 334.4c-1.80078 -7.2002 -2.30078 -16 -3.10059 -26l5.40039 -6.40039l7.09961 -3.40039
-c2.39648 -0.458008 4.79688 -0.699219 7.3252 -0.699219c1.3418 0 2.66797 0.0673828 3.97461 0.199219c1 1.7002 3.5 4.2002 6.40039 7.60059c5 5.89941 7.90039 13.7998 8.40039 23.0996c0.0849609 1.43848 0.113281 2.82617 0.113281 4.28613
-c0 7.30859 -1.08887 14.3643 -3.11328 21.0137c-3 8.10059 -5.90039 11 -10.1006 9.30078c-5.39941 -1.7002 -10.5996 -5.40039 -16 -11.8008c-3 -4.19922 -5.2002 -9.59961 -6.39941 -17.1992zM204.9 278.3l-3.10059 -6.5c7.10059 4.2002 13.5 7.2002 19.4004 8.40039
-l7.09961 0.5l11.7998 -7.60059h-2.5c-8.7998 3.7002 -19.3994 1.2002 -30.6992 -7.59961c-0.5 -4.7002 1.69922 -14.7002 5.89941 -29.5l9.2002 0.5c-21.9004 -6.59961 -37.5996 -8.40039 -48.9004 -5.40039c-24.8994 6.7002 -27.3994 23.6006 -27.5 24.1006
-c-1.74121 6.70996 -2.67871 13.6348 -2.67871 20.8867c0 4.35645 0.333984 8.63574 0.979492 12.8135c-6.40039 -0.5 -11 -4.2002 -15.2002 -10.6006c-2.90039 5.90039 -5.40039 8.7998 -5.90039 9.2998c1.5 0.700195 12.2998 7.5 32.5 4.90039l0.5 -2.5l-5.89941 -1.2002
-c-0.100586 -0.399414 -1.90039 -29.5 18.8994 -24.7998c1.40039 0.299805 1.2998 -0.0996094 36.1006 14.2998z" />
-    <glyph glyph-name="acquisitions-incorporated" unicode="&#xf6af;" horiz-adv-x="384" 
-d="M357.45 -20.2002c2.2002 -14.2998 4.09961 -28.7002 6.59961 -43.7002c-367.8 0 -153.899 -0.599609 -337.1 0c-4 0 -6.10059 0.700195 -5.2998 5.7002c2.09961 12.9004 3.5 25.9004 5 38.7998c0.5 4.80078 2.2998 6.80078 7.59961 6.80078
-c118.1 -1 114.9 -0.300781 121.4 2.39941c9.39941 4 14.8994 12.9004 14.8994 23.1006c-0.0996094 42.8994 -0.299805 85.8994 -0.200195 128.8c0 3.7998 -1.19922 5.89941 -4.59961 6.7998c-15.7002 3.90039 -31.2998 7.7002 -47.5996 11.7002
-c-5.30078 -12.2998 -10.4004 -24.4004 -15.7002 -36.7002c1.7998 -3.2998 28.3994 -2.90039 35.2998 -2.90039v-27.5996h-114.3c1 8.59961 1.7002 16.7998 3.2002 24.9004c0.299805 1.39941 3.59961 3.09961 5.5 3.19922
-c8.39941 0.400391 16.8994 0.300781 25.3994 0.100586c4 0 5.90039 1.09961 7.60059 5.2002c16.5996 40.6992 13.5 31.1992 67.2998 161c31.5 76.0996 33 76 32.5996 87.3994c-0.700195 18.6006 -25.3994 22.2998 -37.7002 22.1006c-30 -0.400391 -38.3994 0.5 -101.8 0.5
-c-7.2002 44.5 -4.2002 32.0996 -6.39941 45.2998c-0.700195 4.2002 1 5.2998 4.59961 5.2998l339.1 -0.200195c-0.799805 -5.39941 -1.59961 -10.7998 -2.39941 -16.0996c-1.2998 -9.7002 -2.7998 -19.4004 -4 -29.2002c-0.299805 -2.90039 -1.2002 -4.2998 -4.2998 -4.2998
-c-20.6006 -0.100586 -41.2002 -0.100586 -61.8008 -0.5c-18.6992 -0.400391 -37.5996 -0.299805 -56.1992 -2c-13.4004 -1.2002 -23.3008 -12.6006 -18.9004 -26.6006c8.59961 -27.0996 27.7002 -69.0996 36.5 -89.1992c65.7002 -154.2 61.4004 -157 84 -158.601
-c6.59961 -0.5 13.4004 -0.0996094 20.4004 -0.0996094c1.2998 -9.40039 2.59961 -18 4 -27.5h-116v27c10.3994 0 20.3994 0.0996094 30.3994 -0.100586c3.5 0 5 0.700195 3.40039 4.40039c-4.40039 10.2998 -8.7002 20.5996 -13.2002 30.9004
-c-1.59961 3.69922 -4.09961 4.7998 -8.40039 3.5c-12.3994 -3.60059 -24.7998 -6.7002 -37.2998 -9.7002c-4.2998 -1.10059 -6 -2.7998 -5.89941 -7.5c0.799805 -57.5 0.899414 -127.5 1 -129.101c0.399414 -12.5996 8.69922 -21.3994 21 -23.0996
-c0.899414 -0.200195 12.8994 -2.7998 112.699 -2.59961c8.30078 0 8.40039 0.0996094 9.60059 -7.60059zM182.55 185.5c2.87695 -1.01465 5.98633 -1.56641 9.20801 -1.56641s6.31543 0.551758 9.19238 1.56641c13 4.2002 26.2998 7.7998 39.3994 11.7002
-c1.34473 0.620117 2.65234 1.32422 3.90039 2.09961c-6.7002 17.4004 -13.0996 34.2002 -19.7002 50.9004c-8.89941 22.7002 -17.7002 60.2998 -27 82.7998c-1.5 0.799805 -1.89941 -2.40039 -9.39941 0c-17.1006 -44 -34.1006 -87.7998 -51.3008 -132.1
-c1.8457 -1.09766 3.7959 -2.07422 5.80078 -2.90039c13.2998 -4.2998 26.5996 -8.2998 39.8994 -12.5z" />
-    <glyph glyph-name="critical-role" unicode="&#xf6c9;" 
-d="M225.82 448c0.259766 -0.150391 216.569 -124.51 217.12 -124.72c3 -1.18066 3.69922 -3.45996 3.69922 -6.56055c-0.0732422 -83.4463 -0.0732422 -166.899 0 -250.359c0.0117188 -0.150391 0.0175781 -0.302734 0.0175781 -0.456055
-c0 -2.36035 -1.38867 -4.38867 -3.39746 -5.32422c-21.3701 -12 -207.859 -118.29 -218.93 -124.58h-3c-79.3301 45.6602 -218.25 125.44 -218.4 125.52c-1.11816 0.526367 -1.89355 1.66309 -1.89355 2.97949c0 0.0898438 0.00683594 0.173828 0.0136719 0.260742
-c0 0.870117 0 225.94 -0.0498047 253.101c-0.00976562 0.124023 -0.0136719 0.25 -0.0136719 0.376953c0 2.02832 1.20605 3.76855 2.94336 4.55273c23.2607 13.0996 209.271 119.21 220.141 125.21h1.75zM215.4 427.58l-0.219727 0.158203
-c-64.7471 -36.8604 -129.474 -73.7305 -194.18 -110.61c0 -0.120117 0.0800781 -0.229492 0.129883 -0.349609l30.8604 -11.6406c-7.70996 -6 -8.32031 -6 -10.6504 -5.12988c-0.0996094 0 -24.1699 9.28027 -26.7998 10v-230.43
-c0.879883 1.41016 64.0703 110.91 64.1299 111c1.62012 2.82031 3 1.91992 9.12012 1.51953c1.40039 -0.0898438 1.47949 -0.219727 0.780273 -1.41992c-41.1904 -71.3301 -36.4004 -63 -67.4805 -116.939c-0.80957 -1.40039 -0.609375 -1.12988 1.25 -1.12988h186.5
-c1.44043 0 1.69043 0.229492 1.7002 1.63965v8.87988c0 1.33984 2.36035 0.810547 -18.3701 1c-7.45996 0.0703125 -14.1396 3.21973 -21.3799 12.7002c-7.37988 9.66016 -14.6201 19.4297 -21.8496 29.21c-2.28027 3.08008 -3.4502 2.37988 -16.7607 2.37988
-c-1.75 0 -1.7793 0 -1.75977 -1.82031c0.290039 -26.21 0.150391 -25.2695 1 -32.6592c0.520508 -4.37012 2.16016 -4.2002 9.69043 -4.81055c3.13965 -0.259766 3.87988 -4.08008 0.519531 -4.91992c-1.57031 -0.389648 -31.5996 -0.509766 -33.6699 0.0996094
-c-1.02539 0.28125 -1.7793 1.2207 -1.7793 2.33496c0 1.21973 0.905273 2.22949 2.0791 2.39551c3.29004 0.759766 6.16016 -0.80957 6.66016 4.44043c1.2998 13.6592 1.16992 9 1.09961 79.4199c0 10.8193 -0.349609 12.5801 -5.35938 13.5498
-c-1.21973 0.240234 -3.54004 0.160156 -4.69043 0.549805c-2.87988 1 -2 4.83984 1.77051 4.84961c33.6699 0 46.0801 1.07031 56.0596 -4.85938c7.74023 -4.61035 12 -11.4805 12.5098 -20.4004c0.880859 -14.5898 -6.50977 -22.3496 -15 -32.5898
-c-0.313477 -0.267578 -0.511719 -0.666016 -0.511719 -1.11035s0.198242 -0.841797 0.511719 -1.10938c2.60059 -3.25 5 -6.62988 7.70996 -9.83008c27.5605 -33.2305 24.1104 -30.54 41.2803 -33.0605c0.890625 -0.129883 1 0.419922 1 1.15039v11
-c0 1 0.320312 1.42969 1.41016 1.25977c3.57227 -0.542969 7.23047 -0.825195 10.9531 -0.825195c4.35449 0 8.4834 0.386719 12.627 1.125c1.08008 0.150391 1.5 -0.199219 1.47949 -1.33008c0 -0.109375 0.880859 -26.6895 0.870117 -26.7998
-c-0.0498047 -1.51953 0.669922 -1.62012 1.89062 -1.62012h186.71c-27.1533 47.0342 -54.2334 93.9746 -81.2402 140.821c2.25977 0.660156 -0.400391 0 6.69043 1.38965c2 0.390625 2.0498 0.410156 3.10938 -1.43945c7.31055 -12.6396 77.3105 -134 77.3701 -134.061
-v230.44c-1.71973 -0.5 -103.3 -38.7197 -105.76 -39.6797c-1.08008 -0.419922 -1.5498 -0.200195 -1.91016 0.879883c-0.629883 1.89941 -1.33984 3.75977 -2.08984 5.62012c-0.320312 0.790039 -0.0898438 1.12988 0.649414 1.38965
-c0.100586 0 95.5303 35.8496 103 38.7705c-65.4199 37.5693 -130.56 75 -196 112.6l86.8203 -150.39l-0.280273 -0.330078c-9.56934 0.899414 -10.46 1.59961 -11.7998 3.93945c-1 1.69043 -73.5 127.71 -82 142.16c-9.09961 -14.6699 -83.5596 -146.21 -85.3701 -146.32
-c-2.92969 -0.169922 -5.87988 -0.0800781 -9.25 -0.0800781c28.833 49.8271 57.5596 99.4941 86.1797 149.001zM267.331 297.658c1.88379 0.146484 3.74316 0.435547 5.54004 0.849609c1.68945 0.299805 2.53027 -0.200195 2.59961 -1.91992
-c0 -0.109375 0.0703125 -19.0596 -0.859375 -20.4502c-0.930664 -1.38965 -1.87988 -1.21973 -2.60059 0.19043c-5 9.68945 6.2207 9.66016 -39.1201 12c-0.699219 0 -1 -0.230469 -1 -0.929688c0 -0.130859 3.7207 -122 3.73047 -122.11
-c0 -0.889648 0.519531 -1.2002 1.20996 -1.50977c2.97363 -1.18262 5.9043 -2.54883 8.7002 -4.0498c7.30957 -4.33008 11.3799 -10.8408 12.4102 -19.3105c1.43945 -11.7998 -2.77051 -35.7695 -32.21 -37.1396c-2.75 -0.129883 -28.2607 -1.08008 -34.1406 23.25
-c-4.66016 19.2598 8.25977 32.7002 19.8906 36.3994c1.14258 0.208008 2.00977 1.20898 2.00977 2.41113c0 0.0849609 -0.00195312 0.166016 -0.00976562 0.249023c0.0996094 5.62988 3 107.101 3.70996 121.351c0.0498047 1.0791 -0.620117 1.15918 -1.35059 1.14941
-c-32.3496 -0.519531 -36.75 0.339844 -40.2197 -8.51953c-2.41992 -6.18066 -4.13965 -1.32031 -3.9502 -0.230469c1.05957 6 2.16309 12 3.31055 18c0.399414 2.11035 1.42969 2.61035 3.42969 1.86035c5.58984 -2.11035 6.71973 -1.7002 37.25 -1.91992
-c1.72949 0 1.78027 0.0800781 1.82031 1.84961c0.679688 27.4902 0.579102 22.5898 1 29.5498c0.0117188 0.106445 0.0185547 0.213867 0.0185547 0.322266c0 1.11719 -0.679688 2.07129 -1.64941 2.47852c-5.59961 2.90918 -8.75 7.5498 -8.89941 13.8691
-c-0.350586 14.8105 17.7197 21.6699 27.3799 11.5107c6.83984 -7.19043 5.7998 -18.9102 -2.4502 -24.1504c-1.34473 -0.740234 -2.25684 -2.1709 -2.25684 -3.81348c0 -0.180664 0.015625 -0.351562 0.0371094 -0.526367c0 -0.589844 -0.110352 4.30957 1 -30.0498
-c0 -0.900391 0.429688 -1.12012 1.24023 -1.11035c0.0996094 0 23 0.0898438 34.4697 0.370117zM68.2705 306.298c19.8408 4.50977 32.6807 0.560547 52.4902 -1.68945c2.75977 -0.310547 3.74023 -1.2207 3.62012 -4c-0.209961 -5 -1.16016 -22.3301 -1.24023 -23.1504
-c-0.0419922 -1.05566 -0.702148 -1.9541 -1.62988 -2.33984c-4.05957 -1.7002 -3.60938 4.4502 -4 7.29004c-3.12988 22.4297 -73.8701 32.7002 -74.6299 -25.4004c-0.30957 -23.9199 17 -53.6299 54.0801 -50.8799c27.2402 2 19 20.1904 24.8398 20.4697
-c0.120117 0.0166016 0.241211 0.0244141 0.365234 0.0244141c1.50098 0 2.71973 -1.21875 2.71973 -2.71973c0 -0.229492 -0.03125 -0.451172 -0.0849609 -0.664062c-1.83008 -10.8506 -3.41992 -18.9502 -3.4502 -19.1504
-c-1.54004 -9.16992 -86.6992 -22.0898 -93.3496 42.0605c-2.70996 25.8496 10.4404 53.3691 40.2695 60.1494zM148.271 218.628h-19.4893c-0.0703125 -0.00585938 -0.140625 -0.00878906 -0.210938 -0.00878906c-1.15039 0 -2.12109 0.756836 -2.44922 1.79883
-c2.37988 3.75 5.88965 -0.919922 5.86035 6.13965c-0.0800781 25.75 0.209961 38 0.229492 40.1006c0 3.41992 -0.530273 4.64941 -3.32031 4.93945c-7 0.720703 -3.10938 3.37012 -1.10938 3.38086c11.8398 0.0996094 22.6201 0.179688 30.0498 -0.720703
-c8.76953 -1.06934 16.71 -12.6299 7.92969 -22.6201c-2 -2.25 -4 -4.41992 -6.13965 -6.72949c0.950195 -1.15039 6.89941 -8.82031 17.2803 -19.6797c2.65918 -2.78027 6.14941 -3.51074 9.87988 -3.13086h0.0214844c1.18945 0 2.16016 0.943359 2.20801 2.12012
-c0.299805 3.41992 0.259766 -4.72949 0.450195 40.5801c0 5.65039 -0.339844 6.58008 -3.22949 6.83008c-3.9502 0.350586 -4 2.25977 -0.69043 3.37012l19.0898 0.0898438c0.320312 0 4.49023 -0.530273 1 -3.37988c0 -0.0498047 -0.160156 0 -0.240234 0
-c-3.60938 -0.259766 -3.93945 -1 -4 -4.62012c-0.269531 -43.9297 0.0703125 -40.2295 0.410156 -42.8203c0.110352 -0.839844 0.270508 -2.22949 5.10059 -2.13965c2.48926 0 3.85938 -3.37012 0 -3.39941c-10.3701 -0.0800781 -20.7402 0 -31.1104 -0.0703125
-c-10.6699 0 -13.4697 6.2002 -24.21 20.8203c-1.59961 2.17969 -8.31055 2.35938 -8.2002 0.369141c0.879883 -16.4697 0 -17.7793 4 -17.6699c4.75 0.100586 4.73047 -3.56934 0.830078 -3.5498h0.0595703zM423.271 228.778
-c-1.20996 -7.12988 0.170898 -10.3799 -5.2998 -10.3398c-61.5498 0.419922 -47.8193 0.219727 -50.7197 0.30957c-1.24414 0.12207 -2.4707 0.37207 -3.62988 0.730469c-2.53027 0.599609 1.47949 1.22949 -0.379883 5.59961
-c-1.43066 3.37012 -2.78027 6.78027 -4.11035 10.1895c-0.219727 0.831055 -0.976562 1.44336 -1.87598 1.44336c-0.0419922 0 -0.0820312 0 -0.124023 -0.00292969c-2.22852 0.107422 -4.4707 0.161133 -6.72559 0.161133
-c-2.70605 0 -5.18652 -0.0771484 -7.85449 -0.231445c-0.6875 -0.0898438 -1.27734 -0.491211 -1.62012 -1.05957c-1.58008 -3.62012 -3.06934 -7.29004 -4.50977 -11c-1.26953 -3.23047 7.86035 -1.32031 12.1904 -2.16016c3 -0.570312 4.5293 -3.71973 0.65918 -3.72949
-h-26.3691c-2.91992 0 -3.09082 3.14941 -0.740234 3.20996c0.0966797 -0.00488281 0.194336 -0.00683594 0.291992 -0.00683594c2.46484 0 4.59277 1.41211 5.62793 3.47656c1.5 3 2.7998 6 4.11035 9.08984c18.1797 42.1396 17.0596 40.1699 18.4199 41.6104
-c0.330078 0.473633 0.879883 0.783203 1.50098 0.783203s1.16797 -0.30957 1.49902 -0.783203c2.92969 -3.33984 18.3994 -44.71 23.6201 -51.9199c2 -2.7002 5.73926 -2 6.35938 -2c3.61035 -0.130859 4 1.10938 4.12988 4.29004
-c0.0898438 1.86914 0.0800781 -1.1709 0.0703125 41.2393c0 4.45996 -2.36035 3.74023 -5.5498 4.27051c-0.259766 0 -2.56055 0.629883 -0.0800781 3.05957c0.209961 0.200195 -0.890625 0.240234 21.7002 0.150391c2.31934 0 5.31934 -2.75 -1.20996 -3.4502
-c-0.0390625 0.00195312 -0.078125 0.00292969 -0.116211 0.00292969c-1.41309 0 -2.56055 -1.14746 -2.56055 -2.56055c0 -0.0927734 0.00683594 -0.181641 0.0166016 -0.272461c-0.0703125 -1.62988 -0.19043 -38.8896 0.290039 -41.21
-c0.288086 -1.39062 1.52051 -2.43652 2.99609 -2.43652c0.0791016 0 0.155273 0.000976562 0.233398 0.00683594c13.25 -0.430664 14.9199 -0.44043 16 3.41016c1.66992 5.7793 4.12988 2.51953 3.73047 0.189453zM318.551 164.408
-c-4.24023 0 -4.41992 3.38965 -0.609375 3.41016c35.9092 0.160156 28.1094 -0.379883 37.1895 0.649414c1.67969 0.19043 2.37988 -0.239258 2.25 -1.88965c-0.259766 -3.38965 -0.639648 -6.78027 -1 -10.1602c-0.25 -2.16016 -3.2002 -2.61035 -3.39941 0.150391
-c-0.380859 5.30957 -2.15039 4.44922 -15.6309 5.08008c-1.58008 0.0693359 -1.63965 0 -1.63965 -1.52051v-16.1299c0 -1.65039 0 -1.59961 1.62012 -1.46973c3.12012 0.25 10.3096 -0.339844 15.6895 1.51953c0.470703 0.160156 3.30078 1.79004 3.07031 -1.75977
-c0 -0.209961 -0.759766 -10.3496 -1.17969 -11.3896c-0.530273 -1.29004 -1.87988 -1.51074 -2.58008 -0.320312c-1.16992 2 0 5.08008 -3.70996 5.2998c-15.4199 0.900391 -12.9102 2.5498 -12.9102 -6c0 -12.25 -0.759766 -16.1104 3.88965 -16.2402
-c16.6406 -0.479492 14.4004 0 16.4307 5.70996c0.839844 2.37012 3.5 1.77051 3.17969 -0.580078c-0.44043 -3.20996 -0.849609 -6.42969 -1.22949 -9.63965c0 -0.360352 -0.160156 -2.39941 -4.66016 -2.38965c-37.1602 0.0800781 -34.54 0.189453 -35.21 0.30957
-c-2.7207 0.509766 -2.2002 3 0.219727 3.4502c1.09961 0.19043 4 -0.540039 4.16016 2.55957c2.43945 56.2207 -0.0703125 51.3408 -3.91016 51.3301zM318.141 273.928c2.45996 -0.609375 3.12988 -1.75977 2.9502 -4.64941
-c-0.330078 -5.2998 -0.339844 -9 -0.549805 -9.69043c-0.660156 -2.22949 -3.15039 -2.12012 -3.33984 0.270508c-0.379883 4.80957 -3.0498 7.81934 -7.57031 9.14941c-26.2803 7.73047 -32.8096 -15.46 -27.1699 -30.2197c5.87988 -15.4102 22 -15.9199 28.8604 -13.7803
-c5.91992 1.85059 5.87988 6.5 6.91016 7.58008c1.22949 1.2998 2.25 1.83984 3.11914 -1.09961c0 -0.100586 0.570312 -11.8906 -6 -12.75c-1.59961 -0.209961 -19.3799 -3.69043 -32.6797 3.38965c-21 11.1904 -16.7402 35.4697 -6.87988 45.3301
-c14 14.0596 39.9102 7.05957 42.3203 6.46973h0.0292969zM289.801 167.858c3.28027 0 3.66016 -3 0.160156 -3.43066c-2.61035 -0.319336 -5 0.419922 -5 -5.45996c0 -2 -0.19043 -29.0498 0.400391 -41.4502c0.109375 -2.28906 1.14941 -3.51953 3.43945 -3.64941
-c22 -1.20996 14.9502 1.64941 18.79 6.33984c1.83008 2.24023 2.75977 -0.839844 2.75977 -1.08008c0.350586 -13.6201 -4 -12.3896 -5.18945 -12.3994l-38.1602 0.189453c-1.92969 0.230469 -2.05957 3 -0.419922 3.37988c2 0.480469 4.93945 -0.399414 5.12988 2.7998
-c1 15.8701 0.570312 44.6504 0.339844 47.8105c-0.269531 3.76953 -2.7998 3.26953 -5.67969 3.70996c-2.46973 0.379883 -2 3.21973 0.339844 3.21973c1.4502 0.0205078 17.9697 0.0302734 23.0898 0.0205078zM258.171 225.648
-c0.0703125 -4.08008 2.86035 -3.45996 6 -3.58008c2.61035 -0.100586 2.53027 -3.41016 -0.0703125 -3.43066c-6.47949 0 -13.6992 0 -21.6094 0.0605469c-3.83984 0 -3.37988 3.34961 0 3.37012c4.49023 0 3.24023 -1.61035 3.41016 45.54
-c0 5.08008 -3.27051 3.54004 -4.7207 4.22949c-2.58008 1.23047 -1.35938 3.08984 0.410156 3.15039c1.29004 0 20.1904 0.410156 21.1699 -0.209961c0.980469 -0.620117 1.87012 -1.65039 -0.419922 -2.86035c-1 -0.519531 -3.85938 0.280273 -4.14941 -2.46973
-c0 -0.209961 -0.820312 -1.62988 -0.0703125 -43.7998h0.0498047zM221.261 -48.6221c0.46582 -0.311523 1.02539 -0.493164 1.62695 -0.493164c0.602539 0 1.16797 0.181641 1.63281 0.493164c17 9.79004 182 103.57 197.421 112.51
-c-0.140625 0.430664 11.2598 0.180664 -181.521 0.270508c-1.21973 0 -1.57031 -0.370117 -1.53027 -1.56055c0 -0.0996094 1.25 -44.5098 1.2207 -50.3799c-0.0966797 -2.67383 -0.571289 -5.27344 -1.36035 -7.70996c-0.549805 -1.83008 0.379883 0.5 -13.5 -32.2295
-c-0.730469 -1.7207 -1 -2.20996 -2 0.0800781c-4.19043 10.3398 -8.28027 20.7197 -12.5703 31c-1.29785 2.92285 -2.01953 6.15723 -2.01953 9.55957c0 0.412109 -0.000976562 0.823242 0.0195312 1.23047c0.160156 2.45996 0.800781 16.1191 1.51074 48
-c0 1.94922 0 2 -2 2h-183c2.5791 -1.63086 178.319 -102.57 196 -112.761zM130.361 140.128c0 -2.39941 0.359375 -2.79004 2.75977 -3c11.54 -1.16992 21 -3.74023 25.6396 7.32031c6 14.46 2.66016 34.4102 -12.4795 38.8398c-2 0.589844 -16 2.75977 -15.9404 -1.50977
-c0.0498047 -8.04004 0.00976562 -11.6104 0.0205078 -41.6504zM236.111 155.178c0 -2.12988 1.06934 -38.6797 1.08984 -39.1299c0.339844 -9.93945 -25.5801 -5.76953 -25.2305 2.58984c0.0800781 2 1.37012 37.4199 1.10059 39.4307
-c-14.1006 -7.44043 -14.4199 -40.21 6.43945 -48.8008c2.18066 -0.946289 4.58594 -1.4707 7.11328 -1.4707c6.46094 0 12.1299 3.40332 15.2773 8.54102c4.90918 7.75977 6.83984 29.4697 -5.43066 39c-0.114258 -0.0478516 -0.237305 -0.0888672 -0.359375 -0.120117
-v-0.0400391zM223.831 353.178c-9.83008 0 -9.73047 -14.75 -0.0703125 -14.8701c9.66016 -0.119141 10.1006 14.8809 0.0703125 14.9102v-0.0400391zM143.681 249.348c0 -1.7998 0.410156 -2.39941 2.16992 -2.58008c13.6201 -1.38965 12.5107 11 12.1602 13.3604
-c-1.68945 11.2197 -14.3799 10.2002 -14.3496 7.81055c0.0498047 -4.5 -0.0302734 -13.6807 0.0195312 -18.5908zM356.001 242.948l-6.09961 15.8398c-2.16016 -5.48047 -4.16016 -10.5703 -6.23047 -15.8398h12.3301z" />
-    <glyph glyph-name="d-and-d-beyond" unicode="&#xf6ca;" horiz-adv-x="640" 
-d="M313.8 206.5c-9.89941 0 -16 7 -15.7002 7.09961c-4.2998 5.7002 -3 -0.299805 -2.39941 -1.89941c-10.9004 10.2998 -5.2998 25.3994 -5.10059 26c0.700195 1.89941 0 2.2002 -0.599609 1.89941c-1 -0.299805 -2.09961 -1.89941 -2.09961 -1.89941
-c0.799805 9.09961 9.2998 14.7002 9.2998 14.7002l0.200195 -0.200195c1 -1.5 -0.400391 -3.2002 -0.600586 -9c1.60059 2.2998 7.90039 6.59961 11.4004 7.89941c-1.10059 -1.5 -2.10059 -3.59961 -2.10059 -6.59961c3.7002 4.2002 7.5 2.59961 8 2.40039
-c-12.1992 -11.9004 -7 -26.6006 3.2002 -26.6006c5.7002 0 11.5 6.40039 13.9004 10.7002c2.39941 -2.40039 6.39941 -5.5 7.39941 -6.59961c-3.7998 -7.80078 -11 -17.9004 -24.7998 -17.9004zM366.2 227.6c0 -2.89941 -2.90039 -4.09961 -5.40039 -4.5
-c0.700195 1.5 1.7998 5.10059 -0.200195 9c0.700195 -0.0996094 5.60059 -0.5 5.60059 -4.5zM376.5 222.4c-0.400391 -6.5 -6.90039 -11.6006 -14.5996 -10.6006c2 -1.7002 6.59961 -3 9 -1.89941c-3.90039 -6.90039 -23.1006 -7.5 -23.1006 6.39941
-c-2.89941 -2.89941 -2.09961 -7.39941 0 -9.2998c-2.2002 0.700195 -5.7998 3.09961 -6.39941 7.40039c-1.30078 10.0996 4.39941 6.5 -10.4004 18.0996c-4.7998 3.7002 -3 6.59961 -4 8.5c-1.09961 2.2002 -7 4.09961 -4.5 8.5
-c-0.0996094 -1.59961 1 -2.90039 2.59961 -3.5c1.80078 -0.700195 3.2002 -0.200195 4.80078 -1c1.69922 -1.2002 0.899414 -3.90039 2.19922 -5c1.10059 -0.799805 4.2002 0.299805 6.60059 -1.7998c2.59961 -2 8.2002 -6.7002 10.5996 -8.60059
-c4.40039 -3.59961 8.7998 0.400391 7.40039 4.60059c4.5 -2.60059 5 -9.90039 1.2998 -12.5c10.5996 -2.40039 13 10.0996 5 11.3994c7.2998 0.700195 13.5 -4.2998 13.5 -10.6992zM337.1 240.8c4.30078 6.10059 13.3008 15.2998 23.8008 15.7998
-c-5.90039 0.800781 -15.1006 -3.19922 -19.7002 -9c0.899414 3.90039 5.09961 10.1006 10.2002 13c0 0 -2.5 -3.19922 -1.40039 -3.69922c1.59961 -0.800781 5.7998 5.69922 11.2002 5.89941c0 0 -4 -2 -3.2002 -3.39941c0.599609 -0.900391 3.2998 1.2998 8 1.2998
-c5.7998 0 10.9004 -3.5 13.2998 -6.2002c-4 1.09961 -11.5996 -0.799805 -13.7998 -2.7002c-0.299805 0.200195 -11.7998 9 -22 -15.5c-4.7998 3.7998 -4.40039 3.7002 -6.40039 4.5zM579.6 188.9c37.2002 0 60.4004 -19.6006 60.4004 -48.9004
-c0 -28.2002 -17 -48.9004 -59.0996 -48.9004c-20.7002 0 -41.2002 1.30078 -51.6006 2.10059l7.40039 8.2002v77.1992l-7.40039 8.2002c10.2998 0.799805 29.6006 2.10059 50.2998 2.10059zM564.5 113.3c25.4004 -3.2002 46.7998 1.40039 46.7998 27
-c0 22.5 -16.7002 29.6006 -46.7998 26.2998v-53.2998zM301.6 267c0.100586 -0.299805 -2.7998 2.2998 -3.2998 7.5c-0.200195 2.2998 0 19.7998 20 18.9004c11.2002 -0.600586 16.7002 -8.30078 16.7002 -16.5c0 -4.30078 -2.2998 -10.1006 -5.5 -13.8008
-c-2.2002 2.2002 -5.59961 4.60059 -7.7002 7.80078c3.7998 5.59961 2.2002 14.3994 -4.7002 14.3994c-4.2998 0 -7.7998 -4.5 -6.39941 -9.89941c-0.700195 -2.40039 -1 -5.60059 -0.5 -8c-4.90039 2.59961 -6.5 6 -7.5 9c-1.2998 -2.5 -2.10059 -6 -1.10059 -9.40039z
-M301.2 261c0.299805 1.7002 -3.10059 4.59961 -4.7998 5.2002c4.7998 0.200195 7 -0.600586 7 -0.600586c-1.30078 1.7002 -1.60059 4.5 -1 6.7002c2.5 -6.09961 11.6992 -7.09961 13.8994 -12.2002c-0.299805 2.30078 -2.39941 4.7002 -4.7998 6.10059
-c-1.2998 3.2002 -0.299805 9.39941 1.2998 11c-0.5 -8.7998 12 -13.7998 14.6006 -20.2002c-1.40039 5.5 -7.40039 9 -10.1006 12.2002c-1 2.09961 -0.200195 5.7998 0.799805 7.09961c-0.5 -9.7002 15.8008 -14.2998 14.1006 -23.8994
-c0.899414 -0.400391 2.09961 -1.2002 1.89941 -2.60059c1.30078 0.299805 2.60059 1.7002 2.90039 2.7002c0.700195 -4.5 -1.90039 -9 -4.7998 -10.4004c1.59961 4 -2.7002 5.60059 -6.7002 5.10059c0 0 1.59961 2.2998 1 3.39941
-c-0.799805 1.5 -8 0.800781 -11.2002 -0.299805c1.10059 0.100586 3.60059 -0.200195 4.60059 -0.5c-2.10059 -2.89941 -1 -7.09961 1.2998 -4.2002c0 0 -1.10059 -3.5 -0.299805 -4.2998c0.799805 -0.799805 2.59961 -0.200195 2.59961 -0.200195
-c-1.2002 -2.69922 -5.2998 -4.59961 -8.2002 -4.59961c1.10059 0.400391 2.7002 2.2998 3 3.40039c-0.799805 -0.5 -2.7002 -0.700195 -3.5 -0.5c6.10059 3 0 13.1992 -7 8.19922c1 2.7002 3.7002 5.30078 5.7998 6.10059c-1.2998 0.5 -2.69922 0.799805 -4.2998 1.09961
-c1.7998 1.5 6.2998 2.7998 8.5 2.60059c-3.5 0.799805 -9.89941 -0.300781 -12.7998 -3.7002c0.900391 0 3.2998 -0.5 4.2998 -0.799805c-4 -0.700195 -9.39941 -4.40039 -11 -6.2002c0.299805 2.2002 1 4.2002 0.5 5.59961c-0.799805 2 -3 2.7998 -7.7998 1.7998
-c3.2002 3.2002 9.7002 5.10059 10.2002 6.90039zM327.1 253.6c0 0 -0.899414 3 -4.19922 4.30078c0.699219 -2.2002 1.5 -4.30078 4.19922 -4.30078zM366 249.9l0.700195 0.699219c0.5 0.400391 1.59961 0.900391 2.7002 1.40039v-18.4004
-c-1.7002 0.800781 -3.5 1.10059 -5.60059 1.10059c-2.39941 0 -5 -0.5 -5 -0.5c-0.5 0.5 -3.59961 2.89941 -5.09961 3.2002c4.09961 -4.30078 0.5 -9.80078 -3 -7.2002v15.7002c0.700195 0.799805 1.2998 1.7998 2.09961 2.59961
-c1.7002 2.09961 4.60059 3.40039 7.5 3.40039c1.7998 0 3.60059 -0.400391 4.7002 -1.40039zM79.9004 142.1c22 -6.39941 19.3994 -20.0996 19.3994 -25.1992c0 -7.80078 -3.2002 -13.6006 -9.89941 -17.6006c-12.6006 -7.39941 -24.7002 -5.89941 -86.4004 -5.89941
-l8.40039 8.59961v32.2998l-11.4004 14.6006h11.2998v29.5l-8.2998 8.59961h56.0996c12.9004 0 37 -4.40039 37 -25c0 -1.90039 1 -15.2998 -16.1992 -19.9004zM38.5996 169.6v-20.8994c10.6006 0 29.6006 -3.2998 29.6006 8.7998v3
-c0 9.90039 -9.60059 9.09961 -29.6006 9.09961zM38.5996 110.4c20.4004 0 32.9004 -1.90039 32.9004 9.2998h-0.200195v4.5c0 11.0996 -20.5 8.7998 -32.7002 8.7998v-22.5996zM139.8 129.7v-15.4004l60.1006 0.200195l-14.1006 -21.2002h-81.2002l7.40039 8.2002v77.0996
-l-7.40039 8.2002l73.5 0.200195v-0.200195l14.1006 -21h-52.4004v-14.8994h37.2002l-14.0996 -21.2002v-0.200195zM354.5 189.8c73.7998 0 77.5996 -99.2998 -0.299805 -99.2998c-77.2002 0 -73.6006 99.2998 0.299805 99.2998zM354.2 112.3
-c39 0 37 55.2002 0.200195 55.2998c-37.1006 0 -37.6006 -55.2998 -0.200195 -55.2998zM262.9 120.6l0.199219 -19l7.2002 -8.19922h-42.5996l7.7002 8.19922l-0.200195 19.4004l-44.1006 65.7998h44.9004l-6.40039 -7.2002l21 -37.1992h0.300781l20.5 37.1992
-l-6.10059 7.2002h41.7002zM234.5 271.9c-9.09961 6.69922 -9.5 14.0996 -9.59961 14.8994c7.2998 -4.2998 9 -4 39.8994 -4c-5.7998 0 24 3.10059 32.2002 -22.8994c-0.400391 0 -8.40039 -4.80078 -10.4004 -7.90039c5.30078 1.90039 8.90039 1.09961 9 1.09961
-c-8 -5.09961 -9.59961 -14.7998 -9.59961 -20.5c0.900391 2.10059 2.7002 3.7002 2.7002 3.5c-0.600586 -2.5 -1.40039 -7 -0.799805 -12c-8.60059 -7.09961 -16 -8.59961 -26 -8.59961h-35.1006c0.400391 0.0996094 7.7998 4.5 7.90039 4.59961
-c1.89941 1.10059 2.7002 2.2002 2.7002 6.40039v38.7998c0 4.2002 -1.30078 5.2998 -2.90039 6.60059zM256 266.4v-34.6006c4.7002 0 23.0996 -3.39941 23.0996 17.2998c0 20.6006 -18.5 17.3008 -23.0996 17.3008zM484.9 186.8l39.1992 -0.0996094l-7.39941 -8.2998
-v-85.2002h-21.2998c-4 12.7002 -44.8008 45 -48.5 55.5996h-0.300781v-47.3994l7.40039 -8.2002h-39l7.2002 8.2998v76.9004l-7.40039 8.5h31.6006c2.89941 -9.40039 39.7998 -36.5 45.1992 -50.9004h0.300781v42.5zM378.2 282.9
-c32.7002 -1.60059 33.7998 -29.8008 33.7998 -33.6006c0 -6.7002 -3.2998 -34 -36.7002 -34h-0.299805c3.59961 4.2998 3.5 11.9004 -2.2002 16.2998c1.2002 0 19.7002 -3.19922 19.7002 17.3008c0 20.6992 -18.4004 17.2998 -23.0996 17.2998v-4.2998
-c-5.40039 0.799805 -7.40039 -0.300781 -7.5 -0.300781c2.09961 1.80078 4.5 2.60059 6.09961 2.90039c-7.09961 1.59961 -13.5996 -2.40039 -14.5996 -3.5c0.799805 1.7998 2.39941 3.40039 3.5 4.5c-2.30078 -0.799805 -4.30078 -1.90039 -6.10059 -3
-c0 5.2002 0.200195 7.5 -2.89941 9.5c-9.10059 6.59961 -9.5 14.2002 -9.60059 14.9004c7.10059 -4.2002 7.7002 -4 39.9004 -4z" />
-    <glyph glyph-name="dev" unicode="&#xf6cc;" 
-d="M120.12 239.71c3.87012 -2.90039 5.82031 -7.25977 5.83008 -13.0596v-69.6504c0 -5.80957 -1.94043 -10.1602 -5.82031 -13.0596c-3.87988 -2.90039 -7.76953 -4.35059 -11.6494 -4.35059h-17.4502v104.47h17.4395c3.87988 0 7.77051 -1.44922 11.6504 -4.34961z
-M404.1 416c24.2002 0 43.8408 -19.5898 43.9004 -43.7998v-360.4c-0.0595703 -24.21 -19.6904 -43.7998 -43.9004 -43.7998h-360.199c-24.2002 0 -43.8408 19.5898 -43.9004 43.7998v360.4c0.0595703 24.21 19.7002 43.7998 43.9004 43.7998h360.199zM154.2 156.81
-l-0.00976562 70.9307c-0.0107422 18.8193 -11.9307 47.2793 -47.3701 47.2793h-47.3799v-165.46h46.3994c36.75 -0.0595703 48.3604 28.4404 48.3604 47.25zM254.88 245.47l0.00976562 29.5205h-63.1895c-11.1504 -0.280273 -19.9805 -9.54004 -19.71 -20.6904v-125.109
-c0.279297 -11.1602 9.55957 -19.9805 20.7197 -19.6904h62.1797v29.5703h-53.29v38.4102h32.5703v29.5693h-32.5703v38.4199h53.2803zM358.52 130.18l38.4609 144.801h-32.5801l-29.5703 -113.721l-29.71 113.721h-32.5703l38.5303 -144.801
-c10.5898 -24.6299 34.2402 -30.75 47.4395 0z" />
-    <glyph glyph-name="fantasy-flight-games" unicode="&#xf6dc;" horiz-adv-x="512" 
-d="M256 415.14l223.14 -223.14l-223.14 -223.14l-223.14 223.14zM88.3398 192.17c13.8027 -13.6836 27.3086 -27.0547 41.1299 -40.7197c20.1602 19.8799 40.46 39.8994 61.8506 60.9902c12.0596 -12.5801 24.5195 -25.5703 36.54 -38.1104
-c12.0293 11.6895 23.7393 23.0596 35.6895 34.6602c-6.99023 7.4502 -32.1494 32.8301 -35.0898 35.7793c-1.91016 1.9209 -2.29004 3.2207 -0.120117 5.35059c15.5801 15.2295 39.21 17.79 56.9805 5.09961c7.98926 -5.70996 14.2998 -11.6396 48.5098 -43.9502
-c10.8203 11.1504 22.2295 22.8506 33.5 34.6904c0.490234 0.520508 0.0996094 2.63965 -0.580078 3.37988c-0.0898438 0.100586 -37.5195 40.6006 -62.1504 59c-33.5801 25.0801 -78.3193 23.0605 -119.77 -18.6895c-84.5703 -85.1807 -94.5303 -95.4805 -96.4902 -97.4805z
-M323.16 90.5703c18.8203 18.79 80.3301 80.6396 100.5 101.5c-13.7305 13.4492 -27.1797 26.6299 -40.8604 40.0293c-20.0098 -19.7393 -40.2402 -39.6895 -61.25 -60.4199c-12.3301 12.8301 -24.8799 25.8799 -37.25 38.75
-c-1.25977 -0.689453 -1.64941 -0.80957 -1.91016 -1.06934c-10.7295 -10.7705 -21.4199 -21.5801 -32.21 -32.29c-2.22949 -2.20996 -0.519531 -3.35059 0.800781 -4.69043c10.5791 -10.7402 21.1797 -21.4502 31.7695 -32.1797
-c3.5498 -3.60059 3.54004 -3.85059 -0.139648 -7.24023c-16.8008 -15.4697 -40.8408 -16.54 -59.3203 -1.7998c-7.62012 6.08008 -11.6602 10.1797 -44.6797 42.0898c-11.5801 -11.8896 -23.3203 -23.9404 -35.3701 -36.3096
-c33.5498 -34.7607 50.8496 -53.3408 72.9297 -66.8408c28.9004 -17.6699 71.5 -14.96 106.99 20.4707zM256 448l256 -256l-256 -256l-256 256zM16 192l240 -240l240 240l-240 240z" />
-    <glyph glyph-name="penny-arcade" unicode="&#xf704;" horiz-adv-x="640" 
-d="M421.91 283.73c7.33984 -16.2705 2.29004 -5.07031 24.6299 -54.6807l-39.7305 -10.6094c13.7002 59.2295 10.6104 45.8398 15.1006 65.29zM215.82 232.62c32.5 8.99023 41.9492 -37.6396 -0.350586 -47.4297c-14.2002 -3.77051 -6.64941 -1.75 -34.8193 -9.34082
-l-4.45996 46.1904c28.3193 7.5498 19.4395 5.17969 39.6299 10.5801zM541.98 258.81c75.7998 -37.9092 98 -76.3193 97.9893 -104.47c2.10059 -78.8496 -183.3 -130.33 -399.89 -84.8301c0.540039 -13 -8.00977 -24.6494 -20.5801 -28.0195
-c-125.54 -33.54 -117.35 -31.75 -122.53 -31.7598c-14.3701 -0.0107422 -26.4102 10.8896 -27.7998 25.1992l-4.2998 44.4805c-0.0830078 0.875 -0.138672 1.72461 -0.138672 2.62109c0 11.877 7.43945 22.0293 17.9082 26.0488l-1.73926 17.8799
-c-50.2305 28.2598 -80.9004 61.8701 -80.9004 95.3701c0 72.9199 144.26 113.4 309.41 98.3701c3.02734 8.49316 10.0977 15.0625 18.8896 17.4102c96.8701 25.9092 65.3203 17.4795 135.59 36.2295c13.1602 3.50977 26.9307 -2.95996 32.6201 -15.3301zM255.14 149.7
-c20.7529 4.80176 38.666 16.9805 50.75 33.7197c21.6006 32.5898 14.1104 105.561 -42.5498 104.43c-16.04 -0.229492 -8.07031 0.890625 -186.22 -46.6494l4.34961 -44.5l20.1201 5.38965l11.1104 -114.64l-20.0205 -5.35059l4.30078 -44.5195l115.31 30.7803
-l-4.50977 44.5098l-20.5303 -5.50977l-2.45996 23.5498l48.4404 12.9102zM454.32 133.08l108.55 28.96l-4.2998 44.4795l-20.79 -5.55957l-66.6699 145.47c-70.5801 -18.8301 -42.2305 -11.25 -135.591 -36.2393l4.2002 -44.4805l17.1504 4.55957l-33.0801 -126.47
-l-20.9902 -5.58984l4.45996 -44.4297l112.851 30.0693l-4.05078 39.54l-19.1992 -5.12012l4.09961 17.54l57.7598 15.4209l6.61035 -14.6807l-14.9004 -3.97949z" />
-    <glyph glyph-name="wizards-of-the-coast" unicode="&#xf730;" horiz-adv-x="640" 
-d="M219.19 102.31c7.44922 5.80078 16.2598 0.680664 21.7295 -7.0791c7.08984 -10.1201 6.24023 -18.1602 -0.259766 -23.04c-7.62012 -6.24023 -17.0898 0.129883 -21.7305 6.5498c-10.8096 15.1299 -1.63965 22.1895 0.260742 23.5693zM555.94 26.3701
-c1.30957 4.4502 3.92969 10.21 3.93945 20.1699c0 34.04 -41.6299 64.4102 -100.03 68.0801c-53.1592 3.39941 -120.46 -15.4502 -184.35 -73.8506l-0.790039 0.260742c1.58008 10.4697 -0.780273 16.2295 -3.40039 21.21l0.260742 1.56934
-c64.4199 51.3203 134.069 66.5107 188.8 60.4902c61.0098 -6.54004 104.479 -39.54 101.34 -78.0303c-0.790039 -9.68945 -2.88965 -15.71 -4.97949 -19.8994c-1.34082 -1.66992 -1.13086 -1.7002 -0.790039 0zM392.28 207.58
-c-0.530273 7.07031 3.13965 11.7803 6.7998 15.46c3.66992 3.91992 14.9297 10.4697 14.9297 10.4697s-1.2998 -26.4502 -2.08984 -29.8496c-1.04004 -3.92969 -4.96973 -6.81055 -10.4697 -6.5498c-4.98047 0.259766 -8.37988 3.39941 -9.16992 10.4697zM342.26 358.68
-c147.17 0 275.48 -86.6797 291.21 -196.939c0 0 -3.66992 -1.31055 -9.68945 -4.4502c0 -0.259766 1.0498 -10.7402 0.259766 -16.5c-0.259766 -1.83008 -1.0498 -1.0498 -1.0498 0c-0.270508 5.24023 -1.57031 11.5303 -2.36035 14.9297
-c-4.70996 -2.60938 -10.21 -6.54004 -15.9697 -11.7793c0 0 4.70996 -10.21 4.70996 -25.9209c0 -21.21 -8.37988 -32.9893 -16.5 -37.9697l-0.259766 0.520508c9.16992 9.16992 12.5693 21.4795 12.5693 31.9492c0 13.8701 -6.80957 33.25 -14.3994 41.3701
-c0 0 4.4502 -8.12012 6.80957 -17.8096c0 0 -21.21 -21.4697 -26.9697 -62.3203c0 0 -3.66992 9.16992 -10.7402 16.2402c0 0 12.0498 -15.4502 12.0498 -38.2305c0 -19.3799 -12.8398 -37.4395 -27.5 -48.1797c-0.989258 0 -0.790039 -0.169922 -0.790039 0.790039
-c15.71 12.8301 22.2607 28.0205 22.2607 46.3506c0 38.2295 -49.2305 80.3896 -130.15 80.3896c-96.1104 0 -181.74 -58.1299 -236.99 -128.05l-1.0498 0.259766c-40.3203 120.979 -135.64 185.66 -196.13 202.16c-2.09961 0.519531 -1.83984 0.790039 -0.790039 1.30957
-c12.3096 14.4004 136.96 151.88 341.47 151.88zM243.02 69.0596c16.8408 14.5908 4.99023 30.7705 4.71094 31.1602c-4.08008 5.99023 -16.3105 16.8506 -31.1602 5.5c-10.9502 -8.37988 -11.6406 -22.8896 -4.19043 -32.4697
-c6.44043 -8.26953 19.5801 -13.1797 30.6396 -4.19043zM245.11 205.49l1.83008 -8.11035l-3.6709 4.4502l-14.1396 -26.71l24.6201 -28.7998l12.5703 6.01953l-11.7803 70.96zM263.7 87.9102c3.41016 2.35938 7.33984 4.97949 9.67969 6.57031l-0.259766 0.259766
-c-1.56055 -0.780273 -3.11035 -1.0498 -12.5703 15.9697v0.259766c6.87012 5.16016 8.45996 4.89062 11.5205 5.5l0.259766 0.260742c-1.31055 3.66992 -1.31055 3.66992 -1.83008 5.5h-0.259766c-3.95996 -3.31055 -1.4707 -1.58008 -11.5205 -7.86035h-0.259766
-c-1.83008 3.13965 -4.19043 7.33008 -5.75977 9.68945v1.31055c4.4502 3.91992 10.2197 6.7998 12.3096 7.58984c2.87988 1.0498 4.19043 0.520508 5.24023 0.259766l0.259766 0.520508c-1.30957 1.83008 -2.08984 2.87988 -3.39941 4.70996l-0.520508 0.259766
-c-9.9502 -5.5 -17.54 -9.9502 -25.3994 -15.71l0.259766 -0.519531c1.30957 0.259766 3.13965 -0.260742 4.4502 -2.62012c15.04 -25.0801 19.5898 -27.5908 17.54 -31.6904zM318.96 120.38v0.25c-1.99023 0 -2.34961 -1.37012 -14.6602 30.6396v0.260742
-c4.95996 1.85938 8.78027 4.37988 12.3105 2.62012l0.259766 0.519531l-3.13965 4.98047l-0.520508 0.259766c-2.22949 -0.929688 -20.4697 -8.00977 -27.7598 -12.5703l-0.259766 -0.519531l1.0498 -5.76074h0.519531c1.0498 3.68066 9.7998 7.33008 9.9502 7.33008
-l0.259766 -0.259766c12.9404 -29.7598 13.0703 -29.8799 11.7803 -32.4697l0.259766 -0.259766c3.93066 2.09961 6.81055 3.40918 9.9502 4.97949zM363.73 136.88c-0.780273 0.520508 -2.09082 1.31055 -2.63086 3.92969c-1.56934 6.02051 -4.70996 20.1709 -6.2793 26.4502
-c-0.530273 1.57031 -0.530273 3.14062 0.519531 4.4502l-0.259766 0.259766c-3.41016 -0.529297 -6.29004 -1.30957 -10.7402 -2.35938v-0.260742c1.57031 -0.529297 2.10059 -2.09961 2.62012 -3.92969l2.62012 -9.42969l-0.259766 -0.259766
-c-3.40039 -1.05078 -8.90039 -2.62012 -12.8301 -3.93066h-0.259766c-0.780273 2.10059 -1.83008 5.75977 -3.14062 9.69043l0.259766 4.70996l-0.259766 0.259766c-4.71973 -1.30957 -7.59961 -2.34961 -10.7402 -3.40039v-0.519531
-c1.05078 0 2.10059 -1.30957 2.62012 -3.13965c1.0498 -3.40039 8.12012 -24.0908 9.16992 -27.2305c0.790039 -2.09961 0.790039 -3.66992 -0.259766 -4.97949l0.259766 -0.260742c3.14062 1.31055 6.54004 2.87988 10.21 3.93066v0.519531
-c-1.0498 0.259766 -2.08984 0.780273 -2.87988 3.13965c-1.0498 3.93066 -3.39941 11.2607 -4.18945 13.8809l0.259766 0.259766c3.92969 1.30957 9.42969 3.13965 12.8301 3.92969l0.259766 -0.259766c0.530273 -2.09961 2.62012 -10.2197 3.66992 -13.6201
-l-0.519531 -4.4502l0.259766 -0.259766c4.4502 1.57031 5.5 1.83008 9.69043 2.87988zM395.94 143.69c0.529297 1.8291 1.0498 3.65918 1.5791 6.04004h-0.259766c-2.0293 -4.06055 -15.0898 -5.09082 -16.2402 -4.71094l-0.259766 0.260742
-c-0.519531 3.13965 -1.83008 10.4795 -2.08984 12.5693l0.259766 0.260742c8.06055 0.899414 5.40039 1.0293 10.21 0h0.260742c0 3.40918 0.259766 3.66992 0.259766 5.23926h-0.259766c-5.98047 -2.2998 -1.2207 -0.679688 -10.7402 -2.35938l-0.259766 0.259766
-c-0.520508 3.40039 -1.31055 8.37988 -1.57031 9.9502l0.259766 0.259766c12.9004 2.41016 15.1006 0.349609 16.2402 -0.790039l0.259766 0.259766c-0.780273 2.36035 -1.0498 3.14062 -1.57031 5.5l-0.259766 0.260742
-c-4.71973 -0.260742 -15.71 -1.05078 -24.8799 -2.62012l-0.790039 -0.520508c1.83008 -0.790039 2.36035 -1.83984 2.62012 -3.66992c1.58008 -7.59961 3.41016 -18.3301 4.98047 -26.1895l-0.790039 -4.19043l0.259766 -0.259766
-c8.37988 1.83008 17.8096 3.66992 22.5195 4.18945zM406.68 188.2c3.14062 1.56934 7.33008 5.5 7.33008 5.50977c1.95996 -4.58008 0.970703 -2.70996 4.19043 -7.86035c10.1494 -0.459961 8.60938 0.0205078 20.4297 -1.0498l0.790039 4.70996
-s-4.18945 0 -5.75977 1.83008c-1.0498 1.31055 -1.31055 3.14062 -1.57031 5.5c0 2.36035 0.270508 16.5 0.790039 20.6904c0.259766 4.18945 2.08984 20.4199 2.08984 23.04c0.260742 2.62012 1.0498 8.91016 0.260742 12.0498
-c-4.82031 19.2803 -24.4307 17.8096 -50.0205 16.2402l-5.24023 -16.2402l2.62012 -2.87988c16.5498 16.5498 37.6201 4.56934 29.5898 -5.75977c-5.18945 -6.9209 -19.7393 -8.90039 -28.54 -17.0205c-6.47949 -6.49023 -12.2393 -20.9004 -5.5 -31.6904
-c6.12988 -11.0391 17.29 -9.96973 17.54 -9.94922c2.87988 0 6.55078 0.519531 11 2.87988zM443.86 166.99c0 1.83984 0.269531 4.18945 0.269531 5.25l-0.259766 0.519531c-14.3604 8.98047 -26.8604 0.919922 -28.7998 -9.9502
-c-2.83984 -16.0898 15.3594 -25.46 25.6602 -18.5898l0.519531 0.520508c0 0.259766 1.30957 4.4502 1.83008 6.2793l-0.259766 0.260742c-6.39062 -9.58008 -23.3203 -6.87012 -20.6904 10.21c1.91016 12.6602 15.3799 16.0801 21.7305 5.5zM449.63 254.72
-c0 0 4.96973 -0.790039 4.99023 -3.66016c0 -2.08984 -4.98047 -55.25 -4.98047 -55.25c-0.109375 -1.48926 -0.339844 -6.80957 -7.58984 -6.80957l-0.790039 -4.70996c18.3906 -2.83008 19.3701 -3.04004 36.9199 -7.33008l0.520508 4.70996
-c-13.0498 3.91992 -9.74023 7.37012 -4.4502 46.0898c1.09961 0.870117 8.62012 7.14062 20.6904 0.790039l11.2598 11.2598s-9.69043 8.90039 -14.9307 7.33008c-5.23926 -1.30957 -15.4492 -10.7393 -15.4492 -10.7393l1.56934 17.54
-c-8.10938 4.0498 -27.0693 7.3291 -27.7598 7.3291v-6.5498zM460.62 140.28c9.42969 -2.35059 16.2402 2.62012 18.8496 11.5195c2.08984 7.60059 -1.56934 16.7598 -10.7393 19.3799c-6.54004 2.10059 -15.7109 -0.779297 -18.8506 -10.21
-c-3.39941 -9.68945 2.62012 -18.5996 10.7402 -20.6895zM502.78 130.59c-0.780273 1.31055 -1.04004 2.10059 -0.799805 3.91016c1.22949 27.0098 1.5293 24.6602 1.0498 25.1396c-2.08984 0.790039 -5.5 2.09082 -7.58984 2.87988l-0.520508 -0.259766v-2.08984
-c-3.92969 -6.01953 -10.4795 -15.4502 -13.8799 -20.1602l-2.62012 -1.83008v-0.259766c2.08984 -0.259766 4.70996 -1.30957 6.02051 -1.57031v0.260742l0.790039 3.39941c0.789062 1.0498 2.35938 3.66992 3.66992 5.5c0.40918 0 2.25 -0.549805 7.06934 -2.35938
-c0.330078 -0.320312 0.330078 0.649414 -0.259766 -7.59082l-1.57031 -1.8291v-0.260742c1.57031 -0.519531 6.28027 -2.35938 8.64062 -2.87988zM498.07 220.41c-13.2207 -21.1504 -9.39062 -51.6006 9.66992 -52.9004c5.75977 -0.259766 9.42969 3.93066 9.68945 3.66992
-l-2.08984 -6.80957c8.91016 -4.21973 11.4404 -5.29004 17.8105 -8.63965l1.83008 4.44922c-6.14062 3.51074 -1.29004 11.25 24.6191 84.3203c-6.13965 6.45996 -10.2998 10.0596 -22.5195 20.4297l-1.83008 -3.66992c1.62988 -1.35938 6.79004 -5.00977 4.4502 -11.2598
-l-7.58984 -26.1904c-3.28027 12.79 -22.79 14.8701 -34.04 -3.39941zM527.4 141.07l2.35938 3.39941v0.520508c-3.41016 6.83008 -11.9395 7.41992 -14.6602 2.35938c-1.83984 -3.40918 0.260742 -7.06934 1.83008 -9.68945
-c1.57031 -2.87988 3.14062 -6.29004 2.08984 -8.37988c-2.31934 -4.62988 -8.94922 -0.680664 -8.37988 4.97949l-0.790039 -0.259766c-2.09961 -4.7998 -1.83008 -4.00977 -1.83008 -4.70996c3.05078 -6.09961 12.8105 -7.12988 15.4502 -0.790039
-c1.57031 3.15039 0.520508 6.80957 -1.0498 9.42969c-1.83008 3.40039 -4.18945 6.29004 -2.87988 8.37988c1.51953 2.65039 7.86035 0.470703 7.86035 -5.23926zM548.61 127.71l1.30957 3.91016l-0.259766 0.259766c-2.36035 2.08984 -8.64062 6.54004 -12.3105 8.90039
-h-0.259766l-3.13965 -3.40039v-0.259766c4.7998 -0.320312 3.37988 0.149414 6.01953 -1.83008v-0.259766c-2.62012 -4.9707 -6.0293 -11.2607 -9.16992 -17.0205l-2.08984 -1.30957l-0.259766 -0.259766l5.75977 -4.4502l0.259766 0.259766
-c-0.259766 0.530273 -0.519531 1.57031 0.790039 3.92969c2.87988 5.77051 6.28027 12.0508 8.64062 16.2402h0.259766c3.54004 -2.57031 2.49023 -1.43945 4.4502 -4.70996zM575.84 171.97l7.85059 10.46s-9.4209 18.8604 -23.04 16.5
-c-20.8408 -4.0293 -3.15039 -34.21 -2.09082 -38.2295c4.33008 -15.1299 -16.3193 -12.5605 -13.3496 5.24023l-2.87988 2.08984l-4.98047 -14.4004s11.7803 -11.2598 20.1602 -10.4697c8.12012 0.790039 13.8799 6.29004 13.8799 16.5
-c0 8.37988 -7.85938 22.7803 -7.85938 27.7598c0 6.86035 12.2695 4.75977 11.5195 -4.97949c-0.259766 -2.61035 -1.2998 -5.23047 -2.08984 -7.59082zM611.46 182.18c0.780273 -2.35938 1.57031 -1.83008 0.790039 0.270508
-c-32.4697 98.9795 -132.76 138.78 -199.8 139.83c-50.54 0.779297 -89.5605 -11.79 -131.98 -35.8799l20.6904 61.0098l-33.7803 -65.7305l-8.89941 20.9502c3.13965 1.04004 6.2793 2.08984 6.2793 2.08984l-2.62012 8.64062s-3.13965 -0.780273 -7.33008 -2.09082
-l-12.0498 28.2803l13.6201 -61.0098c-5.12012 2.55957 -19.0996 6.83008 -6.5498 19.3799l-2.62012 11c-6.97949 -2.21973 -13.2295 -3.62012 -32.21 -9.68945l-23.0801 11.5l59.1797 -42.6807l-4.70996 -2.08984l-17.2793 13.8799
-c2.23926 -5.13965 3.2998 -12.1699 4.70996 -19.6396l-28.54 -13.0898l-30.1104 36.1396l-17.2803 -9.16992l13.6201 -42.4199l-11.2598 -4.98047l94.2695 29.3301l-3.66992 -10.4697l-0.519531 3.13965l-13.0898 -3.39941l4.97949 -24.6201l-4.4502 -12.3105
-l-25.6592 30.6406l-39.8008 -10.21l18.8506 -58.9199c-60.1299 62.3994 -67.7002 66.3994 -61.7998 75.6797c2.09961 2.87988 7.85938 7.07031 7.85938 7.07031l-4.18945 7.06934c-26.7803 -18.3496 -27.8398 -19.1494 -58.4004 -42.6797l4.98047 -6.01953
-s8.12012 5.75977 13.6201 5.5c7.81934 -0.350586 1.76953 2.93945 113.659 -98.7305l11.7803 8.37988l-27.7598 93.4805l35.8799 -42.1602l-4.70996 -13.8799l41.9004 88.5098c34.6699 -80.5098 29.1494 -66.9502 32.9893 -78.8203l-33.5195 67.2998l-2.36035 -4.44922
-c1.2998 -1.30078 -0.919922 3.05957 22.7803 -59.4404c3.22949 -8.88965 -1.10059 -9.88965 -5.5 -12.8301l2.36035 -4.70996c15.3594 6.79004 22.9395 9.54004 39.0195 14.4004l-1.0498 4.97949c-8.89062 -1.33008 -10.1006 0.169922 -12.0498 4.4502
-c-1.05078 2.09961 -14.1504 40.0703 -20.4307 58.6602l-10.21 4.97949l-2.35938 8.12012l61.54 -36.6602l-13.0908 -43.21c12.1904 3.26074 27.0303 6.74023 49.4902 9.9502l-0.259766 26.71l-4.98047 -1.0498c-0.669922 -13.7998 -6.0293 -22.0801 -19.6396 -22.7803
-l22.2598 80.3906c-27.6201 -0.450195 -59.2695 -7.19043 -66.7695 -8.90039l3.92969 -16.5l-25.1396 19.6396l91.3896 20.6904l-85.6299 -9.16992c38.4902 22.5195 79.3398 39.0195 132.76 37.9697c131.46 -2.08984 180.95 -99.2402 191.95 -129.62zM203.48 295.57
-l2.35938 -8.64062c7.82031 2.61035 10.8604 2.36035 11.2598 2.36035l-9.42969 7.58984c-2.36035 -0.790039 -4.18945 -1.30957 -4.18945 -1.30957zM347.24 257.07l-11.5303 -37.71l-21.7295 17.0195c6.7998 25.5 31.6895 21.29 33.2598 20.6904zM318.43 380.93
-c224.94 0 321.83 -143.76 321.57 -227.55c0 -11 -0.269531 -17.5498 -0.790039 -19.6396c-0.259766 -2.10059 -1.0498 -0.790039 -1.0498 0.519531v9.9502c0 106.58 -121.51 223.37 -301.67 223.37c-61.2705 0 -103.69 -12.0498 -110.24 -13.8799l-1.57031 0.259766
-c-6.80957 7.58984 -12.8301 9.69043 -21.21 11.7803v0.790039c8.91016 2.34961 56.5605 14.3994 114.96 14.3994zM529.49 211.25c-8.61035 -34.4502 -13.6504 -35.3496 -18.3301 -35.3604c-7.33008 0 -6.81055 9.43066 -6.02051 14.9307
-c0.879883 9.72949 7.40039 34.6494 17.0205 33.5195c7.33008 -0.780273 8.63965 -7.33008 7.33008 -13.0898zM467.96 168.3c3.40039 -0.780273 7.84961 -4.4502 5.23047 -14.3896c-2.88086 -11.2598 -8.11035 -11.79 -11.7803 -10.7402
-c-5.5 1.31055 -7.85059 7.84961 -6.02051 14.6602c3.14062 11.2598 9.9502 11.2598 12.5703 10.4697zM491 147.35v0.270508c1.0498 1.83008 5.5 8.63965 6.5498 9.9502c-0.269531 -3.66992 -0.790039 -10.2207 -0.790039 -12.0508
-c-2.62012 0.780273 -3.92969 1.31055 -5.75977 1.83008z" />
-    <glyph glyph-name="think-peaks" unicode="&#xf731;" horiz-adv-x="576" 
-d="M465.4 38.5996l-206.2 353.801l-204.2 -352.101l-32 0.299805l236.2 407.4l206.2 -353.9l55.0996 95l32 -0.299805zM110.1 82.7002l149.601 257.899l235.8 -404.6l-32.5 0.0996094l-203.4 349.101l-117.399 -202.5h-32.1006z" />
-    <glyph glyph-name="reacteurope" unicode="&#xf75d;" horiz-adv-x="576" 
-d="M250.6 236.26l2 6.7998l-5.69922 4.30078l7.19922 0.0996094l2.30078 6.7998l2.2998 -6.7998l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059zM314.3 236.26l1.90039 6.7998l-5.7002 4.30078l7.2002 0.0996094l2.2998 6.7998l2.2998 -6.7998
-l7.2002 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.80078 4.10059zM223 185.76c4.90039 0 3.7998 -3.89941 3.7998 -13.7598c0 -10.2998 -6.7002 -14.0996 -16.7998 -14.0996h-0.200195c-10.0996 0 -16.7998 3.69922 -16.7998 14.0996v40.0596
-c0 9.90039 6.7002 14.1006 16.7998 14.1006h0.200195c10.0996 0 16.7998 -4.2002 16.7998 -14.1006c0 -8.39941 0.900391 -12.1992 -3.7998 -12.2998h-3.40039c-4.5 0 -3.7998 3.2998 -3.7998 10.5c0 4.7002 -2.2998 6.10059 -5.7998 6.10059
-s-5.7998 -1.40039 -5.7998 -6.10059v-36.5996c0 -4.7002 2.2998 -6.10059 5.7998 -6.10059s5.7998 1.40039 5.7998 6.10059c0 8.09961 -1 12.0996 3.7998 12.0996h3.40039zM142.3 168.36c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961
-c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-21.8994c-2.5 0 -3.80078 1.2998 -3.80078 3.7998v59.0996c0 2.5 1.30078 3.90039 3.7002 3.80078h21.7002c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-14.4004v-18.2998h11.4004
-c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-11.4004v-19.2998h14.7002zM100.3 186.86l8.10059 -23.9004c0.799805 -2.59961 -0.400391 -4.40039 -3.2002 -4.40039h-3.2998
-c-0.0996094 -0.00683594 -0.196289 -0.0078125 -0.297852 -0.0078125c-1.95703 0 -3.59473 1.37402 -4.00293 3.20801l-7.39941 23.5h-5.60059v-22.8994c0 -2.5 -1.2998 -3.80078 -3.7998 -3.80078h-3.39941c-2.5 0 -3.80078 1.30078 -3.80078 3.80078v59.0996
-c0 2.5 1.30078 3.7998 3.80078 3.7998h13.3994c10.1006 0 16.7998 -4 16.7998 -14.0996v-11.9004c0 -6.39941 -2.69922 -10.3994 -7.2998 -12.3994zM96.5 200.86v8.69922c0 4.80078 -2.5 6.10059 -6.09961 6.10059h-5.80078v-20.9004h5.80078
-c3.59961 0 6.09961 1.2998 6.09961 6.10059zM176 222l11.2002 -59.2002c0.5 -2.7002 -0.799805 -4.09961 -3.40039 -4.09961h-3.5c-0.12207 -0.0117188 -0.241211 -0.015625 -0.366211 -0.015625c-1.98926 0 -3.61719 1.55566 -3.7334 3.51562l-1.7998 11.2998h-12.2002
-l-1.7998 -11.2998c-0.117188 -1.95996 -1.74121 -3.51855 -3.73047 -3.51855c-0.125 0 -0.248047 0.00683594 -0.370117 0.0185547h-3c-2.5 0 -3.89941 1.39941 -3.39941 4.09961l11 59.2002c0.137695 1.90625 1.72559 3.41504 3.66602 3.41504
-c0.112305 0 0.223633 -0.00488281 0.333984 -0.0146484h6.89941c0.132812 0.0136719 0.264648 0.0166016 0.401367 0.0166016c1.97168 0 3.59766 -1.49805 3.79883 -3.41699zM163.7 182.7h9.39941l-4.69922 29.7002zM253 162.5c0 -2.45996 -1.2998 -3.83984 -3.7998 -3.7998
-h-3.40039c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v53.2002h-7.2998c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v2.09961c0 2.5 1.2998 3.80078 3.7998 3.80078h25.7998c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-7.5v-53.2002z
-M501 163.3c0.0546875 0.00488281 0.108398 -0.03125 0.164062 -0.03125c1.01562 0 1.84082 -0.824219 1.84082 -1.83984c0 -0.0429688 -0.00195312 -0.0859375 -0.00488281 -0.128906v-0.799805c0.00195312 -0.0332031 0.00488281 -0.0664062 0.00488281 -0.100586
-c0 -0.999023 -0.811523 -1.80957 -1.81055 -1.80957c-0.0654297 0 -0.130859 0.00292969 -0.194336 0.00976562h-22.5c-0.0634766 -0.00683594 -0.126953 -0.0117188 -0.192383 -0.0117188c-0.999023 0 -1.81055 0.811523 -1.81055 1.81055
-c0 0.0341797 0.000976562 0.0683594 0.00292969 0.101562v63c-0.0107422 0.0751953 -0.0166016 0.150391 -0.0166016 0.229492c0 0.893555 0.725586 1.61914 1.61914 1.61914c0.137695 0 0.270508 -0.0166016 0.397461 -0.0488281h22.2002
-c0.0771484 0.0107422 0.155273 0.0175781 0.236328 0.0175781c0.976562 0 1.76953 -0.792969 1.76953 -1.76953c0 -0.0498047 -0.00195312 -0.0996094 -0.00585938 -0.147461v-0.800781c0.00195312 -0.0380859 0.00488281 -0.0742188 0.00488281 -0.113281
-c0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.0390625 0 -0.0771484 0.000976562 -0.115234 0.00292969h-19.1006v-25.7998h16.1006c0.0380859 0.00292969 0.0742188 0.00488281 0.113281 0.00488281c1.04297 0 1.88965 -0.84668 1.88965 -1.88965
-c0 -0.0390625 -0.000976562 -0.0771484 -0.00292969 -0.115234v-0.799805c0.00195312 -0.0380859 0.00488281 -0.0751953 0.00488281 -0.113281c0 -1.04297 -0.84668 -1.89062 -1.88965 -1.89062c-0.0390625 0 -0.0771484 0.00195312 -0.115234 0.00390625h-16.1006
-v-26.7002h19.4004zM407.9 226.2c10.0996 0 15.2998 -4.74023 15.2998 -14.1006v-40.0996c0 -9.2998 -5.2002 -14.0996 -15.2998 -14.0996h-0.800781c-10.0996 0 -15.2998 4.7998 -15.2998 14.0996v40.0996c0 9.40039 5.2002 14.1006 15.2998 14.1006h0.800781zM418.1 173.8
-v36.6006c0 7.89941 -3 11.0996 -10.5 11.0996s-10.5 -3.2002 -10.5 -11.0996v-36.6006c0 -8 3 -11.0996 10.5 -11.0996s10.4004 3.09961 10.5 11.0996zM371.6 188.3l10.6006 -27.2998c0.5 -1.2998 -0.100586 -2.2998 -1.5 -2.2998h-1.5
-c-0.0429688 -0.00292969 -0.0839844 -0.00488281 -0.12793 -0.00488281c-0.993164 0 -1.8418 0.625977 -2.17188 1.50488l-10.4004 27.2002h-11.5996v-26.9004c0.00488281 -0.0556641 0.00976562 -0.111328 0.00976562 -0.167969
-c0 -0.960938 -0.780273 -1.74023 -1.74023 -1.74023c-0.0576172 0 -0.114258 0.00292969 -0.169922 0.0078125h-1.2002c-0.0634766 -0.00683594 -0.126953 -0.0117188 -0.192383 -0.0117188c-0.999023 0 -1.81055 0.811523 -1.81055 1.81055
-c0 0.0341797 0.000976562 0.0683594 0.00292969 0.101562v63c-0.00195312 0.0332031 -0.00488281 0.0664062 -0.00488281 0.100586c0 0.999023 0.811523 1.80957 1.81055 1.80957c0.0654297 0 0.130859 -0.00292969 0.194336 -0.00976562h13.7002
-c10.0996 0 15.2998 -4.7002 15.2998 -14.1006v-9.7002c0 -7.19922 -3.09961 -11.6992 -9.2002 -13.2998zM365.2 192.2c7.5 0 10.5 3.16016 10.5 11v6.39941c0 8 -3 11.1006 -10.5 11.1006h-10.2002v-28.5h10.2002zM451.1 225.3c10.1006 0 15.3008 -4.7002 15.3008 -14.0996
-v-10.5c0 -9.2998 -5.2002 -14.1006 -15.3008 -14.1006h-10.5996v-26.0996c0.00585938 -0.0556641 0.00976562 -0.111328 0.00976562 -0.167969c0 -0.960938 -0.779297 -1.74023 -1.74023 -1.74023c-0.0566406 0 -0.113281 0.00292969 -0.169922 0.0078125h-1.19922
-c-0.0644531 -0.00683594 -0.12793 -0.0117188 -0.193359 -0.0117188c-0.999023 0 -1.80957 0.811523 -1.80957 1.81055c0 0.0341797 0.000976562 0.0683594 0.00292969 0.101562v63c-0.0107422 0.0751953 -0.0175781 0.150391 -0.0175781 0.229492
-c0 0.893555 0.726562 1.61914 1.62012 1.61914c0.136719 0 0.270508 -0.0166016 0.397461 -0.0488281h13.6992zM461.3 202.5v7.09961c0 7.90039 -3 11.1006 -10.5 11h-10.2002v-29.1992h10.2002c7.5 0 10.5 3.19922 10.5 11.0996zM259.5 140l7.09961 -0.0996094
-l-5.69922 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.7002 4.30078l7.10059 0.0996094l2.2998 6.7998zM487.1 276.1c122.301 -46.0996 118.401 -132.54 -33.8984 -176.34c13.3994 -49.7002 18.0996 -101.899 0.0996094 -133.8
-c-3.7998 -6.7002 -16.7998 -27.7002 -47.5996 -27.7002c-41.5 0 -110.2 41.6006 -182.101 142c-42.7998 3.5 -72.1992 10.1006 -84.5996 13c-20.5 -82.2998 -6.7998 -125.3 15.5 -137.899c1.2002 -0.700195 38.4004 -27.2002 120.9 52.7998
-c3.39941 -3.5 6.79883 -6.90039 10.1982 -10.2002c-63.0996 -61.2002 -110.199 -71 -138.199 -55.2002c-32.4004 18.2998 -42.8008 72 -22.3008 153.9c-18.8994 5 -121.6 33.2002 -122.1 92.7998c-0.400391 40.9004 49.7998 74.7002 120.3 95
-c-13.3994 49.5996 -18.2002 101.8 -0.0996094 133.8c3.7998 6.74023 16.7998 27.7402 47.5996 27.7402c41.6006 0 110.3 -41.6396 182.2 -142.14c28.7607 -2.29492 57.1504 -6.70801 84.5996 -13c20.5 82 6.90039 125.1 -15.5 137.8
-c-1.2998 0.700195 -38.3994 27.2002 -120.899 -52.7998c-3.40039 3.5 -6.80078 6.89941 -10.2002 10.1992c52.2998 50.9404 103.7 74.6006 138.2 55.2402c33.8994 -19.2002 41.8994 -75.8994 22.2998 -153.899c12.0234 -3.14844 24.0938 -6.9873 35.5996 -11.3008z
-M135.901 411.16c-23.1006 -40.7998 1 -121.562 1.19922 -122.961c27.2979 6.86914 55.7041 11.835 84.4004 14.5996c15.5215 22.6875 32.2832 43.9033 50.7002 64.2002c3.39941 -3.33301 6.7998 -6.74609 10.2002 -10.2393
-c-15.1953 -16.6592 -29.1309 -33.958 -42.2002 -52.3994c17.9678 1.35645 34.9062 2.04102 53.2197 2.04102c13.6523 0 27.2158 -0.383789 40.6797 -1.1416c-64.5 86.6006 -126.5 126.2 -163.3 126.2c-23 0 -32 -15.2002 -34.8994 -20.2998zM440.701 -27.1406
-c3.2998 6 21.5 38.5996 -1.2002 123c-4.09961 -1.10059 -37.0996 -9.90039 -84.4004 -14.6006c-15.4961 -22.7061 -32.2598 -43.9238 -50.6992 -64.2002c-3.40039 3.2998 -6.80078 6.7002 -10.2002 10.2002c15.1943 16.6602 29.1299 33.958 42.2002 52.4004
-c-17.9014 -1.38379 -34.792 -2.08301 -53.0459 -2.08301c-13.7139 0 -27.3359 0.398438 -40.8545 1.18262c64.5996 -86.7998 126.6 -126.2 163.3 -126.2c23.1006 0 32 15.2002 34.9004 20.3008zM449.801 111.459c25.6006 7.2998 85.9004 27.4004 105.7 62.5
-c1.40039 2.5 33.5 50.5 -72.5996 90.4004c-11.1553 4.18555 -22.8525 7.92188 -34.5 11c-3.60059 -12.9004 -7.90039 -26.1006 -12.8008 -39.5c-3.71387 -0.506836 -6.9248 -2.60645 -8.89941 -5.60059l-0.100586 0.100586c-1.94824 1.84863 -4.25 3.31445 -6.7998 4.2998
-c5.7002 15 10.6006 29.7998 14.6006 44.2002c-7.2002 1.69922 -31.8008 7.59961 -72.2002 11.6992c16.7002 -24.5 27.8994 -44.0996 34.2998 -55.5c-4.18457 -1.36719 -7.79199 -3.96777 -10.4004 -7.39941c-13.5996 16.3994 -11 19.8994 -42.5 64.5
-c-16.6885 1.17285 -32.207 1.77344 -49.1914 1.77344c-21.2998 0 -42.3818 -0.9375 -63.208 -2.77344c-16.9004 -25 -28.2998 -45.2002 -34.7998 -56.9004c-4.16797 -1.77637 -7.68652 -4.69238 -10.2002 -8.39941c-1.07422 3.39844 -3.37402 6.23633 -6.40039 8
-c6.10059 11.3994 16.9004 31 32.7998 55.2998c-39.5996 -4.60059 -65 -11.2002 -72 -13c4.30078 -14.1006 9.40039 -28.6006 15.2002 -43.2998c-0.866211 -0.632812 -1.63086 -1.36328 -2.2998 -2.2002c-1.5 1.89941 -4 5.2998 -14.4004 5.2998
-c-4.69922 12.2998 -8.7998 24.5 -12.3994 36.4004c-138.8 -40.3604 -158.4 -121.36 1.5 -164c3.59961 12.8994 7.7998 26 12.7002 39.3994c0.328125 -0.0185547 0.651367 -0.0214844 0.984375 -0.0214844c2.0752 0 4.06641 0.360352 5.91504 1.02148
-c3 -1.2002 5.2002 -1 8.40039 -1c-5.5 -14.5996 -10.2002 -28.8994 -14.1006 -42.8994c23.4512 -5.42578 47.71 -9.39258 72.2002 -11.7002c-16.2998 23.8994 -27.5 43.3994 -33.7998 54.5996c8.7002 0 10.7002 1.60059 12.5996 3.2002
-c0.950195 -0.574219 1.95996 -1.08008 3 -1.5c15.3008 -26.7002 28.9004 -46.5996 36.8008 -57.7998c16.6875 -1.17285 32.2051 -1.77344 49.1895 -1.77344c21.2998 0 42.3838 0.9375 63.21 2.77344c16.5 24.2998 27.7002 44 33.9004 55.2002
-c7.2998 0 9.7998 3 10.8994 4.19922c1.82324 -1.3252 3.84766 -2.41113 6 -3.19922c-15 -28 -28.6992 -48.9004 -32.1992 -54.2002c24.4219 2.70312 48.6768 7.11816 72 13c-4.10059 13.7998 -9 27.8994 -14.7002 42.2002c2.00391 0.898438 3.81934 2.11523 5.39941 3.59961
-l0.100586 0.0996094c2.2666 -3.44043 6.1543 -5.7002 10.5781 -5.7002c0.0410156 0 0.0810547 0 0.12207 0.000976562c4.69922 -12.3008 8.7998 -24.5 12.3994 -36.4004zM335.401 225.459c0.0664062 0.00683594 0.132812 0.00878906 0.201172 0.00878906
-c1.07422 0 1.95117 -0.84668 1.99805 -1.90918v-51.5c0 -9.5 -5 -14.0996 -15.0996 -14.0996h-0.400391c-10.0996 0 -15.0996 4.5 -15.0996 14.0996v51.5c-0.00195312 0.0341797 -0.00488281 0.0664062 -0.00488281 0.100586c0 0.999023 0.811523 1.81055 1.81055 1.81055
-c0.0654297 0 0.130859 -0.00390625 0.194336 -0.0107422h1.2002c0.0742188 0.00976562 0.148438 0.0166016 0.224609 0.0166016c0.932617 0 1.69043 -0.756836 1.69043 -1.68945c0 -0.0771484 -0.00488281 -0.15332 -0.015625 -0.227539v-49.7998
-c0 -8 2.60059 -11.0996 10.1006 -11.0996s10.0996 3.2002 10.0996 11.0996v49.7998c-0.00488281 0.0566406 -0.00976562 0.111328 -0.00976562 0.168945c0 0.959961 0.779297 1.73926 1.74023 1.73926c0.0576172 0 0.114258 -0.00195312 0.169922 -0.0078125h1.2002z
-M321.701 139.999l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059l-5.80078 -4.10059l2.10059 6.7998l-5.7002 4.30078l7.09961 0.0996094l2.30078 6.7998zM290.601 132.599l7.10059 -0.0996094l-5.7002 -4.2998l2.09961 -6.7998l-5.7998 4.09961
-l-5.7998 -4.09961l2.09961 6.7998l-5.69922 4.2998l7.09961 0.0996094l2.2998 6.80078zM295.701 163.399c0.0615234 0.00585938 0.12207 -0.0292969 0.185547 -0.0292969c1.00977 0 1.83008 -0.819336 1.83008 -1.83008
-c0 -0.0810547 -0.00585938 -0.162109 -0.015625 -0.241211v-0.799805c0.00390625 -0.0488281 0.0078125 -0.0966797 0.0078125 -0.145508c0 -0.977539 -0.792969 -1.77051 -1.77051 -1.77051c-0.0800781 0 -0.160156 0.00585938 -0.237305 0.015625h-22.5
-c-0.0644531 -0.00683594 -0.126953 -0.0117188 -0.193359 -0.0117188c-0.999023 0 -1.80957 0.811523 -1.80957 1.81055c0 0.0341797 0.000976562 0.0683594 0.00292969 0.101562v63c-0.00195312 0.0332031 -0.00488281 0.0664062 -0.00488281 0.100586
-c0 0.999023 0.811523 1.80957 1.80957 1.80957c0.0664062 0 0.130859 -0.00292969 0.195312 -0.00976562h22.2002c0.0771484 0.00976562 0.155273 0.0175781 0.235352 0.0175781c0.977539 0 1.77051 -0.793945 1.77051 -1.77051
-c0 -0.0498047 -0.00195312 -0.0986328 -0.00585938 -0.147461v-0.799805c0.00195312 -0.0380859 0.00488281 -0.0751953 0.00488281 -0.113281c0 -1.04395 -0.847656 -1.89062 -1.89062 -1.89062c-0.0380859 0 -0.0761719 0.000976562 -0.114258 0.00390625h-19.1006
-v-25.7998h16.1006c0.0380859 0.00195312 0.0742188 0.00488281 0.113281 0.00488281c1.04297 0 1.88965 -0.847656 1.88965 -1.89062c0 -0.0380859 -0.000976562 -0.0761719 -0.00292969 -0.114258v-0.800781
-c0.00195312 -0.0380859 0.00488281 -0.0742188 0.00488281 -0.113281c0 -1.04297 -0.847656 -1.88965 -1.89062 -1.88965c-0.0380859 0 -0.0761719 0.000976562 -0.114258 0.00292969h-16.1006v-26.6992h19.4004zM288.301 262.799l2.2998 -6.7998l7.10059 -0.0996094
-l-5.7002 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.69922 4.30078l7.09961 0.0996094z" />
-    <glyph glyph-name="artstation" unicode="&#xf77a;" horiz-adv-x="512" 
-d="M2 70.5996h315.1l59.2002 -102.6h-285.399c-0.00488281 0 0.0205078 -0.0498047 0.015625 -0.0498047c-20.0742 0 -37.4736 11.5439 -45.916 28.3496zM501.8 98c19 -29.4004 -0.0996094 -55.9004 -2 -59.0996l-40.7002 -70.5l-257.3 447.6h88.4004
-c0.00390625 0 -0.0234375 0.0527344 -0.0195312 0.0527344c19.6797 0 36.79 -11.0879 45.4189 -27.3525zM275 143.5h-231l115.5 200z" />
-    <glyph glyph-name="atlassian" unicode="&#xf77b;" horiz-adv-x="512" 
-d="M152.2 211.6c66.2998 -70.7998 89.0996 -189.3 51.2002 -267.1c-2.40039 -5.2002 -7.60059 -8.5 -13.4004 -8.40039h-175c-11 0 -18.4004 11.7002 -13.4004 21.7002l125.801 251c5.09961 10.5 17.0996 11 24.7998 2.7998zM244.4 439.9
-c6.7998 10.8994 20.2998 10.6992 25.5996 0.0996094c5.90039 -11.7002 240.4 -482.3 240.4 -482.3c5 -9.90039 -2.2002 -21.7002 -13.4004 -21.7002h-174.2c-5.7002 0 -10.8994 3.2998 -13.3994 8.40039c-73.5 146.899 -187.301 302.1 -65 495.5z" />
-    <glyph glyph-name="canadian-maple-leaf" unicode="&#xf785;" horiz-adv-x="512" 
-d="M383.8 96.2998c-5 -5 -10 -7.5 -5 -22.5s10 -35.0996 10 -35.0996s-95.2002 20.0996 -105.2 22.5996c-8.89941 0.900391 -18.3994 -2.39941 -18.3994 -12.5c0 -10.0996 5.7998 -112.8 5.7998 -112.8h-30s5.7998 102.8 5.7998 112.8s-9.59961 13.4004 -18.2998 12.5
-c-10.0996 -2.5 -105.3 -22.5996 -105.3 -22.5996s5 20.0996 10.0996 35.0996c4.90039 15 0 17.5 -5.09961 22.5c-2.60059 2.5 -105.2 92.4004 -105.2 92.4004l17.5 7.59961c10 4.90039 7.40039 11.4004 5 17.4004c-2.5 7.59961 -20.0996 67.2998 -20.0996 67.2998
-s47.5996 -10 57.6992 -12.5c7.5 -2.40039 10 2.5 12.5 7.5s15 32.2998 15 32.2998s52.6006 -59.7998 55.1006 -62.2998c10.0996 -7.5 20.0996 0 17.5996 10c0 10 -27.5996 129.6 -27.5996 129.6s30.0996 -17.3994 40.0996 -22.3994c7.60059 -5 12.6006 -5 17.6006 5
-c5 7.5 42.5 79.7998 42.5 79.7998s37.5996 -72.2998 42.6992 -79.7998c5 -10 10.1006 -10 17.6006 -5c10 5 40.0996 22.3994 40.0996 22.3994s-27.5996 -119.6 -27.5996 -129.6c-2.5 -10 7.59961 -17.5 17.5996 -10c2.5 2.40039 55.1006 62.2998 55.1006 62.2998
-s12.5 -27.3994 15 -32.3994s5 -9.90039 12.5 -7.5c10 2.5 57.6992 12.5 57.6992 12.5s-17.6992 -59.7002 -20.0996 -67.3008c-2.40039 -5.89941 -5 -12.5 5 -17.3994l17.5 -7.5s-102.7 -89.9004 -105.2 -92.4004z" />
-    <glyph glyph-name="centos" unicode="&#xf789;" 
-d="M289.6 350.5l31.6006 -31.7002l-76.2998 -76.5v108.2h44.6992zM127.2 318.8l31.5996 31.7002h44.7002v-108.2zM168.7 360.4l55.5 55.5996l55.5 -55.5996h-44.7002v-127.9l-10.7998 -10.7998l-10.7998 10.7998v127.9h-44.7002zM194.9 192.3l-10.8008 -10.7998h-128.6
-v-44.7998l-55.5 55.5996l55.5 55.6006v-44.8008h128.6zM274.2 213l76.2998 76.5l31.5996 -31.7002v-44.7998h-107.899zM447.5 192.3l-55.5 -55.5996v44.7998h-127.7l-10.7998 10.7998l10.7998 10.7998h127.7v44.8008zM65.4004 271.8v78.7002h79.3994l-31.5996 -31.7002
-l90.2998 -90.5v-15.2998h-15.2998l-90.2998 90.5zM382.1 350.5v-78.7002l-31.5996 31.7002l-90.2998 -90.5h-15.2998v15.2998l90.2998 90.5l-31.6006 31.7002h78.5zM203.5 34.0996v-0.0996094h-44.7002l-31.5996 31.7002l76.2998 76.5v-108.101zM65.4004 213v44.7998
-l32.5 31.7002l76.2998 -76.5h-108.8zM382.1 112.8v-78.7002h-78.5l31.6006 31.7002l-90.2998 90.5v15.2998h15.2998l90.2998 -90.5zM382.1 171.6v-44.7998l-31.5996 -31.7002l-76.2998 76.5h107.899zM321.2 65.7998l-31.6006 -31.5996h-44.6992v108.1zM97.9004 95.0996
-l-32.5 31.7002v44.7998h108.8zM279.7 24.2002l-55.5 -55.6006l-55.5 55.6006h44.7002v127.899l10.7998 10.8008l10.7998 -10.8008v-127.899h44.7002zM113.2 65.7998l31.5996 -31.7002h-79.3994v78.7002l32.5 -31.7002l90.2998 90.5h15.2998v-15.2998z" />
-    <glyph glyph-name="confluence" unicode="&#xf78d;" horiz-adv-x="512" 
-d="M2.2998 35.7998c42.2998 66.9004 125.2 233.2 373.101 112.601c39.6992 -19.1006 83.6992 -39.9004 105.899 -50.3008c8 -3.69922 11.7002 -13.1992 8.10059 -21.2998l-50.4004 -114.1c-0.0996094 -0.100586 -0.0996094 -0.299805 -0.200195 -0.400391
-c-3.89941 -8.09961 -13.5996 -11.5996 -21.7002 -7.7002c-200.399 95.2002 -213.8 111.5 -280.899 -0.699219c0 0 -0.100586 -0.100586 -0.100586 -0.200195c-4.69922 -7.7002 -14.6992 -10 -22.3994 -5.2998l-105.9 65.1992c-7.59961 4.7002 -10 14.6006 -5.5 22.2002z
-M509.7 347.9c-42.6006 -67.5 -125.4 -232.9 -373.4 -112.9c-39.7002 19.2002 -83.7998 40 -106 50.4004c-8 3.69922 -11.7002 13.1992 -8.09961 21.2998l50.5 114.1c0.0996094 0.100586 0.0996094 0.299805 0.200195 0.400391
-c3.89941 8.09961 13.5996 11.5996 21.6992 7.7002c199.5 -94.7002 213.301 -111.7 280.601 0.899414c0.200195 0.400391 0.399414 0.700195 0.599609 1c5 7.5 15.1006 9.40039 22.6006 4.40039l105.8 -65.1006c7.59961 -4.69922 10 -14.5996 5.5 -22.1992z" />
-    <glyph glyph-name="dhl" unicode="&#xf790;" horiz-adv-x="640" 
-d="M238 146.8l22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM0 165.1h86.5l-4.7002 -6.39941h-81.7998v6.39941zM172.9 177h68.1992c-5.69922 -7.7998 -24.0996 -30.2998 -57.1992 -30.2998h-100.101l41.1006 55.7998h51c5.59961 0 5.59961 -2.2002 2.7998 -5.90039
-c-2.7998 -3.69922 -7.60059 -10.2998 -10.4004 -14.0996c-1.39941 -1.90039 -4.09961 -5.5 4.60059 -5.5zM490.4 183.9h-62.2002l39.2998 53.3994h62.2002zM95.2998 177l-4.7002 -6.40039h-90.5996v6.40039h95.2998zM206.3 203.6
-c2.7998 3.7002 2.90039 5.90039 -2.7002 5.90039h-111.399l20.3994 27.7998h117.9c29.9004 0 37.5996 -23.5996 29.2002 -35c-6.2002 -8.39941 -13.5 -18.3994 -13.5 -18.3994h-45.6006c-8.69922 0 -6 3.5 -4.59961 5.5c2.7998 3.7998 7.5 10.3994 10.2998 14.1992zM0 146.8
-v6.40039h77.7998l-4.7002 -6.40039h-73.0996zM323 146.8c0 0 22.2002 30.2002 22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM545 146.7l4.7002 6.39941h90.2998v-6.39941h-95zM567.3 177h72.7002v-6.40039h-77.4004zM553.8 158.7l4.7002 6.39941h81.5v-6.39941
-h-86.2002zM389.6 237.3h58.7002l-39.2998 -53.3994h-143.6l39.2998 53.3994h58.7002l-22.5 -30.5996h26.1992zM423.1 177h133.4l-22.2998 -30.2998h-94.2998c-24.1006 0 -30.6006 11.5996 -23.2002 21.5996c2.09961 2.7998 6.39941 8.7002 6.39941 8.7002z" />
-    <glyph glyph-name="diaspora" unicode="&#xf791;" horiz-adv-x="512" 
-d="M251.64 93.4502c-1.39941 0 -88 -119.9 -88.6992 -119.9c-0.700195 0 -86.6006 60.4502 -86.9404 61.2002s86.5996 125.7 86.5996 127.4c0 2.19922 -129.6 44 -137.6 47.0996c-1.2998 0.5 31.4004 101.8 31.7002 102.1c0.599609 0.700195 144.399 -47 145.5 -47
-c0.399414 0 0.899414 0.600586 1 1.30078c0.399414 2 1 148.6 1.7002 149.6c0.799805 1.2002 104.5 0.700195 105.1 0.299805c1.5 -1 3.5 -156.1 6.09961 -156.1c1.40039 0 138.7 47 139.301 46.2998c0.799805 -0.900391 31.8994 -102.2 31.5 -102.6
-c-0.900391 -0.900391 -140.2 -47.1006 -140.601 -48.8008c-0.299805 -1.39941 82.7998 -122.1 82.5 -122.899s-85.5 -63.5 -86.2998 -63.5c-1 0.200195 -89 125.5 -90.9004 125.5h0.0400391z" />
-    <glyph glyph-name="fedex" unicode="&#xf797;" horiz-adv-x="640" 
-d="M586 163.5l54 -60.5h-64.4004l-22.2998 25l-22.0996 -25h-212.2v11.9004h-0.5c-7.90039 -11.7002 -20.7998 -18.6006 -34.9004 -18.6006c-32.6992 0 -56.3994 26.4004 -60.0996 56.9004h-85.5c0 -23.5 31.0996 -35.5 45.7998 -14.6006h42
-c-27.5996 -67.6992 -130.2 -49.3994 -130.2 23.7002c0 6.40039 0.800781 12.5 2.30078 18.2002h-48.9004v-77.5h-49v184.4h109v-41.1006h-60v-26.2002h54.7998v-24.1992c24.5 43.5996 103.9 45.3994 121.9 -14c7.5 25.5 28.8994 44.8994 57.2998 44.8994
-c13.9004 0 25.7998 -3.7998 35.4004 -14.7998h0.5v75.5h151.199v-48.0996h-56.0996v-16h118.7l22.5 -24.8008l21.7002 24.8008h62.3994zM139.3 180.1h46.5c-4.7998 25.6006 -40.3994 26.3008 -46.5 0zM292.7 131.2c34.5 0 32.5996 62.7998 0 62.7998
-c-34 0 -34.6006 -62.7998 0 -62.7998zM460.5 112.1v29.6006h-56.0996v44.7002h56.0996v28.0996h-55.5v33.9004h56.0996v30.1992h-95v-166.5h94.4004zM414.6 151.9h56.1006v-45.6006l50.7002 57l-50.7002 57v-44h-56.1006v-24.3994zM553.2 141.6l26.2998 -29.5h40.5
-l-46 51.4004l45.4004 51h-38.5l-25.6006 -29.2998l-26.5996 29.2998h-39.7002l45.5996 -51.2002l-45.5996 -51.2002h38.0996z" />
-    <glyph glyph-name="fedora" unicode="&#xf798;" 
-d="M225 416c123.7 -0.299805 223.7 -100.9 223.4 -224.6c-0.300781 -123.7 -100.9 -223.7 -224.601 -223.4l-170.2 0.400391c-29.582 0 -53.6006 24.0117 -53.6006 53.5938c0 0.102539 0 0.204102 0.000976562 0.305664l0.400391 170.3
-c0.399414 123.7 100.899 223.7 224.6 223.4zM394.8 258.8c-0.0947266 7.71387 -1.06445 15.1934 -2.7998 22.4004l-55.2002 56.0996v-1.59961c0 -5.10059 -1.5 -9.60059 -3.7998 -14.2998zM331 353.7c1.94141 -2.71777 3.39453 -5.85449 4.2002 -9.2002l54.2998 -54.5996
-c-9.56543 28.6953 -30.9629 51.8848 -58.5 63.7998zM118.1 200.8c-5.54395 -0.450195 -11.0029 -1.44336 -16.1992 -2.89941l8.5 -8.5c2.04004 4.16895 4.62598 7.98535 7.69922 11.3994zM97 196.6c-4.72363 -1.31543 -9.36719 -3.08691 -13.7002 -5.19922l27 -27.2002
-c-1.51855 3.87012 -2.37598 8.09961 -2.39941 12.5l0.899414 8zM78.7998 189.2c-3.89551 -2.1748 -7.62207 -4.57227 -11.2002 -7.2002l35.3008 -35.9004c4.36133 2.17188 9.16016 3.79395 14.0996 4.7002zM63.5996 179.4
-c-3.7207 -2.78223 -7.0625 -5.89355 -10.0996 -9.40039l34.9004 -34.5996c3.2168 3.18945 6.69531 6.00781 10.5 8.5zM50.2998 167.1c-2.89941 -3.2998 -5.7998 -6.69922 -8.59961 -10.5l35.7998 -35.8994c2.11035 4.12598 4.6875 7.93262 7.7002 11.3994zM39.2998 152.8
-c-2.49414 -3.82227 -4.73926 -7.83984 -6.7002 -12l39.5 -39.7998c0.374023 5.3252 1.63574 10.4883 3.60059 15.2002zM30.5 136.5c-1.7998 -4.90039 -3.2998 -9.59961 -4.7002 -14.5l52.7002 -53.5c-3.96484 7.90234 -6.36621 16.8438 -6.7002 26.2002zM22.5996 93.5
-c0.046875 -7.56934 1.05859 -14.8945 2.90039 -21.9004l55.4004 -55.6992v1.09961c0.0429688 5.14551 1.35156 10.0322 3.59961 14.2998zM27.9004 62.7998c9.59375 -28.6787 30.9805 -51.8564 58.5 -63.7998c-1.90527 2.74219 -3.35254 5.87402 -4.2002 9.2002z
-M22.5996 99.7998l64.4004 -64.2002c2.76953 3.4707 6.08594 6.38965 9.90039 8.7002l-72.2002 72.5c-1.2793 -5.48047 -2.00293 -11.1543 -2.10059 -17zM275.9 151.6c32.5996 -0.0996094 32.6992 49.2002 0.199219 49.4004l-33.5996 0.0996094
-c-4.91504 0.0224609 -8.90039 4.01855 -8.90039 8.93945v0.0605469l0.100586 47c0.0996094 40.5 38.5996 60.8008 66 54.9004c15.3994 -3.90039 30.2998 8.40039 30.2998 23.9004c0 12.0996 -8.7002 22.1992 -19.9004 24c-6.37305 1.50098 -12.9639 2.30078 -19.793 2.30078
-c-0.135742 0 -0.271484 -0.000976562 -0.40625 -0.000976562c-0.143555 0 -0.277344 -0.00292969 -0.420898 -0.00292969c-57.9893 0 -105.081 -47.0303 -105.18 -104.997l-0.0996094 -56l-42.6006 0.0996094c-32.5996 0.100586 -32.6992 -49.2002 -0.0996094 -49.2998
-l33.5996 -0.0996094c4.40039 0 8.90039 -4.5 8.90039 -9l-0.0996094 -47c-0.00585938 -30.8535 -25.0527 -55.9004 -55.9062 -55.9004h-0.194336c-9.39941 0 -9.39941 1.59961 -15.7002 1.59961c-13.458 -0.209961 -24.3447 -11.1289 -24.5 -24.5996
-c0 -15.5 14.2002 -24.2002 19.9004 -24.2002c61.2998 -12.8994 125.5 33.6006 125.7 102.9l0.0996094 56zM299.4 151.9c5.48145 0.538086 10.9062 1.52637 16.0996 2.89941l-8.5 8.5c-1.78711 -4.29492 -4.37207 -8.14844 -7.59961 -11.3994zM320.4 156.1
-c4.74121 1.31738 9.38574 3.12305 13.6992 5.30078l-27 27.1992c1.51855 -3.86914 2.37598 -8.09961 2.40039 -12.5l-0.900391 -8.09961zM338.4 163.5c4 2.2002 8.09961 4.7002 11.8994 7.2002l-36.2002 35.8994c-4.09961 -2.2998 -8.7998 -3.59961 -13.6992 -4.69922z
-M353.9 173.3c3.55273 2.83594 6.87891 5.7998 10.0996 9l-34.9004 35c-3.18457 -3.22266 -6.66797 -6.04492 -10.5 -8.5zM367.1 185.6c3.0625 3.36523 5.89941 6.82812 8.60059 10.5l-35.7998 35.9004c-2.1582 -4.0957 -4.73145 -7.89746 -7.7002 -11.4004zM378.1 199.9
-c2.53027 3.79688 4.77832 7.81738 6.7002 12l-39.5 39.7998c-0.374023 -5.3252 -1.63574 -10.4893 -3.59961 -15.2002zM391.6 230.8l-53.0996 53.4004c4.25977 -7.79688 6.82422 -16.7627 7.09961 -26.2002l41.3008 -41.5c1.7959 4.61523 3.39258 9.46387 4.69922 14.2998z
-M392.6 236.4c1.25586 5.3623 2.04199 10.9189 2.30078 16.5996l-64.3008 64.7002c-2.61426 -3.74805 -5.95898 -6.85938 -9.89941 -9.2002z" />
-    <glyph glyph-name="figma" unicode="&#xf799;" horiz-adv-x="384" 
-d="M277 277.3h-85.4004v-256c-0.0273438 -47.082 -38.2617 -85.2998 -85.3506 -85.2998c-47.1055 0 -85.3496 38.2441 -85.3496 85.3496c0 47.1064 38.2441 85.3506 85.3496 85.3506h0.0507812c-47.1055 0 -85.3496 38.2441 -85.3496 85.3496
-c0 47.1064 38.2441 85.3506 85.3496 85.3506c-47.0781 0 -85.2998 38.2217 -85.2998 85.2998s38.2217 85.2998 85.2998 85.2998h170.7c47.1055 0 85.3496 -38.2441 85.3496 -85.3496c0 -47.1064 -38.2441 -85.3506 -85.3496 -85.3506zM277 277.3
-c47.0762 -0.00488281 85.2949 -38.2236 85.2998 -85.2998c0 -47.0781 -38.2217 -85.2998 -85.2998 -85.2998s-85.2998 38.2217 -85.2998 85.2998s38.2217 85.2998 85.2998 85.2998z" />
-    <glyph glyph-name="intercom" unicode="&#xf7af;" 
-d="M392 416c30.9004 0 56 -25.0996 56 -56v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336zM283.7 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0z
-M209.1 341.4v-216.5c0 -19.8008 29.9004 -19.8008 29.9004 0v216.5c0 19.7998 -29.9004 19.7998 -29.9004 0zM134.4 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0zM59.7002 304v-134.3
-c0 -19.7998 29.8994 -19.7998 29.8994 0v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0zM383.1 76.2002c14.9004 12.8994 -4.5 35.5996 -19.3994 22.7002c-63.2002 -53.9004 -213.4 -55.3008 -279.3 0c-15 12.7998 -34.4004 -9.90039 -19.4004 -22.7002
-c76.4004 -65.4004 245.3 -63 318.1 0zM388.3 169.7v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0v-134.3c0 -19.7998 29.8994 -19.7998 29.8994 0z" />
-    <glyph glyph-name="invision" unicode="&#xf7b0;" 
-d="M407.4 416c22.3994 0 40.5996 -18.2002 40.5996 -40.5996v-366.801c0 -22.3994 -18.2002 -40.5996 -40.5996 -40.5996h-366.801c-22.3994 0 -40.5996 18.2002 -40.5996 40.5996v366.801c0 22.3994 18.2002 40.5996 40.5996 40.5996h366.801zM176.1 302.4
-c-0.599609 35.0996 -53.5996 34.7998 -53.6992 -0.400391c0 -15 12.1992 -27 27.0996 -27c4.2002 0.0996094 27 4 26.5996 27.4004zM332.8 71c23.7998 0 42.7002 15.2998 53.2002 52l-17.9004 6.7002c-14.2998 -39.5 -31.7998 -32.4004 -31.7998 -16.9004
-c0.299805 8.10059 0.700195 7.7002 14.9004 58.7998c26.0996 85.8008 -61.2998 113.5 -101.8 38l8.89941 40.5h-68.7998l-9.7002 -35.5996h32.2998l-19.7998 -79.4004c-16.5 -36.6992 -57.3994 -44.0996 -57.3994 -23.1992c0.299805 11.2998 -0.700195 4.5 32.8994 138.199
-h-76.3994l-9.7002 -35.5996h31.7998c-22.0996 -90.0996 -22.9004 -89.7998 -23 -104.1c0 -48.7002 63.0996 -56.1006 94.5996 -4.30078l-8.09961 -32.5h45.0996l25.8008 103.301c14.6992 59.6992 74 47.0996 59.8994 0.699219c-9.09961 -32.5996 -40.5996 -106.6 25 -106.6z
-" />
-    <glyph glyph-name="jira" unicode="&#xf7b1;" horiz-adv-x="496" 
-d="M490 206.3c8 -7.89941 8 -20.7002 0 -28.5996c-225.8 -225 137.9 136.3 -241.5 -241.7c-180.7 180.1 -109.7 109.3 -242.5 241.6c-7.90039 8 -7.90039 20.8008 0 28.7002c0 0 77 76.7998 242.5 241.7c72.0996 -71.7998 168.6 -169 241.5 -241.7zM248.5 116.3l76 75.7002
-l-76 75.7002l-76 -75.7002z" />
-    <glyph glyph-name="mendeley" unicode="&#xf7b3;" horiz-adv-x="640" 
-d="M624.6 122.8c23.1006 -22.7002 17.8008 -73.5 0 -88.2998c-36.1992 -38.9004 -100 -18.2002 -104.899 35.2002c-1 11.7002 1.09961 23 5.7002 33c47.2998 103.7 -185.9 106.1 -146.5 8.2002c0.0996094 -0.100586 0.199219 -0.200195 0.299805 -0.400391
-c26.5996 -42.5996 -6.7002 -97.2998 -58.7998 -95.2002c-52 -2.2002 -85.6006 52.4004 -58.8008 95.2002c0.100586 0.200195 0.200195 0.299805 0.300781 0.400391c39.3994 97.8994 -193.801 95.5 -146.5 -8.2002c20.3994 -44.9004 -14.1006 -93.7002 -61.2002 -87.7998
-c-61.9004 7.7998 -62.5 82.8994 -42.6006 102.6c16 16 31.8008 24.7998 53 22.5c43.3008 1 49.7002 34.9004 37.5 98.7998c-22.6992 57.5 14.5 131.601 87.4004 130.8c76.9004 -0.699219 82.7998 -82 130.9 -82c49.1992 0 53.5 81.3008 130.899 82
-c72.5 0.700195 110.2 -73.2998 87.4004 -130.8c-12.2002 -63.8994 -5.7998 -97.7998 37.5 -98.7998c18.7002 2 36.0996 -4.7998 48.3994 -17.2002zM320.7 141.9c43.5996 0 62.7998 37.7998 62.7998 62.7998c0 34.7002 -28.0996 62.7998 -62.7998 62.7998h-0.600586
-c-34.5996 0 -62.7998 -28.0996 -62.7998 -62.7998c0 -25.2998 19.4004 -62.7998 62.7998 -62.7998h0.600586z" />
-    <glyph glyph-name="raspberry-pi" unicode="&#xf7bb;" horiz-adv-x="407" 
-d="M372 215.5c28.7002 -17.2002 54.5996 -72.5996 14 -117.7c-2.59961 -14.0996 -7.09961 -24.2002 -11 -35.3994c-5.90039 -45.2002 -44.4004 -66.3008 -54.5996 -68.8008c-14.9004 -11.1992 -30.7002 -21.7998 -52.2002 -29.1992
-c-20.2002 -20.6006 -42.1006 -28.4004 -64.2002 -28.4004h-1c-22 0 -44 7.7998 -64.2998 28.4004c-21.4004 7.39941 -37.2998 18 -52.2002 29.1992c-10.0996 2.5 -48.7002 23.6006 -54.5996 68.8008c-3.90039 11.1992 -8.40039 21.2998 -11 35.3994
-c-40.5 45 -14.6006 100.5 14.1992 117.7l3.7002 6.5c-0.0996094 46.4004 21.4004 65.2998 46.5 79.7002c-7.59961 2 -15.3994 3.7002 -17.5996 13.2002c-13.1006 3.39941 -15.7998 9.39941 -17.1006 15.7998c-3.39941 2.2998 -14.7998 8.7002 -13.5996 19.7002
-c-6.2998 4.39941 -9.90039 10.0996 -8.09961 18.0996c-6.90039 7.5 -8.7002 13.7002 -5.80078 19.4004c-8.2998 10.1992 -4.59961 15.5 -1.09961 20.8994c-6.2002 11.2002 -0.799805 23.2002 16.5 21.2002c6.90039 10.0996 21.9004 7.7998 24.2002 7.7998
-c2.5 3.2998 6 6 16.5 4.7002c6.7998 6.09961 14.3994 5.09961 22.2998 2.09961c3.2002 2.5 6.09961 3.40039 8.7002 3.5c5 0.100586 9.2998 -2.89941 13.8994 -4.2998c11.3008 3.60059 13.8008 -1.39941 19.4004 -3.39941c12.2998 2.59961 16.0996 -3 22 -8.90039
-l6.90039 0.0996094c18.5996 -10.7998 27.7998 -32.7998 31.0996 -44.0996c3.2998 11.2998 12.5 33.2998 31.0996 44.0996l6.90039 -0.0996094c5.90039 5.90039 9.7002 11.5 22 8.90039c5.5 2.09961 8.09961 7 19.4004 3.39941
-c7.09961 2.2002 13.2998 8.10059 22.5996 0.799805c7.90039 2.90039 15.5 4 22.2998 -2.09961c10.5 1.2998 13.9004 -1.5 16.5 -4.7002c2.2998 0 17.2998 2.2998 24.2002 -7.7998c17.2998 2 22.7998 -10 16.5996 -21.2002c3.5 -5.2998 7.2002 -10.5996 -1.09961 -20.8994
-c2.90039 -5.7002 1.09961 -11.9004 -5.7998 -19.4004c1.89941 -8 -1.7002 -13.7002 -8.10059 -18.0996c1.2002 -11 -10.1992 -17.4004 -13.5996 -19.7002c-1.2998 -6.40039 -4 -12.5 -17.0996 -15.7998c-2.2002 -9.60059 -10 -11.2002 -17.6006 -13.2002
-c25.1006 -14.4004 46.6006 -33.2998 46.5 -79.7002zM349.8 223.5c1.5 48.7002 -36.3994 75.4004 -82.0996 67.9004c-16.7998 -2.80078 80.5996 -86.6006 82.0996 -67.9004zM306.8 130.4c24.5 15.7998 28.9004 51.5996 9.90039 80
-c-19 28.3994 -54.2998 38.5996 -78.7998 22.7998s-28.9004 -51.6006 -9.90039 -80c19 -28.4004 54.2998 -38.6006 78.7998 -22.7998zM238.9 418.7c-16.6006 -15.9004 -40.1006 -55.9004 -5.80078 -71.7998c29 23.5 63.6006 40.6992 102 53.5
-c-49.2998 -25.1006 -78 -45.3008 -93.6992 -62.6006c8.09961 -31.7002 50 -33.2002 65.3994 -32.2998c-3.09961 1.40039 -5.7998 3.09961 -6.7002 5.7998c3.80078 2.7002 17.5 0.299805 27 5.60059c-3.69922 0.699219 -5.39941 1.39941 -7.09961 4.09961
-c9 2.90039 18.7002 5.2998 24.4004 10c-3.10059 0 -6 -0.599609 -10 2.09961c8.09961 4.30078 16.6992 7.7002 23.3994 14.2002c-4.2002 0.100586 -8.7002 0.100586 -10 1.60059c7.40039 4.5 13.6006 9.5 18.7998 15c-5.7998 -0.700195 -8.2998 -0.100586 -9.69922 0.899414
-c5.59961 5.60059 12.5996 10.4004 16 17.2998c-4.40039 -1.5 -8.30078 -2.09961 -11.2002 0.100586c1.89941 4.2998 10 6.7002 14.7002 16.5996c-4.60059 -0.399414 -9.40039 -1 -10.4004 0c2.09961 8.5 5.7002 13.2002 9.2998 18.2002
-c-9.7998 0.200195 -24.5996 0 -23.8994 0.799805l6 6.10059c-9.5 2.5 -19.3008 -0.400391 -26.4004 -2.60059c-3.2002 2.5 0 5.60059 3.90039 8.7998c-8.10059 -1 -15.5 -2.89941 -22.1006 -5.39941c-3.59961 3.09961 2.2998 6.2998 5.10059 9.39941
-c-12.5 -2.2998 -17.8008 -5.59961 -23.1006 -8.89941c-3.7998 3.59961 -0.200195 6.7002 2.40039 9.7998c-9.40039 -3.5 -14.2998 -7.90039 -19.4004 -12.2998c-1.7998 2.2998 -4.39941 4 -1.2002 9.59961c-6.69922 -3.7998 -11.7998 -8.2998 -15.5 -13.2998
-c-4.19922 2.59961 -2.5 6.09961 -2.5 9.40039c-7 -5.60059 -11.3994 -11.5 -16.7998 -17.3008c-1.09961 0.800781 -2.09961 3.40039 -2.89941 7.60059zM204.5 304.1c-27.2002 0.700195 -53.4004 -19.8994 -53.4004 -31.7998
-c-0.0996094 -14.5996 21.5 -29.3994 53.6006 -29.7998c32.7998 -0.200195 53.7002 11.9004 53.7998 26.9004c0.0996094 16.8994 -29.7998 35 -54 34.6992zM81.5 316.9c9.59961 -5.2002 23.2002 -2.80078 27.2002 -5.60059
-c-0.900391 -2.59961 -3.60059 -4.39941 -6.7002 -5.7998c15.4004 -0.900391 57.4004 0.5 65.4004 32.2998c-15.7002 17.2998 -44.4004 37.6006 -93.7002 62.6006c38.3994 -12.8008 73 -30 102 -53.5c34.0996 15.8994 10.5996 55.8994 -6 71.7998
-c-0.900391 -4.2002 -1.7998 -6.7998 -2.90039 -7.60059c-5.39941 5.80078 -9.7998 11.7002 -16.7998 17.3008c0 -3.2002 1.59961 -6.80078 -2.5 -9.40039c-3.7002 5 -8.7998 9.5 -15.5 13.2998c3.2002 -5.59961 0.5 -7.2998 -1.2002 -9.59961
-c-5.09961 4.39941 -10 8.89941 -19.3994 12.2998c2.59961 -3.09961 6.19922 -6.2002 2.39941 -9.7998c-5.2998 3.2998 -10.5996 6.59961 -23.0996 8.89941c2.7998 -3.09961 8.59961 -6.2998 5.09961 -9.39941c-6.7002 2.5 -14 4.2998 -22.0996 5.39941
-c3.7998 -3.19922 7.09961 -6.2998 3.89941 -8.7998c-7.09961 2.2002 -16.8994 5.10059 -26.3994 2.60059l6 -6.10059c0.700195 -0.799805 -14.1006 -0.700195 -23.9004 -0.799805c3.5 -4.90039 7.2002 -9.7002 9.2998 -18.2002c-1 -1 -5.7998 -0.399414 -10.3994 0
-c4.7002 -9.89941 12.7998 -12.3994 14.7002 -16.5996c-2.90039 -2.10059 -6.90039 -1.60059 -11.2002 -0.100586c3.2998 -6.89941 10.3994 -11.6992 16 -17.2998c-1.40039 -1 -3.90039 -1.59961 -9.7002 -0.899414c5.2002 -5.5 11.4004 -10.5 18.7998 -15
-c-1.2998 -1.60059 -5.7998 -1.5 -10 -1.60059c6.7002 -6.5 15.2998 -9.89941 23.4004 -14.2002c-4 -2.7998 -6.90039 -2.09961 -10 -2.09961c5.7002 -4.7002 15.3994 -7.2002 24.3994 -10c-1.69922 -2.59961 -3.39941 -3.40039 -7.09961 -4.09961zM141.6 292.8
-c-45.5996 7.60059 -83.5996 -19.2002 -82.0996 -67.8994c1.5 -18.6006 98.9004 65.0996 82.0996 67.8994zM38.2002 106c21.5996 -9.5 39.0996 105.3 12.5996 98.2998c-43.8994 -24.5996 -36.2998 -79.5 -12.5996 -98.2998zM129.2 7.7998
-c14.0996 10.4004 6.39941 45.7002 -10.5 65.7002c-19.4004 22.2002 -44.6006 35.4004 -60.9004 25.5996c-10.8994 -8.19922 -12.8994 -36 2.60059 -63.3994c23 -32.6006 55.5 -35.7998 68.7998 -27.9004zM102.8 127.5c24.4004 -15.7998 59.7002 -5.59961 78.7998 22.7998
-c19 28.4004 14.6006 64.2002 -9.89941 80s-59.7998 5.60059 -78.7998 -22.7998s-14.6006 -64.2002 9.89941 -80zM205 -48c28.4004 -0.5 57.7002 24.4004 57.2002 35.4004c-0.100586 11.3994 -32 19.8994 -55.7002 18.8994c-23.5 0.600586 -59.7002 -9.2998 -59.2998 -22
-c-0.400391 -8.59961 28.3994 -33.5 57.7998 -32.2998zM263.9 76.9004v0.599609c-0.200195 29.5996 -26.8008 53.5996 -59.4004 53.4004c-32.5996 -0.200195 -59 -24.3008 -58.7998 -54v-0.600586c0.200195 -29.5996 26.7998 -53.5996 59.3994 -53.3994
-c32.6006 0.199219 59 24.2998 58.8008 54zM346.1 34.2002c18.4004 23.2002 12.2002 62 1.7002 72.2998c-15.5996 11.9004 -38 -3.2998 -58.8994 -26.5996c-18.3008 -21.1006 -28.4004 -59.6006 -15.1006 -72c12.7002 -9.60059 47 -8.30078 72.2998 26.2998zM369 107.4
-c23.7002 18.6992 31.2998 73.5996 -12.5996 98.2998c-26.4004 7 -8.90039 -107.7 12.5996 -98.2998z" />
-    <glyph glyph-name="redhat" unicode="&#xf7bc;" horiz-adv-x="512" 
-d="M341.52 162.59v-0.149414c33.6504 0 82.3408 6.93945 82.3408 47c0.219727 6.73926 0.859375 1.81934 -20.8799 96.2393c-4.62012 19.1504 -8.68066 27.8398 -42.3105 44.6504c-26.0898 13.3398 -82.9199 35.3701 -99.7295 35.3701
-c-15.6602 0 -20.2002 -20.1699 -38.8701 -20.1699c-18 0 -31.3105 15.0596 -48.1201 15.0596c-16.1406 0 -26.6602 -11 -34.7803 -33.6201c-27.5 -77.5498 -26.2803 -74.2695 -26.1201 -78.2695c0 -24.7998 97.6406 -106.11 228.47 -106.11zM429.07 193.19
-l-0.0703125 -0.0302734c4.65039 -22 4.65039 -24.3506 4.65039 -27.25c0 -37.6602 -42.3301 -58.5605 -98 -58.5605c-125.74 -0.0800781 -235.91 73.6504 -235.91 122.33v0.078125c0 6.96289 1.46289 13.6279 4.05957 19.6426
-c-45.2402 -2.26074 -103.8 -10.3301 -103.8 -62.0303c0 -84.6699 200.63 -189 359.49 -189c121.79 0 152.51 55.0801 152.51 98.5801c0 34.21 -29.5898 73.0498 -82.9297 96.2402z" />
-    <glyph glyph-name="sketch" unicode="&#xf7c6;" horiz-adv-x="512" 
-d="M27.5 285.8l78.9004 105.8l-6.90039 -130.699h-90.5zM396.3 402.3l7.10059 -133.5l-135.7 147.2zM112.2 229.7l122.6 -239.7l-224.899 261.7h91.0996zM114.2 260.9l142.1 154.1l60.4004 -65.5996l81.5 -88.5h-284zM411.5 251.8v-0.0996094h90.9004l-224.801 -261.7z
-M415.4 379l87.8994 -118.1h-90.2998l-6.09961 113.399l-0.900391 17.2998zM113.5 354.5l2.59961 47.7998l128.601 13.7002l-135.8 -147.1zM401.2 251.8l-144.9 -283.8l-102.7 200.9l-42.3994 82.8994h290z" />
-    <glyph glyph-name="sourcetree" unicode="&#xf7d3;" 
-d="M427.2 245c-0.104492 -90.2461 -59.1543 -166.747 -140.7 -193.1v-101.601c0 -7.89258 -6.40723 -14.2998 -14.2998 -14.2998h-96.4004c-7.89258 0 -14.2998 6.40723 -14.2998 14.2998v101.7c-81.501 26.3281 -140.5 102.814 -140.5 193.03v0.370117
-c0.200195 112 91.0996 202.8 203.2 202.6c112.1 0 203 -90.9004 203 -203zM155.6 245c0 -91 137.2 -89.9004 137.301 0c0 90.7998 -137.301 90.7998 -137.301 0z" />
-    <glyph glyph-name="suse" unicode="&#xf7d6;" horiz-adv-x="640" 
-d="M471.08 345.34c0 1 1.01953 0.759766 0.919922 0.660156c4.2002 -0.599609 92.2002 -13.7002 129.2 -35.2998c12.0996 -6.90039 20.7002 -21.5 34.5 -69.6006c0.700195 -2.7998 -2.7998 -5.09961 -3.60059 -5.69922
-c-26.8994 -18.8008 -56.7998 -36.6006 -145.199 21.6992c11.0996 -26.6992 10.6992 -25.0996 11 -25.5c5.39941 -2.7998 56.2998 -28.6992 81.5996 -28.1992c20.4004 0.399414 42.2002 10.3994 50.9004 15.5996c0 0 4.5 2.7002 3.19922 -2.40039
-c-0.5 -1.89941 -3.2998 -14.5996 -7 -17.6992c-1 -1 -36.5996 -28.4004 -103.1 -28c-42.7002 1 -76.7998 16.3994 -82.4004 -17.4004c-2.7998 -17.0996 6.10059 -37.5 18.9004 -55.7998h-48.5996c-15.9004 28.3994 -23.1006 68.2998 -79.8008 68.2998
-c-51.5996 0 -48.3994 -50.7002 -42.6992 -68.2998h-45.9004c-18.7998 68.7998 -69.2002 98.5996 -102.4 104.3c-74.2998 12.7998 -113 -49.2002 -87 -98.4004c23.1006 -43.5996 81.4004 -44.0996 99.7002 -20.3994c19.2002 25 3.7998 62.8994 -28.5 65.7002
-c-12.2998 1.09961 -25.2998 -4.60059 -25.5 -16.9004v-0.0595703c0 -10.9004 10 -13.8008 12 -14c7.2998 0.399414 8.90039 1.89941 11.7998 2.39941c5.2002 0.900391 16.8008 -1.7998 16.8008 -13.8994c0 -8.40039 -6.80078 -13.1006 -13.3008 -14.9004
-c-4.94922 -1.71484 -10.2754 -2.67285 -15.7998 -2.7002c-17.2002 0 -41.2002 14.7998 -41.5 42.6006c-0.200195 15.6992 7.7002 30 21.6006 39.1992c15.8994 10.5 43.5996 14.1006 69.1992 -1.59961c31.5 -19.2998 39.7002 -57.0996 31.5 -82.9004
-c-11.8994 -37.2998 -45.5996 -57.1992 -90 -53.2998c-31.5 2.7998 -60.6992 19.4004 -78.0996 44.4004c-7.45117 10.6377 -13.1357 22.7852 -16.5 35.7002c-7.12012 28.0596 0 58.0596 5.48047 71.3994c25.6992 63.6006 80.1992 97.2998 99.5996 109.7
-c100.2 61.5996 171.1 59.0996 223 57.2998c61.2998 -2.2002 126.6 -23.2998 135.7 -26.2998c0 2 0.299805 20.2998 0.299805 20.2998zM531.48 272.54c-1.10059 -33.5 39.0996 -51.5996 63.2998 -28.9004c24.3994 22.9004 9 64 -24.4004 65.2002
-c-0.464844 0.0175781 -0.910156 0.00585938 -1.37988 0.00585938c-20.3057 0 -36.8682 -16.1572 -37.5195 -36.3057zM570.08 297.84c14.0928 -0.414062 25.4199 -11.9697 25.4199 -26.1631c0 -0.34668 -0.00683594 -0.692383 -0.0195312 -1.03711
-c-0.505859 -14.0547 -12.0898 -25.3252 -26.2676 -25.3252c-14.499 0 -26.2695 11.7705 -26.2695 26.2695s11.7705 26.2705 26.2695 26.2705c0.290039 0 0.579102 -0.00488281 0.867188 -0.0146484zM574.38 269.04c15.4004 0 15.4004 15.5996 0 15.5996
-c-15.3994 0 -15.3994 -15.5996 0 -15.5996z" />
-    <glyph glyph-name="ubuntu" unicode="&#xf7df;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM300.7 347c-8.7998 -15.2002 -3.60059 -34.7002 11.7002 -43.5996c15.1992 -8.80078 34.6992 -3.5 43.5 11.6992c8.7998 15.3008 3.59961 34.8008 -11.7002 43.6006
-c-15.2002 8.7998 -34.7002 3.5 -43.5 -11.7002zM87.4004 160.1c17.5996 0 31.8994 14.3008 31.8994 31.9004s-14.2998 31.9004 -31.8994 31.9004c-17.6006 0 -31.9004 -14.3008 -31.9004 -31.9004s14.2998 -31.9004 31.9004 -31.9004zM115.5 157
-c8.7002 -32.7002 29.0996 -60.7002 56.5 -79l23.7002 39.5996c-51.5 36.3008 -51.5 112.5 0 148.801l-23.7002 39.5996c-27.4004 -18.4004 -47.9004 -46.2998 -56.5 -79.0996c22.4004 -18 22.2998 -52 0 -69.9004zM344.2 25.2998
-c15.2998 8.7998 20.5 28.2998 11.7002 43.6006c-8.80078 15.2998 -28.3008 20.5 -43.5 11.6992c-15.3008 -8.7998 -20.5 -28.2998 -11.7002 -43.5996s28.2002 -20.5 43.5 -11.7002zM344.5 94.7998c23 22.9004 38 53.9004 40.2998 88.4004l-46.0996 0.700195
-c-5.5 -62.7002 -71.9004 -100.9 -128.9 -74.4004l-22.5 -40.2998c47.7998 -23.7002 91.5 -10.7998 96.7002 -9.40039c4.40039 28.4004 33.7998 45.2998 60.5 35zM338.6 200.1l46 0.600586c-2.19922 34.5996 -17.0996 65.5996 -40.1992 88.5
-c-26.7002 -10.2998 -56.1006 6.7002 -60.5 35c-5.2002 1.39941 -48.8008 14.2998 -96.7002 -9.40039l22.5 -40.2998c57.5996 26.7998 123.5 -12.4004 128.899 -74.4004z" />
-    <glyph glyph-name="ups" unicode="&#xf7e0;" horiz-adv-x="384" 
-d="M103.2 145v123h32.5996v-141.6c-17.7002 -12.1006 -97.8994 -35.9004 -97.8994 39v102.6h32.6992v-104c0 -32.0996 27.4004 -22.5996 32.6006 -19zM4 373.18c93.5996 49.6006 259.1 61.6006 375.4 0v-220.899c0 -103.9 -75.3008 -135.2 -187.7 -184.101
-c-112.8 48.9004 -187.7 80.4004 -187.7 184.101v220.899zM362.1 152.28v216.2c-109.3 10.1992 -238.6 4 -340.899 -89.8008v-126.399c0 -86.6006 53 -113.5 170.5 -165.3c117.2 51.6992 170.399 78.6992 170.399 165.3zM152.5 259.68
-c23.7002 15.3203 104.4 31.8008 104.4 -65.5996c0 -75.9004 -47.3008 -85.7998 -71.7002 -78.5v-68.7002h-32.7002v212.8zM185.2 142.38c2 -0.799805 38.3994 -16.8994 38.3994 51c0 62 -30 53.5 -38.3994 49.2998v-100.3zM264.3 228.78
-c-0.200195 41.0996 51.2002 53.8994 79.7002 31.8994v-28.3994c-17.9004 18.2998 -47.9004 18.0996 -48.5 -2.2002c-0.700195 -26.5996 55.0996 -21.7002 53.4004 -73.2002c-1.30078 -41.5996 -47 -55 -83.2002 -33.5v30.1006
-c20.3994 -18.1006 51.3994 -18.6006 50.7998 4.89941c-0.599609 27.9004 -52.0996 23.1006 -52.2002 70.4004z" />
-    <glyph glyph-name="usps" unicode="&#xf7e1;" horiz-adv-x="576" 
-d="M460.3 206.3c-1.39941 -2.2002 -4.2998 -4.39941 -3.7998 0.100586c2.90039 11.5996 13.9004 30.5 4.40039 32c-17.8008 3.09961 -88.1006 -4.5 -88.1006 0c0 2.39941 26.7002 3.09961 37.9004 8.69922c9.39941 9.40039 10.7998 8 10.8994 8h27
-c26.9004 0 37.5 -7.5 11.7002 -48.7998zM348.2 183.7c-62.2998 -21.2002 -124.8 -54.2002 -321.2 -151.5l52.4004 245.5c185 0 335.199 5.59961 337.899 -22.6006h-196.6l30.7002 -93.2998c35 16.7998 120.899 51.7002 172.6 53.9004
-c21.7998 0.799805 30.5996 -2.90039 26.2002 -5.7998c-4.7002 -2.30078 -38 -4.90039 -102 -26.2002zM94.7002 352h454.3l-67.7002 -319.7h-423.1s402 157.3 406.399 160.2c0 0 35.7002 48 14.6006 67.7002c-6.5 6.59961 -16 6.59961 -52.4004 6.59961
-c-2.09961 19.5 -78.7998 31.5 -332.1 85.2002z" />
-    <glyph glyph-name="yarn" unicode="&#xf7e3;" horiz-adv-x="496" 
-d="M393.9 102.8c-39 -9.2998 -48.4004 -32.0996 -104 -47.3994c0 0 -2.7002 -4 -10.4004 -5.80078c-13.4004 -3.2998 -63.9004 -6 -68.5 -6.09961c-12.4004 -0.0996094 -19.9004 3.2002 -22 8.2002c-6.40039 15.2998 9.2002 22 9.2002 22
-c-8.10059 5 -9 9.89941 -9.7998 8.09961c-2.40039 -5.7998 -3.60059 -20.0996 -10.1006 -26.5c-8.7998 -8.89941 -25.5 -5.89941 -35.2998 -0.799805c-10.7998 5.7002 0.799805 19.2002 0.799805 19.2002s-5.7998 -3.40039 -10.5 3.59961
-c-6 9.2998 -17.0996 37.2998 11.5 62c-1.2998 10.1006 -4.59961 53.7002 40.6006 85.6006c0 0 -20.6006 22.7998 -12.9004 43.2998c5 13.3994 7 13.2998 8.59961 13.8994c5.7002 2.2002 11.3008 4.60059 15.4004 9.10059c20.5996 22.2002 46.7998 18 46.7998 18
-s12.4004 37.7998 23.9004 30.3994c3.5 -2.2998 16.2998 -30.5996 16.2998 -30.5996s13.5996 7.90039 15.0996 5c8.2002 -16 9.2002 -46.5 5.60059 -65.0996c-6.10059 -30.6006 -21.4004 -47.1006 -27.6006 -57.5c-1.39941 -2.40039 16.5 -10 27.8008 -41.3008
-c10.3994 -28.5996 1.09961 -52.6992 2.7998 -55.2998c0.799805 -1.39941 13.7002 -0.799805 36.3994 13.2002c12.8008 7.90039 28.1006 16.9004 45.4004 17c16.7002 0.5 17.5996 -19.2002 4.90039 -22.2002zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248
-s111.1 248 248 248s248 -111.1 248 -248zM416.7 116.8c-1.7002 13.6006 -13.2002 23 -28 22.7998c-22 -0.299805 -40.5 -11.6992 -52.7998 -19.1992c-4.80078 -3 -8.90039 -5.2002 -12.4004 -6.80078c3.09961 44.5 -22.5 73.1006 -28.7002 79.4004
-c7.7998 11.2998 18.4004 27.7998 23.4004 53.2002c4.2998 21.7002 3 55.5 -6.90039 74.5c-1.59961 3.09961 -7.39941 11.2002 -21 7.39941c-9.7002 20 -13 22.1006 -15.5996 23.8008c-1.10059 0.699219 -23.6006 16.3994 -41.4004 -28
-c-12.2002 -0.900391 -31.2998 -5.30078 -47.5 -22.8008c-2 -2.19922 -5.89941 -3.7998 -10.0996 -5.39941h0.0996094c-8.39941 -3 -12.2998 -9.90039 -16.8994 -22.2998c-6.5 -17.4004 0.199219 -34.6006 6.7998 -45.7002c-17.7998 -15.9004 -37 -39.7998 -35.7002 -82.5
-c-34 -36 -11.7998 -73 -5.59961 -79.6006c-1.60059 -11.0996 3.69922 -19.3994 12 -23.7998c12.5996 -6.7002 30.2998 -9.59961 43.8994 -2.7998c4.90039 -5.2002 13.7998 -10.0996 30 -10.0996c6.7998 0 58 2.89941 72.6006 6.5c6.7998 1.59961 11.5 4.5 14.5996 7.09961
-c9.7998 3.09961 36.7998 12.2998 62.2002 28.7002c18 11.7002 24.2002 14.2002 37.5996 17.3994c12.9004 3.2002 21 15.1006 19.4004 28.2002z" />
-    <glyph glyph-name="airbnb" unicode="&#xf834;" 
-d="M224 74.8799h0.0595703c24.71 31.1797 39.5508 58.9297 45 83.1797c22.5508 88 -112.609 88 -90.0596 0c4.91992 -23.75 19.7598 -51.5098 45 -83.1797zM362.15 1.65039c35.6396 15.3496 50.1797 53.5693 37.0098 86.6396
-c-25.4902 61.6104 -78.8398 168.47 -114.84 239.09c-16.9707 33.9297 -28.0303 59.8701 -60.3701 59.8701c-33.8203 0 -43.6299 -27.3301 -59.3799 -57.4004c-4.15039 -10.3799 -100.771 -202.399 -115.87 -241.56c-17.8105 -50.0303 21.2998 -98.5205 71.2998 -91.0898
-c24.5996 2.22949 52.6201 18.8701 85.1504 54.9199c-29.2002 37.1104 -47.5 70.3096 -54.4307 99.5c-11.8799 53.9902 18.3604 100.5 73.2803 100.5c64.96 0 122.75 -69.9297 18.8496 -200c35.6309 -39.5898 77.2402 -68.7803 119.301 -50.4697zM409.15 137.77
-c0 -0.679688 16.8496 -35.6895 16.8301 -39.5791c25.2393 -69.3301 -26.7207 -130.24 -89.6104 -130.19c-11.1104 0 -53.6904 -1.37988 -112.37 62.4004c-51.7598 -56.3408 -90.6602 -62.4004 -112.37 -62.4004c-62.8896 0 -114.85 60.8604 -89.6299 130.19
-c0.889648 2.61914 11.1797 32.71 117.34 245.02c19.79 41.1201 39.1406 72.79 84.6602 72.79c49.1299 0 56.2695 -3.92969 185.15 -278.23z" />
-    <glyph glyph-name="battle-net" unicode="&#xf835;" horiz-adv-x="512" 
-d="M448.61 222.38c60.75 -36.25 71.9893 -73.8096 57.3193 -93.6895c-4.70996 -6.88086 -25.1797 -36.2402 -148 -31.6406c-21.8193 -30.3994 -45.25 -53.2695 -67.4697 -69.2695c28.54 -53.7803 54.2998 -85.0303 62.54 -91.7803c0 0 -3.44043 0.160156 -8.58008 3.37012
-c-3.2627 1.95117 -6.17871 4.31836 -8.75 7.08984c-15.6299 16.1797 -35.5195 41.9404 -55.7002 74.1201c-43.9502 -28.1104 -81.1299 -29.0996 -88.4395 -9.4502c-4.83984 10.8301 1.5293 26.5 9.05957 39.3398c-31.3203 -17.5098 -61.7002 -26.8496 -86.7002 -21.1396
-c-6.79004 1.54004 -17.6299 5.50977 -23.1992 18.2598c-4.52051 9.53027 -6.02051 24.2598 -0.150391 47.1406c9.07031 35.3398 37.5801 82.2998 47.3096 97.6992c3.75 -8.62988 -20.7793 40.1904 -26 93.1904c-89.1592 0 -110.56 -8.83984 -111.56 -9.21973
-c1.54004 2.44922 7.86035 7.26953 17.7598 9.71973c22 5.47949 54.6406 9.84961 93 11.2295c-2.38965 52.0703 15.3398 84.7705 36 81.29h0.180664c11.3291 -1.2998 21.2598 -13.5801 28.5 -25.9297c0.669922 35.2002 7.7998 65.54 25 84.0703
-c4.72949 5.14941 13.5693 12.5498 27.3994 11h0.0498047c10.5205 -0.850586 24 -6.91992 40.8398 -23.4707c25.6006 -25.0693 51.54 -71.9893 60.4805 -88.9297c37.25 -3.7002 68.7695 -12.5801 93.7695 -23.7998c32.3506 51.5898 46.4805 89.5303 48.2002 100.05
-c0.640625 -1.25 2.93066 -8.41992 -0.450195 -20.25c-6.22949 -21.6201 -18.5791 -51.7197 -36.3398 -85.2998c45.79 -23.7305 65.3203 -55.0098 52.8506 -71.3301c-3.35059 -4.94043 -12.0498 -12.5498 -38.9199 -12.3701zM370.76 116.16
-c70.4102 4.37988 79.6504 20.5703 78.5098 33.5c-1.87988 21.25 -21.1992 41.2598 -49.0596 58.8301c0.889648 -24.5605 -5.63965 -54.6201 -29.4502 -92.3301zM216.9 60.3096c-19.04 -30.46 9.19922 -39.5596 49.7998 -17.6992
-c-7 12.0898 -13.9199 24.8594 -20.6006 38.1895c-9.66992 -7.37012 -19.4395 -14.2598 -29.1992 -20.4902zM431.9 231.66c36.2598 -1.23047 29.4199 27.8496 -9.64062 51.9502c-7.22559 -12.5537 -14.7959 -24.8359 -22.7402 -36.9004
-c11.2207 -4.70996 22.0908 -9.70996 32.3809 -15.0498zM279.18 50c28.3799 18.2002 60.1689 48.1201 84.7695 85.4297c18.46 27.96 26.1494 56.0205 25.4102 79.5703c-30.5801 17.3203 -89.3604 42.7197 -167.23 57.21c0.350586 18.4805 2.08984 19.8799 2.16016 20.3301
-c13.2168 -1.61523 26.4307 -3.64844 39.3896 -6.0498c39.375 -7.36328 78.5059 -18.1924 115.34 -31.71c-15.6191 33.1494 -41.4092 47.2197 -41.5195 47.2197c1.59961 0.160156 28.1299 -6 48.8604 -43.7197c8.42676 11.2061 16.2031 22.0293 23.3301 32.4697
-c-29.96 15.46 -71.75 28.04 -116.32 30.71c-33.4502 1.99023 -61.6299 -5.38965 -81.6299 -17.8096c0.240234 -35.2607 7.66992 -98.96 34 -173.431c-16.8301 -9.12988 -17.7402 -7.87012 -18.6699 -8.25c-20.2715 48.0654 -35.623 99.999 -44.6699 152.84
-c-21.0908 -30.3994 -20.1406 -59.5 -20.1406 -59.5693c-0.919922 1.22949 -8.81934 27.4297 13.4707 64.2295c-13.5801 1.70996 -26.5508 2.9707 -38.8506 3.87988c1.57031 -33.6797 11.5703 -76.1494 31.5703 -116.069c14.8701 -29.71 35.1201 -50.3105 55.71 -61.4902
-c30.4102 17.9199 81.0498 55.6504 132.75 115.92c14.9697 -9 16.1494 -11.71 16.5098 -12c-7.91309 -10.5332 -16.2227 -20.9033 -24.9287 -31.1104c-26.1514 -30.5225 -54.2061 -58.2285 -85.0605 -84c37.5303 -3.38965 62.5303 12.1807 62.5303 12.25
-c-0.860352 -1.67969 -20.0303 -21.6797 -63.2803 -20.4092c5.5 -12.9404 10.9902 -25.0908 16.5 -36.4404zM306.579 337c-1.58008 2.4502 -39.5801 58.8496 -56.4805 54.6104c-16.8994 1.09961 -36.21 -22.9805 -38.21 -75.2803
-c21.1104 13.2402 50.1299 22.3301 94.6904 20.6699zM175.929 333.9c-3.7998 6.68945 -8.66992 12.4795 -14.4297 13.5693h-0.0898438c-24.79 1.41016 -24.75 -52.8301 -24.6699 -49.5898c13.6602 -0.00976562 27.8496 -0.410156 42.3994 -1.25977
-c-1.62012 12.6602 -2.72949 25.1699 -3.20996 37.2803zM147.869 171.9c-30.7998 -61.5098 -19.8701 -76.6104 -19.6699 -76.8203c7.38965 -15.4902 38.1299 -20.25 84.9199 4.50977c-21.9502 11.7402 -44.4902 32.6104 -65.25 72.3105zM357.929 97.0996z" />
-    <glyph glyph-name="bootstrap" unicode="&#xf836;" 
-d="M292.3 136.07c0 -42.4102 -39.7197 -41.4307 -43.9199 -41.4307h-80.8896v81.6904h80.8896c42.5605 0 43.9199 -31.9004 43.9199 -40.2598zM242.15 209.2h-74.6602v72.1797h74.6602c34.9297 0 38.4395 -20.3496 38.4395 -35.8701
-c0 -37.3096 -37.7695 -36.3096 -38.4395 -36.3096zM448 341.33v-298.66c-0.121094 -41.1553 -33.5146 -74.5488 -74.6699 -74.6699h-298.66c-41.1553 0.121094 -74.5488 33.5146 -74.6699 74.6699v298.66c0.121094 41.1553 33.5146 74.5488 74.6699 74.6699h298.66
-c41.1553 -0.121094 74.5488 -33.5146 74.6699 -74.6699zM338.05 130.14c0 21.5703 -6.64941 58.29 -49.0498 67.3506v0.729492c22.9102 9.78027 37.3398 28.25 37.3398 55.6406c0 7 2 64.7793 -77.5996 64.7793h-127v-261.33c128.229 0 139.87 -1.67969 163.6 5.70996
-c14.21 4.4209 52.71 17.9805 52.71 67.1201z" />
-    <glyph glyph-name="buffer" unicode="&#xf837;" 
-d="M427.84 67.3301l-196.5 -97.8203c-2.24707 -0.963867 -4.72266 -1.49805 -7.32129 -1.49805s-5.10156 0.53418 -7.34863 1.49805l-196.51 97.8203c-4 2 -4 5.28027 0 7.29004l47.0596 23.3799c2.25098 0.964844 4.72949 1.49805 7.33203 1.49805
-c2.60156 0 5.10742 -0.533203 7.3584 -1.49805l134.76 -67c2.24609 -0.969727 4.72168 -1.50684 7.32129 -1.50684s5.10254 0.537109 7.34863 1.50684l134.76 67c2.24902 0.964844 4.72656 1.49902 7.32715 1.49902s5.10449 -0.53418 7.35352 -1.49902l47.0596 -23.4297
-c4.0498 -1.95996 4.0498 -5.24023 0 -7.24023zM427.84 203.86c4.0498 -2.01074 4.0498 -5.29004 0 -7.31055l-196.5 -97.7998c-2.24707 -0.964844 -4.74902 -1.49902 -7.34863 -1.49902c-2.59863 0 -5.07422 0.53418 -7.32129 1.49902l-196.51 97.7998
-c-4 2.02051 -4 5.31055 0 7.31055l47.0596 23.4297c2.25098 0.964844 4.75684 1.49805 7.3584 1.49805c2.60254 0 5.08105 -0.533203 7.33203 -1.49805l134.76 -67.0801c2.24902 -0.959961 4.75 -1.49121 7.34863 -1.49121c2.59766 0 5.07227 0.53125 7.32129 1.49121
-l134.76 67.0801c2.24902 0.964844 4.75293 1.49902 7.35352 1.49902s5.07812 -0.53418 7.32715 -1.49902zM20.1602 317.58c-4.0498 1.86035 -4.0498 4.88965 0 6.74023l196.5 90.2793c2.2666 0.900391 4.76074 1.39551 7.3457 1.39551
-c2.58594 0 5.05762 -0.495117 7.32422 -1.39551l196.51 -90.2793c4 -1.85059 4 -4.87988 0 -6.74023l-196.51 -90.29c-2.26953 -0.890625 -4.76172 -1.37988 -7.3457 -1.37988s-5.05469 0.489258 -7.32422 1.37988z" />
-    <glyph glyph-name="chromecast" unicode="&#xf838;" horiz-adv-x="512" 
-d="M447.8 384c23.6006 0 42.9004 -19.0996 42.9004 -42.7002v-298.6c0 -23.6006 -19.1006 -42.7002 -42.7002 -42.7002h-149.4v42.7002h149.2v298.6h-383.8v-63.8994h-42.7002v63.8994c0 23.6006 19.1006 42.7002 42.7002 42.7002h383.8zM21.2998 64.4004
-c35.2998 0 63.9004 -28.6006 63.9004 -63.9004h-63.9004v63.9004v0zM21.2998 149.4c82.4004 -0.100586 149.4 -67 149.3 -149.4h-42.6992c0 58.9004 -47.7002 107 -106.601 107v42.4004zM213.4 0c-0.100586 106 -86.1006 192.4 -192.101 192.2v42.3994
-c129.5 -0.299805 234.3 -105.1 234.8 -234.6h-42.6992z" />
-    <glyph glyph-name="evernote" unicode="&#xf839;" horiz-adv-x="384" 
-d="M120.82 315.79c1.59961 -22.3096 -17.5508 -21.5898 -21.6104 -21.5898c-68.9297 0 -73.6396 1 -83.5801 -3.33984c-0.55957 -0.220703 -0.740234 0 -0.370117 0.370117l108.53 110.319c0.379883 0.370117 0.599609 0.219727 0.379883 -0.370117
-c-4.34961 -9.98926 -3.34961 -15.0898 -3.34961 -85.3896zM199.82 7.79004c-14.6807 37.0801 13 76.9297 52.5195 76.6201c17.4902 0 22.6006 -23.21 7.9502 -31.4199c-6.19043 -3.2998 -24.9502 -1.74023 -25.1396 -19.2002
-c-0.0507812 -17.0898 19.6699 -25 31.1992 -24.8896h0.0107422c25.1895 0 45.6396 20.4502 45.6396 45.6396v0.00976562v0.0800781c0 11.6299 -7.79004 47.2197 -47.54 55.3398c-7.71973 1.54004 -65 6.35059 -68.3496 50.5205
-c-3.74023 -16.9307 -17.4004 -63.4902 -43.1104 -69.0898c-8.74023 -1.94043 -69.6797 -7.64062 -112.92 36.7695c0 0 -18.5703 15.2305 -28.2305 57.9502c-3.37988 15.75 -9.2793 39.7002 -11.1396 62c0 18 11.1396 30.4502 25.0703 32.2002c81 0 90 -2.32031 101 7.7998
-c9.81934 9.24023 7.7998 15.5 7.7998 102.78c1 8.2998 7.79004 30.8096 53.4102 24.1396c6 -0.860352 31.9102 -4.17969 37.4795 -30.6396l64.2607 -11.1504c20.4297 -3.70996 70.9395 -7 80.5996 -57.9404c22.6602 -121.09 8.91016 -238.46 7.7998 -238.46
-c-15.9795 -114.38 -111.07 -108.85 -111.07 -108.85c-18.9492 0.230469 -54.25 9.40039 -67.2695 39.8301zM280.76 212.63c-1 -1.91992 -2.2002 -6 0.850586 -7c14.0898 -4.92969 39.75 -6.83984 45.8799 -5.53027c3.10938 0.25 3.0498 4.43066 2.47949 6.65039
-c-3.5293 21.8496 -40.8301 26.5 -49.2393 5.91992z" />
-    <glyph glyph-name="itch-io" unicode="&#xf83a;" horiz-adv-x="512" 
-d="M71.9199 413.23c19.2197 1.66992 114.32 2.76953 184.08 2.76953s116.56 -0.400391 184 -2.73047c21.7197 -12.9297 64.5195 -62.0996 64.9199 -75v-21.3398c0 -27.0596 -25.25 -50.8398 -48.25 -50.8398c-27.54 0 -50.54 22.8799 -50.54 50
-c0 -27.1494 -22.2295 -50 -49.7598 -50s-49 22.8799 -49 50c0 -27.1494 -23.5898 -50 -51.1602 -50h-0.5c-27.5703 0 -51.1602 22.8799 -51.1602 50c0 -27.1494 -21.4199 -50 -49 -50s-49.7598 22.8799 -49.7598 50c0 -27.1494 -22.9697 -50 -50.54 -50
-c-22.96 0 -48.25 23.7803 -48.25 50.8398v21.3398c0.400391 12.8906 43.2002 62.0605 64.9199 74.9609zM204.24 278.84c9.91797 -17.3369 28.5586 -28.9785 49.9453 -28.9785c0.614258 0 1.22559 0.00976562 1.83398 0.0283203c28.7109 0 44.6602 16.4502 51.7607 28.9404
-c22 -38.3398 77.8496 -38.7598 99.8496 -0.240234c13.1201 -23.0596 43.0801 -32.0996 56 -27.6602c3.57031 -37.1494 13.9004 -236.88 -17.75 -269.149c-77.6797 -18.1201 -299.76 -18.6699 -379.76 0c-31.4004 32.0195 -21.6006 229 -17.7305 269.149
-c12.8301 -4.41016 42.8301 4.52051 56 27.6602c21.9502 -38.46 77.8506 -38.1494 99.8506 0.25zM162.66 225.07l-0.0205078 -0.0703125c-52.3193 0 -65.21 -77.4502 -83.8799 -144.45c-17.2598 -62.1494 5.52051 -63.6699 33.9404 -63.7295
-c42.1494 1.56934 65.4902 32.1797 65.4902 62.79c53.6191 -8.79004 116.3 -6.43066 155.55 0c0 -30.6104 23.3398 -61.2207 65.4902 -62.79c28.4297 0.0595703 51.21 1.58008 33.9492 63.7295c-18.6494 66.9199 -31.54 144.45 -83.8701 144.45
-c-16.46 0 -31.0898 0 -49.25 -19.71c-14.6436 1.48535 -28.6113 2.24609 -43.6445 2.24609c-15.0342 0 -29.8906 -0.760742 -44.5352 -2.24609c-18.1299 19.7803 -32.75 19.7803 -49.2197 19.7803zM256 177.21l-0.0595703 -0.00976562s44.3496 -40.7598 52.3496 -55.2402
-l-29 1.16992v-25.2803c0 -1.15918 -11.6602 -0.699219 -23.3096 -0.15918c-1.99023 0 -23.3301 -1.39062 -23.3301 0.15918v25.3203l-29 -1.16992c7.96973 14.4404 52.3496 55.21 52.3496 55.21z" />
-    <glyph glyph-name="salesforce" unicode="&#xf83b;" horiz-adv-x="640" 
-d="M248.89 202.36h-26.3496c0.69043 5.15918 3.32031 14.1201 13.6396 14.1201c6.75 0 11.9707 -3.82031 12.71 -14.1201zM385.55 216.24c0.450195 0 14.1104 1.75977 14.1104 -20c0 -6.45996 -1.11035 -20 -14.1104 -20c-0.479492 0 -14.1094 -1.77051 -14.1094 20
-c0 21.7695 13.6396 20 14.1094 20zM142.33 192.48c4.2002 3.60938 15.6104 2.71973 20.9297 1.64941v-16.9395c-5.85938 -1.1709 -16.2295 -2.75 -20.9297 0.949219c-1.20996 1 -3.29004 2.27051 -3.29004 7.05078
-c-0.00976562 0.166992 -0.0205078 0.325195 -0.0205078 0.495117c0 2.75684 1.29492 5.21387 3.31055 6.79492zM640 216c0 -87.5801 -80 -154.39 -165.36 -136.43c-18.3701 -33 -70.7295 -70.75 -132.199 -41.6299c-41.1602 -96.0508 -177.891 -92.1807 -213.811 5.16992
-c-119.72 -23.8906 -178.82 138.37 -75.2695 199.279c-34.75 79.4307 22.6396 173.61 114.31 173.61c40.1748 -0.0253906 75.8613 -19.0605 98.5605 -48.7002c20.6992 21.4004 49.3994 34.8105 81.1494 34.8105c42.3398 0 79 -23.5205 98.7998 -58.5703
-c92.8203 40.6797 193.82 -28.2305 193.82 -127.54zM120.45 184.2c0 11.7598 -11.6904 15.1699 -17.8701 17.1699c-5.27051 2.11035 -13.4102 3.50977 -13.4102 8.93945c0 9.45996 17 6.66016 25.1699 2.12012c0 0 1.16992 -0.709961 1.64062 0.470703
-c0.239258 0.699219 2.35938 6.58008 2.58984 7.29004c0.0341797 0.108398 0.0527344 0.223633 0.0527344 0.34375c0 0.492188 -0.313477 0.911133 -0.75293 1.06543c-12.3301 7.63086 -40.7002 8.51074 -40.7002 -12.6992c0 -12.46 11.4902 -15.4404 17.8799 -17.1699
-c4.71973 -1.58008 13.1699 -3 13.1699 -8.7002c0 -4 -3.5293 -7.06055 -9.16992 -7.06055c-7.11328 0.0126953 -13.709 2.38281 -19 6.35059c-0.469727 0.229492 -1.41992 0.709961 -1.64941 -0.709961l-2.40039 -7.4707
-c-0.469727 -0.939453 0.230469 -1.17969 0.230469 -1.40918c1.75 -1.40039 10.2998 -6.59082 22.8193 -6.59082c13.1699 0 21.4004 7.06055 21.4004 18.1104v-0.0498047zM152.45 226.78c-10.1299 0 -18.6602 -3.16992 -21.4004 -5.18066
-c-0.260742 -0.179688 -0.431641 -0.481445 -0.431641 -0.822266c0 -0.219727 0.0722656 -0.422852 0.191406 -0.586914l2.59082 -7.06055c0.119141 -0.417969 0.504883 -0.723633 0.960938 -0.723633c0.0751953 0 0.148438 0.0078125 0.21875 0.0234375
-c0.650391 0 6.7998 4 16.9297 4c4 0 7.06055 -0.709961 9.18066 -2.35938c3.59961 -2.80078 3.05957 -8.29004 3.05957 -10.5801c-4.79004 0.299805 -19.1104 3.43945 -29.4102 -3.75977c-4.44727 -3.05078 -7.36621 -8.16895 -7.36621 -13.9639
-c0 -0.199219 0.0195312 -0.378906 0.0263672 -0.576172c0 -5.90039 1.50977 -10.4004 6.58984 -14.3506c12.2402 -8.16016 36.2803 -2 38.1006 -1.41016c1.5791 0.320312 3.5293 0.660156 3.5293 1.87988v33.8809c0.0400391 4.60938 0.320312 21.6396 -22.7793 21.6396z
-M199 247.76c0.00195312 0.0244141 0.00195312 0.0488281 0.00195312 0.0732422c0 0.613281 -0.49707 1.11035 -1.10938 1.11035c-0.0244141 0 -0.0488281 -0.00195312 -0.0722656 -0.00292969h-9.82031
-c-0.0205078 0.000976562 -0.0419922 0.000976562 -0.0634766 0.000976562c-0.612305 0 -1.10938 -0.49707 -1.10938 -1.10938c0 -0.0244141 0.000976562 -0.0478516 0.00292969 -0.0722656v-79c-0.00195312 -0.0234375 -0.00195312 -0.0478516 -0.00195312 -0.0722656
-c0 -0.613281 0.49707 -1.11035 1.10938 -1.11035c0.0214844 0 0.0419922 0.00195312 0.0625 0.00292969h9.87988c0.0244141 -0.00195312 0.0488281 -0.00292969 0.0732422 -0.00292969c0.613281 0 1.11035 0.498047 1.11035 1.11035
-c0 0.0244141 -0.00195312 0.0478516 -0.00390625 0.0722656zM254.75 218.83c-2.09961 2.30957 -6.79004 7.53027 -17.6504 7.53027c-3.50977 0 -14.1592 -0.230469 -20.6992 -8.94043c-6.35059 -7.62988 -6.58008 -18.1104 -6.58008 -21.4102
-c0 -3.12012 0.149414 -14.2598 7.05957 -21.1699c2.63965 -2.91016 9.06055 -8.22949 22.8105 -8.22949c10.8193 0 16.4697 2.34961 18.5791 3.75977c0.470703 0.240234 0.710938 0.709961 0.240234 1.87988l-2.34961 6.83008
-c-0.200195 0.430664 -0.637695 0.729492 -1.14355 0.729492c-0.0917969 0 -0.179688 -0.0107422 -0.266602 -0.0292969c-2.58984 -0.94043 -6.34961 -2.82031 -15.29 -2.82031c-17.4199 0 -16.8496 14.7402 -16.9404 16.7002h37.1709
-c0.567383 0.0117188 1.04102 0.40918 1.16992 0.939453c-0.290039 0 2.06934 14.7002 -6.09082 24.2305h-0.0195312zM291.44 166.14c13.1699 0 21.4092 7.06055 21.4092 18.1104c0 11.7598 -11.6992 15.1699 -17.8799 17.1699
-c-4.13965 1.66016 -13.4102 3.37988 -13.4102 8.94043c0 3.75977 3.29004 6.34961 8.4707 6.34961c5.98828 -0.120117 11.6924 -1.64844 16.7002 -4.22949c5.00684 -2.58203 1.17969 -0.710938 1.64941 0.469727c0.230469 0.700195 2.35059 6.58008 2.58008 7.29004
-c0.0351562 0.108398 0.0537109 0.223633 0.0537109 0.34375c0 0.492188 -0.314453 0.911133 -0.753906 1.06641c-7.91016 4.89941 -16.7402 4.93945 -20.2295 4.93945c-12 0 -20.46 -7.29004 -20.46 -17.6396c0 -12.46 11.4795 -15.4404 17.8701 -17.1699
-c6.10938 -2 13.1699 -3.26074 13.1699 -8.7002c0 -4 -3.52051 -7.06055 -9.16992 -7.06055c-7.1123 0.015625 -13.708 2.38574 -19 6.35059c-0.175781 0.150391 -0.402344 0.241211 -0.651367 0.241211c-0.535156 0 -0.973633 -0.422852 -0.999023 -0.951172
-l-2.34961 -7.52051c-0.470703 -0.939453 0.229492 -1.17969 0.229492 -1.40918c1.71973 -1.40039 10.3301 -6.59082 22.79 -6.59082h-0.0195312zM357.09 224c0 0.709961 -0.240234 1.17969 -1.17969 1.17969h-11.7598c0 0.140625 0.939453 8.94043 4.46973 12.4707
-c4.16016 4.14941 11.7598 1.63965 12 1.63965c1.16992 -0.469727 1.41016 0 1.63965 0.469727l2.83008 7.77051c0.700195 0.939453 0 1.16992 -0.240234 1.41016c-5.08984 2 -17.3496 2.86914 -24.46 -4.24023c-5.47949 -5.48047 -7 -13.9199 -8 -19.5205h-8.46973
-c-0.624023 -0.0517578 -1.12305 -0.553711 -1.16992 -1.17969l-1.41992 -7.75977c0 -0.700195 0.240234 -1.16992 1.17969 -1.16992h8.23047c-8.50977 -47.9004 -8.75 -50.21 -10.3506 -55.5205c-1.08008 -3.62012 -3.29004 -6.89941 -5.87988 -7.75977
-c-0.0898438 0 -3.87988 -1.67969 -9.63965 0.240234c0 0 -0.94043 0.469727 -1.41016 -0.709961c-0.240234 -0.709961 -2.58984 -6.82031 -2.83008 -7.53027s0 -1.41016 0.469727 -1.41016c5.11035 -2 13 -1.76953 17.8809 0
-c6.2793 2.28027 9.71973 7.88965 11.5293 12.9404c2.75 7.70996 2.81055 9.79004 11.7598 59.7393h12.2305c0.626953 0.0517578 1.12891 0.553711 1.17969 1.18066zM410.48 208c-0.560547 1.67969 -5.10059 18.1104 -25.1709 18.1104c-15.25 0 -23 -10 -25.1592 -18.1104
-c-1 -3 -3.18066 -14 0 -23.5195c0.0898438 -0.300781 4.40918 -18.1201 25.1592 -18.1201c14.9502 0 22.9004 9.60938 25.1709 18.1201c3.20996 9.60938 1.00977 20.5195 0 23.5195zM455.88 224.7c-5 1.64941 -16.6201 1.89941 -22.1104 -5.41016v4.46973
-c0.00195312 0.0214844 0.00195312 0.0419922 0.00195312 0.0634766c0 0.612305 -0.49707 1.11035 -1.10938 1.11035c-0.0244141 0 -0.0478516 -0.00195312 -0.0722656 -0.00390625h-9.39941c-0.0244141 0.00195312 -0.0488281 0.00292969 -0.0732422 0.00292969
-c-0.612305 0 -1.11035 -0.498047 -1.11035 -1.11035c0 -0.0214844 0.00195312 -0.0410156 0.00292969 -0.0625v-55.2793c-0.000976562 -0.0214844 -0.00195312 -0.0419922 -0.00195312 -0.0634766c0 -0.618164 0.501953 -1.11914 1.12012 -1.11914
-c0.0214844 0 0.0410156 0.000976562 0.0625 0.00195312h9.63965c0.0205078 -0.000976562 0.0410156 -0.00195312 0.0625 -0.00195312c0.618164 0 1.12012 0.501953 1.12012 1.12012c0 0.0214844 -0.00195312 0.0410156 -0.00292969 0.0625v27.7695
-c0 2.91016 0.0498047 11.3701 4.45996 15.0498c4.90039 4.90039 12 3.36035 13.4102 3.06055c0.630859 0.0107422 1.1709 0.393555 1.41016 0.939453c1.15918 2.57324 2.19629 5.28125 3.05957 8c0.0517578 0.130859 0.0800781 0.273438 0.0800781 0.422852
-c0 0.416992 -0.21875 0.783203 -0.549805 0.987305v-0.00976562zM502.69 170.6l-2.12012 7.29004c-0.470703 1.18066 -1.41016 0.709961 -1.41016 0.709961c-4.23047 -1.81934 -10.1504 -1.88965 -11.29 -1.88965c-4.63965 0 -17.1699 1.12988 -17.1699 19.7598
-c0 6.23047 1.84961 19.7607 16.4697 19.7607c0.299805 0.00683594 0.601562 0.0107422 0.90332 0.0107422c3.70605 0 7.26562 -0.587891 10.6172 -1.66113c3.35059 -1.07324 0.939453 -0.469727 1.17969 0.709961c0.939453 2.58984 1.63965 4.46973 2.58984 7.53027
-c0.230469 0.939453 -0.469727 1.16992 -0.709961 1.16992c-11.5898 3.87012 -22.3398 2.5293 -27.7598 0c-1.58984 -0.740234 -16.2305 -6.49023 -16.2305 -27.5205c0 -2.89941 -0.580078 -30.1094 28.9404 -30.1094c5.45117 0.0107422 10.6943 1.02051 15.5195 2.83008
-c0.319336 0.236328 0.527344 0.616211 0.527344 1.04395c0 0.130859 -0.0214844 0.256836 -0.0566406 0.375977v-0.0107422zM556.56 210.12c-0.799805 3 -5.36914 16.2295 -22.3496 16.2295c-16 0 -23.5195 -10.1094 -25.6396 -18.5898
-c-1.07129 -3.53906 -1.64746 -7.29199 -1.64746 -11.1787c0 -0.198242 -0.00585938 -0.383789 -0.00292969 -0.581055c0 -25.8701 18.8398 -29.4004 29.8799 -29.4004c10.8203 0 16.46 2.35059 18.5801 3.76074c0.469727 0.239258 0.709961 0.709961 0.240234 1.87988
-l-2.36035 6.83008c-0.200195 0.430664 -0.636719 0.729492 -1.14258 0.729492c-0.0927734 0 -0.180664 -0.0107422 -0.267578 -0.0302734c-2.58984 -0.939453 -6.34961 -2.81934 -15.29 -2.81934c-17.4199 0 -16.8496 14.7402 -16.9297 16.7002h37.1602
-c0.569336 0.0136719 1.04395 0.40918 1.17969 0.939453c-0.239258 0.00976562 0.94043 7.07031 -1.41016 15.54v-0.00976562zM533.27 216.47c5.11035 0 11.8506 -2.2002 12.7305 -14.1201h-26.3701c0.639648 5.12012 3.31055 14.1201 13.6396 14.1201z" />
-    <glyph glyph-name="speaker-deck" unicode="&#xf83c;" horiz-adv-x="512" 
-d="M213.86 152h-113.86c-55.1914 0 -100 44.8086 -100 100s44.8086 100 100 100h132.84c22.0771 0 40 -17.9238 40 -40s-17.9229 -40 -40 -40h-134.84c-26.4697 0 -26.4502 -40 0 -40h113.82c55.1914 0 100 -44.8086 100 -100s-44.8086 -100 -100 -100h-171.82
-c-22.0762 0 -40 17.9238 -40 40s17.9238 40 40 40h173.86c26.4795 0 26.46 40 0 40zM298 32c26.7314 18.1455 45.667 46.8174 51.1104 80h64.5498c10.8652 0.0927734 19.6572 8.94238 19.6572 19.8291c0 0.0585938 0.00292969 0.113281 0.00292969 0.170898v120v0.173828
-c0 10.8867 -8.79492 19.7334 -19.6602 19.8262h-117.24c9.34473 10.6875 15.0088 24.6729 15.0088 39.9697c0 15.2979 -5.66406 29.3428 -15.0088 40.0303h136.93c43.4404 0 78.6504 -35.8203 78.6504 -80v-160c0 -44.1797 -35.21 -80 -78.6504 -80h-135.35z" />
-    <glyph glyph-name="symfony" unicode="&#xf83d;" horiz-adv-x="512" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.74 296.46c15.3496 0.540039 19.7695 15.4404 19.5195 23.1299c-0.639648 18.0605 -19.6699 29.46 -44.8301 28.6504
-c-1.89941 -0.0703125 -65.2598 3.46973 -102.43 -105.53c-10.0596 8.29004 -57.7695 65.1602 -110.58 25.8096c-18.9502 -14.1797 -31.4199 -47.9199 -2.9502 -79.6699c16.9502 -18.1396 26.7207 -25.3301 22.25 -39.8496c-9.14941 -29.79 -55.5596 -16.1602 -51 -1.38965
-c1.36035 4.38965 3.49023 4.46973 6.28027 13.0693c7.74023 25.3203 -27.1104 37.75 -34.6201 13.6006c-4.32031 -14.0605 2.37988 -39.5107 38.3799 -50.6201c42.1602 -12.96 77.8203 10.0098 82.8799 39.9395c3.2002 18.75 -5.29004 32.6904 -20.7998 50.6201l-12.6299 14
-c-7.66016 7.7002 -10.29 20.7002 -2.37012 30.7002c6.69043 8.45996 16.2002 12.0605 31.8105 7.83008c22.7695 -6.16992 32.9199 -21.9697 49.8496 -34.7197c-1.23047 -4 -10.04 -32.3398 -18.2305 -82c-12.1094 -63.4902 -21.3496 -98.3506 -45.3496 -118.351
-c-4.83984 -3.48926 -11.7598 -8.63965 -22.1797 -9c-1.94043 -0.0595703 -14.1406 2.83984 -2.0498 12.5508c15.2393 8.3291 7.00977 34.75 -14.8809 34c-9.85938 -0.330078 -24.8691 -9.59082 -24.3096 -26.5908c0.580078 -17.5293 16.9297 -30.6895 41.5801 -29.8398
-c13.1797 0.44043 42.5801 5.7998 71.5801 40.2598c39.8496 46.7207 47.4395 102.2 58.2002 161.721c51.6797 -6.11035 77.2393 17.8398 77.5996 35.7002c0.549805 24.2998 -28 23.46 -32 5.2998c-1.91992 -8.83984 13.4199 -16.8105 1.41992 -24.5605
-c-8.49023 -5.5 -23.71 -9.37012 -45.1396 -6.21973c10.2998 56.8496 19.1094 112.56 58.8896 113.85c2.70996 0.150391 12.6396 -0.119141 12.8701 -6.66992c0.150391 -5.41016 -6.7998 -9.66992 -6.53027 -18.8496c0.370117 -10.4199 8.2998 -17.2803 19.7705 -16.8701z
-" />
-    <glyph glyph-name="waze" unicode="&#xf83f;" horiz-adv-x="512" 
-d="M502.17 246.33c14.5205 -85.8604 -30.9395 -167.92 -113.17 -208.13c13 -34.1006 -12.4004 -70.2002 -48.3203 -70.2002c-27.5918 0.0214844 -50.1543 21.752 -51.5693 49c-6.44043 -0.19043 -64.2002 0 -76.3301 0.639648
-c-1.11328 -27.5479 -23.8281 -49.5713 -51.6475 -49.5713c-0.725586 0 -1.41504 -0.0175781 -2.13281 0.0117188c-33.8604 1.36035 -57.9502 34.8398 -47 67.9199c-37.21 13.1104 -72.54 34.8701 -99.6201 70.7998c-13 17.2803 -0.479492 41.7998 20.8398 41.7998
-c46.3105 0 32.2207 54.1699 43.1504 110.261c18.4297 93.9395 116.75 157.14 211.72 157.14c102.48 0 197.15 -70.6699 214.08 -169.67zM373.51 59.7197c42 19.1807 81.3301 56.71 96.29 102.141c40.4805 123.09 -64.1494 228 -181.71 228
-c-83.4502 0 -170.32 -55.4199 -186.07 -136c-9.5293 -48.9102 5 -131.351 -68.75 -131.351c24.9404 -33.1094 58.3301 -52.6201 93.7305 -64.0498c24.6602 21.7998 63.8701 15.4697 79.8301 -14.3398c14.2197 -1 79.1895 -1.17969 87.9004 -0.820312
-c8.5625 16.7266 25.9746 28.1865 46.041 28.1865c12.418 0 23.8223 -4.45703 32.7383 -11.7666zM205.12 260.87c0 34.7402 50.8398 34.75 50.8398 0s-50.8398 -34.7402 -50.8398 0zM321.69 260.87c0 34.7402 50.8594 34.75 50.8594 0s-50.8594 -34.75 -50.8594 0z
-M199.08 190.18c-3.44043 16.9404 22.1797 22.1807 25.6201 5.20996l0.0595703 -0.279297c4.14062 -21.4199 29.8506 -44 64.1201 -43.0703c35.6797 0.94043 59.25 22.21 64.1104 42.7695c4.45996 16.0508 28.5996 10.3604 25.4697 -6
-c-5.22949 -22.1797 -31.21 -62 -91.46 -62.8994c-42.5498 0 -80.8799 27.8398 -87.9004 64.25z" />
-    <glyph glyph-name="yammer" unicode="&#xf840;" horiz-adv-x="512" 
-d="M421.78 295.83c-48.1602 -26.3896 -118.561 -58.1504 -130.2 -50s91.4395 80.3701 106.689 88.7695c0.920898 0.5 1.80078 0.970703 2.63086 1.40039c2.07227 0.612305 4.28125 0.954102 6.55176 0.954102c12.7275 0 23.0605 -10.332 23.0605 -23.0596
-c0 -7.31445 -3.41309 -13.8389 -8.73242 -18.0645zM421.78 78.6602c5.27539 -4.22949 8.64258 -10.7148 8.64258 -17.9961c0 -12.7334 -10.3369 -23.0703 -23.0693 -23.0703c-2.24023 0 -4.40527 0.320312 -6.45312 0.916016
-c-0.830078 0.410156 -1.70996 0.900391 -2.63086 1.41016c-15.2695 8.38965 -118.25 80.6396 -106.689 88.7402c11.5596 8.09961 82.04 -23.6201 130.2 -50zM464.21 211c10.4287 -2.18359 18.2344 -11.4395 18.2344 -22.5127
-c0 -11.4219 -8.34375 -20.9102 -19.2646 -22.6973c-54.9102 0.0195312 -131.93 6.00977 -138.21 18.7598c-6.2793 12.75 118.84 26.5098 136.24 26.5098c1.0498 0 2.0498 -0.0595703 3 -0.0595703zM31 351.35c-0.817383 2.46387 -1.26074 5.09766 -1.26074 7.83496
-c0 13.7314 11.1484 24.8799 24.8799 24.8799c9.96582 0 18.5498 -5.8457 22.5205 -14.3145l81 -205.06h1.20996l77 203.529c3.42188 8.7627 11.9502 14.9775 21.9189 14.9775c12.9805 0 23.5195 -10.5391 23.5195 -23.5195
-c0 -2.33398 -0.353516 -4.59863 -0.988281 -6.72754l-109.6 -273.391c-18.5498 -47.2197 -37.1201 -79.5596 -93.29 -79.5596c-0.185547 -0.000976562 -0.371094 -0.000976562 -0.556641 -0.000976562c-7.9707 0 -15.6465 0.666016 -23.2539 1.95117
-c-8.90723 2.55371 -15.4336 10.7646 -15.4336 20.4883c0 11.7607 9.54883 21.3096 21.3105 21.3096c0.349609 0 0.677734 -0.0117188 1.02344 -0.0283203c0.660156 -0.0595703 10.9102 -0.660156 13.8604 -0.660156c30.4697 0 43.7393 18.9404 58.0693 59.4102z" />
-    <glyph glyph-name="git-alt" unicode="&#xf841;" 
-d="M439.55 211.95c5.22266 -5.22363 8.45508 -12.4463 8.45508 -20.4092s-3.23242 -15.1768 -8.45508 -20.4014l-194.689 -194.689c-5.22363 -5.21973 -12.4443 -8.4502 -20.4043 -8.4502c-7.96094 0 -15.1729 3.23047 -20.3965 8.4502l-195.609 195.6
-c-5.22266 5.22363 -8.45508 12.4463 -8.45508 20.4092s3.23242 15.1768 8.45508 20.4014l134.12 134.14l50.79 -50.8496c-5.95996 -14.2607 -2.16016 -36.4902 18.6396 -45v-123c-22.3203 -9.09082 -28.8203 -38.4004 -11.25 -56
-c6.21582 -6.21191 14.8066 -10.0557 24.2803 -10.0557c9.47266 0 18.0547 3.84375 24.2695 10.0557c13.1807 13.1494 16.2197 42.46 -9.08008 55v121.85l46.3506 -46.29c-14.21 -34.4697 29.5098 -63.8301 56 -37.3398c25.71 25.6895 -1.24023 68.4902 -35.4707 56.6895
-l-49.6592 49.6602c9.29004 26.9102 -16.3301 52.8203 -43.3906 43.6807l-51.5195 51.5195l40.6602 40.6299c5.22461 5.2207 12.4463 8.45117 20.4082 8.45117c7.96289 0 15.1768 -3.23047 20.4014 -8.45117z" />
-    <glyph glyph-name="stackpath" unicode="&#xf842;" 
-d="M244.6 215.6c0 -8.5 -4.25977 -20.4893 -21.3398 -20.4893h-19.6094v41.4697h19.6094c17.1299 0 21.3398 -12.3604 21.3398 -20.9805zM448 416v-448h-448v448h448zM151.3 160.16c0 21.2402 -12.1201 34.54 -46.7197 44.8496c-20.5703 7.41016 -26 10.9102 -26 18.6299
-c0 7.7207 7 14.6104 20.4102 14.6104c14.0898 0 20.79 -8.4502 20.79 -18.3496h30.7002l0.189453 0.569336c0.5 19.5703 -15.0596 41.6504 -51.1201 41.6504c-23.3701 0 -52.5498 -10.75 -52.5498 -38.29c0 -19.4004 9.25 -31.29 50.7402 -44.3701
-c17.2598 -6.15039 21.9102 -10.4004 21.9102 -19.4795c0 -15.2002 -19.1309 -14.2305 -19.4707 -14.2305c-20.3994 0 -25.6494 9.09961 -25.6494 21.9004h-30.7998l-0.180664 -0.560547c-0.679688 -31.3203 28.3799 -45.2197 56.6299 -45.2197
-c29.9805 0 51.1201 13.5498 51.1201 38.29zM276.68 215.79c0 25.2998 -18.4297 45.46 -53.4199 45.46h-51.7793v-138.18h32.1699v47.3594h19.6094c30.25 0 53.4199 15.9502 53.4199 45.3604zM297.94 123l49.0596 138.22h-31.0898l-47.9102 -138.22h29.9404zM404.46 261.22
-h-31.0898l-47.9102 -138.22h29.9404z" />
-    <glyph glyph-name="cotton-bureau" unicode="&#xf89e;" horiz-adv-x="512" 
-d="M474.31 117.59h25.1807c-25.7998 -109.78 -111.4 -173.59 -239.67 -173.59c-154.63 -0.339844 -247.82 92.8604 -247.82 248.18c0 154.63 93 247.82 247.82 247.82c128.399 0 214.06 -63.5098 240.18 -173.61h-25.2598
-c-24.8506 95.6104 -99.9199 148.811 -214.69 148.811c-141.85 0 -223.2 -81.3799 -223.2 -223.2c0 -137.93 76.6699 -218 211.101 -223v49.2002c0 48.1602 -26.5498 74.3896 -74.5498 74.3896c-62.1309 0 -99.4004 37.2803 -99.4004 99.4102
-c0 61.3701 36.5195 98.2803 97.3799 99.0596c30.7402 64.6504 144.24 69.3203 177.24 0c60.8496 -0.779297 97.3799 -37.6895 97.3799 -99.0596c0 -62.0098 -37.2002 -99.21 -99.2002 -99.21c-47.9795 0 -74.3896 -26.3896 -74.3896 -74.3896v-49.1602
-c107.67 3.75977 178.24 56.5 201.899 148.35zM357 265.67c3.7998 -21.0801 11.2695 -104.2 -71.79 -120.75c12.2598 -17.7402 32.9805 -27.3301 61.5898 -27.3301c47.9697 0 74.4004 26.4102 74.4004 74.4102c0 44.6699 -22.8301 70.2197 -64.2002 73.6699zM275.32 168.31
-c72.7803 9.89062 58.5 86.9102 56.2295 97c-72.5596 -10 -58.6895 -86.6592 -56.2295 -97zM260 316l-0.179688 -0.259766c-28.3008 0 -49.1602 -9.66016 -61.5703 -27.3506c28.3701 -5.44922 49.3701 -20.5898 61.5996 -43.4492
-c12.2305 22.8594 33.2305 37.9697 61.5908 43.4492c-12.4404 17.9404 -32.8301 27.6104 -61.4404 27.6104zM188.48 265.28h0.239258c-2.75 -10.0498 -16.1602 -87.1602 56.25 -97c2.41992 10.1895 16.6807 86.4297 -56.4893 97zM173.2 117.59l0.330078 0.0302734
-c28.2998 0 49 9.66992 61.1396 27.2998c-73.0303 14.2197 -78.4004 83.5498 -71.6504 120.75c-41.3594 -3.66992 -64.2197 -29.3096 -64.2197 -73.6699c0 -48.0098 26.4004 -74.4102 74.4004 -74.4102zM226.41 105.2h0.269531
-c14.4902 -7.60059 25.5605 -19.3301 33.5605 -33.8301c7.52734 14.4502 19.1924 26.1982 33.5801 33.8301c-14.4902 8.00977 -26.0508 19.0596 -33.8203 33.5498c-7.60156 -14.3262 -19.2539 -25.9658 -33.5898 -33.5498z" />
-    <glyph glyph-name="buy-n-large" unicode="&#xf8a6;" horiz-adv-x="576" 
-d="M288 416c154.73 0 280.21 -100.32 280.21 -224s-125.479 -224 -280.21 -224s-280.21 100.32 -280.21 224s125.479 224 280.21 224zM202.61 58.8096c61.5498 0.600586 99.4697 24.3604 117.71 61.5205c-35.79 6.4502 -62.9307 37.3096 -62.9307 74.4502
-c0 41.7695 34.3408 75.6494 76.6904 75.6494c0.0117188 0 -0.0234375 -0.00292969 -0.0117188 -0.00292969c5.91797 0 11.6826 -0.666016 17.2217 -1.92676c0.623047 2.21875 1.13281 4.53516 1.5 6.84961c6.92969 44.1904 -14.8496 72.8408 -78 72.8408h-133.44
-l-77.25 -290.74zM358 240.89l-9.4502 -36.75l-15 36.75h-31.3398l-26.6299 -90.3096h37.8301l7.83008 35.6299l11.1895 -35.6299h35.4102l22.1602 90.3096h-32zM503.86 58.8096l21.1992 84.0605h-103.869l53.0498 205.36h-92.5l-21.3301 -82.3506
-c29.3799 -10.5996 50.3799 -38.4102 50.3799 -71.0596c0 -41.7803 -34.3496 -75.6504 -76.6904 -75.6504c-0.0205078 0 0.0380859 -0.00292969 0.0166016 -0.00292969c-3.90137 0 -7.73633 0.28418 -11.4863 0.833008l-15.8398 -61.1904h197.07zM211.7 178.61
-c16.1494 0 29.7002 -7.51074 24.1396 -29.8203c-5.83008 -23.4697 -21.7998 -26.6504 -37.9395 -26.6504h-24.7002l13.7998 56.4707h24.7002zM233 278c18.0703 0 32.2305 1.29004 27.5801 -17.5703c-3.83008 -15.5 -21.21 -30.1396 -39.21 -30.1396h-21.3701l11.6602 47.71
-h21.3398z" />
-    <glyph glyph-name="mdb" unicode="&#xf8ca;" horiz-adv-x="576" 
-d="M17.3701 287.59h46.2998l42.3301 -117.33l40.7002 117.33h45.5098l12.79 -191.59h-45.5303l-4.79004 77.4297l-25.54 -77.4297h-44.71l-27.9297 79.8301l-5.58984 -79.8301h-43.9102zM298.37 287.59c0 0 93.4199 -1.58984 94.2002 -95.7998
-c0.799805 -96.5898 -94.2002 -95.79 -94.2002 -95.79h-47.9004v191.59h47.9004zM297.17 141.13c0 0 47.5996 5.21973 46.7998 51.5205c-0.799805 46.2998 -46.7998 50.5693 -46.7998 50.5693v-102.09zM535.46 215.37c0 0 33.54 -11.96 33.54 -55.1006
-c0 -68.6396 -87 -63.8496 -87 -63.8496h-45.5195v191.58h51.8994s49.7402 1.44043 55.0801 -34.3203c0.416992 -2.75586 0.595703 -5.58203 0.595703 -8.45312c0 -10.9678 -3.15039 -21.2061 -8.5957 -29.8564zM483.56 247.31v-21.5898h12s5.43066 5.33984 4 12
-c-2.42969 11.1807 -16 9.58984 -16 9.58984zM483.46 137.85c0 0 41.04 -4.92969 41.3701 20.7207c0.389648 27.1602 -41.1904 22.4297 -41.1904 22.4297h-0.0800781v-18.2305z" />
-    <glyph glyph-name="orcid" unicode="&#xf8d2;" horiz-adv-x="512" 
-d="M294.75 259.81c58.1299 0 84.6699 -35.2598 84.6699 -76.8994c0 -25.5703 -15.5 -76.9102 -83.1201 -76.9102h-47.4697v153.81h45.9199zM256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM175.21 79.2402v207.5h-29.8398v-207.5
-h29.8398zM160.29 310.38c10.7832 0.0380859 19.5312 8.78711 19.5703 19.5703c0 10.8008 -8.76953 19.5693 -19.5703 19.5693s-19.5703 -8.76855 -19.5703 -19.5693s8.76953 -19.5703 19.5703 -19.5703zM300 79c68.3799 0 110 50.6104 110.04 103.89
-c0 49.0205 -33.71 103.851 -110.44 103.851h-80.5996v-207.74h81z" />
-    <glyph glyph-name="swift" unicode="&#xf8e1;" 
-d="M448 291.91c0 -5.35059 -0.000976562 -10.7002 0.00878906 -16.0498v-183.771c-0.0292969 -4.50977 -0.0800781 -9.00977 -0.200195 -13.5098c-0.119141 -10.0547 -0.998047 -19.7852 -2.58984 -29.4199c-1.67969 -9.83789 -4.86914 -19.373 -9.21973 -28
-c-9.04004 -17.748 -23.3896 -32.1074 -41.1299 -41.1602c-8.62891 -4.34375 -18.1641 -7.5293 -28 -9.20996c-9.64355 -1.58594 -19.3809 -2.46387 -29.4404 -2.58984c-4.51953 -0.120117 -9.00977 -0.200195 -13.5195 -0.200195h-199.79
-c-4.52051 0.0302734 -9.02051 0.0800781 -13.5205 0.200195c-10.0576 0.120117 -19.792 0.999023 -29.4297 2.58984c-9.83691 1.67871 -19.3711 4.86523 -28 9.20996c-17.7354 9.05566 -32.083 23.4102 -41.1299 41.1504c-4.35059 8.62598 -7.54004 18.1611 -9.21973 28
-c-1.58398 9.63574 -2.45898 19.3662 -2.58008 29.4199c-0.129883 4.50977 -0.209961 9 -0.209961 13.5098v199.83c0.0292969 4.51953 0.0800781 9.00977 0.209961 13.5195c0.109375 10.0479 0.97168 19.7676 2.54004 29.4004c1.68164 9.83691 4.87109 19.3721 9.21973 28
-c4.52637 8.88477 10.3564 16.875 17.3496 23.8496c1.74023 1.7207 3.55078 3.39062 5.43066 5c5.61426 4.80176 11.7549 8.92383 18.3896 12.3203c2.2334 1.11328 4.50391 2.15332 6.81152 3.12012c6.69531 2.73145 13.8994 4.82422 21.21 6.09961
-c7.22656 1.23633 14.5557 2.01855 22.0596 2.32031c2.45996 0.120117 4.91992 0.200195 7.37012 0.269531c4.51953 0.120117 9.00977 0.200195 13.5195 0.200195h199.75c4.52051 -0.0292969 9.01074 -0.0800781 13.5205 -0.200195
-c10.0576 -0.120117 19.792 -0.998047 29.4297 -2.58984c9.83887 -1.67773 19.374 -4.86719 28 -9.21973c17.7559 -9.03711 32.1191 -23.3965 41.1602 -41.1504c4.34668 -8.62891 7.53516 -18.1631 9.21973 -28c1.58301 -9.63672 2.45801 -19.3662 2.58008 -29.4199
-c0.120117 -4.51953 0.200195 -9.00977 0.200195 -13.5195zM378.119 50.9102c4.91016 -9.58008 15.3604 41.1797 -23.1602 88.5801c0.490234 1.68945 1 3.35938 1.44043 5.08984c18.5996 74.0801 -26.79 161.67 -103.58 207.75
-c33.6494 -45.6201 48.5293 -100.87 35.3096 -149.2c-1.16797 -4.21484 -2.58105 -8.44238 -4.16016 -12.4697c-1.72949 1.14941 -3.84961 2.41992 -6.72949 4c0 0 -76.3906 47.1699 -159.181 130.59c-2.16992 2.2002 44.1504 -66.25 96.7207 -121.74
-c-24.7803 13.9004 -93.7803 64.1201 -137.48 104.12c5.58301 -9.18652 11.8184 -17.7773 18.7803 -25.8994c36.4902 -46.2207 84.0898 -103.37 141.09 -147.221c-40 -24.4902 -96.6396 -26.3994 -153 0c-13.8662 6.50977 -26.9756 14.3477 -39.1699 23.3701
-c25.1133 -39.9365 61.6025 -71.4268 105.29 -90.3701c53.3203 -22.9199 106.35 -21.3799 145.85 -0.379883l0.419922 0.25c1.77051 1 3.53027 2 5.25 3c19.0801 9.7998 56.3105 19.46 76.3105 -19.4697z" />
-    <glyph glyph-name="umbraco" unicode="&#xf8e8;" horiz-adv-x="510" 
-d="M255.35 440c136.99 -0.169922 247.83 -111.31 247.65 -248.28c-0.179688 -136.97 -111.15 -247.67 -248 -247.67c-137 0.0703125 -248.07 111.271 -248 248.271c0.139648 136.96 111.36 247.85 248.35 247.68zM400.35 174
-c0.360352 5.24023 0.524414 10.1309 0.524414 15.4619c0 5.12988 -0.169922 10.2197 -0.503906 15.2656c-0.43457 14.9102 -1.64258 29.4004 -3.61035 43.8799c-1.87012 13.2197 -3.56934 22.3799 -5.38965 32c-1.02051 4.87988 -1.28027 6.39941 -1.83008 8.44922
-c-0.506836 2.22461 -2.49805 3.89062 -4.875 3.89062h-0.0253906h-0.819336l-32 -5c-2.37793 -0.385742 -4.20117 -2.44922 -4.20117 -4.93457c0 -0.0224609 0.000976562 -0.0439453 0.000976562 -0.0654297
-c-0.00976562 -0.128906 -0.0146484 -0.249023 -0.0146484 -0.380859c0 -0.130859 0.00488281 -0.260742 0.0146484 -0.389648l1.68945 -8.7793c1.60645 -8.86719 3.23633 -20.0938 4.88965 -33.6807c1.62695 -13.9551 2.49707 -27.7852 2.59961 -42.1494
-c0.266602 -26.9072 -2.44336 -46.834 -8.12988 -59.7803c-5.62891 -12.7627 -17.1777 -22.3076 -31.1504 -25.2305c-16.2686 -3.44336 -32.8506 -5.2627 -50.1387 -5.2627c-2.38477 0 -4.76172 0.0341797 -7.13086 0.103516h-10.25
-c-2.40625 -0.0712891 -4.53223 -0.0996094 -6.95605 -0.0996094c-17.2725 0 -34.127 1.80566 -50.3838 5.23926c-14.0283 2.86719 -25.6377 12.4033 -31.3105 25.1797c-5.60645 12.9336 -8.31641 32.877 -8.12988 59.8301
-c0.101562 14.3672 0.986328 28.2021 2.64062 42.1504c1.62012 13.6201 3.2334 24.8467 4.83984 33.6797l1.7002 8.78027c0.00976562 0.128906 0.0146484 0.249023 0.0146484 0.379883c0 0.131836 -0.00488281 0.261719 -0.0146484 0.389648
-c0 0.00488281 -0.00488281 0.00878906 -0.00488281 0.0126953c0 2.48633 -1.79297 4.55664 -4.15527 4.9873l-32 5h-0.69043c-2.37402 -0.0214844 -4.3623 -1.6748 -4.89941 -3.88965c-0.540039 -2.03027 -0.820312 -3.57031 -1.82031 -8.4502
-c-1.83008 -9.41992 -3.52051 -18.6094 -5.40039 -32c-1.95898 -14.4814 -3.16406 -28.9697 -3.59961 -43.8799c-0.351562 -5.13867 -0.530273 -9.93066 -0.530273 -15.1582s0.178711 -10.4131 0.530273 -15.5518c0.766602 -27.0928 5.43359 -48.7598 14 -65
-c8.57324 -16.2061 23.0801 -27.873 43.5195 -35c20.4404 -7.12695 48.9209 -10.6172 85.4414 -10.4697h4.59961c36.5605 -0.15332 65.0439 3.33691 85.4502 10.4707c20.4336 7.12012 34.9365 18.7871 43.5098 35.001s13.2402 37.8809 14 65.001z" />
-  </font>
-</defs></svg>
diff --git a/assets/fonts/font-awesome/fa-brands-400.ttf b/assets/fonts/font-awesome/fa-brands-400.ttf
deleted file mode 100644
index 8ecb67b04090d546a75fff5b110a75887a5dfd79..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-brands-400.ttf and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-brands-400.woff b/assets/fonts/font-awesome/fa-brands-400.woff
deleted file mode 100644
index 9bd812abc35c6ce879a42e0a38ad38412ea27bf2..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-brands-400.woff and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-brands-400.woff2 b/assets/fonts/font-awesome/fa-brands-400.woff2
deleted file mode 100644
index 2acd92d78fcbf7794e5c03f3b580f60b9305c8dc..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-brands-400.woff2 and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-regular-400.eot b/assets/fonts/font-awesome/fa-regular-400.eot
deleted file mode 100644
index 21808cc74b4894d5a43e3062729225097d9582ed..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-regular-400.eot and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-regular-400.svg b/assets/fonts/font-awesome/fa-regular-400.svg
deleted file mode 100644
index 60414e1672b9dff4605ee63fe3cca6cb1c2cea6e..0000000000000000000000000000000000000000
--- a/assets/fonts/font-awesome/fa-regular-400.svg
+++ /dev/null
@@ -1,801 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
-<metadata>
-Created by FontForge 20200314 at Wed Jan 13 11:57:54 2021
- By Robert Madole
-Copyright (c) Font Awesome
-</metadata>
-<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
-<font id="FontAwesome5Free-Regular" horiz-adv-x="512" >
-  <font-face 
-    font-family="Font Awesome 5 Free Regular"
-    font-weight="400"
-    font-stretch="normal"
-    units-per-em="512"
-    panose-1="2 0 5 3 0 0 0 0 0 0"
-    ascent="448"
-    descent="-64"
-    bbox="-0.0663408 -64.0662 640.004 448.1"
-    underline-thickness="25"
-    underline-position="-50"
-    unicode-range="U+0020-F5C8"
-  />
-    <missing-glyph />
-    <glyph glyph-name="heart" unicode="&#xf004;" 
-d="M458.4 383.7c75.2998 -63.4004 64.0996 -166.601 10.5996 -221.3l-175.4 -178.7c-10 -10.2002 -23.2998 -15.7998 -37.5996 -15.7998c-14.2002 0 -27.5996 5.69922 -37.5996 15.8994l-175.4 178.7c-53.5996 54.7002 -64.5996 157.9 10.5996 221.2
-c57.8008 48.7002 147.101 41.2998 202.4 -15c55.2998 56.2998 144.6 63.5996 202.4 15zM434.8 196.2c36.2002 36.8994 43.7998 107.7 -7.2998 150.8c-38.7002 32.5996 -98.7002 27.9004 -136.5 -10.5996l-35 -35.7002l-35 35.7002
-c-37.5996 38.2998 -97.5996 43.1992 -136.5 10.5c-51.2002 -43.1006 -43.7998 -113.5 -7.2998 -150.7l175.399 -178.7c2.40039 -2.40039 4.40039 -2.40039 6.80078 0z" />
-    <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="576" 
-d="M528.1 276.5c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002c-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103
-c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998l65.2998 132.4c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4zM388.6 135.7l100.601 98l-139 20.2002l-62.2002 126l-62.2002 -126l-139 -20.2002l100.601 -98l-23.7002 -138.4l124.3 65.2998
-l124.3 -65.2998z" />
-    <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="448" 
-d="M313.6 144c74.2002 0 134.4 -60.2002 134.4 -134.4v-25.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v25.5996c0 74.2002 60.2002 134.4 134.4 134.4c28.7998 0 42.5 -16 89.5996 -16s60.9004 16 89.5996 16zM400 -16v25.5996
-c0 47.6006 -38.7998 86.4004 -86.4004 86.4004c-14.6992 0 -37.8994 -16 -89.5996 -16c-51.2998 0 -75 16 -89.5996 16c-47.6006 0 -86.4004 -38.7998 -86.4004 -86.4004v-25.5996h352zM224 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144
-s-64.5 -144 -144 -144zM224 400c-52.9004 0 -96 -43.0996 -96 -96s43.0996 -96 96 -96s96 43.0996 96 96s-43.0996 96 -96 96z" />
-    <glyph glyph-name="clock" unicode="&#xf017;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM317.8 96.4004l-84.8994 61.6992
-c-3.10059 2.30078 -4.90039 5.90039 -4.90039 9.7002v164.2c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12v-141.7l66.7998 -48.5996c5.40039 -3.90039 6.5 -11.4004 2.60059 -16.7998l-18.8008 -25.9004c-3.89941 -5.2998 -11.3994 -6.5 -16.7998 -2.59961z
-" />
-    <glyph glyph-name="list-alt" unicode="&#xf022;" 
-d="M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM458 16c3.31152 0 6 2.68848 6 6v340c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-340
-c0 -3.31152 2.68848 -6 6 -6h404zM416 108v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 204v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12
-v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 300v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM164 288c0 -19.8818 -16.1182 -36 -36 -36
-s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 192c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 96c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36z" />
-    <glyph glyph-name="flag" unicode="&#xf024;" 
-d="M336.174 368c35.4668 0 73.0195 12.6914 108.922 28.1797c31.6406 13.6514 66.9043 -9.65723 66.9043 -44.1162v-239.919c0 -16.1953 -8.1543 -31.3057 -21.7129 -40.1631c-26.5762 -17.3643 -70.0693 -39.9814 -128.548 -39.9814c-68.6084 0 -112.781 32 -161.913 32
-c-56.5674 0 -89.957 -11.2803 -127.826 -28.5566v-83.4434c0 -8.83691 -7.16309 -16 -16 -16h-16c-8.83691 0 -16 7.16309 -16 16v406.438c-14.3428 8.2998 -24 23.7979 -24 41.5615c0 27.5693 23.2422 49.71 51.2012 47.8965
-c22.9658 -1.49023 41.8662 -19.4717 44.4805 -42.3379c0.213867 -1.83398 0.308594 -3.65918 0.308594 -5.5498c0 -5.30273 -0.860352 -10.4053 -2.4502 -15.1768c22.418 8.68555 49.4199 15.168 80.7207 15.168c68.6084 0 112.781 -32 161.913 -32zM464 112v240
-c-31.5059 -14.6338 -84.5547 -32 -127.826 -32c-59.9111 0 -101.968 32 -161.913 32c-41.4365 0 -80.4766 -16.5879 -102.261 -32v-232c31.4473 14.5967 84.4648 24 127.826 24c59.9111 0 101.968 -32 161.913 -32c41.4365 0 80.4775 16.5879 102.261 32z" />
-    <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="384" 
-d="M336 448c26.5098 0 48 -21.4902 48 -48v-464l-192 112l-192 -112v464c0 26.5098 21.4902 48 48 48h288zM336 19.5703v374.434c0 3.31348 -2.68555 5.99609 -6 5.99609h-276c-3.31152 0 -6 -2.68848 -6 -6v-374.43l144 84z" />
-    <glyph glyph-name="image" unicode="&#xf03e;" 
-d="M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM458 48c3.31152 0 6 2.68848 6 6v276c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-276
-c0 -3.31152 2.68848 -6 6 -6h404zM128 296c22.0908 0 40 -17.9092 40 -40s-17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40zM96 96v48l39.5137 39.5146c4.6875 4.68652 12.2852 4.68652 16.9717 0l39.5146 -39.5146l119.514 119.515
-c4.6875 4.68652 12.2852 4.68652 16.9717 0l87.5146 -87.5146v-80h-320z" />
-    <glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="576" 
-d="M402.3 103.1l32 32c5 5 13.7002 1.5 13.7002 -5.69922v-145.4c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h273.5c7.09961 0 10.7002 -8.59961 5.7002 -13.7002l-32 -32c-1.5 -1.5 -3.5 -2.2998 -5.7002 -2.2998h-241.5v-352h352
-v113.5c0 2.09961 0.799805 4.09961 2.2998 5.59961zM558.9 304.9l-262.601 -262.601l-90.3994 -10c-26.2002 -2.89941 -48.5 19.2002 -45.6006 45.6006l10 90.3994l262.601 262.601c22.8994 22.8994 59.8994 22.8994 82.6992 0l43.2002 -43.2002
-c22.9004 -22.9004 22.9004 -60 0.100586 -82.7998zM460.1 274l-58.0996 58.0996l-185.8 -185.899l-7.2998 -65.2998l65.2998 7.2998zM524.9 353.7l-43.2002 43.2002c-4.10059 4.09961 -10.7998 4.09961 -14.7998 0l-30.9004 -30.9004l58.0996 -58.0996l30.9004 30.8994
-c4 4.2002 4 10.7998 -0.0996094 14.9004z" />
-    <glyph glyph-name="times-circle" unicode="&#xf057;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM357.8 254.2l-62.2002 -62.2002l62.2002 -62.2002
-c4.7002 -4.7002 4.7002 -12.2998 0 -17l-22.5996 -22.5996c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-62.2002 62.2002l-62.2002 -62.2002c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-22.5996 22.5996c-4.7002 4.7002 -4.7002 12.2998 0 17l62.2002 62.2002l-62.2002 62.2002
-c-4.7002 4.7002 -4.7002 12.2998 0 17l22.5996 22.5996c4.7002 4.7002 12.2998 4.7002 17 0l62.2002 -62.2002l62.2002 62.2002c4.7002 4.7002 12.2998 4.7002 17 0l22.5996 -22.5996c4.7002 -4.7002 4.7002 -12.2998 0 -17z" />
-    <glyph glyph-name="check-circle" unicode="&#xf058;" 
-d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200z
-M396.204 261.733c4.66699 -4.70508 4.63672 -12.3037 -0.0673828 -16.9717l-172.589 -171.204c-4.70508 -4.66797 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66797 4.70605 -4.63672 12.3047 0.0683594 16.9717l22.7188 22.5361
-c4.70508 4.66699 12.3027 4.63574 16.9697 -0.0693359l59.792 -60.2773l141.353 140.216c4.70508 4.66797 12.3027 4.6377 16.9697 -0.0673828z" />
-    <glyph glyph-name="question-circle" unicode="&#xf059;" 
-d="M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 -8c110.569 0 200 89.4697 200 200c0 110.529 -89.5088 200 -200 200c-110.528 0 -200 -89.5049 -200 -200
-c0 -110.569 89.4678 -200 200 -200zM363.244 247.2c0 -67.0518 -72.4209 -68.084 -72.4209 -92.8633v-6.33691c0 -6.62695 -5.37305 -12 -12 -12h-45.6475c-6.62695 0 -12 5.37305 -12 12v8.65918c0 35.7451 27.1006 50.0342 47.5791 61.5156
-c17.5615 9.84473 28.3242 16.541 28.3242 29.5791c0 17.2461 -21.999 28.6934 -39.7842 28.6934c-23.1885 0 -33.8936 -10.9775 -48.9424 -29.9697c-4.05664 -5.11914 -11.46 -6.07031 -16.666 -2.12402l-27.8232 21.0986
-c-5.10742 3.87207 -6.25098 11.0654 -2.64453 16.3633c23.627 34.6934 53.7217 54.1846 100.575 54.1846c49.0713 0 101.45 -38.3037 101.45 -88.7998zM298 80c0 -23.1592 -18.8408 -42 -42 -42s-42 18.8408 -42 42s18.8408 42 42 42s42 -18.8408 42 -42z" />
-    <glyph glyph-name="eye" unicode="&#xf06e;" horiz-adv-x="576" 
-d="M288 304c0.114258 0 0.240234 -0.0175781 0.354492 -0.0175781c61.6543 0 111.71 -50.0557 111.71 -111.71s-50.0557 -111.71 -111.71 -111.71s-111.71 50.0557 -111.71 111.71c0 10.7422 1.51953 21.1328 4.35547 30.9678
-c7.95898 -4.52637 17.2129 -7.17188 27 -7.24023c30.9072 0 56 25.0928 56 56c-0.0683594 9.78711 -2.71387 19.041 -7.24023 27c9.88379 3.07617 20.3896 4.83008 31.2402 5zM572.52 206.6c2.21387 -4.37793 3.46094 -9.38965 3.46094 -14.626
-c0 -5.2373 -1.24707 -10.1855 -3.46094 -14.5635c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635
-c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48c98.6602 0 189.1 55 237.93 144c-48.8398 89 -139.27 144 -237.93 144s-189.09 -55 -237.93 -144c48.8398 -89 139.279 -144 237.93 -144z" />
-    <glyph glyph-name="eye-slash" unicode="&#xf070;" horiz-adv-x="640" 
-d="M634 -23c3.66895 -2.93262 6.00391 -7.45117 6.00391 -12.5088c0 -3.7832 -1.31543 -7.26074 -3.51367 -10.001l-10 -12.4902c-2.93359 -3.66309 -7.44824 -5.99414 -12.502 -5.99414c-3.77637 0 -7.25 1.31152 -9.98828 3.50391l-598 467.49
-c-3.66895 2.93262 -6.00391 7.45117 -6.00391 12.5088c0 3.7832 1.31543 7.26074 3.51367 10.001l10 12.4902c2.93359 3.66309 7.44824 5.99414 12.502 5.99414c3.77637 0 7.25 -1.31152 9.98828 -3.50391zM296.79 301.53c7.51172 1.60254 15.2266 2.45508 23.21 2.46973
-c60.4805 0 109.36 -47.9102 111.58 -107.85zM343.21 82.46c-7.51367 -1.59375 -15.2285 -2.44336 -23.21 -2.45996c-60.4697 0 -109.35 47.9102 -111.58 107.84zM320 336c-19.8799 0 -39.2803 -2.7998 -58.2197 -7.09961l-46.4102 36.29
-c32.9199 11.8096 67.9297 18.8096 104.63 18.8096c122.93 0 230.29 -71.5898 284.57 -177.4c2.21289 -4.37793 3.45996 -9.38965 3.45996 -14.626c0 -5.2373 -1.24707 -10.1855 -3.45996 -14.5635c-14.1924 -27.5625 -31.9229 -52.6689 -52.9004 -75.1104l-37.7402 29.5
-c17.2305 18.0527 31.9385 38.1318 44 60.2002c-48.8398 89 -139.279 144 -237.93 144zM320 48c19.8896 0 39.2803 2.7998 58.2197 7.08984l46.4102 -36.2803c-32.9199 -11.7598 -67.9297 -18.8096 -104.63 -18.8096c-122.92 0 -230.28 71.5898 -284.51 177.4
-c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635c14.1885 27.5586 31.916 52.6621 52.8896 75.1006l37.7402 -29.5c-17.249 -18.0469 -31.9727 -38.1221 -44.0498 -60.1904c48.8496 -89 139.279 -144 237.93 -144z" />
-    <glyph glyph-name="calendar-alt" unicode="&#xf073;" horiz-adv-x="448" 
-d="M148 160h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM256 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40
-c6.59961 0 12 -5.40039 12 -12v-40zM352 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM256 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40
-c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM160 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM352 76c0 -6.59961 -5.40039 -12 -12 -12h-40
-c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40
-c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="comment" unicode="&#xf075;" 
-d="M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5c-3.80078 8.7998 -2 19 4.59961 26
-c0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160c0 -42.2002 21.7002 -74.0996 39.7998 -93.4004
-l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z" />
-    <glyph glyph-name="folder" unicode="&#xf07b;" 
-d="M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h146.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l54.6299 -54.6299h192zM464 48v224h-198.62
-c-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-54.6299 54.6299h-140.12v-288h416z" />
-    <glyph glyph-name="folder-open" unicode="&#xf07c;" horiz-adv-x="576" 
-d="M527.9 224c37.6992 0 60.6992 -41.5 40.6992 -73.4004l-79.8994 -128c-8.7998 -14.0996 -24.2002 -22.5996 -40.7002 -22.5996h-400c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h160l64 -64h160c26.5 0 48 -21.5 48 -48v-48h47.9004zM48 330v-233.4l62.9004 104.2
-c8.69922 14.4004 24.2998 23.2002 41.0996 23.2002h280v42c0 3.2998 -2.7002 6 -6 6h-173.9l-64 64h-134.1c-3.2998 0 -6 -2.7002 -6 -6zM448 48l80 128h-378.8l-77.2002 -128h376z" />
-    <glyph glyph-name="chart-bar" unicode="&#xf080;" 
-d="M396.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM204.8 96
-c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM300.8 96
-c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM496 48c8.83984 0 16 -7.16016 16 -16v-16
-c0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-320h448zM108.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004
-c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004z" />
-    <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="576" 
-d="M532 61.7998c15.2998 -30.7002 37.4004 -54.5 37.7998 -54.7998c6.2998 -6.7002 8 -16.5 4.40039 -25c-3.7002 -8.5 -12 -14 -21.2002 -14c-53.5996 0 -96.7002 20.2998 -125.2 38.7998c-19 -4.39941 -39 -6.7998 -59.7998 -6.7998
-c-86.2002 0 -159.9 40.4004 -191.3 97.7998c-9.7002 1.2002 -19.2002 2.7998 -28.4004 4.90039c-28.5 -18.6006 -71.7002 -38.7998 -125.2 -38.7998c-9.19922 0 -17.5996 5.5 -21.1992 14c-3.7002 8.5 -1.90039 18.2998 4.39941 25
-c0.400391 0.399414 22.4004 24.1992 37.7002 54.8994c-27.5 27.2002 -44 61.2002 -44 98.2002c0 88.4004 93.0996 160 208 160c86.2998 0 160.3 -40.5 191.8 -98.0996c99.7002 -11.8008 176.2 -77.9004 176.2 -157.9c0 -37.0996 -16.5 -71.0996 -44 -98.2002zM139.2 154.1
-l19.7998 -4.5c16 -3.69922 32.5 -5.59961 49 -5.59961c86.7002 0 160 51.2998 160 112s-73.2998 112 -160 112s-160 -51.2998 -160 -112c0 -28.7002 16.2002 -50.5996 29.7002 -64l24.7998 -24.5l-15.5 -31.0996c-2.59961 -5.10059 -5.2998 -10.1006 -8 -14.8008
-c14.5996 5.10059 29 12.3008 43.0996 21.4004zM498.3 96c13.5 13.4004 29.7002 35.2998 29.7002 64c0 49.2002 -48.2998 91.5 -112.7 106c0.299805 -3.2998 0.700195 -6.59961 0.700195 -10c0 -80.9004 -78 -147.5 -179.3 -158.3
-c29.0996 -29.6006 77.2998 -49.7002 131.3 -49.7002c16.5 0 33 1.90039 49 5.59961l19.9004 4.60059l17.0996 -11.1006c14.0996 -9.09961 28.5 -16.2998 43.0996 -21.3994c-2.69922 4.7002 -5.39941 9.7002 -8 14.7998l-15.5 31.0996z" />
-    <glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="576" 
-d="M288 62.7002v-54.2998l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998v-68.0996l-62.2002 -126
-l-139 -20.2002l100.601 -98l-23.7002 -138.4z" />
-    <glyph glyph-name="lemon" unicode="&#xf094;" 
-d="M484.112 420.111c28.1221 -28.123 35.9434 -68.0039 19.0215 -97.0547c-23.0576 -39.584 50.1436 -163.384 -82.3311 -295.86c-132.301 -132.298 -256.435 -59.3594 -295.857 -82.3291c-29.0459 -16.917 -68.9219 -9.11426 -97.0576 19.0205
-c-28.1221 28.1221 -35.9434 68.0029 -19.0215 97.0547c23.0566 39.5859 -50.1436 163.386 82.3301 295.86c132.308 132.309 256.407 59.3496 295.862 82.332c29.0498 16.9219 68.9307 9.09863 97.0537 -19.0234zM461.707 347.217
-c13.5166 23.2031 -27.7578 63.7314 -50.4883 50.4912c-66.6025 -38.7939 -165.646 45.5898 -286.081 -74.8457c-120.444 -120.445 -36.0449 -219.472 -74.8447 -286.08c-13.542 -23.2471 27.8145 -63.6953 50.4932 -50.4883
-c66.6006 38.7949 165.636 -45.5996 286.076 74.8428c120.444 120.445 36.0449 219.472 74.8447 286.08zM291.846 338.481c1.37012 -10.96 -6.40332 -20.957 -17.3643 -22.3271c-54.8467 -6.85547 -135.779 -87.7871 -142.636 -142.636
-c-1.37305 -10.9883 -11.3984 -18.7334 -22.3262 -17.3643c-10.9609 1.37012 -18.7344 11.3652 -17.3643 22.3262c9.16211 73.2852 104.167 168.215 177.364 177.364c10.9531 1.36816 20.9561 -6.40234 22.3262 -17.3633z" />
-    <glyph glyph-name="credit-card" unicode="&#xf09d;" horiz-adv-x="576" 
-d="M527.9 416c26.5996 0 48.0996 -21.5 48.0996 -48v-352c0 -26.5 -21.5 -48 -48.0996 -48h-479.801c-26.5996 0 -48.0996 21.5 -48.0996 48v352c0 26.5 21.5 48 48.0996 48h479.801zM54.0996 368c-3.2998 0 -6 -2.7002 -6 -6v-42h479.801v42c0 3.2998 -2.7002 6 -6 6
-h-467.801zM521.9 16c3.2998 0 6 2.7002 6 6v170h-479.801v-170c0 -3.2998 2.7002 -6 6 -6h467.801zM192 116v-40c0 -6.59961 -5.40039 -12 -12 -12h-72c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h72c6.59961 0 12 -5.40039 12 -12zM384 116v-40
-c0 -6.59961 -5.40039 -12 -12 -12h-136c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h136c6.59961 0 12 -5.40039 12 -12z" />
-    <glyph glyph-name="hdd" unicode="&#xf0a0;" horiz-adv-x="576" 
-d="M567.403 212.358c5.59668 -8.04688 8.59668 -17.6113 8.59668 -27.4121v-136.946c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v136.946c0 10.167 3.19531 19.6465 8.59668 27.4121l105.08 151.053
-c8.67383 12.4678 23.0791 20.5889 39.4043 20.5889h269.838c16.3252 0 30.7305 -8.12109 39.4043 -20.5889zM153.081 336l-77.9131 -112h425.664l-77.9131 112h-269.838zM528 48v128h-480v-128h480zM496 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32
-s14.3271 32 32 32s32 -14.3271 32 -32zM400 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z" />
-    <glyph glyph-name="hand-point-right" unicode="&#xf0a4;" 
-d="M428.8 310.4c45.0996 0 83.2002 -38.1016 83.2002 -83.2002c0 -45.6162 -37.7646 -83.2002 -83.2002 -83.2002h-35.6475c-1.71387 -7.70605 -4.43555 -15.2051 -7.92969 -22.0645c2.50586 -22.0059 -3.50293 -44.9775 -15.9844 -62.791
-c-1.14062 -52.4863 -37.3984 -91.1445 -99.9404 -91.1445h-21.2988c-60.0635 0 -98.5117 40 -127.2 40h-2.67871c-5.74707 -4.95215 -13.5361 -8 -22.1201 -8h-64c-17.6729 0 -32 12.8936 -32 28.7998v230.4c0 15.9062 14.3271 28.7998 32 28.7998h64.001
-c8.58398 0 16.373 -3.04785 22.1201 -8h2.67871c6.96387 0 14.8623 6.19336 30.1816 23.6689l0.128906 0.148438l0.130859 0.145508c8.85645 9.93652 18.1162 20.8398 25.8506 33.2529c18.7051 30.2471 30.3936 78.7842 75.707 78.7842c56.9277 0 92 -35.2861 92 -83.2002
-c0 -0.0283203 0 0.0361328 0 0.0078125c0 -7.66602 -0.748047 -15.1582 -2.17578 -22.4072h86.1768zM428.8 192c18.9756 0 35.2002 16.2246 35.2002 35.2002c0 18.7002 -16.7754 35.2002 -35.2002 35.2002h-158.399c0 17.3242 26.3994 35.1992 26.3994 70.3994
-c0 26.4004 -20.625 35.2002 -44 35.2002c-8.79395 0 -20.4443 -32.7119 -34.9258 -56.0996c-9.07422 -14.5752 -19.5244 -27.2256 -30.7988 -39.875c-16.1094 -18.374 -33.8359 -36.6328 -59.0752 -39.5967v-176.753c42.79 -3.7627 74.5088 -39.6758 120 -39.6758h21.2988
-c40.5244 0 57.124 22.1973 50.6006 61.3252c14.6113 8.00098 24.1514 33.9785 12.9248 53.625c19.3652 18.2246 17.7871 46.3809 4.9502 61.0498h91.0254zM88 64c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z" />
-    <glyph glyph-name="hand-point-left" unicode="&#xf0a5;" 
-d="M0 227.2c0 45.0986 38.1006 83.2002 83.2002 83.2002h86.1758c-1.3623 6.91016 -2.17578 14.374 -2.17578 22.3994c0 47.9141 35.0723 83.2002 92 83.2002c45.3135 0 57.002 -48.5371 75.7061 -78.7852c7.73438 -12.4121 16.9951 -23.3154 25.8506 -33.2529
-l0.130859 -0.145508l0.128906 -0.148438c15.3213 -17.4746 23.2197 -23.668 30.1836 -23.668h2.67871c5.74707 4.95215 13.5361 8 22.1201 8h64c17.6729 0 32 -12.8936 32 -28.7998v-230.4c0 -15.9062 -14.3271 -28.7998 -32 -28.7998h-64
-c-8.58398 0 -16.373 3.04785 -22.1201 8h-2.67871c-28.6885 0 -67.1367 -40 -127.2 -40h-21.2988c-62.542 0 -98.8008 38.6582 -99.9404 91.1445c-12.4814 17.8135 -18.4922 40.7852 -15.9844 62.791c-3.49414 6.85938 -6.21582 14.3584 -7.92969 22.0645h-35.6465
-c-45.4355 0 -83.2002 37.584 -83.2002 83.2002zM48 227.2c0 -18.9756 16.2246 -35.2002 35.2002 -35.2002h91.0244c-12.8369 -14.6689 -14.415 -42.8252 4.9502 -61.0498c-11.2256 -19.6465 -1.68652 -45.624 12.9248 -53.625
-c-6.52246 -39.1279 10.0771 -61.3252 50.6016 -61.3252h21.2988c45.4912 0 77.21 35.9131 120 39.6768v176.752c-25.2393 2.96289 -42.9658 21.2227 -59.0752 39.5967c-11.2744 12.6494 -21.7246 25.2998 -30.7988 39.875
-c-14.4814 23.3877 -26.1318 56.0996 -34.9258 56.0996c-23.375 0 -44 -8.7998 -44 -35.2002c0 -35.2002 26.3994 -53.0752 26.3994 -70.3994h-158.399c-18.4248 0 -35.2002 -16.5 -35.2002 -35.2002zM448 88c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24
-s24 10.7451 24 24s-10.7451 24 -24 24z" />
-    <glyph glyph-name="hand-point-up" unicode="&#xf0a6;" horiz-adv-x="448" 
-d="M105.6 364.8c0 45.0996 38.1016 83.2002 83.2002 83.2002c45.6162 0 83.2002 -37.7646 83.2002 -83.2002v-35.6465c7.70605 -1.71387 15.2051 -4.43555 22.0645 -7.92969c22.0059 2.50684 44.9775 -3.50293 62.791 -15.9844
-c52.4863 -1.14062 91.1445 -37.3984 91.1445 -99.9404v-21.2988c0 -60.0635 -40 -98.5117 -40 -127.2v-2.67871c4.95215 -5.74707 8 -13.5361 8 -22.1201v-64c0 -17.6729 -12.8936 -32 -28.7998 -32h-230.4c-15.9062 0 -28.7998 14.3271 -28.7998 32v64
-c0 8.58398 3.04785 16.373 8 22.1201v2.67871c0 6.96387 -6.19336 14.8623 -23.6689 30.1816l-0.148438 0.128906l-0.145508 0.130859c-9.93652 8.85645 -20.8398 18.1162 -33.2529 25.8506c-30.2471 18.7051 -78.7842 30.3936 -78.7842 75.707
-c0 56.9277 35.2861 92 83.2002 92c0.0283203 0 -0.0361328 0 -0.0078125 0c7.66602 0 15.1582 -0.748047 22.4072 -2.17578v86.1768zM224 364.8c0 18.9756 -16.2246 35.2002 -35.2002 35.2002c-18.7002 0 -35.2002 -16.7754 -35.2002 -35.2002v-158.399
-c-17.3242 0 -35.1992 26.3994 -70.3994 26.3994c-26.4004 0 -35.2002 -20.625 -35.2002 -44c0 -8.79395 32.7119 -20.4443 56.0996 -34.9258c14.5752 -9.07422 27.2256 -19.5244 39.875 -30.7988c18.374 -16.1094 36.6328 -33.8359 39.5967 -59.0752h176.753
-c3.7627 42.79 39.6758 74.5088 39.6758 120v21.2988c0 40.5244 -22.1973 57.124 -61.3252 50.6006c-8.00098 14.6113 -33.9785 24.1514 -53.625 12.9248c-18.2246 19.3652 -46.3809 17.7871 -61.0498 4.9502v91.0254zM352 24c-13.2549 0 -24 -10.7451 -24 -24
-s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24z" />
-    <glyph glyph-name="hand-point-down" unicode="&#xf0a7;" horiz-adv-x="448" 
-d="M188.8 -64c-45.0986 0 -83.2002 38.1006 -83.2002 83.2002v86.1758c-6.91016 -1.3623 -14.374 -2.17578 -22.3994 -2.17578c-47.9141 0 -83.2002 35.0723 -83.2002 92c0 45.3135 48.5371 57.002 78.7852 75.707c12.4121 7.73438 23.3154 16.9951 33.2529 25.8506
-l0.145508 0.130859l0.148438 0.128906c17.4746 15.3213 23.668 23.2197 23.668 30.1836v2.67871c-4.95215 5.74707 -8 13.5361 -8 22.1201v64c0 17.6729 12.8936 32 28.7998 32h230.4c15.9062 0 28.7998 -14.3271 28.7998 -32v-64.001
-c0 -8.58398 -3.04785 -16.373 -8 -22.1201v-2.67871c0 -28.6885 40 -67.1367 40 -127.2v-21.2988c0 -62.542 -38.6582 -98.8008 -91.1445 -99.9404c-17.8135 -12.4814 -40.7852 -18.4922 -62.791 -15.9844c-6.85938 -3.49414 -14.3584 -6.21582 -22.0645 -7.92969v-35.6465
-c0 -45.4355 -37.584 -83.2002 -83.2002 -83.2002zM188.8 -16c18.9756 0 35.2002 16.2246 35.2002 35.2002v91.0244c14.6689 -12.8369 42.8252 -14.415 61.0498 4.9502c19.6465 -11.2256 45.624 -1.68652 53.625 12.9248c39.1279 -6.52246 61.3252 10.0771 61.3252 50.6016
-v21.2988c0 45.4912 -35.9131 77.21 -39.6768 120h-176.752c-2.96289 -25.2393 -21.2227 -42.9658 -39.5967 -59.0752c-12.6494 -11.2744 -25.2998 -21.7246 -39.875 -30.7988c-23.3877 -14.4814 -56.0996 -26.1318 -56.0996 -34.9258c0 -23.375 8.7998 -44 35.2002 -44
-c35.2002 0 53.0752 26.3994 70.3994 26.3994v-158.399c0 -18.4248 16.5 -35.2002 35.2002 -35.2002zM328 384c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24z" />
-    <glyph glyph-name="copy" unicode="&#xf0c5;" horiz-adv-x="448" 
-d="M433.941 382.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-80v-48c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h80v48c0 26.5098 21.4902 48 48 48
-h172.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM266 -16c3.31152 0 6 2.68848 6 6v42h-96c-26.5098 0 -48 21.4902 -48 48v224h-74c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM394 80c3.31152 0 6 2.68848 6 6v202h-88
-c-13.2549 0 -24 10.7451 -24 24v88h-106c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM400 336v9.63184c0 1.65527 -0.670898 3.15723 -1.75684 4.24316l-48.3682 48.3682c-1.12598 1.125 -2.65234 1.75684 -4.24316 1.75684h-9.63184v-64h64z" />
-    <glyph glyph-name="save" unicode="&#xf0c7;" horiz-adv-x="448" 
-d="M433.941 318.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM272 368h-128v-80h128v80z
-M394 16c3.31152 0 6 2.68848 6 6v259.632c0 1.65527 -0.670898 3.15723 -1.75684 4.24316l-78.2432 78.2432v-100.118c0 -13.2549 -10.7451 -24 -24 -24h-176c-13.2549 0 -24 10.7451 -24 24v104h-42c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340z
-M224 216c48.5234 0 88 -39.4766 88 -88s-39.4766 -88 -88 -88s-88 39.4766 -88 88s39.4766 88 88 88zM224 88c22.0557 0 40 17.9443 40 40s-17.9443 40 -40 40s-40 -17.9443 -40 -40s17.9443 -40 40 -40z" />
-    <glyph glyph-name="square" unicode="&#xf0c8;" horiz-adv-x="448" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM394 16c3.2998 0 6 2.7002 6 6v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340z" />
-    <glyph glyph-name="envelope" unicode="&#xf0e0;" 
-d="M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM464 336h-416v-40.8047c22.4248 -18.2627 58.1797 -46.6602 134.587 -106.49
-c16.834 -13.2422 50.2051 -45.0762 73.4131 -44.7012c23.2119 -0.371094 56.5723 31.4541 73.4131 44.7012c76.4189 59.8389 112.165 88.2305 134.587 106.49v40.8047zM48 48h416v185.601c-22.915 -18.252 -55.4189 -43.8691 -104.947 -82.6523
-c-22.5439 -17.748 -60.3359 -55.1787 -103.053 -54.9473c-42.9277 -0.231445 -81.2051 37.75 -103.062 54.9551c-49.5293 38.7842 -82.0244 64.3945 -104.938 82.6455v-185.602z" />
-    <glyph glyph-name="lightbulb" unicode="&#xf0eb;" horiz-adv-x="352" 
-d="M176 368c8.83984 0 16 -7.16016 16 -16s-7.16016 -16 -16 -16c-35.2803 0 -64 -28.7002 -64 -64c0 -8.83984 -7.16016 -16 -16 -16s-16 7.16016 -16 16c0 52.9404 43.0596 96 96 96zM96.0596 -11.1699l-0.0400391 43.1797h159.961l-0.0507812 -43.1797
-c-0.00976562 -3.13965 -0.939453 -6.21973 -2.67969 -8.83984l-24.5098 -36.8398c-2.95996 -4.45996 -7.95996 -7.14062 -13.3203 -7.14062h-78.8496c-5.35059 0 -10.3506 2.68066 -13.3203 7.14062l-24.5098 36.8398c-1.75 2.62012 -2.68066 5.68945 -2.68066 8.83984z
-M176 448c97.2002 0 176 -78.7998 176 -176c0 -44.3701 -16.4502 -84.8496 -43.5498 -115.79c-16.6406 -18.9795 -42.7402 -58.79 -52.4199 -92.1602v-0.0498047h-48v0.0996094c0.00488281 4.98145 0.790039 9.78809 2.21973 14.3008
-c5.67969 17.9893 22.9902 64.8496 62.0996 109.46c20.4102 23.29 31.6504 53.1699 31.6504 84.1396c0 70.5801 -57.4199 128 -128 128c-68.2803 0 -128.15 -54.3604 -127.95 -128c0.0898438 -30.9902 11.0703 -60.71 31.6104 -84.1396
-c39.3496 -44.9004 56.5801 -91.8604 62.1699 -109.67c1.42969 -4.56055 2.13965 -9.30078 2.15039 -14.0703v-0.120117h-48v0.0595703c-9.68066 33.3604 -35.7803 73.1709 -52.4209 92.1602c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78
-c0 93.0303 73.7197 176 176 176z" />
-    <glyph glyph-name="bell" unicode="&#xf0f3;" horiz-adv-x="448" 
-d="M439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29
-c0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29zM67.5303 80h312.939
-c-21.2197 27.96 -44.4199 74.3203 -44.5293 159.42c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112s-112 -50.1396 -112 -112c0 -0.200195 0.0595703 -0.379883 0.0595703 -0.580078
-c-0.109375 -85.0898 -23.3096 -131.45 -44.5293 -159.42zM224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z" />
-    <glyph glyph-name="hospital" unicode="&#xf0f8;" horiz-adv-x="448" 
-d="M128 204v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12zM268 192c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40
-c0 -6.62695 -5.37305 -12 -12 -12h-40zM192 108c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM268 96c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40
-c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.62695 5.37305 12 12 12h19.5v378.965c0 11.6172 10.7451 21.0352 24 21.0352h88.5v40c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-40h88.5
-c13.2549 0 24 -9.41797 24 -21.0352v-378.965h19.5c6.62695 0 12 -5.37305 12 -12zM79.5 -15h112.5v67c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-67h112.5v351h-64.5v-24c0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v24
-h-64.5v-351zM266 384h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20
-c0 3.31152 -2.68848 6 -6 6z" />
-    <glyph glyph-name="plus-square" unicode="&#xf0fe;" horiz-adv-x="448" 
-d="M352 208v-32c0 -6.59961 -5.40039 -12 -12 -12h-88v-88c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v88h-88c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h88v88c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12
-v-88h88c6.59961 0 12 -5.40039 12 -12zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340
-c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="circle" unicode="&#xf111;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200z" />
-    <glyph glyph-name="smile" unicode="&#xf118;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
-s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM332 135.4c8.5 10.1992 23.7002 11.5 33.7998 3.09961c10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998
-c-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.0996 8.40039 25.2998 7.09961 33.7998 -3.09961c20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004z" />
-    <glyph glyph-name="frown" unicode="&#xf119;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
-s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 144c40.2002 0 78 -17.7002 103.8 -48.5996c8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008
-c-10.7002 -8.7998 -25.7002 -6.59961 -33.7998 3.10059c-16.6006 20 -41 31.3994 -66.9004 31.3994s-50.2998 -11.5 -66.9004 -31.3994c-8.5 -10.2002 -23.5996 -11.5 -33.7998 -3.10059c-10.2002 8.5 -11.5996 23.6006 -3.09961 33.8008
-c25.7998 30.8994 63.5996 48.5996 103.8 48.5996z" />
-    <glyph glyph-name="meh" unicode="&#xf11a;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
-s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM336 128c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-176c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h176z
-" />
-    <glyph glyph-name="keyboard" unicode="&#xf11c;" horiz-adv-x="576" 
-d="M528 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480zM536 48v288c0 4.41113 -3.58887 8 -8 8h-480c-4.41113 0 -8 -3.58887 -8 -8v-288c0 -4.41113 3.58887 -8 8 -8
-h480c4.41113 0 8 3.58887 8 8zM170 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM266 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28
-c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM362 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM458 178c0 -6.62695 -5.37305 -12 -12 -12h-28
-c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 96c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 96
-c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28
-c6.62695 0 12 -5.37305 12 -12v-28zM218 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM314 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28
-c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM410 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 260c0 -6.62695 -5.37305 -12 -12 -12h-28
-c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM408 102c0 -6.62695 -5.37305 -12 -12 -12h-216c-6.62695 0 -12 5.37305 -12 12v16c0 6.62695 5.37305 12 12 12h216c6.62695 0 12 -5.37305 12 -12v-16z" />
-    <glyph glyph-name="calendar" unicode="&#xf133;" horiz-adv-x="448" 
-d="M400 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12
-v-52h48zM394 -16c3.2998 0 6 2.7002 6 6v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340z" />
-    <glyph glyph-name="play-circle" unicode="&#xf144;" 
-d="M371.7 210c16.3994 -9.2002 16.3994 -32.9004 0 -42l-176 -101c-15.9004 -8.7998 -35.7002 2.59961 -35.7002 21v208c0 18.5 19.9004 29.7998 35.7002 21zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192
-c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200z" />
-    <glyph glyph-name="minus-square" unicode="&#xf146;" horiz-adv-x="448" 
-d="M108 164c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h232c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-232zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352
-c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="check-square" unicode="&#xf14a;" horiz-adv-x="448" 
-d="M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM400 16v352h-352v-352h352zM364.136 257.724l-172.589 -171.204
-c-4.70508 -4.66699 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66699 4.70508 -4.63672 12.3037 0.0693359 16.9717l22.7188 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l59.792 -60.2773l141.353 140.217
-c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0683594l22.5361 -22.7178c4.66699 -4.70605 4.63672 -12.3047 -0.0683594 -16.9717z" />
-    <glyph glyph-name="share-square" unicode="&#xf14d;" horiz-adv-x="576" 
-d="M561.938 289.94c18.75 -18.7402 18.75 -49.1406 0 -67.8809l-143.998 -144c-29.9727 -29.9727 -81.9404 -9.05273 -81.9404 33.9404v53.7998c-101.266 -7.83691 -99.625 -31.6406 -84.1104 -78.7598c14.2285 -43.0889 -33.4736 -79.248 -71.0195 -55.7402
-c-51.6924 32.3057 -84.8701 83.0635 -84.8701 144.76c0 39.3408 12.2197 72.7402 36.3301 99.3008c19.8398 21.8398 47.7402 38.4697 82.9102 49.4199c36.7295 11.4395 78.3096 16.1094 120.76 17.9893v57.1982c0 42.9355 51.9258 63.9541 81.9404 33.9404zM384 112l144 144
-l-144 144v-104.09c-110.86 -0.90332 -240 -10.5166 -240 -119.851c0 -52.1396 32.79 -85.6094 62.3096 -104.06c-39.8174 120.65 48.999 141.918 177.69 143.84v-103.84zM408.74 27.5068c7.4375 2.125 14.5508 5.30566 20.9736 9.30273
-c7.97656 4.95215 18.2861 -0.825195 18.2861 -10.2139v-42.5957c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h132c6.62695 0 12 -5.37305 12 -12v-4.48633c0 -4.91699 -2.9873 -9.36914 -7.56934 -11.1514
-c-13.7021 -5.33105 -26.3955 -11.5371 -38.0498 -18.585c-1.82715 -1.11523 -3.98633 -1.76953 -6.28027 -1.77734h-86.1006c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340c3.31152 0 6 2.68848 6 6v25.9658c0 5.37012 3.5791 10.0596 8.74023 11.541z
-" />
-    <glyph glyph-name="compass" unicode="&#xf14e;" horiz-adv-x="496" 
-d="M347.94 318.14c16.6592 7.61035 33.8096 -9.54004 26.1992 -26.1992l-65.9697 -144.341c-3.19238 -6.9834 -8.78613 -12.5771 -15.7695 -15.7695l-144.341 -65.9697c-16.6592 -7.61035 -33.8096 9.5498 -26.1992 26.1992l65.9697 144.341
-c3.19238 6.9834 8.78613 12.5771 15.7695 15.7695zM270.58 169.42c12.4697 12.4697 12.4697 32.6904 0 45.1602s-32.6904 12.4697 -45.1602 0s-12.4697 -32.6904 0 -45.1602s32.6904 -12.4697 45.1602 0zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248
-s-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z" />
-    <glyph glyph-name="caret-square-down" unicode="&#xf150;" horiz-adv-x="448" 
-d="M125.1 240h197.801c10.6992 0 16.0996 -13 8.5 -20.5l-98.9004 -98.2998c-4.7002 -4.7002 -12.2002 -4.7002 -16.9004 0l-98.8994 98.2998c-7.7002 7.5 -2.2998 20.5 8.39941 20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
-c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="caret-square-up" unicode="&#xf151;" horiz-adv-x="448" 
-d="M322.9 144h-197.801c-10.6992 0 -16.0996 13 -8.5 20.5l98.9004 98.2998c4.7002 4.7002 12.2002 4.7002 16.9004 0l98.8994 -98.2998c7.7002 -7.5 2.2998 -20.5 -8.39941 -20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
-c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="caret-square-right" unicode="&#xf152;" horiz-adv-x="448" 
-d="M176 93.0996v197.801c0 10.6992 13 16.0996 20.5 8.5l98.2998 -98.9004c4.7002 -4.7002 4.7002 -12.2002 0 -16.9004l-98.2998 -98.8994c-7.5 -7.7002 -20.5 -2.2998 -20.5 8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
-c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="file" unicode="&#xf15b;" horiz-adv-x="384" 
-d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
-h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416z" />
-    <glyph glyph-name="file-alt" unicode="&#xf15c;" horiz-adv-x="384" 
-d="M288 200v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v28c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM276 128c6.59961 0 12 -5.40039 12 -12v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12
-v28c0 6.59961 5.40039 12 12 12h168zM384 316.1v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l83.9004 -83.9004c9 -8.90039 14.0996 -21.2002 14.0996 -33.9004z
-M256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288z" />
-    <glyph glyph-name="thumbs-up" unicode="&#xf164;" 
-d="M466.27 161.31c4.6748 -22.6465 0.864258 -44.5371 -8.98926 -62.9893c2.95898 -23.8682 -4.02148 -48.5654 -17.3398 -66.9902c-0.954102 -55.9072 -35.8232 -95.3301 -112.94 -95.3301c-7 0 -15 0.00976562 -22.2197 0.00976562
-c-102.742 0 -133.293 38.9395 -177.803 39.9404c-3.56934 -13.7764 -16.085 -23.9502 -30.9775 -23.9502h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h98.7598c19.1455 16.9531 46.0137 60.6533 68.7598 83.4004
-c13.667 13.667 10.1533 108.6 71.7607 108.6c57.5801 0 95.2695 -31.9355 95.2695 -104.73c0 -18.4092 -3.92969 -33.7295 -8.84961 -46.5391h36.4795c48.6025 0 85.8203 -41.5654 85.8203 -85.5801c0 -19.1504 -4.95996 -34.9902 -13.7305 -49.8408zM404.52 107.48
-c21.5811 20.3838 18.6992 51.0645 5.21094 65.6191c9.44922 0 22.3594 18.9102 22.2695 37.8105c-0.0898438 18.9102 -16.71 37.8203 -37.8203 37.8203h-103.989c0 37.8193 28.3594 55.3691 28.3594 94.5391c0 23.75 0 56.7305 -47.2695 56.7305
-c-18.9102 -18.9102 -9.45996 -66.1797 -37.8203 -94.54c-26.5596 -26.5703 -66.1797 -97.46 -94.54 -97.46h-10.9199v-186.17c53.6113 0 100.001 -37.8203 171.64 -37.8203h37.8203c35.5117 0 60.8203 17.1201 53.1201 65.9004
-c15.2002 8.16016 26.5 36.4395 13.9395 57.5703zM88 16c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z" />
-    <glyph glyph-name="thumbs-down" unicode="&#xf165;" 
-d="M466.27 222.69c8.77051 -14.8506 13.7305 -30.6904 13.7305 -49.8408c0 -44.0146 -37.2178 -85.5801 -85.8203 -85.5801h-36.4795c4.91992 -12.8096 8.84961 -28.1299 8.84961 -46.5391c0 -72.7949 -37.6895 -104.73 -95.2695 -104.73
-c-61.6074 0 -58.0938 94.9326 -71.7607 108.6c-22.7461 22.7471 -49.6133 66.4473 -68.7598 83.4004h-7.05176c-5.5332 -9.56152 -15.8662 -16 -27.708 -16h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h64c8.11328 0 15.5146 -3.02539 21.1553 -8
-h10.8447c40.9971 0 73.1953 39.9902 176.78 39.9902c7.21973 0 15.2197 0.00976562 22.2197 0.00976562c77.1172 0 111.986 -39.4229 112.94 -95.3301c13.3184 -18.4248 20.2979 -43.1221 17.3398 -66.9902c9.85352 -18.4521 13.6641 -40.3428 8.98926 -62.9893zM64 152
-c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM394.18 135.27c21.1104 0 37.7305 18.9102 37.8203 37.8203c0.0898438 18.9004 -12.8203 37.8105 -22.2695 37.8105c13.4883 14.5547 16.3701 45.2354 -5.21094 65.6191
-c12.5605 21.1309 1.26074 49.4102 -13.9395 57.5703c7.7002 48.7803 -17.6084 65.9004 -53.1201 65.9004h-37.8203c-71.6387 0 -118.028 -37.8203 -171.64 -37.8203v-186.17h10.9199c28.3604 0 67.9805 -70.8896 94.54 -97.46
-c28.3604 -28.3604 18.9102 -75.6299 37.8203 -94.54c47.2695 0 47.2695 32.9805 47.2695 56.7305c0 39.1699 -28.3594 56.7197 -28.3594 94.5391h103.989z" />
-    <glyph glyph-name="sun" unicode="&#xf185;" 
-d="M494.2 226.1c11.2002 -7.59961 17.7998 -20.0996 17.8994 -33.6992c0 -13.4004 -6.69922 -26 -17.7998 -33.5l-59.7998 -40.5l13.7002 -71c2.5 -13.2002 -1.60059 -26.8008 -11.1006 -36.3008s-22.8994 -13.7998 -36.2998 -11.0996l-70.8994 13.7002l-40.4004 -59.9004
-c-7.5 -11.0996 -20.0996 -17.7998 -33.5 -17.7998s-26 6.7002 -33.5 17.9004l-40.4004 59.8994l-70.7998 -13.7002c-13.3994 -2.59961 -26.7998 1.60059 -36.2998 11.1006s-13.7002 23.0996 -11.0996 36.2998l13.6992 71l-59.7998 40.5
-c-11.0996 7.5 -17.7998 20 -17.7998 33.5s6.59961 26 17.7998 33.5996l59.7998 40.5l-13.6992 71c-2.60059 13.2002 1.59961 26.7002 11.0996 36.3008c9.5 9.59961 23 13.6992 36.2998 11.1992l70.7998 -13.6992l40.4004 59.8994c15.0996 22.2998 51.9004 22.2998 67 0
-l40.4004 -59.8994l70.8994 13.6992c13 2.60059 26.6006 -1.59961 36.2002 -11.0996c9.5 -9.59961 13.7002 -23.2002 11.0996 -36.4004l-13.6992 -71zM381.3 140.5l76.7998 52.0996l-76.7998 52l17.6006 91.1006l-91 -17.6006l-51.9004 76.9004l-51.7998 -76.7998
-l-91 17.5996l17.5996 -91.2002l-76.7998 -52l76.7998 -52l-17.5996 -91.1992l90.8994 17.5996l51.9004 -77l51.9004 76.9004l91 -17.6006zM256 296c57.2998 0 104 -46.7002 104 -104s-46.7002 -104 -104 -104s-104 46.7002 -104 104s46.7002 104 104 104zM256 136
-c30.9004 0 56 25.0996 56 56s-25.0996 56 -56 56s-56 -25.0996 -56 -56s25.0996 -56 56 -56z" />
-    <glyph glyph-name="moon" unicode="&#xf186;" 
-d="M279.135 -64c-141.424 0 -256 114.64 -256 256c0 141.425 114.641 256 256 256c16.0342 -0.00292969 31.5078 -1.46875 46.7354 -4.27734c44.0205 -8.13086 53.7666 -66.8691 15.0215 -88.9189c-41.374 -23.5439 -67.4336 -67.4121 -67.4336 -115.836
-c0 -83.5234 75.9238 -146.475 158.272 -130.792c43.6904 8.32129 74.5186 -42.5693 46.248 -77.4004c-47.8613 -58.9717 -120.088 -94.7754 -198.844 -94.7754zM279.135 400c-114.875 0 -208 -93.125 -208 -208s93.125 -208 208 -208
-c65.2314 0 123.439 30.0361 161.575 77.0244c-111.611 -21.2568 -215.252 64.0957 -215.252 177.943c0 67.5127 36.9326 126.392 91.6934 157.555c-12.3271 2.27637 -25.0312 3.47754 -38.0166 3.47754z" />
-    <glyph glyph-name="caret-square-left" unicode="&#xf191;" horiz-adv-x="448" 
-d="M272 290.9v-197.801c0 -10.6992 -13 -16.0996 -20.5 -8.5l-98.2998 98.9004c-4.7002 4.7002 -4.7002 12.2002 0 16.9004l98.2998 98.8994c7.5 7.7002 20.5 2.2998 20.5 -8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
-c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="dot-circle" unicode="&#xf192;" 
-d="M256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z
-M256 272c44.1826 0 80 -35.8174 80 -80s-35.8174 -80 -80 -80s-80 35.8174 -80 80s35.8174 80 80 80z" />
-    <glyph glyph-name="building" unicode="&#xf1ad;" horiz-adv-x="448" 
-d="M128 300v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM268 288c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40
-c0 -6.59961 -5.40039 -12 -12 -12h-40zM140 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM268 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40
-c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM192 108c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM268 96c-6.59961 0 -12 5.40039 -12 12v40
-c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.59961 5.40039 12 12 12h19.5v440c0 13.2998 10.7002 24 24 24h337c13.2998 0 24 -10.7002 24 -24v-440h19.5
-c6.59961 0 12 -5.40039 12 -12zM79.5 -15h112.5v67c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-67h112.5v414l-288.5 1z" />
-    <glyph glyph-name="file-pdf" unicode="&#xf1c1;" horiz-adv-x="384" 
-d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
-h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM298.2 127.7c10.5 -10.5 8 -38.7002 -17.5 -38.7002c-14.7998 0 -36.9004 6.7998 -55.7998 17c-21.6006 -3.59961 -46 -12.7002 -68.4004 -20.0996c-50.0996 -86.4004 -79.4004 -47 -76.0996 -31.2002
-c4 20 31 35.8994 51 46.2002c10.5 18.3994 25.3994 50.5 35.3994 74.3994c-7.39941 28.6006 -11.3994 51 -7 67.1006c4.7998 17.6992 38.4004 20.2998 42.6006 -5.90039c4.69922 -15.4004 -1.5 -39.9004 -5.40039 -56c8.09961 -21.2998 19.5996 -35.7998 36.7998 -46.2998
-c17.4004 2.2002 52.2002 5.5 64.4004 -6.5zM100.1 49.9004c0 -0.700195 11.4004 4.69922 30.4004 35c-5.90039 -5.5 -25.2998 -21.3008 -30.4004 -35zM181.7 240.5c-2.5 0 -2.60059 -26.9004 1.7998 -40.7998c4.90039 8.7002 5.59961 40.7998 -1.7998 40.7998zM157.3 103.9
-c15.9004 6.09961 34 14.8994 54.7998 19.1992c-11.1992 8.30078 -21.7998 20.4004 -30.0996 35.5c-6.7002 -17.6992 -15 -37.7998 -24.7002 -54.6992zM288.9 108.9c3.59961 2.39941 -2.2002 10.3994 -37.3008 7.7998c32.3008 -13.7998 37.3008 -7.7998 37.3008 -7.7998z" />
-    <glyph glyph-name="file-word" unicode="&#xf1c2;" horiz-adv-x="384" 
-d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
-h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM268.1 192v0.200195h15.8008c7.7998 0 13.5 -7.2998 11.5996 -14.9004c-4.2998 -17 -13.7002 -54.0996 -34.5 -136c-1.2998 -5.39941 -6.09961 -9.09961 -11.5996 -9.09961h-24.7002
-c-5.5 0 -10.2998 3.7998 -11.6006 9.09961c-5.2998 20.9004 -17.7998 71 -17.8994 71.4004l-2.90039 17.2998c-0.5 -5.2998 -1.5 -11.0996 -3 -17.2998l-17.8994 -71.4004c-1.30078 -5.39941 -6.10059 -9.09961 -11.6006 -9.09961h-25.2002
-c-5.59961 0 -10.3994 3.7002 -11.6992 9.09961c-6.5 26.5 -25.2002 103.4 -33.2002 136c-1.7998 7.5 3.89941 14.7998 11.7002 14.7998h16.7998c5.7998 0 10.7002 -4.09961 11.7998 -9.69922c5 -25.7002 18.4004 -93.8008 19.0996 -99
-c0.300781 -1.7002 0.400391 -3.10059 0.5 -4.2002c0.800781 7.5 0.400391 4.7002 24.8008 103.7c1.39941 5.2998 6.19922 9.09961 11.6992 9.09961h13.3008c5.59961 0 10.3994 -3.7998 11.6992 -9.2002c23.9004 -99.7002 22.8008 -94.3994 23.6006 -99.5
-c0.299805 -1.7002 0.5 -3.09961 0.700195 -4.2998c0.599609 8.09961 0.399414 5.7998 21 103.5c1.09961 5.5 6 9.5 11.6992 9.5z" />
-    <glyph glyph-name="file-excel" unicode="&#xf1c3;" horiz-adv-x="384" 
-d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
-h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM260 224c9.2002 0 15 -10 10.2998 -18c-16 -27.5 -45.5996 -76.9004 -46.2998 -78l46.4004 -78c4.59961 -8 -1.10059 -18 -10.4004 -18h-28.7998c-4.40039 0 -8.5 2.40039 -10.6006 6.2998
-c-22.6992 41.7998 -13.6992 27.5 -28.5996 57.7002c-5.59961 -12.7002 -6.90039 -17.7002 -28.5996 -57.7002c-2.10059 -3.89941 -6.10059 -6.2998 -10.5 -6.2998h-28.9004c-9.2998 0 -15.0996 10 -10.4004 18l46.3008 78l-46.3008 78c-4.59961 8 1.10059 18 10.4004 18
-h28.9004c4.39941 0 8.5 -2.40039 10.5996 -6.2998c21.7002 -40.4004 14.7002 -28.6006 28.5996 -57.7002c6.40039 15.2998 10.6006 24.5996 28.6006 57.7002c2.09961 3.89941 6.09961 6.2998 10.5 6.2998h28.7998z" />
-    <glyph glyph-name="file-powerpoint" unicode="&#xf1c4;" horiz-adv-x="384" 
-d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
-h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM120 44v168c0 6.59961 5.40039 12 12 12h69.2002c36.7002 0 62.7998 -27 62.7998 -66.2998c0 -74.2998 -68.7002 -66.5 -95.5 -66.5v-47.2002c0 -6.59961 -5.40039 -12 -12 -12h-24.5c-6.59961 0 -12 5.40039 -12 12z
-M168.5 131.4h23c7.90039 0 13.9004 2.39941 18.0996 7.19922c8.5 9.80078 8.40039 28.5 0.100586 37.8008c-4.10059 4.59961 -9.90039 7 -17.4004 7h-23.8994v-52h0.0996094z" />
-    <glyph glyph-name="file-image" unicode="&#xf1c5;" horiz-adv-x="384" 
-d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
-h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM80 32v64l39.5 39.5c4.7002 4.7002 12.2998 4.7002 17 0l39.5 -39.5l87.5 87.5c4.7002 4.7002 12.2998 4.7002 17 0l23.5 -23.5v-128h-224zM128 272c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48
-s21.5 48 48 48z" />
-    <glyph glyph-name="file-archive" unicode="&#xf1c6;" horiz-adv-x="384" 
-d="M128.3 288h32v-32h-32v32zM192.3 384v-32h-32v32h32zM128.3 352h32v-32h-32v32zM192.3 320v-32h-32v32h32zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1
-c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-48.2998v-16h-32v16h-79.7002v-416h288zM194.2 182.3l17.2998 -87.7002c6.40039 -32.3994 -18.4004 -62.5996 -51.5 -62.5996
-c-33.2002 0 -58 30.4004 -51.4004 62.9004l19.7002 97.0996v32h32v-32h22.1006c5.7998 0 10.6992 -4.09961 11.7998 -9.7002zM160.3 57.9004c17.9004 0 32.4004 12.0996 32.4004 27c0 14.8994 -14.5 27 -32.4004 27c-17.8994 0 -32.3994 -12.1006 -32.3994 -27
-c0 -14.9004 14.5 -27 32.3994 -27zM192.3 256v-32h-32v32h32z" />
-    <glyph glyph-name="file-audio" unicode="&#xf1c7;" horiz-adv-x="384" 
-d="M369.941 350.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM332.118 320
-l-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM192 60.0244c0 -10.6914 -12.9258 -16.0459 -20.4854 -8.48535l-35.5146 35.9746h-28c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h28
-l35.5146 36.9473c7.56055 7.56055 20.4854 2.20605 20.4854 -8.48535v-135.951zM233.201 107.154c9.05078 9.29688 9.05957 24.1328 0.000976562 33.4385c-22.1494 22.752 12.2344 56.2461 34.3945 33.4814c27.1982 -27.9404 27.2119 -72.4443 0.000976562 -100.401
-c-21.793 -22.3857 -56.9463 10.3154 -34.3965 33.4814z" />
-    <glyph glyph-name="file-video" unicode="&#xf1c8;" horiz-adv-x="384" 
-d="M369.941 350.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM332.118 320
-l-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM276.687 195.303c10.0049 10.0049 27.3135 2.99707 27.3135 -11.3135v-111.976c0 -14.2939 -17.2959 -21.332 -27.3135 -11.3135l-52.6865 52.6738v-37.374
-c0 -11.0459 -8.9541 -20 -20 -20h-104c-11.0459 0 -20 8.9541 -20 20v104c0 11.0459 8.9541 20 20 20h104c11.0459 0 20 -8.9541 20 -20v-37.374z" />
-    <glyph glyph-name="file-code" unicode="&#xf1c9;" horiz-adv-x="384" 
-d="M149.9 98.9004c3.5 -3.30078 3.69922 -8.90039 0.399414 -12.4004l-17.3994 -18.5996c-1.60059 -1.80078 -4 -2.80078 -6.40039 -2.80078c-2.2002 0 -4.40039 0.900391 -6 2.40039l-57.7002 54.0996c-3.7002 3.40039 -3.7002 9.30078 0 12.8008l57.7002 54.0996
-c3.40039 3.2998 9 3.2002 12.4004 -0.400391l17.3994 -18.5996l0.200195 -0.200195c3.2002 -3.59961 2.7998 -9.2002 -0.799805 -12.3994l-32.7998 -28.9004l32.7998 -28.9004zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288
-c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288zM209.6 234l24.4004 -7
-c4.7002 -1.2998 7.40039 -6.2002 6 -10.9004l-54.7002 -188.199c-1.2998 -4.60059 -6.2002 -7.40039 -10.8994 -6l-24.4004 7.09961c-4.7002 1.2998 -7.40039 6.2002 -6 10.9004l54.7002 188.1c1.39941 4.7002 6.2002 7.40039 10.8994 6zM234.1 157.1
-c-3.5 3.30078 -3.69922 8.90039 -0.399414 12.4004l17.3994 18.5996c3.30078 3.60059 8.90039 3.7002 12.4004 0.400391l57.7002 -54.0996c3.7002 -3.40039 3.7002 -9.30078 0 -12.8008l-57.7002 -54.0996c-3.5 -3.2998 -9.09961 -3.09961 -12.4004 0.400391
-l-17.3994 18.5996l-0.200195 0.200195c-3.2002 3.59961 -2.7998 9.2002 0.799805 12.3994l32.7998 28.9004l-32.7998 28.9004z" />
-    <glyph glyph-name="life-ring" unicode="&#xf1cd;" 
-d="M256 -56c-136.967 0 -248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248s-111.033 -248 -248 -248zM152.602 20.7197c63.2178 -38.3184 143.579 -38.3184 206.797 0l-53.4111 53.4111c-31.8467 -13.5215 -68.168 -13.5059 -99.9746 0zM336 192
-c0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80zM427.28 88.6016c38.3184 63.2178 38.3184 143.579 0 206.797l-53.4111 -53.4111c13.5215 -31.8467 13.5049 -68.168 0 -99.9746zM359.397 363.28
-c-63.2168 38.3184 -143.578 38.3184 -206.796 0l53.4111 -53.4111c31.8457 13.5215 68.167 13.5049 99.9736 0zM84.7197 295.398c-38.3184 -63.2178 -38.3184 -143.579 0 -206.797l53.4111 53.4111c-13.5215 31.8467 -13.5059 68.168 0 99.9746z" />
-    <glyph glyph-name="paper-plane" unicode="&#xf1d8;" 
-d="M440 441.5c34.5996 19.9004 77.5996 -8.7998 71.5 -48.9004l-59.4004 -387.199c-2.2998 -14.5 -11.0996 -27.3008 -23.8994 -34.5c-7.2998 -4.10059 -15.4004 -6.2002 -23.6006 -6.2002c-6.19922 0 -12.3994 1.2002 -18.2998 3.59961l-111.899 46.2002l-43.8008 -59.0996
-c-27.3994 -36.9004 -86.5996 -17.8008 -86.5996 28.5996v84.4004l-114.3 47.2998c-36.7998 15.0996 -40.1006 66 -5.7002 85.8994zM192 -16l36.5996 49.5l-36.5996 15.0996v-64.5996zM404.6 12.7002l59.4004 387.3l-416 -240l107.8 -44.5996l211.5 184.3
-c14.2002 12.2998 34.4004 -5.7002 23.7002 -21.2002l-140.2 -202.3z" />
-    <glyph glyph-name="futbol" unicode="&#xf1e3;" horiz-adv-x="496" 
-d="M483.8 268.6c42.2998 -130.199 -29 -270.1 -159.2 -312.399c-25.5 -8.2998 -51.2998 -12.2002 -76.6992 -12.2002c-104.5 0 -201.7 66.5996 -235.7 171.4c-42.2998 130.199 29 270.1 159.2 312.399c25.5 8.2998 51.2998 12.2002 76.6992 12.2002
-c104.5 0 201.7 -66.5996 235.7 -171.4zM409.3 74.9004c6.10059 8.39941 12.1006 16.8994 16.7998 26.1992c14.3008 28.1006 21.5 58.5 21.7002 89.2002l-38.8994 36.4004l-71.1006 -22.1006l-24.3994 -75.1992l43.6992 -60.9004zM409.3 310.3
-c-24.5 33.4004 -58.7002 58.4004 -97.8994 71.4004l-47.4004 -26.2002v-73.7998l64.2002 -46.5l70.7002 22zM184.9 381.6c-39.9004 -13.2998 -73.5 -38.5 -97.8008 -71.8994l10.1006 -52.5l70.5996 -22l64.2002 46.5v73.7998zM139 68.5l43.5 61.7002l-24.2998 74.2998
-l-71.1006 22.2002l-39 -36.4004c0.5 -55.7002 23.4004 -95.2002 37.8008 -115.3zM187.2 1.5c64.0996 -20.4004 115.5 -1.7998 121.7 0l22.3994 48.0996l-44.2998 61.7002h-78.5996l-43.6006 -61.7002z" />
-    <glyph glyph-name="newspaper" unicode="&#xf1ea;" horiz-adv-x="576" 
-d="M552 384c13.2549 0 24 -10.7451 24 -24v-336c0 -13.2549 -10.7451 -24 -24 -24h-496c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h42.752c6.60547 18.623 24.3896 32 45.248 32h440zM48 56c0 -4.41113 3.58887 -8 8 -8s8 3.58887 8 8v248h-16v-248z
-M528 48v288h-416v-280c0 -2.7168 -0.204102 -5.38574 -0.578125 -8h416.578zM172 168c-6.62695 0 -12 5.37305 -12 12v96c0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-96c0 -6.62695 -5.37305 -12 -12 -12h-136zM200 248v-40h80v40h-80zM160 108v24
-c0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-136c-6.62695 0 -12 5.37305 -12 12zM352 108v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104
-c-6.62695 0 -12 5.37305 -12 12zM352 252v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12zM352 180v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24
-c0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12z" />
-    <glyph glyph-name="bell-slash" unicode="&#xf1f6;" horiz-adv-x="640" 
-d="M633.99 -23.0195c6.91016 -5.52051 8.01953 -15.5908 2.5 -22.4902l-10 -12.4902c-5.53027 -6.88965 -15.5898 -8.00977 -22.4902 -2.49023l-598 467.51c-6.90039 5.52051 -8.01953 15.5908 -2.49023 22.4902l10 12.4902
-c5.52051 6.90039 15.5898 8.00977 22.4902 2.49023zM163.53 80h182.84l61.3994 -48h-279.659c-19.1201 0 -31.9902 15.5996 -32.1006 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c18.3701 19.7402 51.5703 49.6904 54.8398 140.42l45.4697 -35.5498
-c-6.91992 -54.7803 -24.6895 -88.5498 -41.3994 -110.58zM320 352c-23.3496 0 -45 -7.17969 -62.9404 -19.4004l-38.1699 29.8408c19.6807 15.7793 43.1104 27.3096 69.1299 32.7197v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398
-c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -41.3604 6.03027 -70.7197 14.3398 -92.8496l-59.5293 46.54c-1.63086 13.96 -2.77051 28.8896 -2.79004 45.7295c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112zM320 -64
-c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z" />
-    <glyph glyph-name="copyright" unicode="&#xf1f9;" 
-d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z
-M363.351 93.0645c-9.61328 -9.71289 -45.5293 -41.3965 -104.064 -41.3965c-82.4297 0 -140.484 61.4248 -140.484 141.567c0 79.1514 60.2754 139.4 139.763 139.4c55.5303 0 88.7373 -26.6201 97.5928 -34.7783c2.37793 -2.1875 3.86914 -5.3252 3.86914 -8.80762
-c0 -2.39746 -0.717773 -4.64258 -1.93359 -6.51465l-18.1543 -28.1133c-3.8418 -5.9502 -11.9668 -7.28223 -17.499 -2.9209c-8.5957 6.77637 -31.8145 22.5381 -61.708 22.5381c-48.3037 0 -77.916 -35.3301 -77.916 -80.082c0 -41.5889 26.8877 -83.6924 78.2764 -83.6924
-c32.6572 0 56.8428 19.0391 65.7266 27.2256c5.26953 4.85645 13.5957 4.03906 17.8193 -1.73828l19.8652 -27.1699c1.45996 -1.98145 2.32422 -4.42969 2.32422 -7.07715c0 -3.28809 -1.32422 -6.2793 -3.47656 -8.44043z" />
-    <glyph glyph-name="closed-captioning" unicode="&#xf20a;" 
-d="M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM458 48c3.2998 0 6 2.7002 6 6v276c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-276c0 -3.2998 2.7002 -6 6 -6h404z
-M246.9 133.7c1.69922 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.6006 -56.7998 -172.801 -32.0996 -172.801 67.9004c0 97.2998 121.7 119.5 172.5 70.0996c2.10059 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.89941 -3.09961 -6.19922 -4 -9.09961 -1.7002
-c-40.7998 32 -94.5996 14.9004 -94.5996 -31.1992c0 -48 51 -70.5 92.1992 -32.6006c2.80078 2.5 7.10059 2.10059 9.2002 -0.899414zM437.3 133.7c1.7002 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.5996 -56.9004 -172.8 -32.0996 -172.8 67.9004
-c0 97.2998 121.7 119.5 172.5 70.0996c2.09961 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.90039 -3.09961 -6.2002 -4 -9.09961 -1.7002c-40.8008 32 -94.6006 14.9004 -94.6006 -31.1992c0 -48 51 -70.5 92.2002 -32.6006c2.7998 2.5 7.09961 2.10059 9.2002 -0.899414z
-" />
-    <glyph glyph-name="object-group" unicode="&#xf247;" 
-d="M500 320h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v256h-12
-c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM448 384v-32h32v32h-32zM32 384v-32h32v32h-32zM64 0v32
-h-32v-32h32zM480 0v32h-32v-32h32zM440 64v256h-12c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h12zM404 256c6.62695 0 12 -5.37207 12 -12v-168
-c0 -6.62793 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37207 -12 12v52h-84c-6.62695 0 -12 5.37207 -12 12v168c0 6.62793 5.37305 12 12 12h200c6.62695 0 12 -5.37207 12 -12v-52h84zM136 280v-112h144v112h-144zM376 104v112h-56v-76
-c0 -6.62793 -5.37305 -12 -12 -12h-76v-24h144z" />
-    <glyph glyph-name="object-ungroup" unicode="&#xf248;" horiz-adv-x="576" 
-d="M564 224h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v24h-88v-12
-c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h72
-c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-12v-24h88v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM352 384v-32h32v32h-32zM352 128v-32h32v32h-32zM64 96v32h-32v-32h32zM64 352v32
-h-32v-32h32zM96 136h224v12c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-12zM224 0v32h-32v-32h32zM504 64v160h-12c-6.62695 0 -12 5.37305 -12 12v12
-h-88v-88h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-88v-24h12c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h12zM544 0v32h-32v-32h32zM544 256v32h-32v-32h32z" />
-    <glyph glyph-name="sticky-note" unicode="&#xf249;" horiz-adv-x="448" 
-d="M448 99.8936c0 -13.2451 -5.37012 -25.252 -14.0586 -33.9404l-83.8828 -83.8818c-8.68848 -8.68848 -20.6943 -14.0596 -33.9404 -14.0596h-268.118c-26.5098 0 -48 21.4902 -48 48v351.988c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-268.106z
-M320 19.8936l76.1182 76.1182h-76.1182v-76.1182zM400 368h-352v-351.988h224v104c0 13.2549 10.7451 24 24 24h104v223.988z" />
-    <glyph glyph-name="clone" unicode="&#xf24d;" 
-d="M464 448c26.5098 0 48 -21.4902 48 -48v-320c0 -26.5098 -21.4902 -48 -48 -48h-48v-48c0 -26.5098 -21.4902 -48 -48 -48h-320c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h48v48c0 26.5098 21.4902 48 48 48h320zM362 -16c3.31152 0 6 2.68848 6 6
-v42h-224c-26.5098 0 -48 21.4902 -48 48v224h-42c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308zM458 80c3.31152 0 6 2.68848 6 6v308c0 3.31152 -2.68848 6 -6 6h-308c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308z" />
-    <glyph glyph-name="hourglass" unicode="&#xf254;" horiz-adv-x="384" 
-d="M368 400c0 -80.0996 -31.8984 -165.619 -97.1797 -208c64.9912 -42.1934 97.1797 -127.436 97.1797 -208h4c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-360c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h4
-c0 80.0996 31.8994 165.619 97.1797 208c-64.9912 42.1934 -97.1797 127.436 -97.1797 208h-4c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h360c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-4zM64 400
-c0 -101.621 57.3066 -184 128 -184s128 82.3799 128 184h-256zM320 -16c0 101.62 -57.3076 184 -128 184s-128 -82.3799 -128 -184h256z" />
-    <glyph glyph-name="hand-rock" unicode="&#xf255;" 
-d="M408.864 368.948c48.8213 20.751 103.136 -15.0723 103.136 -67.9111v-114.443c0 -15.3955 -3.08887 -30.3906 -9.18262 -44.5674l-42.835 -99.6562c-4.99707 -11.625 -3.98242 -18.8574 -3.98242 -42.3701c0 -17.6729 -14.3271 -32 -32 -32h-252
-c-17.6729 0 -32 14.3271 -32 32c0 27.3301 1.1416 29.2012 -3.11035 32.9033l-97.71 85.0811c-24.8994 21.6797 -39.1797 52.8926 -39.1797 85.6338v56.9531c0 47.4277 44.8457 82.0215 91.0459 71.1807c1.96094 55.751 63.5107 87.8262 110.671 60.8057
-c29.1895 31.0713 78.8604 31.4473 108.334 -0.0214844c32.7051 18.6846 76.4121 10.3096 98.8135 -23.5879zM464 186.594v114.445c0 34.29 -52 33.8232 -52 0.676758c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v26.751
-c0 34.457 -52 33.707 -52 0.676758v-27.4287c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v40.4658c0 34.3525 -52 33.8115 -52 0.677734v-41.1436c0 -8.83594 -7.16406 -16 -16 -16h-7c-8.83594 0 -16 7.16406 -16 16v26.751
-c0 34.4023 -52 33.7744 -52 0.676758v-116.571c0 -8.83105 -7.17773 -15.9961 -16.0078 -15.9961c-4.0166 0 -7.68848 1.48242 -10.499 3.92969l-7 6.09473c-3.37012 2.93457 -5.49316 7.25293 -5.49316 12.0674v41.2275c0 34.2148 -52 33.8857 -52 0.677734v-56.9531
-c0 -18.8555 8.27441 -36.874 22.7002 -49.4365l97.71 -85.0801c12.4502 -10.8398 19.5898 -26.4463 19.5898 -42.8164v-10.2861h220v7.07617c0 13.21 2.65332 26.0791 7.88281 38.25l42.835 99.6553c3.37891 7.82715 5.28223 16.501 5.28223 25.5625v0.0498047z" />
-    <glyph glyph-name="hand-paper" unicode="&#xf256;" horiz-adv-x="448" 
-d="M372.57 335.359c39.9062 5.63281 75.4297 -25.7393 75.4297 -66.3594v-131.564c-0.00292969 -15.7393 -1.80566 -30.9482 -5.19531 -45.666l-30.1836 -130.958c-3.34668 -14.5234 -16.2783 -24.8125 -31.1816 -24.8125h-222.897
-c-10.7539 0 -20.2588 5.28613 -26.0615 13.4316l-119.97 168.415c-21.2441 29.8203 -14.8047 71.3574 14.5498 93.1533c18.7754 13.9395 42.1309 16.2979 62.083 8.87109v126.13c0 44.0547 41.125 75.5439 82.4053 64.9834c23.8926 48.1963 92.3535 50.2471 117.982 0.74707
-c42.5186 11.1445 83.0391 -21.9346 83.0391 -65.5469v-10.8242zM399.997 137.437l-0.00195312 131.563c0 24.9492 -36.5703 25.5508 -36.5703 -0.691406v-76.3086c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v154.184
-c0 25.501 -36.5703 26.3633 -36.5703 0.691406v-154.875c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v188.309c0 25.501 -36.5703 26.3545 -36.5703 0.691406v-189c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16
-v153.309c0 25.501 -36.5713 26.3359 -36.5713 0.691406v-206.494c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832l-27.1279 38.0791c-14.3711 20.1709 -43.833 -2.33496 -29.3945 -22.6045l115.196 -161.697h201.92l27.3252 118.551
-c2.63086 11.417 3.96484 23.1553 3.96484 34.8857z" />
-    <glyph glyph-name="hand-scissors" unicode="&#xf257;" 
-d="M256 -32c-44.9561 0 -77.3428 43.2627 -64.0244 85.8535c-21.6484 13.71 -34.0156 38.7617 -30.3408 65.0068h-87.6348c-40.8037 0 -74 32.8105 -74 73.1406c0 40.3291 33.1963 73.1396 74 73.1396l94 -9.14062l-78.8496 18.6787
-c-38.3076 14.7422 -57.04 57.4707 -41.9424 95.1123c15.0303 37.4736 57.7549 55.7803 95.6416 41.2012l144.929 -55.7568c24.9551 30.5566 57.8086 43.9932 92.2178 24.7324l97.999 -54.8525c20.9746 -11.7393 34.0049 -33.8457 34.0049 -57.6904v-205.702
-c0 -30.7422 -21.4404 -57.5576 -51.7979 -64.5537l-118.999 -27.4268c-4.97168 -1.14648 -10.0889 -1.72949 -15.2031 -1.72949zM256 16.0127l70 -0.000976562c1.52441 0 2.99707 0.174805 4.42285 0.501953l119.001 27.4277
-c8.58203 1.97754 14.5762 9.29102 14.5762 17.7812v205.701c0 6.4873 -3.62109 12.542 -9.44922 15.8047l-98 54.8545c-8.13965 4.55566 -18.668 2.61914 -24.4873 -4.50781l-21.7646 -26.6475c-2.93457 -3.59375 -7.40332 -5.87305 -12.4004 -5.87305
-c-2.02246 0 -3.95703 0.375977 -5.73828 1.06152l-166.549 64.0908c-32.6543 12.5664 -50.7744 -34.5771 -19.2227 -46.7168l155.357 -59.7852c6 -2.30859 10.2539 -8.12402 10.2539 -14.9326v-11.6328c0 -8.83691 -7.16309 -16 -16 -16h-182
-c-34.375 0 -34.4297 -50.2803 0 -50.2803h182c8.83691 0 16 -7.16309 16 -16v-6.85645c0 -8.83691 -7.16309 -16 -16 -16h-28c-25.1221 0 -25.1592 -36.5674 0 -36.5674h28c8.83691 0 16 -7.16211 16 -16v-6.85547c0 -8.83691 -7.16309 -16 -16 -16
-c-25.1201 0 -25.1602 -36.5674 0 -36.5674z" />
-    <glyph glyph-name="hand-lizard" unicode="&#xf258;" horiz-adv-x="576" 
-d="M556.686 157.458c12.6357 -19.4863 19.3145 -42.0615 19.3145 -65.2871v-124.171h-224v71.582l-99.751 38.7871c-2.7832 1.08203 -5.70996 1.63086 -8.69727 1.63086h-131.552c-30.8789 0 -56 25.1211 -56 56c0 48.5234 39.4766 88 88 88h113.709l18.333 48h-196.042
-c-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.084 -12.2725 60.4111 -32.8291zM528 16v76.1709c0 0.0166016 -0.0439453 0.106445 -0.0439453 0.12207c0 14.3945 -4.24219 27.8057 -11.5439 39.0498l-146.358 225.715
-c-4.44336 6.85254 -11.9707 10.9424 -20.1367 10.9424h-293.917c-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709
-c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8h131.552c0.0175781 0 0.0712891 -0.0273438 0.0888672 -0.0273438c9.16992 0 17.9404 -1.72461 26.0039 -4.86621l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z" />
-    <glyph glyph-name="hand-spock" unicode="&#xf259;" 
-d="M501.03 331.824c6.92773 -11.1826 10.9697 -24.4053 10.9697 -38.5146c0 -5.92676 -0.706055 -11.6885 -2.03809 -17.208l-57.623 -241.963c-13.2236 -56.1904 -63.707 -98.1387 -123.908 -98.1387h-0.352539h-107.455
-c-0.0761719 0 -0.193359 0.00195312 -0.270508 0.00195312c-40.9248 0 -78.1475 15.9814 -105.761 42.0391l-91.3652 85.9766c-14.3076 13.4434 -23.2246 32.5547 -23.2246 53.7168c0 19.5254 7.61035 37.2861 20.0254 50.4766
-c5.31836 5.66406 29.875 29.3926 68.1152 21.8477l-24.3594 82.1973c-1.97363 6.64844 -2.97656 13.6836 -2.97656 20.9688c0 38.6953 29.8926 70.4639 67.8262 73.4531c-0.246094 2.45117 -0.34082 4.85547 -0.34082 7.37207c0 34.4199 23.585 63.376 55.4619 71.5752
-c43.248 10.9785 80.5645 -17.7012 89.6602 -53.0723l13.6836 -53.207l4.64648 22.6602c6.99023 33.5186 36.6826 58.8037 72.2373 58.916c8.73438 0 56.625 -3.26953 70.7383 -54.0801c15.0664 0.710938 46.9199 -3.50977 66.3105 -35.0176zM463.271 287.219
-c7.86914 32.9844 -42.1211 45.2695 -50.0859 11.9219l-24.8008 -104.146c-4.38867 -18.4141 -31.7783 -11.8926 -28.0557 6.2168l28.5479 139.166c7.39844 36.0703 -43.3076 45.0703 -50.1182 11.9629l-31.791 -154.971
-c-3.54883 -17.3086 -28.2832 -18.0469 -32.7109 -0.804688l-47.3262 184.035c-8.43359 32.8105 -58.3691 20.2676 -49.8652 -12.8359l42.4414 -165.039c4.81641 -18.7207 -23.3711 -26.9121 -28.9648 -8.00781l-31.3438 105.779
-c-9.6875 32.6465 -59.1191 18.2578 -49.3867 -14.625l36.0137 -121.539c6.59375 -22.2441 10.1777 -45.7803 10.1777 -70.1523c0 -6.54297 -8.05664 -10.9355 -13.4824 -5.82617l-51.123 48.1074c-24.7852 23.4082 -60.0527 -14.1875 -35.2793 -37.4902l91.3691 -85.9805
-c19.0469 -17.9736 44.75 -28.998 72.9795 -28.998h0.157227h107.455c0.0732422 0 0.138672 0.0429688 0.212891 0.0429688c37.5791 0 69.1016 26.1416 77.3564 61.2168z" />
-    <glyph glyph-name="hand-pointer" unicode="&#xf25a;" horiz-adv-x="448" 
-d="M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -5.24023 -0.600586 -10.3037 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286
-c-21.2588 0 -41.3682 10.4102 -53.791 27.8457l-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338
-c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289c27.1934 12.8467 60.3799 5.66992 79.8721 -19.0986zM80.9854 168.303c-14.4004 20.2119 -43.8008 -2.38281 -29.3945 -22.6055l109.712 -154c3.43457 -4.81934 8.92871 -7.69727 14.6973 -7.69727h178.285
-c8.49219 0 15.8037 5.99414 17.7822 14.5762l27.4297 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285v84c0 25.1602 -36.5713 25.1211 -36.5713 0c0 -8.83594 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16406 -16 16v21
-c0 25.1602 -36.5713 25.1201 -36.5713 0v-21c0 -8.83594 -7.16309 -16 -16 -16h-6.85938c-8.83691 0 -16 7.16406 -16 16v35c0 25.1602 -36.5703 25.1201 -36.5703 0v-35c0 -8.83594 -7.16309 -16 -16 -16h-6.85742c-8.83691 0 -16 7.16406 -16 16v175
-c0 25.1602 -36.5713 25.1201 -36.5713 0v-241.493c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832zM176.143 48v96c0 8.83691 6.26855 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM251.571 48v96
-c0 8.83691 6.26758 16 14 16h6c7.73145 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26855 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM327 48v96c0 8.83691 6.26758 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6
-c-7.73242 0 -14 7.16309 -14 16z" />
-    <glyph glyph-name="hand-peace" unicode="&#xf25b;" horiz-adv-x="448" 
-d="M362.146 256.024c42.5908 13.3184 85.8535 -19.0684 85.8535 -64.0244l-0.0117188 -70.001c-0.000976562 -5.24023 -0.600586 -10.3027 -1.72949 -15.2031l-27.4268 -118.999c-6.99707 -30.3564 -33.8105 -51.7969 -64.5547 -51.7969h-205.702
-c-23.8447 0 -45.9502 13.0303 -57.6904 34.0059l-54.8525 97.999c-19.2607 34.4092 -5.82422 67.2617 24.7324 92.2178l-55.7568 144.928c-14.5791 37.8867 3.72754 80.6113 41.2012 95.6416c37.6406 15.0977 80.3691 -3.63477 95.1123 -41.9424l18.6787 -78.8496
-l-9.14062 94c0 40.8037 32.8096 74 73.1396 74s73.1406 -33.1963 73.1406 -74v-87.6348c26.2451 3.6748 51.2959 -8.69238 65.0068 -30.3408zM399.987 122l-0.000976562 70c0 25.1602 -36.5674 25.1201 -36.5674 0c0 -8.83691 -7.16309 -16 -16 -16h-6.85547
-c-8.83789 0 -16 7.16309 -16 16v28c0 25.1592 -36.5674 25.1221 -36.5674 0v-28c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v182c0 34.4297 -50.2803 34.375 -50.2803 0v-182c0 -8.83691 -7.16309 -16 -16 -16h-11.6328
-c-6.80859 0 -12.624 4.25391 -14.9326 10.2539l-59.7842 155.357c-12.1396 31.5518 -59.2842 13.4326 -46.7168 -19.2227l64.0898 -166.549c0.685547 -1.78125 1.07812 -3.71875 1.07812 -5.74121c0 -4.99707 -2.2959 -9.46289 -5.88965 -12.3975l-26.6475 -21.7646
-c-7.12695 -5.81934 -9.06445 -16.3467 -4.50781 -24.4873l54.8535 -98c3.26367 -5.82812 9.31934 -9.44922 15.8057 -9.44922h205.701c8.49121 0 15.8037 5.99414 17.7812 14.5762l27.4277 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285z" />
-    <glyph glyph-name="registered" unicode="&#xf25d;" 
-d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z
-M366.442 73.791c4.40332 -7.99219 -1.37012 -17.791 -10.5107 -17.791h-42.8096c-0.00488281 0 -0.000976562 -0.0126953 -0.00585938 -0.0126953c-4.58594 0 -8.57422 2.58301 -10.5869 6.37305l-47.5156 89.3027h-31.958v-83.6631c0 -6.61719 -5.38281 -12 -12 -12
-h-38.5674c-6.61719 0 -12 5.38281 -12 12v248.304c0 6.61719 5.38281 12 12 12h78.667c71.251 0 101.498 -32.749 101.498 -85.252c0 -31.6123 -15.2148 -59.2969 -39.4824 -73.1758c3.02148 -4.61719 0.225586 0.199219 53.2715 -96.085zM256.933 208.094
-c20.9131 0 32.4307 11.5186 32.4316 32.4316c0 19.5752 -6.5127 31.709 -38.9297 31.709h-27.377v-64.1406h33.875z" />
-    <glyph glyph-name="calendar-plus" unicode="&#xf271;" horiz-adv-x="448" 
-d="M336 156v-24c0 -6.59961 -5.40039 -12 -12 -12h-76v-76c0 -6.59961 -5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12v76h-76c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h76v76c0 6.59961 5.40039 12 12 12h24c6.59961 0 12 -5.40039 12 -12
-v-76h76c6.59961 0 12 -5.40039 12 -12zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40
-c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="calendar-minus" unicode="&#xf272;" horiz-adv-x="448" 
-d="M124 120c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h200c6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12h-200zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52
-c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="calendar-times" unicode="&#xf273;" horiz-adv-x="448" 
-d="M311.7 73.2998l-17 -17c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-53.7002 53.7998l-53.7002 -53.6992c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-17 17c-4.7002 4.69922 -4.7002 12.2998 0 17l53.7002 53.6992l-53.7002 53.7002c-4.7002 4.7002 -4.7002 12.2998 0 17
-l17 17c4.7002 4.7002 12.2998 4.7002 17 0l53.7002 -53.7002l53.7002 53.7002c4.7002 4.7002 12.2998 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17l-53.7998 -53.7998l53.6992 -53.7002c4.80078 -4.7002 4.80078 -12.2998 0.100586 -17zM448 336v-352
-c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10
-v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="calendar-check" unicode="&#xf274;" horiz-adv-x="448" 
-d="M400 384c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40
-c6.62695 0 12 -5.37305 12 -12v-52h48zM394 -16c3.31152 0 6 2.68848 6 6v298h-352v-298c0 -3.31152 2.68848 -6 6 -6h340zM341.151 184.65l-142.31 -141.169c-4.70508 -4.66699 -12.3027 -4.6377 -16.9707 0.0673828l-75.0908 75.6992
-c-4.66699 4.70508 -4.6377 12.3027 0.0673828 16.9707l22.7197 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l44.1035 -44.4609l111.072 110.182c4.70508 4.66699 12.3027 4.63672 16.9707 -0.0683594l22.5361 -22.7178
-c4.66699 -4.70508 4.63672 -12.3027 -0.0683594 -16.9697z" />
-    <glyph glyph-name="map" unicode="&#xf279;" horiz-adv-x="576" 
-d="M560.02 416c8.4502 0 15.9805 -6.83008 15.9805 -16.0195v-346.32c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-151.83 -52.8105c-6.23242 -2.02832 -12.9023 -3.12305 -19.8076 -3.12305c-7.07324 0 -13.8799 1.15039 -20.2422 3.27344l-172 60.71l-170.05 -62.8398
-c-1.99023 -0.790039 -4 -1.16016 -5.95996 -1.16016c-8.45996 0 -15.9902 6.83008 -15.9902 16.0195v346.32c0.00292969 13.4697 8.32617 24.9932 20.1201 29.71l151.83 52.8105c6.43945 2.08984 13.1201 3.13965 19.8096 3.13965
-c7.06641 -0.00292969 13.8789 -1.16602 20.2402 -3.28027l172 -60.7197h0.00976562l170.05 62.8398c1.98047 0.790039 4 1.16016 5.95996 1.16016zM224 357.58v-285.97l128 -45.1904v285.97zM48 29.9502l127.36 47.0801l0.639648 0.229492v286.2l-128 -44.5303v-288.979z
-M528 65.0801v288.97l-127.36 -47.0693l-0.639648 -0.240234v-286.19z" />
-    <glyph glyph-name="comment-alt" unicode="&#xf27a;" 
-d="M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.5996c-2.19922 -1.7002 -4.69922 -2.40039 -7.09961 -2.40039c-6.2002 0 -12 4.90039 -12 12v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z
-M464 96v288c0 8.7998 -7.2002 16 -16 16h-384c-8.7998 0 -16 -7.2002 -16 -16v-288c0 -8.7998 7.2002 -16 16 -16h144v-60l67.2002 50.4004l12.7998 9.59961h160c8.7998 0 16 7.2002 16 16z" />
-    <glyph glyph-name="pause-circle" unicode="&#xf28b;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48
-c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16zM240 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16z" />
-    <glyph glyph-name="stop-circle" unicode="&#xf28d;" 
-d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-160
-c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16z" />
-    <glyph glyph-name="handshake" unicode="&#xf2b5;" horiz-adv-x="640" 
-d="M519.2 320.1h120.8v-255.699h-64c-17.5 0 -31.7998 14.1992 -31.9004 31.6992h-57.8994c-1.7998 -8.19922 -5.2998 -16.0996 -10.9004 -23l-26.2002 -32.2998c-15.7998 -19.3994 -41.8994 -25.5 -64 -16.7998c-13.5 -16.5996 -30.5996 -24 -48.7998 -24
-c-15.0996 0 -28.5996 5.09961 -41.0996 15.9004c-31.7998 -21.9004 -74.7002 -21.3008 -105.601 3.7998l-84.5996 76.3994h-9.09961c-0.100586 -17.5 -14.3008 -31.6992 -31.9004 -31.6992h-64v255.699h118l47.5996 47.6006c10.5 10.3994 24.8008 16.2998 39.6006 16.2998
-h226.8c15.4326 0 29.4326 -6.22168 39.5996 -16.2998zM48 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM438 103.3c2.7002 3.40039 2.2002 8.5 -1.2002 11.2998l-108.2 87.8008l-8.19922 -7.5
-c-40.3008 -36.8008 -86.7002 -11.8008 -101.5 4.39941c-26.7002 29 -25 74.4004 4.39941 101.3l38.7002 35.5h-56.7002c-2 -0.799805 -3.7002 -1.5 -5.7002 -2.2998l-61.6992 -61.5996h-41.9004v-128.101h27.7002l97.2998 -88
-c16.0996 -13.0996 41.4004 -10.5 55.2998 6.60059l15.6006 19.2002l36.7998 -31.5c3 -2.40039 12 -4.90039 18 2.39941l30 36.5l23.8994 -19.3994c3.5 -2.80078 8.5 -2.2002 11.3008 1.19922zM544 144.1v128h-44.7002l-61.7002 61.6006
-c-1.39941 1.5 -3.39941 2.2998 -5.5 2.2998l-83.6992 -0.200195c-10 0 -19.6006 -3.7002 -27 -10.5l-65.6006 -60.0996c-9.7002 -8.7998 -10.5 -24 -1.2002 -33.9004c8.90039 -9.39941 25.1006 -8.7002 34.6006 0l55.2002 50.6006c6.5 5.89941 16.5996 5.5 22.5996 -1
-l10.9004 -11.7002c6 -6.5 5.5 -16.6006 -1 -22.6006l-12.5 -11.3994l102.699 -83.4004c2.80078 -2.2998 5.40039 -4.89941 7.7002 -7.7002h69.2002zM592 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z
-" />
-    <glyph glyph-name="envelope-open" unicode="&#xf2b6;" 
-d="M494.586 283.484c10.6523 -8.80762 17.4141 -22.1064 17.4141 -36.9932v-262.491c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v262.515c0 14.9355 6.80469 28.2705 17.5146 37.0771c4.08008 3.35449 110.688 89.0996 135.15 108.549
-c22.6992 18.1426 60.1299 55.8594 103.335 55.8594c43.4365 0 81.2314 -38.1914 103.335 -55.8594c23.5283 -18.707 130.554 -104.773 135.251 -108.656zM464 -10v253.632c0 0.00195312 0.00390625 0.000976562 0.00390625 0.00292969
-c0 1.88184 -0.869141 3.56152 -2.22754 4.66016c-15.8633 12.8232 -108.793 87.5752 -132.366 106.316c-17.5527 14.0195 -49.7168 45.3887 -73.4102 45.3887c-23.6016 0 -55.2451 -30.8799 -73.4102 -45.3887c-23.5713 -18.7393 -116.494 -93.4795 -132.364 -106.293
-c-1.40918 -1.13965 -2.22559 -2.85254 -2.22559 -4.66504v-253.653c0 -3.31152 2.68848 -6 6 -6h404c3.31152 0 6 2.68848 6 6zM432.009 177.704c4.24902 -5.15918 3.46484 -12.7949 -1.74512 -16.9814c-28.9746 -23.2822 -59.2734 -47.5967 -70.9287 -56.8623
-c-22.6992 -18.1436 -60.1299 -55.8604 -103.335 -55.8604c-43.4521 0 -81.2871 38.2373 -103.335 55.8604c-11.2793 8.9668 -41.7441 33.4131 -70.9268 56.8643c-5.20996 4.1875 -5.99316 11.8223 -1.74512 16.9814l15.2578 18.5283
-c4.17773 5.07227 11.6572 5.84277 16.7793 1.72559c28.6182 -23.001 58.5654 -47.0352 70.5596 -56.5713c17.5527 -14.0195 49.7168 -45.3887 73.4102 -45.3887c23.6016 0 55.2461 30.8799 73.4102 45.3887c11.9941 9.53516 41.9434 33.5703 70.5625 56.5684
-c5.12207 4.11621 12.6016 3.3457 16.7783 -1.72656z" />
-    <glyph glyph-name="address-book" unicode="&#xf2b9;" horiz-adv-x="448" 
-d="M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48
-h320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM368 -16v416h-320v-416h320zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM118.4 64
-c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002
-h-179.199z" />
-    <glyph glyph-name="address-card" unicode="&#xf2bb;" horiz-adv-x="576" 
-d="M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v352h-480v-352h480zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z
-M118.4 64c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002
-c0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199zM360 128c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 192c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112
-c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 256c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112z" />
-    <glyph glyph-name="user-circle" unicode="&#xf2bd;" horiz-adv-x="496" 
-d="M248 344c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM248 200c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8
-c49.7002 0 95.0996 18.2998 130.1 48.4004c-14.8994 23 -40.3994 38.5 -69.5996 39.5c-20.7998 -6.5 -40.5996 -9.60059 -60.5 -9.60059s-39.7002 3.2002 -60.5 9.60059c-29.2002 -0.900391 -54.7002 -16.5 -69.5996 -39.5c35 -30.1006 80.3994 -48.4004 130.1 -48.4004z
-M410.7 76.0996c23.3994 32.7002 37.2998 72.7002 37.2998 115.9c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -43.2002 13.9004 -83.2002 37.2998 -115.9c24.5 31.4004 62.2002 51.9004 105.101 51.9004c10.1992 0 26.0996 -9.59961 57.5996 -9.59961
-c31.5996 0 47.4004 9.59961 57.5996 9.59961c43 0 80.7002 -20.5 105.101 -51.9004z" />
-    <glyph glyph-name="id-badge" unicode="&#xf2c1;" horiz-adv-x="384" 
-d="M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM336 -16v416h-288v-416h288zM144 336c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16
-h-96zM192 160c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM102.4 32c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8
-c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199z" />
-    <glyph glyph-name="id-card" unicode="&#xf2c2;" horiz-adv-x="576" 
-d="M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v288h-480v-288h32.7998c-1 4.5 -0.799805 -3.59961 -0.799805 22.4004c0 31.7998 30.0996 57.5996 67.2002 57.5996
-c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996c0 -26 0.0996094 -17.9004 -0.799805 -22.4004h224.8zM360 96c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16
-c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 160c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 224c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112
-c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM192 128c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z" />
-    <glyph glyph-name="window-maximize" unicode="&#xf2d0;" 
-d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v234h-416v-234c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="window-minimize" unicode="&#xf2d1;" 
-d="M480 -32h-448c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h448c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32z" />
-    <glyph glyph-name="window-restore" unicode="&#xf2d2;" 
-d="M464 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-48v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h48v48c0 26.5 21.5 48 48 48h320zM368 -16v208h-320v-208h320zM464 80v320h-320v-48h224
-c26.5 0 48 -21.5 48 -48v-224h48z" />
-    <glyph glyph-name="snowflake" unicode="&#xf2dc;" horiz-adv-x="448" 
-d="M440.1 92.7998c7.60059 -4.39941 10.1006 -14.2002 5.5 -21.7002l-7.89941 -13.8994c-4.40039 -7.7002 -14 -10.2998 -21.5 -5.90039l-39.2002 23l9.09961 -34.7002c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.5996l-15.2002 -4.09961
-c-8.39941 -2.30078 -17.0996 2.7998 -19.2998 11.2998l-21.2998 81l-71.9004 42.2002v-84.5l58.2998 -59.3008c6.10059 -6.19922 6.10059 -16.3994 0 -22.5996l-11.0996 -11.2998c-6.09961 -6.2002 -16.0996 -6.2002 -22.2002 0l-24.8994 25.3994v-46.0996
-c0 -8.7998 -7 -16 -15.7002 -16h-15.7002c-8.7002 0 -15.7002 7.2002 -15.7002 16v45.9004l-24.8994 -25.4004c-6.10059 -6.2002 -16.1006 -6.2002 -22.2002 0l-11.1006 11.2998c-6.09961 6.2002 -6.09961 16.4004 0 22.6006l58.3008 59.2998v84.5l-71.9004 -42.2002
-l-21.2998 -81c-2.2998 -8.5 -10.9004 -13.5996 -19.2998 -11.2998l-15.2002 4.09961c-8.40039 2.2998 -13.2998 11.1006 -11.1006 19.6006l9.10059 34.6992l-39.2002 -23c-7.5 -4.39941 -17.2002 -1.7998 -21.5 5.90039l-7.90039 13.9004
-c-4.2998 7.69922 -1.69922 17.5 5.80078 21.8994l39.1992 23l-34.0996 9.2998c-8.40039 2.30078 -13.2998 11.1006 -11.0996 19.6006l4.09961 15.5c2.2998 8.5 10.9004 13.5996 19.2998 11.2998l79.7002 -21.7002l71.9004 42.2002l-71.9004 42.2002l-79.7002 -21.7002
-c-8.39941 -2.2998 -17.0996 2.7998 -19.2998 11.2998l-4.09961 15.5c-2.30078 8.5 2.69922 17.2998 11.0996 19.6006l34.0996 9.09961l-39.1992 23c-7.60059 4.5 -10.1006 14.2002 -5.80078 21.9004l7.90039 13.8994c4.40039 7.7002 14 10.2998 21.5 5.90039l39.2002 -23
-l-9.10059 34.7002c-2.2998 8.5 2.7002 17.2998 11.1006 19.5996l15.2002 4.09961c8.39941 2.30078 17.0996 -2.7998 19.2998 -11.2998l21.2998 -81l71.9004 -42.2002v84.5l-58.3008 59.3008c-6.09961 6.19922 -6.09961 16.3994 0 22.5996l11.5 11.2998
-c6.10059 6.2002 16.1006 6.2002 22.2002 0l24.9004 -25.3994v46.0996c0 8.7998 7 16 15.7002 16h15.6992c8.7002 0 15.7002 -7.2002 15.7002 -16v-45.9004l24.9004 25.4004c6.09961 6.2002 16.0996 6.2002 22.2002 0l11.0996 -11.2998
-c6.09961 -6.2002 6.09961 -16.4004 0 -22.6006l-58.2998 -59.2998v-84.5l71.8994 42.2002l21.3008 81c2.2998 8.5 10.8994 13.5996 19.2998 11.2998l15.2002 -4.09961c8.39941 -2.2998 13.2998 -11.1006 11.0996 -19.6006l-9.09961 -34.6992l39.1992 23
-c7.5 4.39941 17.2002 1.7998 21.5 -5.90039l7.90039 -13.9004c4.2998 -7.69922 1.7002 -17.5 -5.7998 -21.8994l-39.2002 -23l34.0996 -9.2998c8.40039 -2.30078 13.3008 -11.1006 11.1006 -19.6006l-4.10059 -15.5c-2.2998 -8.5 -10.8994 -13.5996 -19.2998 -11.2998
-l-79.7002 21.7002l-71.8994 -42.2002l71.7998 -42.2002l79.7002 21.7002c8.39941 2.2998 17.0996 -2.7998 19.2998 -11.2998l4.09961 -15.5c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.6006l-34.0996 -9.2998z" />
-    <glyph glyph-name="trash-alt" unicode="&#xf2ed;" horiz-adv-x="448" 
-d="M268 32c-6.62305 0 -12 5.37695 -12 12v216c0 6.62305 5.37695 12 12 12h24c6.62305 0 12 -5.37695 12 -12v-216c0 -6.62305 -5.37695 -12 -12 -12h-24zM432 368c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-16v-336
-c0 -26.4922 -21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48v336h-16c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h82.4102l34.0195 56.7002c8.39258 13.9844 23.6777 23.2998 41.1602 23.2998h100.82
-c0.0078125 0 -0.015625 0.0517578 -0.0078125 0.0517578c17.4824 0 32.7949 -9.36719 41.1875 -23.3516l34 -56.7002h82.4102zM171.84 397.09l-17.4502 -29.0898h139.221l-17.46 29.0898c-1.0498 1.74707 -2.95898 2.91016 -5.14355 2.91016h-0.00683594h-94
-c-0.00585938 0 -0.00683594 0.00683594 -0.0126953 0.00683594c-2.18457 0 -4.09766 -1.16992 -5.14746 -2.91699zM368 -16v336h-288v-336h288zM156 32c-6.62305 0 -12 5.37695 -12 12v216c0 6.62305 5.37695 12 12 12h24c6.62305 0 12 -5.37695 12 -12v-216
-c0 -6.62305 -5.37695 -12 -12 -12h-24z" />
-    <glyph glyph-name="images" unicode="&#xf302;" horiz-adv-x="576" 
-d="M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-48h-10c-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v10h48zM522 368h-372
-c-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v244c0 3.31152 -2.68848 6 -6 6zM528 416c26.5098 0 48 -21.4902 48 -48v-256c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256
-c0 26.5098 21.4902 48 48 48h384zM264 304c0 -22.0908 -17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40s40 -17.9092 40 -40zM192 208l39.5146 39.5146c4.68652 4.68652 12.2842 4.68652 16.9717 0l39.5137 -39.5146l103.515 103.515
-c4.68652 4.68652 12.2842 4.68652 16.9717 0l71.5137 -71.5146v-80h-288v48z" />
-    <glyph glyph-name="clipboard" unicode="&#xf328;" horiz-adv-x="384" 
-d="M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24
-s-10.7002 24 -24 24zM336 -10v340c0 3.2998 -2.7002 6 -6 6h-42v-36c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v36h-42c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h276c3.2998 0 6 2.7002 6 6z" />
-    <glyph glyph-name="arrow-alt-circle-down" unicode="&#xf358;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM224 308c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-116
-h67c10.7002 0 16.0996 -12.9004 8.5 -20.5l-99 -99c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-99 99c-7.5 7.59961 -2.2002 20.5 8.5 20.5h67v116z" />
-    <glyph glyph-name="arrow-alt-circle-left" unicode="&#xf359;" 
-d="M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM456 192c0 110.5 -89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200zM384 212v-40c0 -6.59961 -5.40039 -12 -12 -12h-116v-67
-c0 -10.7002 -12.9004 -16 -20.5 -8.5l-99 99c-4.7002 4.7002 -4.7002 12.2998 0 17l99 99c7.59961 7.59961 20.5 2.2002 20.5 -8.5v-67h116c6.59961 0 12 -5.40039 12 -12z" />
-    <glyph glyph-name="arrow-alt-circle-right" unicode="&#xf35a;" 
-d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM128 172v40c0 6.59961 5.40039 12 12 12h116v67
-c0 10.7002 12.9004 16 20.5 8.5l99 -99c4.7002 -4.7002 4.7002 -12.2998 0 -17l-99 -99c-7.59961 -7.59961 -20.5 -2.2002 -20.5 8.5v67h-116c-6.59961 0 -12 5.40039 -12 12z" />
-    <glyph glyph-name="arrow-alt-circle-up" unicode="&#xf35b;" 
-d="M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM256 392c-110.5 0 -200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200zM276 64h-40c-6.59961 0 -12 5.40039 -12 12v116h-67
-c-10.7002 0 -16 12.9004 -8.5 20.5l99 99c4.7002 4.7002 12.2998 4.7002 17 0l99 -99c7.59961 -7.59961 2.2002 -20.5 -8.5 -20.5h-67v-116c0 -6.59961 -5.40039 -12 -12 -12z" />
-    <glyph glyph-name="gem" unicode="&#xf3a5;" horiz-adv-x="576" 
-d="M464 448c4.09961 0 7.7998 -2 10.0996 -5.40039l99.9004 -147.199c2.90039 -4.40039 2.59961 -10.1006 -0.700195 -14.2002l-276 -340.8c-4.7998 -5.90039 -13.7998 -5.90039 -18.5996 0l-276 340.8c-3.2998 4 -3.60059 9.7998 -0.700195 14.2002l100 147.199
-c2.2002 3.40039 6 5.40039 10 5.40039h352zM444.7 400h-56.7998l51.6992 -96h68.4004zM242.6 400l-51.5996 -96h194l-51.7002 96h-90.7002zM131.3 400l-63.2998 -96h68.4004l51.6992 96h-56.7998zM88.2998 256l119.7 -160l-68.2998 160h-51.4004zM191.2 256l96.7998 -243.3
-l96.7998 243.3h-193.6zM368 96l119.6 160h-51.3994z" />
-    <glyph glyph-name="money-bill-alt" unicode="&#xf3d1;" horiz-adv-x="640" 
-d="M320 304c53.0195 0 96 -50.1396 96 -112c0 -61.8701 -43 -112 -96 -112c-53.0195 0 -96 50.1504 -96 112c0 61.8604 42.9805 112 96 112zM360 136v16c0 4.41992 -3.58008 8 -8 8h-16v88c0 4.41992 -3.58008 8 -8 8h-13.5801
-c-4.91113 0 -9.50586 -1.49316 -13.3096 -4.03027l-15.3301 -10.2197c-2.15332 -1.43262 -3.55957 -3.88379 -3.55957 -6.66113c0 -1.6377 0.493164 -3.16113 1.33887 -4.42871l8.88086 -13.3105c1.43164 -2.15234 3.88379 -3.55957 6.66113 -3.55957
-c1.6377 0 3.16016 0.494141 4.42871 1.33984l0.469727 0.310547v-55.4404h-16c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h64c4.41992 0 8 3.58008 8 8zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576
-c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM592 112v160c-35.3496 0 -64 28.6504 -64 64h-416c0 -35.3496 -28.6504 -64 -64 -64v-160c35.3496 0 64 -28.6504 64 -64h416c0 35.3496 28.6504 64 64 64z" />
-    <glyph glyph-name="window-close" unicode="&#xf410;" 
-d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v340c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z
-M356.5 253.4l-61.4004 -61.4004l61.4004 -61.4004c4.59961 -4.59961 4.59961 -12.0996 0 -16.7998l-22.2998 -22.2998c-4.60059 -4.59961 -12.1006 -4.59961 -16.7998 0l-61.4004 61.4004l-61.4004 -61.4004c-4.59961 -4.59961 -12.0996 -4.59961 -16.7998 0
-l-22.2998 22.2998c-4.59961 4.60059 -4.59961 12.1006 0 16.7998l61.4004 61.4004l-61.4004 61.4004c-4.59961 4.59961 -4.59961 12.0996 0 16.7998l22.2998 22.2998c4.60059 4.59961 12.1006 4.59961 16.7998 0l61.4004 -61.4004l61.4004 61.4004
-c4.59961 4.59961 12.0996 4.59961 16.7998 0l22.2998 -22.2998c4.7002 -4.60059 4.7002 -12.1006 0 -16.7998z" />
-    <glyph glyph-name="comment-dots" unicode="&#xf4ad;" 
-d="M144 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM256 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM368 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32
-s-32 14.2998 -32 32s14.2998 32 32 32zM256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5
-c-3.80078 8.7998 -2 19 4.59961 26c0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160
-c0 -42.2002 21.7002 -74.0996 39.7998 -93.4004l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z" />
-    <glyph glyph-name="smile-wink" unicode="&#xf4da;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM365.8 138.4c10.2002 -8.5 11.6006 -23.6006 3.10059 -33.8008
-c-30 -36 -74.1006 -56.5996 -120.9 -56.5996s-90.9004 20.5996 -120.9 56.5996c-8.39941 10.2002 -7.09961 25.3008 3.10059 33.8008c10.0996 8.39941 25.2998 7.09961 33.7998 -3.10059c20.7998 -25.0996 51.5 -39.3994 84 -39.3994s63.2002 14.3994 84 39.3994
-c8.5 10.2002 23.5996 11.6006 33.7998 3.10059zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 268c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008l-9.5 8.5
-c-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996z" />
-    <glyph glyph-name="angry" unicode="&#xf556;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 136c33.5996 0 65.2002 -14.7998 86.7998 -40.5996
-c8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008c-10.6006 -8.89941 -25.7002 -6.69922 -33.7998 3c-24.8008 29.7002 -75 29.7002 -99.8008 0c-8.5 -10.1992 -23.5996 -11.5 -33.7998 -3s-11.5996 23.6006 -3.09961 33.8008
-c21.5996 25.7998 53.2002 40.5996 86.7998 40.5996zM200 208c0 -17.7002 -14.2998 -32.0996 -32 -32.0996s-32 14.2998 -32 32c0 6.19922 2.2002 11.6992 5.2998 16.5996l-28.2002 8.5c-12.6992 3.7998 -19.8994 17.2002 -16.0996 29.9004
-c3.7998 12.6992 17.0996 20 29.9004 16.0996l80 -24c12.6992 -3.7998 19.8994 -17.2002 16.0996 -29.9004c-3.09961 -10.3994 -12.7002 -17.0996 -23 -17.0996zM399 262.9c3.7998 -12.7002 -3.40039 -26.1006 -16.0996 -29.8008l-28.2002 -8.5
-c3.09961 -4.89941 5.2998 -10.3994 5.2998 -16.5996c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c-10.2998 0 -19.9004 6.7002 -23 17.0996c-3.7998 12.7002 3.40039 26.1006 16.0996 29.9004l80 24c12.8008 3.7998 26.1006 -3.40039 29.9004 -16.0996z" />
-    <glyph glyph-name="dizzy" unicode="&#xf567;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM214.2 209.9
-c-7.90039 -7.90039 -20.5 -7.90039 -28.4004 -0.200195l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0c-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998
-c7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.9004c7.7998 7.7998 20.5 7.7998 28.2998 0s7.7998 -20.5 0 -28.2998l-17.9004 -17.9004l17.9004 -17.7998c7.7998 -7.7998 7.7998 -20.5 0 -28.2998zM374.2 302.1
-c7.7002 -7.7998 7.7002 -20.3994 0 -28.1992l-17.9004 -17.9004l17.7998 -18c7.80078 -7.7998 7.80078 -20.5 0 -28.2998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0
-c-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998c7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.7998c7.7998 7.80078 20.5 7.80078 28.2998 0zM248 176
-c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64z" />
-    <glyph glyph-name="flushed" unicode="&#xf579;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM344 304c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80
-s-80 35.7998 -80 80s35.7998 80 80 80zM344 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM232 224c0 -44.2002 -35.7998 -80 -80 -80
-s-80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80zM152 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM312 104
-c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z" />
-    <glyph glyph-name="frown-open" unicode="&#xf57a;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32
-s14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 160c35.5996 0 88.7998 -21.2998 95.7998 -61.2002c2 -11.7998 -9.09961 -21.5996 -20.5 -18.0996
-c-31.2002 9.59961 -59.3994 15.2998 -75.2998 15.2998s-44.0996 -5.7002 -75.2998 -15.2998c-11.5 -3.40039 -22.5 6.2998 -20.5 18.0996c7 39.9004 60.2002 61.2002 95.7998 61.2002z" />
-    <glyph glyph-name="grimace" unicode="&#xf57f;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
-s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM344 192c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-192c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48
-h192zM176 96v24h-40v-8c0 -8.7998 7.2002 -16 16 -16h24zM176 136v24h-24c-8.7998 0 -16 -7.2002 -16 -16v-8h40zM240 96v24h-48v-24h48zM240 136v24h-48v-24h48zM304 96v24h-48v-24h48zM304 136v24h-48v-24h48zM360 112v8h-40v-24h24c8.7998 0 16 7.2002 16 16zM360 136v8
-c0 8.7998 -7.2002 16 -16 16h-24v-24h40z" />
-    <glyph glyph-name="grin" unicode="&#xf580;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
-c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
-s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z" />
-    <glyph glyph-name="grin-alt" unicode="&#xf581;" horiz-adv-x="496" 
-d="M200.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0c12.4004 -18.7002 15.2002 -37.2998 15.7002 -56
-c-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM328.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0
-c12.4004 -18.7002 15.2002 -37.2998 15.7002 -56c-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200
-s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006
-s79.7002 4.7998 105.6 13.1006z" />
-    <glyph glyph-name="grin-beam" unicode="&#xf582;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
-c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM117.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998
-c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996
-l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002zM277.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998
-c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002z" />
-    <glyph glyph-name="grin-beam-sweat" unicode="&#xf583;" horiz-adv-x="496" 
-d="M440 288c-29.5 0 -53.2998 26.2998 -53.2998 58.7002c0 25 31.7002 75.5 46.2002 97.2998c3.5 5.2998 10.5996 5.2998 14.1992 0c14.5 -21.7998 46.2002 -72.2998 46.2002 -97.2998c0 -32.4004 -23.7998 -58.7002 -53.2998 -58.7002zM248 48
-c-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM378.3 216.3
-c-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998
-c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM483.6 269.2c8 -24.2998 12.4004 -50.2002 12.4004 -77.2002c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248
-c45.7002 0 88.4004 -12.5996 125.2 -34.2002c-10.9004 -21.5996 -15.5 -36.2002 -17.2002 -45.7002c-31.2002 20.1006 -68.2002 31.9004 -108 31.9004c-110.3 0 -200 -89.7002 -200 -200s89.7002 -200 200 -200s200 89.7002 200 200
-c0 22.5 -3.90039 44.0996 -10.7998 64.2998c0.399414 0 21.7998 -2.7998 46.3994 12.9004zM168 258.6c-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998
-c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z" />
-    <glyph glyph-name="grin-hearts" unicode="&#xf584;" horiz-adv-x="496" 
-d="M353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM200.8 192.3
-l-70.2002 18.1006c-20.3994 5.2998 -31.8994 27 -24.1992 47.1992c6.69922 17.7002 26.6992 26.7002 44.8994 22l7.10059 -1.89941l2 7.09961c5.09961 18.1006 22.8994 30.9004 41.5 27.9004c21.3994 -3.40039 34.3994 -24.2002 28.7998 -44.5l-19.4004 -69.9004
-c-1.2998 -4.5 -6 -7.2002 -10.5 -6zM389.6 257.6c7.7002 -20.1992 -3.7998 -41.7998 -24.1992 -47.0996l-70.2002 -18.2002c-4.60059 -1.2002 -9.2998 1.5 -10.5 6l-19.4004 69.9004c-5.59961 20.2998 7.40039 41.0996 28.7998 44.5c18.7002 3 36.5 -9.7998 41.5 -27.9004
-l2 -7.09961l7.10059 1.89941c18.2002 4.7002 38.2002 -4.39941 44.8994 -22zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200
-s89.7002 -200 200 -200z" />
-    <glyph glyph-name="grin-squint" unicode="&#xf585;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
-c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM118.9 184.2c-3.80078 4.39941 -3.90039 11 -0.100586 15.5l33.6006 40.2998
-l-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5c3.89941 4.40039 10.1992 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5zM361.8 181.7
-l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5.10059 2.90039 11.5 1.90039 15.2998 -2.5c3.80078 -4.5 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998l33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5
-c-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5z" />
-    <glyph glyph-name="grin-squint-tears" unicode="&#xf586;" 
-d="M117.1 63.9004c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998
-c16.8994 16.9004 75.0996 26.9004 100.899 30.6006zM75.9004 105.6c-19.6006 -3.89941 -35.1006 -8.09961 -47.3008 -12.1992c-39.2998 90.5996 -22.0996 199.899 52 274c48.5 48.3994 111.9 72.5996 175.4 72.5996c38.9004 0 77.7998 -9.2002 113.2 -27.4004
-c-4 -12.1992 -8.2002 -28 -12 -48.2998c-30.4004 17.9004 -65 27.7002 -101.2 27.7002c-53.4004 0 -103.6 -20.7998 -141.4 -58.5996c-61.5996 -61.5 -74.2998 -153.4 -38.6992 -227.801zM428.2 293.2c20.2998 3.89941 36.2002 8 48.5 12
-c47.8994 -93.2002 32.8994 -210.5 -45.2002 -288.601c-48.5 -48.3994 -111.9 -72.5996 -175.4 -72.5996c-33.6992 0 -67.2998 7 -98.6992 20.5996c4.19922 12.2002 8.2998 27.7002 12.1992 47.2002c26.6006 -12.7998 55.9004 -19.7998 86.4004 -19.7998
-c53.4004 0 103.6 20.7998 141.4 58.5996c65.6992 65.7002 75.7998 166 30.7998 242.601zM394.9 320.1c-6.30078 -0.899414 -11.7002 4.5 -10.9004 10.9004c3.7002 25.7998 13.7002 84 30.5996 100.9c22 21.8994 57.9004 21.5 80.3008 -0.900391
-c22.3994 -22.4004 22.7998 -58.4004 0.899414 -80.2998c-16.8994 -16.9004 -75.0996 -26.9004 -100.899 -30.6006zM207.9 211.8c3 -3 4.19922 -7.2998 3.19922 -11.5l-22.5996 -90.5c-1.40039 -5.39941 -6.2002 -9.09961 -11.7002 -9.09961h-0.899414
-c-5.80078 0.5 -10.5 5.09961 -11 10.8994l-4.80078 52.3008l-52.2998 4.7998c-5.7998 0.5 -10.3994 5.2002 -10.8994 11c-0.400391 5.89941 3.39941 11.2002 9.09961 12.5996l90.5 22.7002c4.2002 1 8.40039 -0.200195 11.4004 -3.2002zM247.6 236.9
-c-0.0996094 0 -6.39941 -1.80078 -11.3994 3.19922c-3 3 -4.2002 7.30078 -3.2002 11.4004l22.5996 90.5c1.40039 5.7002 7 9.2002 12.6006 9.09961c5.7998 -0.5 10.5 -5.09961 11 -10.8994l4.7998 -52.2998l52.2998 -4.80078c5.7998 -0.5 10.4004 -5.19922 10.9004 -11
-c0.399414 -5.89941 -3.40039 -11.1992 -9.10059 -12.5996zM299.6 148.4c29.1006 29.0996 53 59.5996 65.3008 83.7998c4.89941 9.2998 17.5996 9.89941 23.3994 1.7002c27.7002 -38.9004 6.10059 -106.9 -30.5996 -143.7s-104.8 -58.2998 -143.7 -30.6006
-c-8.2998 5.90039 -7.5 18.6006 1.7002 23.4004c24.2002 12.5 54.7998 36.2998 83.8994 65.4004z" />
-    <glyph glyph-name="grin-stars" unicode="&#xf587;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
-c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM125.7 200.9l6.09961 34.8994l-25.3994 24.6006
-c-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006l34.9004 -5c6.19922 -1 8.7998 -8.69922 4.2998 -13.1992l-25.4004 -24.6006l6 -34.8994c1 -6.2002 -5.39941 -11 -11 -7.90039
-l-31.2998 16.2998l-31.2998 -16.2998c-5.60059 -3.09961 -12 1.7002 -11 7.90039zM385.4 273.6c6.19922 -1 8.89941 -8.59961 4.39941 -13.1992l-25.3994 -24.6006l6 -34.8994c1 -6.2002 -5.40039 -11 -11 -7.90039l-31.3008 16.2998l-31.2998 -16.2998
-c-5.59961 -3.09961 -12 1.7002 -11 7.90039l6 34.8994l-25.3994 24.6006c-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006z" />
-    <glyph glyph-name="grin-tears" unicode="&#xf588;" horiz-adv-x="640" 
-d="M117.1 191.9c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998c16.8994 16.9004 75.0996 26.9004 100.899 30.6006
-zM623.8 161.3c21.9004 -21.8994 21.5 -57.8994 -0.799805 -80.2002c-22.4004 -22.3994 -58.4004 -22.7998 -80.2998 -0.899414c-16.9004 16.8994 -26.9004 75.0996 -30.6006 100.899c-0.899414 6.30078 4.5 11.7002 10.8008 10.8008
-c25.7998 -3.7002 84 -13.7002 100.899 -30.6006zM497.2 99.5996c12.3994 -37.2998 25.0996 -43.7998 28.2998 -46.5c-44.5996 -65.7998 -120 -109.1 -205.5 -109.1s-160.9 43.2998 -205.5 109.1c3.09961 2.60059 15.7998 9.10059 28.2998 46.5
-c33.4004 -63.8994 100.3 -107.6 177.2 -107.6s143.8 43.7002 177.2 107.6zM122.7 223.5c-2.40039 0.299805 -5 2.5 -49.5 -6.90039c12.3994 125.4 118.1 223.4 246.8 223.4s234.4 -98 246.8 -223.5c-44.2998 9.40039 -47.3994 7.2002 -49.5 7
-c-15.2002 95.2998 -97.7998 168.5 -197.3 168.5s-182.1 -73.2002 -197.3 -168.5zM320 48c-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996
-c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM450.3 216.3c-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17
-c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM240 258.6
-c-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004
-c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z" />
-    <glyph glyph-name="grin-tongue" unicode="&#xf589;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0
-l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200
-s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996
-s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32
-s14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z" />
-    <glyph glyph-name="grin-tongue-squint" unicode="&#xf58a;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0
-l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200
-s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996
-s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998
-l33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5c-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 3 11.5 1.90039 15.2998 -2.5zM214.2 250.3
-c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5
-c3.89941 4.5 10.2998 5.5 15.2998 2.5z" />
-    <glyph glyph-name="grin-tongue-wink" unicode="&#xf58b;" horiz-adv-x="496" 
-d="M152 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5
-c-3.7998 -3.39941 -9.2998 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM328 320c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80s-80 35.7998 -80 80s35.7998 80 80 80zM328 192
-c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM328 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z
-M312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998
-c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3
-c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998
-c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998z" />
-    <glyph glyph-name="grin-wink" unicode="&#xf58c;" horiz-adv-x="496" 
-d="M328 268c25.6904 0 55.8799 -16.9199 59.8701 -42.1201c1.72949 -11.0898 -11.3506 -18.2695 -19.8301 -10.8398l-9.5498 8.47949c-14.8105 13.1904 -46.1602 13.1904 -60.9707 0l-9.5498 -8.47949c-8.33008 -7.40039 -21.5801 -0.379883 -19.8301 10.8398
-c3.98047 25.2002 34.1699 42.1201 59.8604 42.1201zM168 208c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32s-14.3301 -32 -32 -32zM353.55 143.36c10.04 3.13965 19.3906 -5.4502 17.71 -15.3408
-c-7.92969 -47.1494 -71.3193 -80.0195 -123.26 -80.0195s-115.33 32.8701 -123.26 80.0195c-1.69043 9.9707 7.76953 18.4707 17.71 15.3408c25.9297 -8.31055 64.3994 -13.0605 105.55 -13.0605s79.6201 4.75977 105.55 13.0605zM248 440c136.97 0 248 -111.03 248 -248
-s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z" />
-    <glyph glyph-name="kiss" unicode="&#xf596;" horiz-adv-x="496" 
-d="M168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5
-c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002
-c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM248 440c137 0 248 -111 248 -248
-s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z
-" />
-    <glyph glyph-name="kiss-beam" unicode="&#xf597;" horiz-adv-x="496" 
-d="M168 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17
-c-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8
-c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5
-c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002
-c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM328 296
-c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17
-c-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z" />
-    <glyph glyph-name="kiss-wink-heart" unicode="&#xf598;" horiz-adv-x="504" 
-d="M304 139.5c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002
-c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002
-c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM374.5 223c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-2.5 -2.2998 -7.90039 -4.7002 -13.7002 -1.59961c-4.39941 2.39941 -6.89941 7.39941 -6.09961 12.3994
-c3.89941 25.2002 34.2002 42.1006 59.7998 42.1006s55.7998 -16.9004 59.7998 -42.1006c0.799805 -5 -1.7002 -10 -6.09961 -12.3994c-4.40039 -2.40039 -9.90039 -1.7002 -13.7002 1.59961zM136 239.5c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32
-s-32 14.2998 -32 32zM501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941
-l8.40039 2.2002c21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM334 11.7002c17.7002 -64 10.9004 -39.5 13.4004 -46.7998c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 247.9 -248
-c0 -31.7998 -6.2002 -62.0996 -17.1006 -90c-6 1.5 -12.2002 2.7998 -18.5996 2.90039c-5.60059 9.69922 -13.6006 17.5 -22.6006 23.8994c6.7002 19.9004 10.4004 41.1006 10.4004 63.2002c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200
-c30.7998 0 59.9004 7.2002 86 19.7002z" />
-    <glyph glyph-name="laugh" unicode="&#xf599;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
-c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM168 224
-c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
-    <glyph glyph-name="laugh-beam" unicode="&#xf59a;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
-c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.700195 -8.5 -10.7998 -11.8994 -14.8994 -4.5
-l-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006c-12.3008 0 -23.8008 -7.90039 -31.5 -21.6006l-9.5 -17c-4.10059 -7.39941 -15.6006 -4.09961 -14.9004 4.5c3.2998 42.1006 32.2002 71.4004 56 71.4004zM127 220.1c-4.2002 -7.39941 -15.7002 -4 -15.0996 4.5
-c3.2998 42.1006 32.1992 71.4004 56 71.4004c23.7998 0 52.6992 -29.2998 56 -71.4004c0.699219 -8.5 -10.8008 -11.8994 -14.9004 -4.5l-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006s-23.7998 -7.90039 -31.5 -21.6006zM362.4 160c8.19922 0 14.5 -7 13.5 -15
-c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
-    <glyph glyph-name="laugh-squint" unicode="&#xf59b;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
-c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM343.6 252l33.6006 -40.2998c8.59961 -10.4004 -3.90039 -24.7998 -15.4004 -18l-80 48
-c-7.7998 4.7002 -7.7998 15.8994 0 20.5996l80 48c11.6006 6.7998 24 -7.7002 15.4004 -18zM134.2 193.7c-11.6006 -6.7998 -24.1006 7.59961 -15.4004 18l33.6006 40.2998l-33.6006 40.2998c-8.59961 10.2998 3.7998 24.9004 15.4004 18l80 -48
-c7.7998 -4.7002 7.7998 -15.8994 0 -20.5996zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
-    <glyph glyph-name="laugh-wink" unicode="&#xf59c;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
-c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 284c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008
-l-9.5 8.5c-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996zM168 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z
-M362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
-    <glyph glyph-name="meh-blank" unicode="&#xf5a4;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32
-s-32 14.2998 -32 32s14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z" />
-    <glyph glyph-name="meh-rolling-eyes" unicode="&#xf5a5;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM336 296c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72
-s-72 32.2002 -72 72s32.2002 72 72 72zM336 184c22.0996 0 40 17.9004 40 40c0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998
-c-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998c0 -22.0996 17.9004 -40 40 -40zM232 224c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM120 224c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40
-c0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998c-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998zM312 96
-c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z" />
-    <glyph glyph-name="sad-cry" unicode="&#xf5b3;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM392 53.5996c34.5996 35.9004 56 84.7002 56 138.4c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -53.7002 21.4004 -102.4 56 -138.4v114.4
-c0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-151.4c28.5 -15.5996 61.2002 -24.5996 96 -24.5996s67.5 9 96 24.5996v151.4c0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-114.4zM205.8 213.5c-5.7998 -3.2002 -11.2002 -0.700195 -13.7002 1.59961l-9.5 8.5
-c-14.7998 13.2002 -46.1992 13.2002 -61 0l-9.5 -8.5c-3.7998 -3.39941 -9.2998 -4 -13.6992 -1.59961c-4.40039 2.40039 -6.90039 7.40039 -6.10059 12.4004c3.90039 25.1992 34.2002 42.0996 59.7998 42.0996c25.6006 0 55.8008 -16.9004 59.8008 -42.0996
-c0.799805 -5 -1.7002 -10 -6.10059 -12.4004zM344 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5
-c-3.7998 -3.39941 -9.2002 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM248 176c30.9004 0 56 -28.7002 56 -64s-25.0996 -64 -56 -64s-56 28.7002 -56 64s25.0996 64 56 64z" />
-    <glyph glyph-name="sad-tear" unicode="&#xf5b4;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM256 144c38.0996 0 74 -16.7998 98.5 -46.0996
-c8.5 -10.2002 7.09961 -25.3008 -3.09961 -33.8008c-10.6006 -8.7998 -25.7002 -6.69922 -33.8008 3.10059c-15.2998 18.2998 -37.7998 28.7998 -61.5996 28.7998c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
-s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM162.4 173.2c2.7998 3.7002 8.39941 3.7002 11.1992 0c11.4004 -15.2998 36.4004 -50.6006 36.4004 -68.1006
-c0 -22.6992 -18.7998 -41.0996 -42 -41.0996s-42 18.4004 -42 41.0996c0 17.5 25 52.8008 36.4004 68.1006z" />
-    <glyph glyph-name="smile-beam" unicode="&#xf5b8;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM332 135.4c8.5 10.1992 23.5996 11.5 33.7998 3.09961
-c10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998c-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.2002 8.40039 25.2998 7.09961 33.7998 -3.09961
-c20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004zM136.5 237l-9.5 -17c-1.90039 -3.2002 -5.90039 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004
-c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996zM328 296c23.7998 0 52.7002 -29.2998 56 -71.4004
-c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002
-c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z" />
-    <glyph glyph-name="surprise" unicode="&#xf5c2;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 168c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64
-s-64 28.7002 -64 64s28.7002 64 64 64zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z" />
-    <glyph glyph-name="tired" unicode="&#xf5c8;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5
-l-33.6006 -40.2998l33.6006 -40.2998c3.7998 -4.5 3.7002 -11 -0.100586 -15.5c-3.5 -4.10059 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 2.90039 11.5 1.90039 15.2998 -2.5z
-M220 240c0 -4.2002 -2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7998 -1.60059 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7998 4.5 -3.7002 11 0.100586 15.5
-c3.7998 4.40039 10.2998 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998zM248 176c45.4004 0 100.9 -38.2998 107.8 -93.2998c1.5 -11.9004 -7 -21.6006 -15.5 -17.9004c-22.7002 9.7002 -56.2998 15.2002 -92.2998 15.2002
-s-69.5996 -5.5 -92.2998 -15.2002c-8.60059 -3.7002 -17 6.10059 -15.5 17.9004c6.89941 55 62.3994 93.2998 107.8 93.2998z" />
-  </font>
-</defs></svg>
diff --git a/assets/fonts/font-awesome/fa-regular-400.ttf b/assets/fonts/font-awesome/fa-regular-400.ttf
deleted file mode 100644
index 2775fa1e16f5acde9c37852ed01f009bf1ca2792..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-regular-400.ttf and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-regular-400.woff b/assets/fonts/font-awesome/fa-regular-400.woff
deleted file mode 100644
index e4acf9193fc37803cd524cb2e6a57bcea8caca11..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-regular-400.woff and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-regular-400.woff2 b/assets/fonts/font-awesome/fa-regular-400.woff2
deleted file mode 100644
index 708621ffb9df9701abd65c2fb6f12b677198b8d8..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-regular-400.woff2 and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-solid-900.eot b/assets/fonts/font-awesome/fa-solid-900.eot
deleted file mode 100644
index ccebb264ed96942e66bc31f4d94b36f07eb58b83..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-solid-900.eot and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-solid-900.svg b/assets/fonts/font-awesome/fa-solid-900.svg
deleted file mode 100644
index 23a6b9aee0e75cf7877e931fe77f6d9e41cf9921..0000000000000000000000000000000000000000
--- a/assets/fonts/font-awesome/fa-solid-900.svg
+++ /dev/null
@@ -1,5028 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
-<metadata>
-Created by FontForge 20200314 at Wed Jan 13 11:57:55 2021
- By Robert Madole
-Copyright (c) Font Awesome
-</metadata>
-<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
-<font id="FontAwesome5Free-Solid" horiz-adv-x="512" >
-  <font-face 
-    font-family="Font Awesome 5 Free Solid"
-    font-weight="900"
-    font-stretch="normal"
-    units-per-em="512"
-    panose-1="2 0 5 3 0 0 0 0 0 0"
-    ascent="448"
-    descent="-64"
-    bbox="-1.00195 -64.9795 640.104 448.576"
-    underline-thickness="25"
-    underline-position="-50"
-    unicode-range="U+0020-F8FF"
-  />
-    <missing-glyph />
-    <glyph glyph-name="faucet" unicode="&#xe005;" 
-d="M352 192c88.3066 0 160 -71.6934 160 -160c0 -17.6611 -14.3389 -32 -32 -32h-64c-17.6611 0 -32 14.3389 -32 32s-14.3389 32 -32 32h-12.79c-20.5898 -37.7305 -64.21 -64 -115.21 -64s-94.6201 26.2695 -115.21 64h-92.79c-8.83105 0 -16 7.16895 -16 16v96
-c0 8.83105 7.16895 16 16 16h118.61c15.71 13.4004 35.46 23 57.3896 28v47.5596l32 3.38086l32 -3.38086v-47.5596c21.9297 -4.92969 41.6797 -14.5596 57.3896 -28h38.6104zM81.5898 288.09c-9.41992 -1 -17.5898 6.81055 -17.5898 16.7998v30.2207
-c0 9.98926 8.16992 17.7998 17.5898 16.8096l110.41 -11.6602v27.7402c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-27.7402l110.41 11.6602c9.41992 0.990234 17.5898 -6.80957 17.5898 -16.8096v-30.2207
-c0 -9.98926 -8.16992 -17.7998 -17.5898 -16.7998l-142.41 15z" />
-    <glyph glyph-name="trailer" unicode="&#xe041;" horiz-adv-x="640" 
-d="M624 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-337.61c-7.83008 54.21 -54 96 -110.39 96s-102.56 -41.79 -110.39 -96h-49.6104c-8.83105 0 -16 7.16895 -16 16v288c0 8.83105 7.16895 16 16 16h512c8.83105 0 16 -7.16895 16 -16v-240
-h80zM96 204.32v107.68c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v-128.39c9.85938 8.0166 20.5459 14.9482 32 20.71zM192 222.86v89.1396c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v-89.1396
-c5.30957 0.489258 10.5703 1.13965 16 1.13965s10.6904 -0.650391 16 -1.13965zM288 183.61v128.39c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v-107.68c11.4541 -5.76172 22.1406 -12.6934 32 -20.71zM384 128v184c0 4.41504 -3.58496 8 -8 8h-16
-c-4.41504 0 -8 -3.58496 -8 -8v-184h32zM480 128v184c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v-184h32zM176 128c44.1533 0 80 -35.8467 80 -80s-35.8467 -80 -80 -80s-80 35.8467 -80 80s35.8467 80 80 80zM176 16c17.6611 0 32 14.3389 32 32
-s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32z" />
-    <glyph glyph-name="bacteria" unicode="&#xe059;" horiz-adv-x="640" 
-d="M272.35 221.6c-2.19727 -0.946289 -4.63184 -1.47949 -7.17578 -1.47949h-0.0341797c-0.00292969 0 0.00195312 -0.0146484 -0.00195312 -0.0146484c-7.27051 0 -13.5322 4.35449 -16.3174 10.5947l-3.91992 8.84961
-c-1.15039 -0.729492 -2.35059 -1.37988 -3.4707 -2.14941c-3.47168 -2.44629 -6.75293 -5.02832 -9.93945 -7.82031c-4.16406 -3.56152 -8.00098 -7.31543 -11.6504 -11.4004c-2.79688 -3.0166 -5.3916 -6.11719 -7.87012 -9.41016
-c-0.700195 -0.969727 -1.22949 -2.0498 -1.89941 -3.0498l8.7998 -4.10938c6.0166 -2.84082 10.1523 -8.94531 10.1523 -16.0361c0 -9.79199 -7.9502 -17.7432 -17.7432 -17.7432c-2.70312 0 -5.26562 0.606445 -7.55957 1.68848l-9 4.2207
-c-1.61035 -5.00293 -2.92773 -10.2646 -3.87012 -15.5303c-1.9248 -11.2178 -6.14648 -21.8359 -12.0801 -31.0498l9.14062 -9.37012c3.09082 -3.19824 4.99121 -7.55957 4.99121 -12.3545c0 -9.80859 -7.96387 -17.7715 -17.7725 -17.7715
-c-5.01465 0 -9.54688 2.08105 -12.7793 5.42578l-8.58984 8.7998c-13.0752 -8.66602 -28.8223 -13.7949 -45.6494 -13.8799c-1.03027 0 -2.10059 0.259766 -3.10059 0.259766l-2.87012 -11c-2.08008 -7.52637 -8.97949 -13.0732 -17.165 -13.0732
-c-9.8291 0 -17.8096 7.98047 -17.8096 17.8105c0 1.44043 0.171875 2.84082 0.495117 4.18359l2.87988 11.0596c-15.5566 7.7666 -28.2236 20.1123 -36.3896 35.4297l-11.2705 -3.33008c-1.60547 -0.477539 -3.30273 -0.741211 -5.06348 -0.741211
-c-9.79004 0 -17.7383 7.94824 -17.7383 17.7383c0 8.03027 5.34668 14.8213 12.6719 17.0029l11.5801 3.43066c-0.142578 1.98535 -0.214844 3.83594 -0.214844 5.85742c0 4.47168 0.353516 8.86133 1.03516 13.1426c1.72949 10.3799 4.72949 20.2197 7.51953 30.2197
-l-10.3496 3.54004c-6.94824 2.40234 -11.9346 8.99512 -11.9346 16.7549c0 9.78711 7.94629 17.7334 17.7334 17.7334c2.02734 0 3.97559 -0.34082 5.79102 -0.96875l10.4795 -3.58984c6.40332 15.3193 14.1484 30.0723 23 43.9102l-8.87988 6.46973
-c-4.4375 3.20996 -7.30176 8.43652 -7.30176 14.3262c0 3.90625 1.27148 7.51855 3.42188 10.4443c3.24805 4.4248 8.49316 7.27441 14.3975 7.27441c3.9209 0 7.54688 -1.26758 10.4922 -3.41406l8.82031 -6.4209c10.6797 12.8564 22.2119 24.5146 34.9502 35.3301
-l-6.4502 8.61035c-2.22168 2.95703 -3.5625 6.6377 -3.5625 10.6182c0 5.82617 2.82227 10.998 7.17285 14.2217c2.97461 2.20312 6.66211 3.53027 10.6445 3.53027c5.83789 0 11.0273 -2.80078 14.2949 -7.12988l6.32031 -8.43066
-c13.8359 9.05371 28.5869 16.9834 43.9404 23.5703l-3.49023 9.7998c-0.658203 1.8584 -1.02734 3.86816 -1.02734 5.95117c0 9.8252 7.97656 17.8018 17.8018 17.8018c7.74316 0 14.3379 -4.9541 16.7852 -11.8623l3.37988 -9.45996
-c10.9004 3.16992 21.7305 6.38965 33.1104 8.21973c4.51367 0.758789 9.02637 1.15234 13.7539 1.15234c1 0 1.99512 -0.0175781 2.98633 -0.0527344l2.81934 10.7803c1.98633 7.66504 8.95117 13.3457 17.2334 13.3457c9.82617 0 17.8047 -7.97754 17.8047 -17.8037
-c0 -1.54395 -0.197266 -3.04297 -0.567383 -4.47168l-2.83984 -10.8506c15.5527 -7.83105 28.2119 -20.2178 36.3799 -35.5693l11.3398 3.35938c1.6084 0.480469 3.30957 0.745117 5.07324 0.745117c9.79199 0 17.7412 -7.9502 17.7412 -17.7412
-c0 -8.02832 -5.34375 -14.8184 -12.665 -17.0039l-11.8496 -3.50977c0.120117 -1.82227 0.125977 -3.67969 0.125977 -5.53223c0 -15.5859 -4.2998 -30.1758 -11.7764 -42.6475l9.7207 -8.76074c3.56934 -3.25 5.79688 -7.92969 5.79688 -13.1328
-c0 -9.80469 -7.95996 -17.7646 -17.7637 -17.7646c-4.60156 0 -8.79688 1.75391 -11.9531 4.62793l-10 9c-9.85547 -6.88477 -21.4219 -11.7422 -33.75 -13.8398c-4.16895 -0.80957 -8.35547 -1.85547 -12.3604 -3.08008l4 -9.08008
-c0.96875 -2.18848 1.5293 -4.61426 1.5293 -7.16016c0 -7.26172 -4.37988 -13.5078 -10.6396 -16.2402zM128 192c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM208 288c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16
-s-16 -7.16895 -16 -16s7.16895 -16 16 -16zM639.26 242.7c0.470703 -1.59277 0.724609 -3.27344 0.724609 -5.01758c0 -8.04492 -5.37891 -14.8438 -12.7344 -16.9922l-11.5801 -3.43066c0.143555 -1.99512 0.216797 -3.85547 0.216797 -5.88672
-c0 -4.47852 -0.354492 -8.875 -1.03711 -13.1631c-1.72949 -10.3701 -4.72949 -20.21 -7.51953 -30.21l10.3398 -3.53027c6.94824 -2.40234 11.9346 -8.99414 11.9346 -16.7549c0 -9.78711 -7.94629 -17.7334 -17.7344 -17.7334
-c-2.02637 0 -3.97559 0.34082 -5.79004 0.96875l-10.4805 3.58984c-6.40527 -15.3213 -14.1494 -30.0781 -23 -43.9199l8.88086 -6.45996c4.6377 -3.20605 7.64746 -8.54297 7.64746 -14.6025c0 -9.80176 -7.95801 -17.7598 -17.7598 -17.7598
-c-4.10156 0 -7.87988 1.39355 -10.8877 3.73242l-8.82031 6.41992c-10.6826 -12.8574 -22.2148 -24.5176 -34.9502 -35.3398l6.4502 -8.61035c2.23926 -2.96094 3.5918 -6.6543 3.5918 -10.6494c0 -5.84082 -2.83984 -11.0225 -7.21191 -14.2402
-c-2.97363 -2.20508 -6.66016 -3.53418 -10.6426 -3.53418c-5.83594 0 -11.0234 2.80273 -14.2871 7.13379l-6.32031 8.42969c-13.8379 -9.05273 -28.5889 -16.9854 -43.9404 -23.5801l3.49023 -9.79004c0.658203 -1.85742 1.02734 -3.86816 1.02734 -5.9502
-c0 -9.8252 -7.97656 -17.8018 -17.8018 -17.8018c-7.74316 0 -14.3379 4.9541 -16.7852 11.8623l-3.37988 9.45996c-10.8604 -3.16992 -21.7305 -6.34961 -33.1006 -8.24023c-4.51465 -0.757812 -9.02832 -1.15234 -13.7568 -1.15234
-c-0.999023 0 -1.99316 0.0175781 -2.9834 0.0527344l-2.81934 -10.7803c-1.98633 -7.66504 -8.95117 -13.3457 -17.2334 -13.3457c-9.82617 0 -17.8037 7.97754 -17.8037 17.8047c0 1.54395 0.196289 3.04199 0.566406 4.47168l2.84082 10.8496
-c-15.5664 7.8291 -28.2363 20.2207 -36.4102 35.5801l-11.3398 -3.36035c-1.61035 -0.480469 -3.31348 -0.746094 -5.0791 -0.746094c-9.79199 0 -17.7422 7.9502 -17.7422 17.7432c0 8.02734 5.3418 14.8164 12.6611 17.0029l11.8594 3.51074
-c-0.119141 1.82227 -0.125 3.67871 -0.125 5.53125c0 15.5869 4.29883 30.1768 11.7754 42.6484l-9.71973 8.75c-3.68848 3.25684 -6.00293 8.0166 -6.00293 13.3193c0 9.80762 7.96289 17.7705 17.7705 17.7705c4.69824 0 8.97363 -1.82812 12.1523 -4.80957l10 -9
-c9.85645 6.9082 21.4297 11.7861 33.7695 13.8994c4.1709 0.804688 8.35742 1.85156 12.3604 3.08008l-4 9.08008c-0.962891 2.18262 -1.51953 4.60156 -1.51953 7.13867c0 7.25391 4.37012 13.4951 10.6191 16.2314c2.19824 0.954102 4.63477 1.49414 7.18066 1.5
-c0.00390625 0 -0.00195312 0.0146484 0.00195312 0.0146484c7.27051 0 13.5322 -4.35449 16.3174 -10.5947l3.91992 -8.84961c1.15039 0.729492 2.35059 1.37988 3.4707 2.14941c3.49023 2.4502 6.79199 5.03613 10 7.83008c4.13867 3.53516 7.94922 7.2666 11.5693 11.3301
-c2.82617 3.03223 5.44336 6.15332 7.94043 9.46973c0.69043 0.970703 1.21973 2.0498 1.88965 3.0498l-8.7998 4.11035c-6.0166 2.84082 -10.1523 8.94531 -10.1523 16.0352c0 9.79297 7.9502 17.7432 17.7432 17.7432c2.70312 0 5.26562 -0.605469 7.55957 -1.68848
-l9 -4.21973c1.60938 4.99902 2.92676 10.2578 3.87012 15.5195c1.91992 11.2236 6.14258 21.8457 12.0801 31.0605l-9.14062 9.37012c-3.09082 3.19824 -4.99121 7.55957 -4.99121 12.3535c0 9.80957 7.96387 17.7725 17.7725 17.7725
-c5.01465 0 9.54688 -2.08105 12.7793 -5.42578l8.58984 -8.81055c13.0723 8.67285 28.8203 13.8066 45.6494 13.8906c1.03027 0 2.10059 -0.260742 3.10059 -0.260742l2.87012 11c2.10059 7.49609 8.98438 13.0137 17.1475 13.0137
-c9.83008 0 17.8105 -7.98047 17.8105 -17.8096c0 -1.41602 -0.166016 -2.79297 -0.478516 -4.11426l-2.87988 -11.0596c15.5527 -7.77246 28.2188 -20.1162 36.3896 -35.4297l11.2705 3.33008c1.59766 0.478516 3.28906 0.739258 5.04199 0.739258h0.0380859
-c0.00585938 0 0.0078125 -0.000976562 0.0136719 -0.000976562c8.0459 0 14.8506 -5.35254 17.0459 -12.6885zM416 32c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32z" />
-    <glyph glyph-name="bacterium" unicode="&#xe05a;" 
-d="M511 345.07c0.634766 -2.13379 0.976562 -4.3877 0.976562 -6.72656c0 -10.7275 -7.1709 -19.7949 -16.9766 -22.6641l-15.79 -4.67969c0.15625 -2.4082 0.163086 -4.86133 0.163086 -7.30859c0 -20.8174 -5.75195 -40.3027 -15.7529 -56.9512l12.9395 -11.6699
-c5.1709 -4.34766 8.44043 -10.8584 8.44043 -18.1357c0 -13.0742 -10.6152 -23.6895 -23.6895 -23.6895c-6.47754 0 -12.3525 2.60547 -16.6309 6.8252l-13.3301 12c-13.1318 -9.21387 -28.5537 -15.7207 -45 -18.54c-5.5625 -1.07129 -11.1484 -2.46484 -16.4893 -4.10059
-l5.35938 -12.1094c1.2793 -2.91602 2.0127 -6.17285 2.0127 -9.55859c0 -13.1035 -10.6377 -23.7412 -23.7412 -23.7412c-9.7168 0 -18.0791 5.85156 -21.751 14.2197l-5.23047 11.7998c-1.5293 -0.980469 -3.12988 -1.87012 -4.62988 -2.87012
-c-4.61719 -3.25684 -8.98438 -6.69043 -13.2295 -10.4004c-5.58008 -4.76562 -10.7148 -9.79785 -15.5908 -15.2793c-3.71875 -4.00195 -7.16699 -8.11914 -10.46 -12.4902c-0.929688 -1.29004 -1.62988 -2.74023 -2.51953 -4.05957l11.7197 -5.49023
-c8.20801 -3.71484 13.8818 -11.9531 13.8818 -21.542c0 -13.0576 -10.6016 -23.6592 -23.6602 -23.6592c-3.73535 0 -7.26855 0.867188 -10.4111 2.41113l-12 5.63965c-2.14844 -6.6709 -3.90527 -13.6875 -5.16016 -20.71
-c-2.5625 -14.959 -8.19336 -29.1182 -16.1104 -41.3994l12.1904 -12.5c3.92383 -4.22949 6.32129 -9.90332 6.32129 -16.1221c0 -13.0801 -10.6201 -23.7002 -23.7002 -23.7002c-6.5127 0 -12.416 2.63379 -16.7012 6.8916l-11.4502 11.7402
-c-17.4336 -11.5586 -38.4326 -18.4014 -60.8701 -18.5195c-1.36035 0 -2.75977 0.299805 -4.12988 0.349609l-3.80957 -14.6299c-2.67383 -10.1768 -11.9395 -17.7002 -22.9502 -17.7002h-0.0498047c-2.07324 0.00292969 -4.07715 0.264648 -6 0.75
-c-10.1992 2.62988 -17.751 11.8857 -17.751 22.9014c0 2.04688 0.260742 4.03418 0.750977 5.92871l3.84961 14.75c-20.7412 10.3623 -37.6318 26.8203 -48.5303 47.2402l-15 -4.44043c-2.14062 -0.638672 -4.40527 -0.989258 -6.75293 -0.989258
-c-13.0479 0 -23.6406 10.5928 -23.6406 23.6406c0 10.6992 7.12402 19.749 16.8838 22.6592l15.4404 4.55957c-0.199219 2.7207 -0.300781 5.25781 -0.300781 8.0293c0 5.89355 0.458008 11.6826 1.34082 17.3311c2.37012 13.6738 5.52832 27.3877 9.2998 40.5293
-l-13 4.48047c-9.47656 3.08398 -16.3213 11.9814 -16.3213 22.4805c0 13.0527 10.5967 23.6504 23.6494 23.6504c2.86035 0 5.60254 -0.508789 8.1416 -1.44141l12.9297 -4.42969c8.61523 20.5029 19.0254 40.2393 30.9199 58.75l-11.0898 8.06055
-c-6.20508 4.27051 -10.2344 11.3994 -10.2344 19.4951c0 13.0693 10.6104 23.6797 23.6797 23.6797c5.48535 0 10.5381 -1.86914 14.5547 -5.00488l11 -8c14.2725 17.249 29.6816 32.9014 46.7002 47.4395l-8 10.6299c-2.9541 3.9375 -4.7373 8.83691 -4.7373 14.1338
-c0 7.7666 3.76465 14.6611 9.56738 18.9561c3.96484 2.93848 8.87988 4.70801 14.1885 4.70801c7.78125 0 14.6973 -3.73438 19.0518 -9.50781l8 -10.6299c18.4736 12.2129 38.1689 22.917 58.6895 31.8301l-4.2998 12.0498
-c-0.799805 2.37695 -1.24805 4.93555 -1.24805 7.58105c0 13.1025 10.6377 23.7402 23.7402 23.7402c10.1953 0 18.8975 -6.44043 22.2578 -15.4707l4.2998 -12c14.3408 4.27246 29.3477 7.81055 44.3301 10.4102c6.0459 1.01172 12.0889 1.53711 18.4199 1.53711
-c1.30859 0 2.6123 -0.0224609 3.91016 -0.0673828l3.75977 14.3701c2.64941 10.2295 11.9443 17.8125 22.998 17.8125c13.1123 0 23.7588 -10.6465 23.7588 -23.7588c0 -2.05957 -0.262695 -4.05762 -0.756836 -5.96387l-3.79004 -14.4697
-c20.7402 -10.4336 37.6182 -26.9492 48.5 -47.4209l15.1201 4.48047c2.14844 0.639648 4.41797 0.985352 6.77246 0.985352c10.7344 0 19.8164 -7.13379 22.7578 -16.915zM160 80c26.4922 0 48 21.5078 48 48s-21.5078 48 -48 48s-48 -21.5078 -48 -48s21.5078 -48 48 -48z
-M240 216c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24s-24 -10.7539 -24 -24s10.7539 -24 24 -24z" />
-    <glyph glyph-name="box-tissue" unicode="&#xe05b;" 
-d="M383.88 160.18h-256l-64 288h141.4c30.9912 -0.00195312 57.3018 -20.1162 66.5996 -48c9.29492 -27.8818 35.6016 -47.9961 66.5898 -48h109.41zM-0.120117 -31.8203v64h512v-64c0 -17.6611 -14.3389 -32 -32 -32h-448c-17.6611 0 -32 14.3389 -32 32zM479.88 224.18
-c17.6562 -0.00488281 31.9902 -14.3418 31.9902 -32v-128h-512v128c0 17.6611 14.3389 32 32 32h49l14.2197 -64h-15.21c-8.83008 0 -16 -7.16895 -16 -16c0 -8.83008 7.16992 -16 16 -16h352c8.83105 0 16 7.16992 16 16c0 8.83105 -7.16895 16 -16 16h-14.2695l21.3301 64
-h40.9395z" />
-    <glyph glyph-name="hand-holding-medical" unicode="&#xe05c;" horiz-adv-x="576" 
-d="M159.88 272.18c-8.83008 0 -16 7.16992 -16 16v64c0 8.83105 7.16992 16 16 16h64v64c0 8.83105 7.16992 16 16 16h64c8.83105 0 16 -7.16895 16 -16v-64h64c8.83105 0 16 -7.16895 16 -16v-64c0 -8.83008 -7.16895 -16 -16 -16h-64v-64c0 -8.83008 -7.16895 -16 -16 -16
-h-64c-8.83008 0 -16 7.16992 -16 16v64h-64zM568.07 111.87c4.87109 -6.62695 7.80469 -14.8232 7.80469 -23.6709c0 -13.1982 -6.40527 -24.9121 -16.2754 -32.1992l-135.029 -99.5703c-17.2783 -12.6621 -38.6699 -20.2148 -61.7002 -20.2695h-347
-c-8.80273 0.0595703 -15.9404 7.19727 -16 16v96c0.0595703 8.80273 7.19727 15.9395 16 16h55.3604l46.5 37.7402c20.2246 16.3867 46.0615 26.25 74.0947 26.25h0.0244141h160c17.6943 0 32.0654 -14.3359 32.0654 -32.0303
-c0 -1.82324 -0.152344 -3.61035 -0.445312 -5.35059c-2.62012 -15.7393 -17.3701 -26.6094 -33.3701 -26.6094h-78.2393c-8.83105 0 -16 -7.16992 -16 -16c0 -8.83105 7.16895 -16 16 -16h120.609l119.67 88.1797c6.63281 4.91016 14.8516 7.87012 23.7295 7.87012
-c13.2129 0 24.9355 -6.43555 32.2012 -16.3398z" />
-    <glyph glyph-name="hand-sparkles" unicode="&#xe05d;" horiz-adv-x="640" 
-d="M106.66 277.36l-20.7402 -49.6201c-1.08691 -2.19531 -3.34277 -3.70703 -5.95605 -3.70703s-4.87695 1.51172 -5.96387 3.70703l-20.6602 49.6602h-0.0703125l-49.5898 20.5996c-2.10938 1.20508 -3.55469 3.42969 -3.67969 6v0
-c0.124023 2.57617 1.5791 4.80371 3.7002 6l49.6299 20.6904h0.0498047l20.7002 49.6299c1.0918 2.18848 3.3457 3.69434 5.95605 3.69434s4.87207 -1.50586 5.96387 -3.69434l20.6602 -49.6406h0.0703125l49.5693 -20.6699c2.11328 -1.2002 3.56055 -3.42676 3.68066 -6v0
-c-0.125977 -2.57031 -1.57129 -4.79492 -3.68066 -6l-49.5498 -20.6494h-0.0898438zM471.38 -19.4102l37.4902 -15.6299l0.0703125 -0.169922c-7.59082 -17.0596 -24 -28.79 -43.2402 -28.79h-197.61c-15.9482 0.0273438 -30.0625 7.79492 -38.79 19.79l-125.6 172.61
-c-4.80469 6.60156 -7.68066 14.7979 -7.68066 23.5801c0 22.085 17.9297 40.0156 40.0146 40.0156c13.3027 0 25.0986 -6.50586 32.376 -16.5059l23.5898 -32.4902v241c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32v-152c0 -4.41504 3.58496 -8 8 -8h16
-c4.41504 0 8 3.58496 8 8v184c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32v-184c0 -4.41504 3.58496 -8 8 -8h16c4.41504 0 8 3.58496 8 8v152c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32v-152c0 -4.41504 3.58496 -8 8 -8h16c4.41504 0 8 3.58496 8 8v72
-c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32v-176.03c-0.0195312 -1.30957 -0.269531 -2.66992 -0.269531 -4c-7.77051 -3.70996 -14.5 -9.59961 -18.3506 -17.3398l-0.469727 -0.950195l-0.410156 -1l-15.6299 -37.4795l-37.4902 -15.6299l-1 -0.430664l-1 -0.489258
-c-12.6719 -6.35254 -21.3789 -19.4189 -21.3789 -34.5479s8.70703 -28.2402 21.3789 -34.5928l1 -0.5zM349.79 108.48c1.31543 0.655273 2.21973 2.00879 2.21973 3.57715s-0.904297 2.92676 -2.21973 3.58203l-29.79 12.4199l-12.4297 29.7803
-c-0.657227 1.30957 -2.00879 2.20996 -3.57324 2.20996c-1.56348 0 -2.91992 -0.900391 -3.57715 -2.20996l-12.4199 -29.7803l-29.79 -12.4199c-1.31543 -0.655273 -2.21973 -2.00879 -2.21973 -3.57715s0.904297 -2.92676 2.21973 -3.58203l29.79 -12.4102
-l12.4297 -29.7803c0.657227 -1.30957 2.00879 -2.20996 3.57324 -2.20996c1.56348 0 2.91992 0.900391 3.57715 2.20996l12.4199 29.7803zM640 16.0898l-0.0703125 -0.0703125v0c-0.135742 -2.55078 -1.58008 -4.75684 -3.67969 -5.94922l-49.5498 -20.6602h-0.0898438v0
-l-20.6904 -49.6201c-1.08691 -2.19531 -3.34277 -3.70703 -5.95605 -3.70703s-4.87695 1.51172 -5.96387 3.70703l-20.6602 49.5898h-0.0703125l-49.5693 20.6699c-2.10059 1.19238 -3.54395 3.39844 -3.68066 5.9502v0c0.118164 2.57324 1.56641 4.80078 3.68066 6
-l49.6299 20.7402h0.0498047l20.7002 49.6299c1.0918 2.18848 3.3457 3.69434 5.95605 3.69434s4.87207 -1.50586 5.96387 -3.69434l20.6797 -49.6104h0.0703125l49.5703 -20.6699c2.11328 -1.19922 3.5625 -3.42676 3.67969 -6z" />
-    <glyph glyph-name="hands-wash" unicode="&#xe05e;" horiz-adv-x="576" 
-d="M496 224c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48s48 -21.5078 48 -48s-21.5078 -48 -48 -48zM311.47 269.55l-16.0801 -4.96973l20.9004 66.1699c3.5 11.0703 14.1797 18.8604 25.71 17.5098c12.0508 -1.27246 21.4727 -11.4824 21.4727 -23.8682
-c0 -2.53418 -0.393555 -4.97754 -1.12305 -7.27148l-15.3496 -48.6104c-5.91699 2.19336 -12.3369 3.43457 -19 3.49023c-0.0107422 0 -0.0185547 -0.0107422 -0.0302734 -0.0107422c-5.7373 0 -11.2773 -0.853516 -16.5 -2.43945zM93.6504 61.6699
-c-36.4326 21.1162 -60.9873 60.2432 -61.6504 105.19v112.729c0.179688 13.3203 11.6699 23.9102 24.9004 23.8604c13.1807 -0.0771484 23.8604 -10.7988 23.8604 -23.9971c0 -0.0507812 0 -0.102539 -0.000976562 -0.15332l2.06055 -50.0498l60 189.85
-c3.5 11.0703 14.1797 18.9004 25.71 17.46c12.0371 -1.28613 21.4443 -11.4883 21.4443 -23.8652c0 -2.52441 -0.390625 -4.95801 -1.11426 -7.24414l-38.5605 -122c-0.240234 -0.760742 -0.373047 -1.57129 -0.373047 -2.41016
-c0 -4.41699 3.58496 -8.00195 8.00195 -8.00195c3.57617 0 6.60742 2.35156 7.63086 5.5918l47.9307 151.71c3.50977 11.0605 14.1797 18.8506 25.71 17.5098c12.0371 -1.28613 21.4443 -11.4883 21.4443 -23.8652c0 -2.52441 -0.390625 -4.95801 -1.11426 -7.24414
-l-43.3701 -137.79c-0.241211 -0.762695 -0.375 -1.57422 -0.375 -2.41602c0 -4.41699 3.58594 -8.00293 8.00293 -8.00293c3.57617 0 6.60645 2.35059 7.63184 5.58887l33.4502 106.42c3.5 11.0703 14.1895 18.8604 25.7197 17.5195
-c12.0371 -1.28613 21.4443 -11.4883 21.4443 -23.8652c0 -2.52441 -0.390625 -4.95801 -1.11426 -7.24414l-34.1602 -108.12l-73.7002 -22.7598c-62.1299 -20.5283 -107.005 -79.04 -107.06 -148v-25.6904c-0.80957 -0.169922 -1.5498 -0.519531 -2.34961 -0.709961z
-M519.1 112c11.6104 0 22.25 -7.83984 24.4404 -19.2402c0.3125 -1.54395 0.477539 -3.12402 0.477539 -4.75977c0 -13.2461 -10.7549 -24 -24 -24h-0.0175781h-160c-4.41504 0 -8 -3.58496 -8 -8s3.58496 -8 8 -8h127.1c11.6104 0 22.25 -7.83984 24.4404 -19.2402
-c0.3125 -1.54395 0.477539 -3.12402 0.477539 -4.75977c0 -13.2461 -10.7549 -24 -24 -24h-0.0175781h-128c-4.41504 0 -8 -3.58496 -8 -8s3.58496 -8 8 -8h95.0996c11.6104 0 22.25 -7.83984 24.4404 -19.2402c0.3125 -1.54395 0.477539 -3.12402 0.477539 -4.75977
-c0 -13.2461 -10.7549 -24 -24 -24h-0.0175781h-208c-22.6738 0.0859375 -43.9951 6.60645 -62 17.7197c3.8623 9.36328 5.9668 19.6699 5.9668 30.4199c0 38.6191 -27.499 70.8652 -63.9668 78.21v25.6504c0 54.8691 35.7324 101.431 85.1904 117.69l107.72 33.25
-c2.24121 0.692383 4.62207 1.0752 7.08984 1.0752c13.252 0 24.0107 -10.7588 24.0107 -24.0107c0 -10.7842 -7.125 -19.917 -16.9209 -22.9453l-47.0898 -17.0596h199.1c11.6104 0 22.25 -7.83984 24.4404 -19.2402c0.3125 -1.54395 0.477539 -3.12402 0.477539 -4.75977
-c0 -13.2461 -10.7549 -24 -24 -24h-0.0175781h-128c-4.41504 0 -8 -3.58496 -8 -8s3.58496 -8 8 -8h159.1zM416 384c-17.6611 0 -32 14.3389 -32 32s14.3389 32 32 32s32 -14.3389 32 -32s-14.3389 -32 -32 -32zM112 32c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48
-s-48 21.5078 -48 48s21.5078 48 48 48z" />
-    <glyph glyph-name="handshake-alt-slash" unicode="&#xe05f;" horiz-adv-x="640" 
-d="M358.59 252.4l26.1104 23.8896c3.19727 2.92676 5.19238 7.13086 5.19238 11.8037c0 8.83203 -7.1709 16.0029 -16.0039 16.0029c-4.16016 0 -7.95117 -1.59082 -10.7988 -4.19629l-27 -24.7002l-32.6895 -29.9199l330.43 -255.38
-c3.76562 -2.92871 6.1709 -7.50781 6.1709 -12.6426c0 -3.69434 -1.25488 -7.09863 -3.36133 -9.80762l-19.6396 -25.2705c-2.92871 -3.76855 -7.50879 -6.17578 -12.6465 -6.17578c-3.69727 0 -7.10254 1.25684 -9.81348 3.36621l-588.35 454.72
-c-3.76562 2.92871 -6.17188 7.50781 -6.17188 12.6426c0 3.69434 1.25488 7.09766 3.36133 9.80762l19.6201 25.2695c2.92773 3.77148 7.51074 6.18164 12.6504 6.18164c3.69922 0 7.1084 -1.25879 9.81934 -3.37109l116.891 -90.3301l20.3398 20.2998
-c5.78027 5.7998 13.7764 9.39258 22.5996 9.41016h83.79l-75.5996 -69.2402l25.6895 -19.8496l88.1201 80.6797c5.69238 5.21777 13.2881 8.40723 21.6104 8.41016h85.8896c8.82812 -0.0146484 16.8271 -3.60742 22.6104 -9.41016l54.5898 -54.5898h112
-c8.7998 0 15.9502 -7.12109 16 -15.9102v-191.8c-0.0273438 -8.81836 -7.18164 -15.9727 -16 -16h-97.5898c-2.7002 15.1729 -10.7646 28.5215 -22.21 37.9102zM16 320h7.55957l382.44 -295.59l-8.7998 -10.8203c-6.81543 -8.38672 -17.2246 -13.7119 -28.8633 -13.7119
-c-8.87793 0 -17.0322 3.12012 -23.4268 8.32227l-17.9102 15.5l-0.200195 -0.200195c-11.7383 -14.4346 -29.6592 -23.5977 -49.6963 -23.5977c-15.2695 0 -29.2969 5.35938 -40.3037 14.2979l-90.5 81.8896h-130.3c-8.83105 0 -16 7.16992 -16 16v191.91
-c0.0273438 8.81836 7.18164 15.9727 16 16z" />
-    <glyph glyph-name="handshake-slash" unicode="&#xe060;" horiz-adv-x="640" 
-d="M0 319.79h23.8301l72.1699 -55.79v-168c0 -17.6611 -14.3389 -32 -32 -32h-64v255.79zM48 127.9c-8.83105 0 -16 -7.16992 -16 -16c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16c0 8.83008 -7.16895 16 -16 16zM128 96.0898v143.19l278 -214.87l-8.7998 -10.8203
-c-6.81543 -8.38672 -17.2246 -13.7119 -28.8633 -13.7119c-8.87793 0 -17.0322 3.12012 -23.4268 8.32227l-17.9102 15.5l-0.200195 -0.200195c-11.7383 -14.4346 -29.6592 -23.5977 -49.6963 -23.5977c-15.2695 0 -29.2969 5.35938 -40.3037 14.2979l-90.5 81.8896
-h-18.2998zM544 319.79h96v-255.89h-64c-17.6611 0 -32 14.3379 -32 32v223.89zM592 95.9004c8.83105 0 16 7.16895 16 16c0 8.83008 -7.16895 16 -16 16s-16 -7.16992 -16 -16c0 -8.83105 7.16895 -16 16 -16zM303.33 245.33l330.5 -255.43
-c3.76953 -2.92871 6.17676 -7.50977 6.17676 -12.6475c0 -3.69238 -1.25293 -7.09375 -3.35645 -9.80273l-19.6504 -25.2705c-2.92773 -3.77051 -7.51074 -6.18066 -12.6504 -6.18066c-3.69922 0 -7.1084 1.25879 -9.81934 3.37109l-588.34 454.72
-c-3.76562 2.92871 -6.17188 7.50781 -6.17188 12.6426c0 3.69434 1.25488 7.09766 3.36133 9.80762l19.6201 25.2695c2.92773 3.77148 7.51074 6.18164 12.6504 6.18164c3.69922 0 7.1084 -1.25879 9.81934 -3.37109l116.891 -90.3398l20.3398 20.3096
-c5.78027 5.7998 13.7764 9.39258 22.5996 9.41016h83.79l-75.5996 -69.2402l25.6396 -19.8096l88.0703 80.6396c5.68457 5.21973 13.2764 8.41016 21.5947 8.41016h0.00488281h85.9004c0.0117188 0 0.0263672 0.00488281 0.0380859 0.00488281
-c8.82031 0 16.8047 -3.60254 22.5615 -9.41504l54.6104 -54.5898v-193.5c-2.45605 2.78125 -5.0625 5.31934 -7.91016 7.7002l-145.59 118.2l26.0898 23.8896c3.05762 2.91504 4.95215 7.02441 4.95215 11.5781c0 8.83105 -7.16895 16 -16 16
-c-4.03613 0 -7.72559 -1.49805 -10.542 -3.96777z" />
-    <glyph glyph-name="head-side-cough" unicode="&#xe061;" horiz-adv-x="640" 
-d="M616 144c-13.2461 0 -24 10.7539 -24 24s10.7539 24 24 24s24 -10.7539 24 -24s-10.7539 -24 -24 -24zM552 32c13.2461 0 24 -10.7539 24 -24s-10.7539 -24 -24 -24s-24 10.7539 -24 24s10.7539 24 24 24zM488 88c13.2461 0 24 -10.7539 24 -24s-10.7539 -24 -24 -24
-s-24 10.7539 -24 24s10.7539 24 24 24zM616 -16c13.2461 0 24 -10.7539 24 -24s-10.7539 -24 -24 -24s-24 10.7539 -24 24s10.7539 24 24 24zM616 88c13.2461 0 24 -10.7539 24 -24s-10.7539 -24 -24 -24s-24 10.7539 -24 24s10.7539 24 24 24zM552 128
-c13.2461 0 24 -10.7539 24 -24s-10.7539 -24 -24 -24s-24 10.7539 -24 24s10.7539 24 24 24zM477.22 173c1.76367 -3.9668 2.75977 -8.38281 2.75977 -13c0 -17.6543 -14.3281 -31.9883 -31.9795 -32h-32v-32h-96c-17.6611 0 -32 -14.3389 -32 -32s14.3389 -32 32 -32h96
-c0 -35.3223 -28.6777 -64 -64 -64h-64v-32h-224v177.12c-39.25 35.2598 -64 86.1299 -64 142.88c0 106 86 192 192 192h42.0996c70.2783 -0.046875 132.342 -34.8047 170 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75zM288 224
-c17.6436 0.0380859 31.9619 14.3564 32 32c0 17.6611 -14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32z" />
-    <glyph glyph-name="head-side-cough-slash" unicode="&#xe062;" horiz-adv-x="640" 
-d="M454.11 128.79l179.72 -138.89c3.76562 -2.92871 6.1709 -7.50781 6.1709 -12.6426c0 -3.69434 -1.25488 -7.09863 -3.36133 -9.80762l-19.6396 -25.2705c-2.92773 -3.77051 -7.51074 -6.18066 -12.6504 -6.18066c-3.69922 0 -7.1084 1.25879 -9.81934 3.37109
-l-588.351 454.72c-3.76562 2.92871 -6.1709 7.50781 -6.1709 12.6426c0 3.69434 1.25488 7.09766 3.36133 9.80762l19.6299 25.2695c2.92871 3.76855 7.50879 6.17676 12.6465 6.17676c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l38.7197 -29.9199
-c30.6045 20.9385 67.7969 33.2998 107.644 33.2998h0.176758h42.0996c70.2783 -0.046875 132.342 -34.8047 170 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75c8.51074 -19.21 -3.5498 -40.4004 -23.1094 -44.21zM313.39 237.55
-c3.85059 5.28027 6.61035 11.4502 6.58008 18.4502c-0.0332031 17.6455 -14.3535 31.9668 -32 32c-9.92969 0 -18.4795 -4.86035 -24.3594 -12zM616 144c-13.2461 0 -24 10.7539 -24 24s10.7539 24 24 24s24 -10.7539 24 -24s-10.7539 -24 -24 -24zM552 80
-c-13.2461 0 -24 10.7539 -24 24s10.7539 24 24 24s24 -10.7539 24 -24s-10.7539 -24 -24 -24zM288 64c0 -17.6611 14.3389 -32 32 -32h96c0 -35.3223 -28.6777 -64 -64 -64h-64v-32h-224v177.12c-39.25 35.2598 -64 86.1299 -64 142.88
-c0.015625 31.0195 7.56055 60.5098 20.7305 86.4102l318.81 -246.41h-19.54c-17.6611 0 -32 -14.3389 -32 -32zM616 88c13.2461 0 24 -10.7539 24 -24s-10.7539 -24 -24 -24s-24 10.7539 -24 24s10.7539 24 24 24z" />
-    <glyph glyph-name="head-side-mask" unicode="&#xe063;" 
-d="M0.150391 263.58c0.445312 9.60547 1.64062 19.0078 3.51953 28.1699l220.33 -160.26v-195.49h-160v177.12c-41 36.8203 -66.1699 90.6699 -63.8496 150.46zM509.22 173c1.62891 -3.79102 2.54688 -7.97949 2.54688 -12.3652
-c0 -0.211914 -0.00195312 -0.423828 -0.00683594 -0.634766h-272.55l-225.96 164.35c29.2305 73.0801 103.75 123.65 186.75 123.65h66.1104c70.2744 -0.046875 132.336 -34.8047 169.989 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75zM320 224
-c17.6436 0.0380859 31.9619 14.3564 32 32c0 17.6611 -14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM336 80c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16h149.34l-10.6699 -32h-138.67c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16h128
-l-1.41016 -4.24023c-8.47363 -25.4199 -32.458 -43.7578 -60.71 -43.7598h-145.88v192h256l-16 -48h-160z" />
-    <glyph glyph-name="head-side-virus" unicode="&#xe064;" 
-d="M272 208c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM208 272c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM509.2 173c1.76367 -3.9668 2.75879 -8.38281 2.75879 -13
-c0 -17.6475 -14.3164 -31.9775 -31.959 -32h-32v-64c0 -35.3223 -28.6777 -64 -64 -64h-64v-64h-256v177.19c-39.3125 35.0342 -64 86.0137 -64 142.763v0.046875c0 106 86 192 192 192h74.0898c70.3008 0 132.405 -34.7725 170.04 -88.25
-c24.6396 -35.0195 52.1396 -139.63 73.0703 -186.75zM368 208c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16h-12.1201c-28.5098 0 -42.79 34.4697 -22.6299 54.6299l8.58008 8.57031c2.89648 2.89648 4.68457 6.90137 4.68457 11.3174
-c0 8.83105 -7.16992 16.002 -16.002 16.002c-4.41602 0 -8.41602 -1.79297 -11.3125 -4.68945l-8.57031 -8.58008c-20.1602 -20.1602 -54.6299 -5.87988 -54.6299 22.6299v12.1201c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16v-12.1201
-c0 -28.5098 -34.4697 -42.79 -54.6299 -22.6299l-8.57031 8.58008c-2.89648 2.89648 -6.90137 4.68457 -11.3174 4.68457c-8.83105 0 -16.002 -7.16992 -16.002 -16.002c0 -4.41602 1.79297 -8.41602 4.68945 -11.3125l8.58008 -8.57031
-c20.1602 -20.1602 5.87988 -54.6299 -22.6299 -54.6299h-12.1201c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16h12.1201c28.5098 0 42.79 -34.4697 22.6299 -54.6299l-8.58008 -8.57031c-2.89648 -2.89648 -4.68457 -6.90137 -4.68457 -11.3174
-c0 -8.83105 7.16992 -16.002 16.002 -16.002c4.41602 0 8.41602 1.79297 11.3125 4.68945l8.57031 8.58008c20.1602 20.1602 54.6299 5.87988 54.6299 -22.6299v-12.1201c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16v12.1201c0 28.5098 34.4697 42.79 54.6299 22.6299
-l8.57031 -8.58008c2.89648 -2.89648 6.90137 -4.68457 11.3174 -4.68457c8.83105 0 16.002 7.16992 16.002 16.002c0 4.41602 -1.79297 8.41602 -4.68945 11.3125l-8.58008 8.57031c-20.1602 20.1602 -5.87988 54.6299 22.6299 54.6299h12.1201z" />
-    <glyph glyph-name="house-user" unicode="&#xe065;" horiz-adv-x="576" 
-d="M570.69 211.73c2.9082 -3.21777 4.83887 -7.36914 5.30957 -11.9209c-0.388672 -3.95801 -1.85742 -7.64648 -4.08984 -10.6895l-21.4102 -23.8105c-3.20117 -2.90527 -7.33496 -4.83594 -11.8701 -5.30957c-3.9668 0.40625 -7.66406 1.88379 -10.7197 4.12012
-l-15.9102 14v-210.12c0 -17.6611 -14.3389 -32 -32 -32h-383.91c-17.6611 0 -32 14.3389 -32 32v210.11l-15.8994 -14c-3.04297 -2.23926 -6.73047 -3.71484 -10.6904 -4.11035c-4.57715 0.460938 -8.75586 2.38867 -12 5.2998l-21.4102 23.79
-c-2.37695 2.95605 -3.87891 6.67773 -4.08984 10.71c0.241211 4.62402 2.20312 8.8125 5.25977 11.9004l256 226c6.28027 5.68945 18.21 10.2998 26.7402 10.2998s20.5 -4.61035 26.7803 -10.2998l101.22 -89.3701v51.6699c0 8.83105 7.16895 16 16 16h64
-c8.83105 0 16 -7.16895 16 -16v-136.44zM288 272c-35.3223 0 -64 -28.6777 -64 -64s28.6777 -64 64 -64s64 28.6777 64 64s-28.6777 64 -64 64zM400 0c8.83105 0 16 7.16895 16 16c0 52.9834 -43.0166 96 -96 96h-64c-52.9834 0 -96 -43.0166 -96 -96
-c0 -8.83105 7.16895 -16 16 -16h224z" />
-    <glyph glyph-name="laptop-house" unicode="&#xe066;" horiz-adv-x="640" 
-d="M272 160v-128h-176c-17.6611 0 -32 14.3389 -32 32v164.12l-21.6602 -19.1201c-2.5957 -2.02832 -5.83691 -3.30469 -9.33984 -3.48047c-4.15527 0.22168 -7.91113 2.00684 -10.6602 4.78027l-18.79 21.3105c-2.06836 2.59668 -3.37207 5.8584 -3.5498 9.38965
-c0.234375 4.12598 2.01758 7.85352 4.78027 10.5801l211.8 187.5c5.54004 4.91992 16.0703 8.91992 23.4697 8.91992c7.40039 0 17.9502 -4 23.4502 -8.91992l88.5 -78.3799v39.2998c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-96l59.25 -52.3896
-c2.74609 -2.74707 4.5166 -6.48145 4.75 -10.6104c-0.186523 -3.56445 -1.51172 -6.85449 -3.61035 -9.46973l-6.64941 -7.53027h-136.94c-17.7998 0 -33.6895 -8.24023 -44.7998 -21.1201v37.1201c0 8.83105 -7.16895 16 -16 16h-64c-8.83105 0 -16 -7.16895 -16 -16v-64
-c0 -8.83105 7.16895 -16 16 -16h64zM629.33 0c5.88867 0 10.6699 -4.78125 10.6699 -10.6699v-10.6602c-0.0820312 -23.4883 -19.1201 -42.5498 -42.5996 -42.6699h-298.801c-23.4795 0.120117 -42.5176 19.1816 -42.5996 42.6699v10.6602
-c0 5.88867 4.78125 10.6699 10.6699 10.6699h37.3301v160c0 17.6699 12.8896 32 28.7998 32h230.4c15.9102 0 28.7998 -14.3301 28.7998 -32v-160h37.3301zM544 0v144h-192v-144h192z" />
-    <glyph glyph-name="lungs-virus" unicode="&#xe067;" horiz-adv-x="640" 
-d="M344 297.32c-6.99512 4.2207 -15.291 6.65039 -24.0498 6.65039s-16.9551 -2.42969 -23.9502 -6.65039v134.68c0 8.83105 7.16895 16 16 16h16c8.83105 0 16 -7.16895 16 -16v-134.68zM195.54 3.54004c8.44824 -8.67969 20.2178 -14.0645 33.2754 -14.0645
-c2.87988 0 5.69922 0.261719 8.43457 0.764648c-13.043 -16.7764 -31.3789 -29.1445 -52.5 -34.75l-59.5 -15.8701c-62.75 -16.8799 -125.25 27.3799 -125.25 88.6299c0 0.0820312 0.0126953 0.125 0.0126953 0.207031c0 10.1719 1.3457 20.0322 3.86719 29.4131
-c22.0361 82.46 57.0371 160.927 102 231c22.1201 34.6299 36.1201 63.1299 80.1201 63.1299c38.6201 0 70 -29.3799 70 -65.75v-27.6797c-7.62012 5.0918 -16.832 8.08496 -26.6768 8.08496c-26.4922 0 -48 -21.5088 -48 -48c0 -13.3232 5.43945 -25.3848 14.2168 -34.085
-l8.58008 -8.57031h-12.1201c-26.4922 0 -48 -21.5078 -48 -48s21.5078 -48 48 -48h12.1201l-8.58008 -8.58008c-8.67383 -8.69531 -14.0391 -20.707 -14.0391 -33.9473s5.36523 -25.2363 14.0391 -33.9326zM421.83 26.1699
-c-2.89648 -2.89648 -6.90137 -4.68945 -11.3174 -4.68945s-8.41602 1.79297 -11.3125 4.68945l-8.57031 8.57031c-20.1602 20.1602 -54.6299 5.87988 -54.6299 -22.6201v-12.1201c0 -8.83105 -7.16895 -16 -16 -16s-16 7.16895 -16 16v12.1201
-c0 28.5 -34.4697 42.7803 -54.6299 22.6201l-8.57031 -8.57031c-2.9082 -2.99609 -6.98242 -4.85449 -11.4834 -4.85449c-8.83105 0 -16 7.16992 -16 16c0 4.49902 1.86035 8.56641 4.85352 11.4746l8.58008 8.58008c20.1602 20.1602 5.87988 54.6299 -22.6299 54.6299
-h-12.1201c-8.83105 0 -16 7.16895 -16 16s7.16895 16 16 16h12.1201c28.5098 0 42.79 34.4697 22.6299 54.6201l-8.58008 8.58008c-2.89648 2.89648 -4.68457 6.90137 -4.68457 11.3174c0 8.83105 7.16992 16.002 16.002 16.002
-c4.41602 0 8.41602 -1.79297 11.3125 -4.68945l8.57031 -8.58008c20.1602 -20.1602 54.6299 -5.87988 54.6299 22.6299v12.1201c0 8.83105 7.16895 16 16 16s16 -7.16895 16 -16v-12.1201c0 -28.5098 34.4697 -42.79 54.6299 -22.6299l8.57031 8.58008
-c2.89648 2.89648 6.90137 4.68457 11.3174 4.68457c8.83105 0 16.002 -7.16992 16.002 -16.002c0 -4.41602 -1.79297 -8.41602 -4.68945 -11.3125l-8.58008 -8.58008c-20.1602 -20.1504 -5.87988 -54.6201 22.6299 -54.6201h12.1201c8.83105 0 16 -7.16895 16 -16
-s-7.16895 -16 -16 -16h-12.1201c-28.5098 0 -42.79 -34.4697 -22.6299 -54.6299l8.58008 -8.58008c2.89355 -2.89551 4.68457 -6.89844 4.68457 -11.3125c0 -4.41309 -1.79102 -8.41211 -4.68457 -11.3076zM288 144c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16
-s-16 -7.16895 -16 -16s7.16895 -16 16 -16zM352 80c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16s-16 -7.16895 -16 -16s7.16895 -16 16 -16zM636.12 57.8701c2.52148 -9.38086 3.87988 -19.2021 3.87988 -29.374v-0.246094c0 -61.25 -62.5 -105.51 -125.25 -88.6299
-l-59.5 15.8701c-21.1211 5.60547 -39.457 17.9736 -52.5 34.75c2.77246 -0.50293 5.59766 -0.761719 8.51465 -0.761719c26.3262 0 47.7002 21.374 47.7002 47.7002c0 13.4287 -5.56152 25.5693 -14.5049 34.2412l-8.58008 8.58008h12.1201c26.4922 0 48 21.5078 48 48
-s-21.5078 48 -48 48h-12.1201l8.58008 8.53027c8.77734 8.7002 14.1602 20.7393 14.1602 34.0615c0 26.4922 -21.5078 48 -48 48c-9.84375 0 -19 -2.96973 -26.6201 -8.06152v27.7197c0 36.3701 31.3799 65.75 70 65.75c44 0 58 -28.5 80.1201 -63.1299
-c44.9629 -70.0732 79.9639 -148.54 102 -231z" />
-    <glyph glyph-name="people-arrows" unicode="&#xe068;" horiz-adv-x="576" 
-d="M96 320c-35.3223 0 -64 28.6777 -64 64s28.6777 64 64 64s64 -28.6777 64 -64s-28.6777 -64 -64 -64zM96 143.92c0 -0.0400391 -0.0117188 -0.078125 -0.0117188 -0.119141c0 -12.5332 5.24219 -23.8516 13.6514 -31.8809l50.3604 -47.5303v-96.3896
-c0 -17.6611 -14.3389 -32 -32 -32h-64c-17.6611 0 -32 14.3389 -32 32v128c-17.6611 0 -32 14.3389 -32 32v96c0 35.3223 28.6777 64 64 64h64c26.9717 -0.0253906 50.0303 -16.7598 59.3799 -40.4297c-1.83984 -1.26074 -3.95996 -2.02051 -5.61035 -3.57031
-l-72.1299 -68.0801c-8.40918 -8.03418 -13.6396 -19.3555 -13.6396 -31.8926v-0.107422zM480 320c-35.3223 0 -64 28.6777 -64 64s28.6777 64 64 64s64 -28.6777 64 -64s-28.6777 -64 -64 -64zM512 288c35.3223 0 64 -28.6777 64 -64v-96c0 -17.6611 -14.3389 -32 -32 -32
-v-128c0 -17.6611 -14.3389 -32 -32 -32h-64c-17.6611 0 -32 14.3389 -32 32v96.3799l50.3604 47.5498c8.4082 8.07617 13.6445 19.4336 13.6445 32.002c0 12.5674 -5.23633 23.9219 -13.6445 31.998l-72.1201 68.0605c-1.62012 1.58984 -3.78027 2.31934 -5.62012 3.58984
-c9.35352 23.666 32.4102 40.3965 59.3799 40.4199h64zM444.4 152.66c2.22461 -2.24219 3.59961 -5.33203 3.59961 -8.7373c0 -3.4043 -1.375 -6.49121 -3.59961 -8.73242l-72.1201 -68.0703c-2.1543 -2.05371 -5.07227 -3.31543 -8.28027 -3.31543
-c-6.62305 0 -12 5.37695 -12 12v0.0556641v36.1396h-128v-36.1396c0 -0.0185547 -0.00292969 -0.0361328 -0.00292969 -0.0546875c0 -6.62305 -5.37695 -12 -12 -12c-3.20801 0 -6.12305 1.26074 -8.27734 3.31445l-72.1201 68.0703
-c-2.22461 2.24121 -3.59961 5.33203 -3.59961 8.73633c0 3.40527 1.375 6.49121 3.59961 8.7334l72.1201 68.0703c2.1543 2.05273 5.07227 3.31445 8.28027 3.31445c6.62305 0 12 -5.37695 12 -12v-0.0449219v-36h128v36
-c0 0.0117188 0.00292969 0.0224609 0.00292969 0.0341797c0 6.62305 5.37695 12 12 12c3.20801 0 6.12305 -1.26074 8.27734 -3.31445z" />
-    <glyph glyph-name="plane-slash" unicode="&#xe069;" horiz-adv-x="640" 
-d="M32.4805 300.12c-0.258789 1.12109 -0.386719 2.2959 -0.386719 3.49512c0 2.94531 0.825195 5.7002 2.25586 8.04492l324.841 -251.061l-66.6006 -116.54c-2.75684 -4.82227 -7.94141 -8.05957 -13.8896 -8.05957h-65.5
-c-8.81641 0.0166016 -15.9678 7.17676 -15.9678 15.9971c0 1.53027 0.21582 3.01074 0.617188 4.41309l49 171.59h-102.85l-43.2002 -57.5898c-2.91797 -3.89648 -7.5625 -6.40723 -12.7998 -6.41016h-40c-8.82812 0.00292969 -15.9941 7.16406 -15.9941 15.9932
-c0 1.33691 0.165039 2.63574 0.474609 3.87695l31.5195 108.13zM633.82 -10.0898c3.77148 -2.92871 6.18164 -7.51074 6.18164 -12.6514c0 -3.69531 -1.25488 -7.09863 -3.3623 -9.80859l-19.6396 -25.2598c-2.92773 -3.77246 -7.51074 -6.18262 -12.6514 -6.18262
-c-3.69434 0 -7.09863 1.25488 -9.80859 3.3623l-588.36 454.72c-3.76855 2.92871 -6.17578 7.50879 -6.17578 12.6465c0 3.69727 1.25684 7.10352 3.36621 9.81348l19.6299 25.2598c2.92871 3.76855 7.50879 6.17676 12.6465 6.17676
-c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l189.3 -146.3l-36.9395 129.29c-0.398438 1.39551 -0.614258 2.86621 -0.614258 4.38965c0 8.8291 7.16602 15.9971 15.9941 16h65.5098c5.12988 0 11.3496 -3.61035 13.9004 -8.05957l105.09 -183.94h114.3
-c35.3398 0 96 -28.6602 96 -64s-60.6602 -64 -96 -64h-56.8604z" />
-    <glyph glyph-name="pump-medical" unicode="&#xe06a;" horiz-adv-x="384" 
-d="M235.51 288.18c33.3369 -0.00195312 60.7559 -25.6123 63.7305 -58.1797l20.3701 -224c0.175781 -1.93066 0.262695 -3.82324 0.262695 -5.7998c0 -35.3203 -28.6738 -63.9961 -63.9932 -64h-192c-35.3223 0 -64.0059 28.6143 -64.0059 63.9365
-c0 1.97656 0.0898438 3.93262 0.265625 5.86328l20.3701 224c2.97461 32.5674 30.3936 58.1777 63.7305 58.1797h151.27zM239.88 114.85v26.6602c0 7.3623 -5.97754 13.3398 -13.3398 13.3398h-40v40c0 7.35742 -5.97266 13.3301 -13.3301 13.3301h-26.6699
-c-7.35742 0 -13.3301 -5.97266 -13.3301 -13.3301v-40h-40c-7.35742 0 -13.3301 -5.97266 -13.3301 -13.3291v-0.0107422v-26.6602c0 -7.3584 5.97266 -13.334 13.3301 -13.3398h40v-40c0 -7.35645 5.97266 -13.3301 13.3301 -13.3301h26.6699
-c7.35742 0 13.3301 5.97363 13.3301 13.3301v40h40c7.36035 0.00585938 13.334 5.98047 13.3398 13.3398zM379.19 354.12c2.89648 -2.89648 4.68945 -6.90137 4.68945 -11.3174s-1.79297 -8.41602 -4.68945 -11.3125l-22.6201 -22.6201
-c-2.89648 -2.89746 -6.90137 -4.68945 -11.3174 -4.68945s-8.41699 1.79199 -11.3125 4.68945l-43.3105 43.3096h-66.75v-32h-128v96c0 17.6611 14.3389 32 32 32h64c17.6611 0 32 -14.3389 32 -32h66.75c17.6553 -0.00195312 33.6582 -7.16016 45.2402 -18.7393z" />
-    <glyph glyph-name="pump-soap" unicode="&#xe06b;" horiz-adv-x="384" 
-d="M235.63 288c0.00390625 0 0.0107422 -0.0634766 0.0146484 -0.0634766c33.3496 0 60.7754 -25.5625 63.7354 -58.1465l20.3604 -224c0.174805 -1.92773 0.259766 -3.81738 0.259766 -5.79004c0 -35.3223 -28.6777 -64 -64 -64h-192
-c-35.3193 0.00390625 -63.9941 28.6172 -63.9941 63.9365c0 1.97363 0.0888672 3.92578 0.263672 5.85352l20.3604 224c2.95996 32.584 30.3906 58.21 63.7402 58.21h151.26zM160 32c33.1201 0 60 26.3301 60 58.7305c0 25 -35.6699 75.4697 -52 97.2695
-c-1.82422 2.43848 -4.72559 4.01855 -8.00293 4.01855c-3.26758 0 -6.17188 -1.57129 -7.99707 -3.99902c-16.2998 -21.7998 -52 -72.2695 -52 -97.2695c0 -32.4199 26.8799 -58.75 60 -58.75zM379.31 353.94c2.89746 -2.89648 4.69043 -6.90137 4.69043 -11.3174
-s-1.79297 -8.41699 -4.69043 -11.3135l-22.6191 -22.6191c-2.89648 -2.89746 -6.90137 -4.69043 -11.3174 -4.69043s-8.41699 1.79297 -11.3135 4.69043l-43.3096 43.3096h-66.75v-32h-128v96c0 17.6611 14.3389 32 32 32h64c17.6611 0 32 -14.3389 32 -32h66.75
-c17.6582 0 33.666 -7.1582 45.25 -18.7402z" />
-    <glyph glyph-name="shield-virus" unicode="&#xe06c;" 
-d="M224 256c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM466.5 364.32c17.3359 -7.24121 29.5 -24.3428 29.5 -44.291v-0.0292969c0 -221.3 -135.91 -344.61 -221.59 -380.32
-c-5.67578 -2.3584 -11.9619 -3.66016 -18.4873 -3.66016c-6.52441 0 -12.7471 1.30176 -18.4229 3.66016c-107 44.6006 -221.5 181.82 -221.5 380.32c0 0.0166016 -0.03125 0.0107422 -0.03125 0.0263672c0 19.9707 12.2402 37.1055 29.6211 44.3037l192 80
-c5.75293 2.17188 12 3.46582 18.46 3.66992c6.45605 -0.208008 12.7012 -1.50586 18.4502 -3.67969zM384 192c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16h-12.1201c-28.5098 0 -42.79 34.4697 -22.6299 54.6299l8.58008 8.57031
-c2.89648 2.89648 4.68457 6.90137 4.68457 11.3174c0 8.83105 -7.16992 16.002 -16.002 16.002c-4.41602 0 -8.41602 -1.79297 -11.3125 -4.68945l-8.57031 -8.58008c-20.1602 -20.1602 -54.6299 -5.87988 -54.6299 22.6299v12.1201c0 8.83105 -7.16895 16 -16 16
-s-16 -7.16895 -16 -16v-12.1201c0 -28.5098 -34.4697 -42.79 -54.6299 -22.6299l-8.57031 8.58008c-2.89648 2.89648 -6.90137 4.68457 -11.3174 4.68457c-8.83105 0 -16.002 -7.16992 -16.002 -16.002c0 -4.41602 1.79297 -8.41602 4.68945 -11.3125l8.58008 -8.57031
-c20.1602 -20.1602 5.87988 -54.6299 -22.6299 -54.6299h-12.1201c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16h12.1201c28.5098 0 42.79 -34.4697 22.6299 -54.6299l-8.58008 -8.57031c-2.89648 -2.89648 -4.68457 -6.90137 -4.68457 -11.3174
-c0 -8.83105 7.16992 -16.002 16.002 -16.002c4.41602 0 8.41602 1.79297 11.3125 4.68945l8.57031 8.58008c20.1602 20.1602 54.6299 5.87988 54.6299 -22.6299v-12.1201c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16v12.1201c0 28.5098 34.4697 42.79 54.6299 22.6299
-l8.57031 -8.58008c2.89648 -2.89648 6.90137 -4.68457 11.3174 -4.68457c8.83105 0 16.002 7.16992 16.002 16.002c0 4.41602 -1.79297 8.41602 -4.68945 11.3125l-8.58008 8.57031c-20.1602 20.1602 -5.87988 54.6299 22.6299 54.6299h12.1201zM288 192
-c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16z" />
-    <glyph glyph-name="sink" unicode="&#xe06d;" 
-d="M32 32v32h448v-32c0 -52.9834 -43.0166 -96 -96 -96h-256c-52.9834 0 -96 43.0166 -96 96zM496 160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-480c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h96v32h-64
-c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h80c17.6611 0 32 -14.3389 32 -32v-48h64v188.21c0 46.4297 31.29 89.0801 76.8701 97.9297c6.15625 1.23926 12.4512 1.8877 18.9697 1.8877c53.0283 0 96.0879 -43.0166 96.1602 -96.0273v-16
-c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v16c0 17.6611 -14.3389 32 -32 32s-32 -14.3389 -32 -32v-192h64v48c0 17.6611 14.3389 32 32 32h80c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-64v-32h96z" />
-    <glyph glyph-name="soap" unicode="&#xe06e;" 
-d="M416 256c52.9834 0 96 -43.0166 96 -96v-128c0 -52.9834 -43.0166 -96 -96 -96h-320c-52.9834 0 -96 43.0166 -96 96v128c0 52.9834 43.0166 96 96 96h128c0.0634766 -24.6279 9.49707 -47.1133 24.9102 -64h-88.9102c-52.9834 0 -96 -43.0166 -96 -96
-s43.0166 -96 96 -96h192c0.0703125 0 0.171875 -0.0322266 0.242188 -0.0322266c52.873 0 95.7998 42.9268 95.7998 95.7998c0 41.3477 -26.251 76.6123 -62.9824 90.0225c19.0049 17.4219 30.9033 42.4307 30.9404 70.21zM320 192c-35.3223 0 -64 28.6777 -64 64
-s28.6777 64 64 64s64 -28.6777 64 -64s-28.6777 -64 -64 -64zM208 352c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48s48 -21.5078 48 -48s-21.5078 -48 -48 -48zM384 384c-17.6611 0 -32 14.3389 -32 32s14.3389 32 32 32s32 -14.3389 32 -32s-14.3389 -32 -32 -32z
-M160 160h192c35.3223 0 64 -28.6777 64 -64s-28.6777 -64 -64 -64h-192c-35.3223 0 -64 28.6777 -64 64s28.6777 64 64 64z" />
-    <glyph glyph-name="stopwatch-20" unicode="&#xe06f;" horiz-adv-x="448" 
-d="M398.5 257.09c21.1045 -32.3291 33.501 -71.1426 33.501 -112.596c0 -0.165039 -0.000976562 -0.329102 -0.000976562 -0.494141c0 -116 -94.8701 -209.77 -211.28 -208c-113.96 1.78027 -208.08 100.5 -204.63 214.43c3.10156 100.915 78.4639 183.935 175.91 199.07
-v34.5h-32c-8.81836 0.0273438 -15.9727 7.18164 -16 16v32c0.0273438 8.81836 7.18164 15.9727 16 16h128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32v-34.5c37.3506 -5.76855 71.749 -21.625 99.6904 -44.5898l24.6797 24.6797
-c2.89648 2.89746 6.90137 4.69043 11.3174 4.69043s8.41602 -1.79297 11.3125 -4.69043l22.6797 -22.6797c2.89746 -2.89648 4.69043 -6.90137 4.69043 -11.3174s-1.79297 -8.41602 -4.69043 -11.3125l-26.5898 -26.5801zM204.37 70.4502l-49.1299 0.0400391
-c1.7998 15.6299 14.8496 36.2002 26.4102 51.2002c21.9092 30.0996 34.3496 45.7295 34.3496 81.3096c0 35.1504 -12.5703 61 -55.5703 61c-47.9492 0 -56.4297 -32.9404 -56.4297 -60.2402v-4.06934c0.0703125 -4.46582 3.71484 -8.07129 8.19629 -8.07129
-c0.0449219 0 0.0888672 0 0.133789 0.000976562h24.9004c0.0439453 -0.000976562 0.0859375 0.000976562 0.130859 0.000976562c4.48145 0 8.12891 3.60352 8.19824 8.06934v5.22949c0 15.2803 3.30078 22.6797 12.6904 22.6797c10.4199 0 12.21 -7.34961 12.21 -24.2695
-c0 -25.0205 -6.67969 -33.1504 -27.0996 -62.3398c-23.7803 -33.96 -35.6699 -56.1504 -38.4502 -91.3701c-0.0273438 -0.388672 -0.0449219 -0.765625 -0.0449219 -1.16113c0 -9.08496 7.37598 -16.46 16.46 -16.46c0.0654297 0 0.129883 0 0.194336 0.000976562h82.8506
-c0.0410156 -0.000976562 0.0800781 0.000976562 0.121094 0.000976562c4.48145 0 8.12891 3.60352 8.19922 8.06934v22.3096c-0.0703125 4.46484 -3.71582 8.07129 -8.19727 8.07129c-0.0410156 0 -0.0820312 -0.000976562 -0.123047 -0.000976562zM344 95.6797v107.021
-c0 38.6602 -19 61.2998 -55.7998 61.2998c-36.6201 0 -56.2002 -22.4902 -56.2002 -63.2197v-105.33c0 -33.9307 11.1904 -63.4502 54.7695 -63.4502c44.9307 0 57.2305 28.5195 57.2305 63.6797zM287.87 226.27c10.0098 0 13.0195 -8.05957 13 -19.3291v-115.94
-c0 -13.2695 -3.36035 -21.2695 -13 -21.2695s-13.2305 7.47949 -13.2305 20.5898v115.949c0 12.5 3.82031 20 13.2305 20z" />
-    <glyph glyph-name="store-alt-slash" unicode="&#xe070;" horiz-adv-x="640" 
-d="M17.8896 324.38l88.4707 -68.3799h-74.2607c-25.5898 0 -40.79 28.5 -26.5898 49.7998zM576 34.5801l57.8301 -44.6797c3.76562 -2.92871 6.1709 -7.50781 6.1709 -12.6426c0 -3.69434 -1.25488 -7.09863 -3.36133 -9.80762l-19.6396 -25.2598
-c-2.92773 -3.77539 -7.5127 -6.1875 -12.6553 -6.1875c-3.69727 0 -7.10352 1.25684 -9.81445 3.36719l-588.351 454.72c-3.76562 2.92871 -6.1709 7.50781 -6.1709 12.6426c0 3.69434 1.25488 7.09766 3.36133 9.80762l19.6299 25.2695
-c2.92871 3.76855 7.50879 6.17676 12.6465 6.17676c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l34.6904 -26.8203l10.6592 16c5.71387 8.57715 15.4521 14.2002 26.5215 14.2002h0.0888672h405.18c0.00390625 0 -0.0107422 0.0322266 -0.00683594 0.0322266
-c11.1172 0 20.9248 -5.64941 26.707 -14.2324l85.29 -128c14.1104 -21.2998 -1.08984 -49.7998 -26.5898 -49.7998h-318.48l41.4004 -32h53.0801v-41l128 -99v140h64v-189.42zM320 64v26.8799l64 -49.4697v-73.4102c0 -17.6611 -14.3389 -32 -32 -32h-256
-c-17.6611 0 -32 14.3389 -32 32v256h64v-160h192z" />
-    <glyph glyph-name="store-slash" unicode="&#xe071;" horiz-adv-x="640" 
-d="M121.51 64h226.91l157.33 -128h-414.52c-16.8105 0 -30.4004 14.2998 -30.4004 32v196.8c5.02051 -1.53516 10.2939 -2.76074 15.5801 -3.59961c5.62891 -0.791016 11.2549 -1.19727 17.0996 -1.2002c9.65723 0.157227 19.0283 1.47559 28 3.7998v-99.7998z
-M93.5098 192.09c-0.0644531 0 -0.0566406 -0.00390625 -0.121094 -0.00390625c-4.37402 0 -8.67969 0.294922 -12.8984 0.864258c-58.9404 8.46973 -87.0098 81.6094 -56.4902 135l133.51 -108.62c-16.71 -16.5205 -38.8994 -27.2402 -64 -27.2402zM602.13 -10.0898
-c3.59863 -3.04297 5.86719 -7.59961 5.86719 -12.6758c0 -3.6582 -1.1875 -7.04102 -3.19727 -9.78418l-18.6602 -25.2598c-2.66211 -3.74902 -7.04102 -6.17871 -11.9854 -6.17871c-3.54785 0 -6.80469 1.26074 -9.34473 3.3584l-558.939 454.72
-c-3.59863 3.04297 -5.86719 7.59961 -5.86719 12.6758c0 3.6582 1.1875 7.04102 3.19727 9.78418l18.6602 25.2598c2.66016 3.74805 7.03711 6.17676 11.9785 6.17676c3.55176 0 6.81055 -1.26367 9.35156 -3.36621l33.6895 -27.4004l9.38965 15.7803
-c5.16309 8.89941 14.7383 14.8848 25.7305 15h383.81c10.998 -0.109375 20.5781 -6.09668 25.7402 -15l61.6602 -103.6c31.9404 -53.6006 3.59961 -127.99 -56.0596 -136.4c-4.28027 -0.598633 -8.55762 -0.90625 -13 -0.910156c-28.0303 0 -52.9199 13 -70.1104 33.1104
-c-17.1104 -20.1104 -42 -33.1104 -70.1104 -33.1104c-8.83496 0.130859 -17.3857 1.58594 -25.4102 4.14062l137.82 -112.11v79.6797c8.95801 -2.36523 18.3291 -3.6875 28 -3.7998c5.9082 0.00683594 11.5957 0.412109 17.29 1.2002
-c5.31152 0.757812 10.584 1.9873 15.5703 3.59961v-130.21z" />
-    <glyph glyph-name="toilet-paper-slash" unicode="&#xe072;" horiz-adv-x="640" 
-d="M64 256c0 10.8096 0.530273 21.3398 1.41992 31.6699l316 -244.25c-4.17969 -32.2002 -12.8701 -57.7197 -22.1797 -85.5498c-4.19727 -12.7002 -16.1592 -21.8701 -30.2588 -21.8701h-0.121094h-280.86c-8.79395 0.0429688 -15.917 7.19824 -15.917 16.002
-c0 1.74512 0.279297 3.4248 0.796875 4.99805c21.3701 64.1201 31.1201 85.75 31.1201 126.87v172.13zM633.82 -10.0898c3.77148 -2.92871 6.18164 -7.51074 6.18164 -12.6514c0 -3.69531 -1.25488 -7.09863 -3.3623 -9.80859l-19.6396 -25.2598
-c-2.92773 -3.77246 -7.51074 -6.18262 -12.6514 -6.18262c-3.69434 0 -7.09863 1.25488 -9.80859 3.3623l-588.36 454.72c-3.76855 2.92871 -6.17578 7.50879 -6.17578 12.6465c0 3.69727 1.25684 7.10352 3.36621 9.81348l19.6299 25.2598
-c2.92871 3.76855 7.50879 6.17676 12.6465 6.17676c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l53.2803 -41.1504c16.6299 27.7002 37.9297 44.5303 61.2598 44.5303h284.5c-36.8701 -38.5 -60.5 -108.38 -60.5 -192v-73l50.4297 -39
-c-11.4297 31.5996 -18.4297 70 -18.4297 112c0 106 43 192 96 192s96 -86 96 -192c0 -92.3203 -32.7197 -168.91 -76.1797 -187.28zM512 192c17.6201 0 32 28.6299 32 64s-14.3701 64 -32 64s-32 -28.6201 -32 -64s14.3701 -64 32 -64z" />
-    <glyph glyph-name="users-slash" unicode="&#xe073;" horiz-adv-x="640" 
-d="M132.65 235.68c-10.3945 -7.33496 -23.1328 -11.6836 -36.8105 -11.6836c-35.2344 0 -63.8398 28.6055 -63.8398 63.8398v0.164062c0.0615234 7.80859 1.5625 15.3242 4.20996 22.2197zM173.09 173.4c-40.2002 -21.9072 -68.8896 -62.1416 -75.1797 -109.4h-65.9102
-c-17.6611 0 -32 14.3389 -32 32v32c0.0332031 35.3076 28.6924 63.9668 64 64h64c0.0224609 0 0.0537109 0.0078125 0.0771484 0.0078125c17.5605 0 33.4727 -7.11035 45.0127 -18.6074zM544 224c-35.3076 0.0332031 -63.9668 28.6924 -64 64c0 35.3223 28.6777 64 64 64
-s64 -28.6777 64 -64s-28.6777 -64 -64 -64zM500.56 92.8896l133.271 -102.989c3.76562 -2.92871 6.1709 -7.50781 6.1709 -12.6426c0 -3.69434 -1.25488 -7.09863 -3.36133 -9.80762l-19.6396 -25.2705c-2.92773 -3.77051 -7.51074 -6.18066 -12.6504 -6.18066
-c-3.69922 0 -7.1084 1.25879 -9.81934 3.37109l-588.351 454.72c-3.76562 2.92871 -6.1709 7.50781 -6.1709 12.6426c0 3.69434 1.25488 7.09766 3.36133 9.80762l19.6299 25.2695c2.92871 3.76855 7.50879 6.17676 12.6465 6.17676
-c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l163.94 -126.7c6.90918 55.25 53.46 98.0801 110.6 98.0801c0.0234375 0 0.0458984 0.000976562 0.0703125 0.000976562c61.7754 0 111.93 -50.1533 111.93 -111.93v-0.0712891c0 -47.3096 -29.54 -86.9297 -71 -103.23
-l55.0898 -42.5996c37.6797 -6.53711 69.0986 -31.4668 84.4697 -65.2803zM128 44.79c0 59.79 45.7402 108.38 104 114.08l244.57 -189c-3.99707 -1.1582 -8.21582 -1.81152 -12.5703 -1.87012h-288c-26.4922 0 -48 21.5078 -48 48v28.79zM576 192
-c35.3076 -0.0332031 63.9668 -28.6924 64 -64v-32c0 -17.6611 -14.3389 -32 -32 -32h-66c-6.21875 47.2666 -34.8916 87.5146 -75.0898 109.4c11.54 11.4971 27.4609 18.5996 45.0215 18.5996h0.0683594h64z" />
-    <glyph glyph-name="virus" unicode="&#xe074;" 
-d="M483.55 220.45c0.180664 0.00292969 0.332031 0.00488281 0.512695 0.00488281c15.7021 0 28.4502 -12.748 28.4502 -28.4502s-12.748 -28.4502 -28.4502 -28.4502c-0.180664 0 -0.362305 0.00195312 -0.542969 0.00488281h-21.5391
-c-50.6807 0 -76.0703 -61.2793 -40.2305 -97.1191l15.25 -15.2402c4.66602 -5.06836 7.50879 -11.8418 7.50879 -19.2666c0 -15.7021 -12.748 -28.4502 -28.4502 -28.4502c-7.42578 0 -14.1904 2.85059 -19.2588 7.5166l-15.2402 15.2305
-c-35.8398 35.8398 -97.1094 10.4492 -97.1094 -40.2305v-21.5195c0 -15.7021 -12.748 -28.4502 -28.4502 -28.4502s-28.4502 12.748 -28.4502 28.4502v21.5391c0 50.6807 -61.2695 76.0703 -97.1094 40.2305l-15.2402 -15.25
-c-5.06836 -4.66602 -11.8418 -7.50879 -19.2666 -7.50879c-15.7021 0 -28.4502 12.748 -28.4502 28.4502c0 7.42578 2.85059 14.1904 7.5166 19.2588l15.2305 15.2402c35.8398 35.8398 10.4492 97.1191 -40.2305 97.1191h-21.5498
-c-0.180664 -0.00292969 -0.361328 -0.00488281 -0.542969 -0.00488281c-15.7021 0 -28.4502 12.748 -28.4502 28.4502s12.748 28.4502 28.4502 28.4502c0.181641 0 0.362305 -0.00195312 0.542969 -0.00488281h21.5693c50.6807 0 76.0703 61.2695 40.2305 97.1094
-l-15.25 15.25c-4.73047 5.08008 -7.61816 11.8994 -7.61816 19.3818c0 15.6963 12.7432 28.4404 28.4395 28.4404c7.48535 0 14.2988 -2.89844 19.3789 -7.63184l15.2402 -15.2305c35.8398 -35.8291 97.1094 -10.4492 97.1094 40.2305v21.5596
-c0 15.7021 12.748 28.4502 28.4502 28.4502s28.4502 -12.748 28.4502 -28.4502v-21.5498c0 -50.6797 61.2695 -76.0596 97.1094 -40.2295l15.2402 15.2197c5.08008 4.7334 11.9023 7.62305 19.3867 7.62305c15.6963 0 28.4404 -12.7432 28.4404 -28.4395
-c0 -7.48242 -2.89648 -14.2939 -7.62695 -19.374l-15.2305 -15.25c-35.8398 -35.8398 -10.4492 -97.1094 40.2305 -97.1094h21.5498zM224 176c26.4922 0 48 21.5078 48 48s-21.5078 48 -48 48s-48 -21.5078 -48 -48s21.5078 -48 48 -48zM304 120c13.2461 0 24 10.7539 24 24
-s-10.7539 24 -24 24s-24 -10.7539 -24 -24s10.7539 -24 24 -24z" />
-    <glyph glyph-name="virus-slash" unicode="&#xe075;" horiz-adv-x="640" 
-d="M114 220.4c9.90039 0.0996094 19.7002 2.89941 28.0996 8l244.5 -189c-21.1992 -7.5 -38.1992 -26.8008 -38.1992 -53.4004v-21.5c0 -15.7002 -12.7002 -28.4004 -28.4004 -28.4004s-28.5 12.7002 -28.5 28.4004v21.5c0 50.7002 -61.2998 76 -97.0996 40.2002
-l-15.2002 -15.2002c-0.5 -0.599609 -1.10059 -1.09961 -1.60059 -1.59961c-11.5 -10.6006 -29.5996 -9.90039 -40.1992 1.59961c-10.6006 11.5 -9.90039 29.5 1.59961 40.2002l15.2002 15.2998c35.8994 35.7998 10.5 97.0996 -40.2002 97.0996h-21.5996
-c-15.7002 0 -28.4004 12.7002 -28.4004 28.4004s12.7002 28.4004 28.4004 28.4004h21.5996zM617 -57.7998c-5.40039 -7 -15.5 -8.2998 -22.4004 -2.90039l-588.399 454.7c-7 5.5 -8.2002 15.5 -2.7998 22.5l19.5996 25.2998c5.5 7 15.5 8.2002 22.5 2.7998l93.2002 -72.0996
-c11.0996 11.0996 29.3994 11.5996 40.5 0.5l15.2998 -15.2002c35.7998 -35.8994 97.0996 -10.5 97.0996 40.2002v21.5996c0 15.7002 12.7002 28.4004 28.4004 28.4004s28.4004 -12.7002 28.5 -28.5v-21.5996c0 -50.7002 61.2998 -76 97.0996 -40.2002l15.2002 15.2002
-c10.9004 10.0996 27.7002 10.0996 38.6006 0c11.5996 -10.7002 12.2998 -28.7002 1.59961 -40.2002l-15.2002 -15.2998c-35.8994 -35.8008 -10.5 -97.1006 40.2002 -97.1006h21.5c15.7002 0 28.4004 -12.7002 28.4004 -28.3994
-c0 -15.7002 -12.7002 -28.4004 -28.4004 -28.4004h-21.5c-30.5 0 -51.2002 -22.0996 -55.4004 -47.5l163.2 -126c7 -5.5 8.2002 -15.5 2.7998 -22.5zM335.4 220.5c0.0996094 1.2002 0.599609 2.2998 0.5 3.5c0 26.5 -21.5 48 -48 48
-c-5.2002 -0.0996094 -10.5 -1.09961 -15.4004 -2.90039z" />
-    <glyph glyph-name="viruses" unicode="&#xe076;" horiz-adv-x="640" 
-d="M624 96c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16h-12.1201c-28.5098 0 -42.79 -34.4697 -22.6299 -54.6299l8.58008 -8.57031c2.89648 -2.89648 4.68457 -6.90137 4.68457 -11.3174c0 -8.83105 -7.16992 -16.002 -16.002 -16.002
-c-4.41602 0 -8.41602 1.79297 -11.3125 4.68945l-8.57031 8.58008c-20.1602 20.1602 -54.6299 5.87988 -54.6299 -22.6299v-12.1201c0 -8.83105 -7.16895 -16 -16 -16s-16 7.16895 -16 16v12.1201c0 28.5098 -34.4697 42.79 -54.6299 22.6299l-8.57031 -8.58008
-c-2.89648 -2.89648 -6.90137 -4.68457 -11.3174 -4.68457c-8.83105 0 -16.002 7.16992 -16.002 16.002c0 4.41602 1.79297 8.41602 4.68945 11.3125l8.58008 8.57031c20.1602 20.1602 5.87988 54.6299 -22.6299 54.6299h-12.1201c-8.83105 0 -16 7.16895 -16 16
-s7.16895 16 16 16h12.1201c28.5098 0 42.79 34.4697 22.6299 54.6299l-8.58008 8.57031c-2.89648 2.89648 -4.68457 6.90137 -4.68457 11.3174c0 8.83105 7.16992 16.002 16.002 16.002c4.41602 0 8.41602 -1.79297 11.3125 -4.68945l8.57031 -8.58008
-c20.1602 -20.1602 54.6299 -5.87988 54.6299 22.6299v12.1201c0 8.83105 7.16895 16 16 16s16 -7.16895 16 -16v-12.1201c0 -28.5098 34.4697 -42.79 54.6299 -22.6299l8.57031 8.58008c2.89648 2.89648 6.90137 4.68457 11.3174 4.68457
-c8.83105 0 16.002 -7.16992 16.002 -16.002c0 -4.41602 -1.79297 -8.41602 -4.68945 -11.3125l-8.58008 -8.57031c-20.1602 -20.1602 -5.87988 -54.6299 22.6299 -54.6299h12.1201zM480 64c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32
-s14.3389 -32 32 -32zM346.51 234.67c-38.0195 0 -57.0498 -45.96 -30.1699 -72.8398l11.4297 -11.4297c3.8623 -3.8623 6.24609 -9.20117 6.24609 -15.0879c0 -11.7744 -9.55957 -21.334 -21.334 -21.334c-5.88672 0 -11.2197 2.38965 -15.082 6.25195l-11.4297 11.4297
-c-26.8398 26.8799 -72.8398 7.83008 -72.8398 -30.1699v-16.1602c0 -11.7725 -9.55762 -21.3301 -21.3301 -21.3301s-21.3301 9.55762 -21.3301 21.3301v16.1602c0 38.0195 -45.96 57.0498 -72.8398 30.1699l-11.4297 -11.4297
-c-3.8623 -3.8623 -9.20117 -6.24609 -15.0879 -6.24609c-11.7744 0 -21.334 9.55957 -21.334 21.334c0 5.88672 2.38965 11.2197 6.25195 15.082l11.4297 11.4297c26.8799 26.8398 7.83008 72.8398 -30.1699 72.8398h-16.1602c-11.7725 0 -21.3301 9.55762 -21.3301 21.3301
-s9.55762 21.3301 21.3301 21.3301h16.1602c38.0195 0 57.0498 45.96 30.1699 72.8398l-11.4297 11.4404c-3.83008 3.85645 -6.19043 9.17188 -6.19043 15.0312c0 11.7725 9.55762 21.3301 21.3301 21.3301c5.86035 0 11.1729 -2.36914 15.0303 -6.20215l11.4297 -11.4297
-c26.8398 -26.8799 72.8398 -7.83008 72.8398 30.1699v16.1602c0 11.7725 9.55762 21.3301 21.3301 21.3301s21.3301 -9.55762 21.3301 -21.3301v-16.1602c0 -38.0195 45.96 -57.0498 72.8398 -30.1699l11.4297 11.4297c3.85742 3.83301 9.17578 6.19531 15.0361 6.19531
-c11.7725 0 21.3301 -9.55762 21.3301 -21.3291c0 -5.85938 -2.36621 -11.1689 -6.19629 -15.0254l-11.4297 -11.4404c-26.8799 -26.8398 -7.83008 -72.8398 30.1699 -72.8398h16.1602c11.7725 0 21.3301 -9.55762 21.3301 -21.3301s-9.55762 -21.3301 -21.3301 -21.3301
-h-16.1602zM160 256c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM240 224c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16s-16 -7.16895 -16 -16s7.16895 -16 16 -16z" />
-    <glyph glyph-name="vest" unicode="&#xe085;" horiz-adv-x="448" 
-d="M437.252 208.123c6.76562 -10.1484 10.748 -22.3994 10.748 -35.5v-204.623c0 -17.6611 -14.3389 -32 -32 -32h-192v224l73.8115 221.438c-21.7695 -12.3281 -47.0635 -19.5205 -73.8115 -19.6729c-26.748 0.150391 -52.042 7.34277 -73.8115 19.6699l56.9463 -170.836
-l-13.4922 -40.4805c-1.05957 -3.17969 -1.64258 -6.58496 -1.64258 -10.1191v-224h-160c-17.6611 0 -32 14.3389 -32 32v204.623c0 13.1006 3.98242 25.3516 10.748 35.5l53.252 79.877v128c0 17.6611 14.3389 32 32 32h32
-c4.91211 -0.00195312 9.50586 -1.49512 13.3115 -4.03125l25 -16.6719c16.4814 -11.0186 36.4971 -17.4463 57.793 -17.4463s41.1025 6.42773 57.584 17.4463l25 16.6719c3.80566 2.53613 8.39941 4.0293 13.3115 4.03125h32c17.6611 0 32 -14.3389 32 -32v-128z
-M131.312 76.6885c2.78125 2.87891 4.48828 6.80078 4.48828 11.1152c0 8.83105 -7.16992 16 -16 16c-4.31445 0 -8.23242 -1.71094 -11.1113 -4.49219l-48 -48c-2.78125 -2.87891 -4.48828 -6.80078 -4.48828 -11.1152c0 -8.83105 7.16992 -16 16 -16
-c4.31445 0 8.23242 1.71094 11.1113 4.49219zM387.312 28.6885c2.89746 2.89453 4.69043 6.89844 4.69043 11.3135s-1.79297 8.41504 -4.69043 11.3096l-48 48c-2.87891 2.78125 -6.80078 4.48828 -11.1152 4.48828c-8.83105 0 -16 -7.16992 -16 -16
-c0 -4.31445 1.71094 -8.23242 4.49219 -11.1113l48 -48c2.89453 -2.89746 6.89844 -4.69043 11.3135 -4.69043s8.41504 1.79297 11.3096 4.69043z" />
-    <glyph glyph-name="vest-patches" unicode="&#xe086;" horiz-adv-x="448" 
-d="M437.252 208.123c6.76562 -10.1484 10.748 -22.3994 10.748 -35.5v-204.623c0 -17.6611 -14.3389 -32 -32 -32h-192v224l73.8105 221.434c-21.7705 -12.3252 -47.0635 -19.5156 -73.8105 -19.668c-26.7471 0.154297 -52.041 7.34668 -73.8115 19.6738l56.9463 -170.84
-l-13.4922 -40.4805c-1.05957 -3.17969 -1.64258 -6.58496 -1.64258 -10.1191v-224h-160c-17.6611 0 -32 14.3389 -32 32v204.623c0 13.1006 3.98242 25.3516 10.748 35.5l53.252 79.877v128c0 17.6611 14.3389 32 32 32h32l0.0283203 -0.0146484
-c4.91113 0 9.47949 -1.47949 13.2832 -4.0166l25 -16.6719c16.4814 -11.0186 36.4971 -17.4463 57.793 -17.4463s41.1025 6.42773 57.584 17.4463l25 16.6719c3.80371 2.53711 8.39551 4.03125 13.3066 4.03125h0.00488281h32c17.6611 0 32 -14.3389 32 -32v-128z
-M63.5 175.516l15.5156 -15.5156l-15.5156 -15.5156c-2.12402 -2.16699 -3.43066 -5.1377 -3.43066 -8.4082c0 -6.62891 5.38086 -12.0107 12.0098 -12.0107c3.2793 0 6.25293 1.31738 8.4209 3.4502l15.5 15.5l15.5 -15.5
-c2.16797 -2.13281 5.14551 -3.44629 8.42383 -3.44629c6.62891 0 12.0107 5.38184 12.0107 12.0098c0 3.27051 -1.31055 6.23828 -3.43457 8.40527l-15.5156 15.5156l15.5156 15.5156c2.12402 2.16699 3.43066 5.1377 3.43066 8.4082
-c0 6.62891 -5.38086 12.0107 -12.0098 12.0107c-3.2793 0 -6.25293 -1.31738 -8.4209 -3.4502l-15.5 -15.5l-15.5 15.5c-2.16797 2.13281 -5.14551 3.44629 -8.42383 3.44629c-6.62891 0 -12.0107 -5.38184 -12.0107 -12.0098c0 -3.27051 1.31055 -6.23828 3.43457 -8.40527
-zM96 -8c22.0762 0 40 17.9238 40 40s-17.9238 40 -40 40s-40 -17.9238 -40 -40s17.9238 -40 40 -40zM359.227 112.215c13.6875 0.0966797 24.7734 11.2139 24.7734 24.9229c0 0.757812 -0.0341797 1.50684 -0.0996094 2.24707
-c-1.16406 12.8008 -12.5742 22.1113 -25.4004 22.0762l-5.05078 -0.0371094l0.0371094 5.05762c0.0722656 12.7998 -9.26758 24.2568 -22.0566 25.4189c-0.742188 0.0664062 -1.46973 0.0947266 -2.22949 0.0947266c-13.7012 0 -24.8418 -11.0527 -24.9854 -24.7207
-l-0.214844 -48.5742c0 -0.00976562 -0.000976562 -0.0195312 -0.000976562 -0.0292969c0 -3.68164 2.98926 -6.6709 6.6709 -6.6709h0.0302734z" />
-    <glyph glyph-name="glass-martini" unicode="&#xf000;" 
-d="M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4
-c30.0498 0 45.0996 -36.3398 23.8496 -57.5996z" />
-    <glyph glyph-name="music" unicode="&#xf001;" 
-d="M470.38 446.49c3.03613 0.957031 6.26953 1.47949 9.62012 1.47949c17.6514 0 31.9834 -14.3223 32 -31.9697v-352c0 -35.3496 -43 -64 -96 -64s-96 28.6602 -96 64s43 64 96 64c11.0361 -0.0605469 21.7158 -1.4248 32 -3.92969v184.609l-256 -75v-233.68
-c0 -35.3398 -43 -64 -96 -64s-96 28.6602 -96 64s43 64 96 64c11.0352 -0.0625 21.7139 -1.42285 32 -3.91992v261.41c0.00878906 14.3125 9.43359 26.4336 22.4102 30.5098z" />
-    <glyph glyph-name="search" unicode="&#xf002;" 
-d="M505 5.2998c9.2998 -9.39941 9.2998 -24.5996 -0.0996094 -34l-28.3008 -28.2998c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-99.7002 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208
-s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7zM208 112c70.7998 0 128 57.2998 128 128c0 70.7998 -57.2998 128 -128 128c-70.7998 0 -128 -57.2998 -128 -128c0 -70.7998 57.2998 -128 128 -128z
-" />
-    <glyph glyph-name="heart" unicode="&#xf004;" 
-d="M462.3 385.4c62.7998 -53.6006 66.1006 -149.801 9.7998 -207.9l-193.5 -199.8c-12.5 -12.9004 -32.7998 -12.9004 -45.2998 0l-193.5 199.8c-56.2002 58.0996 -52.8994 154.3 9.90039 207.9c54.7998 46.6992 136.399 38.2998 186.6 -13.6006l19.7002 -20.2998
-l19.7002 20.2998c50.2998 51.9004 131.8 60.2998 186.6 13.6006z" />
-    <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="576" 
-d="M259.3 430.2c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4l146.1 -21.2998c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002
-c-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998z" />
-    <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="448" 
-d="M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996
-c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z" />
-    <glyph glyph-name="film" unicode="&#xf008;" 
-d="M488 384c13.2998 0 24 -10.7002 24 -24v-336c0 -13.2998 -10.7002 -24 -24 -24h-8v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-320v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-8
-c-13.2998 0 -24 10.7002 -24 24v336c0 13.2998 10.7002 24 24 24h8v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h320v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h8zM96 76v40c0 6.59961 -5.40039 12 -12 12h-40
-c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 268v40
-c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM368 60v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200
-c6.59961 0 12 5.40039 12 12zM368 228v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12zM480 76v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40
-c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 268v40c0 6.59961 -5.40039 12 -12 12h-40
-c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="th-large" unicode="&#xf009;" 
-d="M296 416h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24zM216 416c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192
-c-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24h192zM0 152c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160zM296 -32c-13.2549 0 -24 10.7451 -24 24v160
-c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192z" />
-    <glyph glyph-name="th" unicode="&#xf00a;" 
-d="M149.333 392v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM330.667 152c0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80
-c0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM362.667 392c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM330.667 312
-c0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM125.333 256c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333
-c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM386.667 128
-c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM386.667 -32c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24
-v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM181.333 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80z" />
-    <glyph glyph-name="th-list" unicode="&#xf00b;" 
-d="M149.333 232v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80
-c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM125.333 416c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM205.333 -32
-c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667zM181.333 392c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80
-c0 -13.2549 -10.7451 -24 -24 -24h-282.667c-13.2549 0 -24 10.7451 -24 24v80zM205.333 128c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667z" />
-    <glyph glyph-name="check" unicode="&#xf00c;" 
-d="M173.898 8.5957l-166.4 166.4c-9.99707 9.99707 -9.99707 26.2061 0 36.2041l36.2031 36.2041c9.99707 9.99805 26.207 9.99805 36.2041 0l112.095 -112.095l240.095 240.095c9.99707 9.99707 26.207 9.99707 36.2041 0l36.2031 -36.2041
-c9.99707 -9.99707 9.99707 -26.2061 0 -36.2041l-294.4 -294.401c-9.99805 -9.99707 -26.207 -9.99707 -36.2031 0.000976562z" />
-    <glyph glyph-name="times" unicode="&#xf00d;" horiz-adv-x="352" 
-d="M242.72 192l100.07 -100.07c12.2803 -12.29 12.2803 -32.1992 0 -44.4795l-22.2402 -22.2402c-12.2803 -12.2803 -32.2002 -12.2803 -44.4795 0l-100.07 100.07l-100.07 -100.07c-12.2793 -12.2803 -32.1992 -12.2803 -44.4795 0l-22.2402 22.2402
-c-12.2803 12.29 -12.2803 32.2002 0 44.4795l100.07 100.07l-100.07 100.07c-12.2803 12.29 -12.2803 32.1992 0 44.4795l22.2402 22.2402c12.29 12.2803 32.2002 12.2803 44.4795 0l100.07 -100.07l100.07 100.07c12.29 12.2803 32.1992 12.2803 44.4795 0
-l22.2402 -22.2402c12.2803 -12.29 12.2803 -32.2002 0 -44.4795z" />
-    <glyph glyph-name="search-plus" unicode="&#xf00e;" 
-d="M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-56v-56c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v56h-56c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h56v56c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12
-v-56h56c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208
-s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002c9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136
-s60.7998 -136 136 -136s136 60.7998 136 136z" />
-    <glyph glyph-name="search-minus" unicode="&#xf010;" 
-d="M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002
-c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002
-c9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136s60.7998 -136 136 -136s136 60.7998 136 136z" />
-    <glyph glyph-name="power-off" unicode="&#xf011;" 
-d="M400 393.9c63 -45 104 -118.601 104 -201.9c0 -136.8 -110.8 -247.7 -247.5 -248c-136.5 -0.299805 -248.3 111 -248.5 247.6c-0.0996094 83.3008 40.9004 157.101 103.8 202.2c11.7002 8.2998 28 4.7998 35 -7.7002l15.7998 -28.0996
-c5.90039 -10.5 3.10059 -23.7998 -6.59961 -31c-41.5 -30.7998 -68 -79.5996 -68 -134.9c-0.0996094 -92.2998 74.5 -168.1 168 -168.1c91.5996 0 168.6 74.2002 168 169.1c-0.299805 51.8008 -24.7002 101.801 -68.0996 134c-9.7002 7.2002 -12.4004 20.5 -6.5 30.9004
-l15.7998 28.0996c7 12.4004 23.2002 16.1006 34.7998 7.80078zM296 184c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v240c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-240z" />
-    <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="640" 
-d="M216 160c8.83984 0 16 -7.16016 16 -16v-192c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v192c0 8.83984 7.16016 16 16 16h48zM88 64c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v96
-c0 8.83984 7.16016 16 16 16h48zM344 256c8.83984 0 16 -7.16016 16 -16v-288c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v288c0 8.83984 7.16016 16 16 16h48zM472 352c8.83984 0 16 -7.16016 16 -16v-384c0 -8.83984 -7.16016 -16 -16 -16h-48
-c-8.83984 0 -16 7.16016 -16 16v384c0 8.83984 7.16016 16 16 16h48zM600 448c8.83984 0 16 -7.16016 16 -16v-480c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v480c0 8.83984 7.16016 16 16 16h48z" />
-    <glyph glyph-name="cog" unicode="&#xf013;" 
-d="M487.4 132.3c4.89941 -2.7998 7.09961 -8.59961 5.59961 -14.0996c-11.0996 -35.7002 -30 -67.9004 -54.7002 -94.6006c-3.7998 -4.19922 -9.89941 -5.09961 -14.7998 -2.2998l-42.5996 24.6006c-18 -15.3008 -38.6006 -27.2002 -60.8008 -35.1006v-49.2002
-c0 -5.59961 -3.89941 -10.5 -9.39941 -11.6992c-34.9004 -7.80078 -72.5 -8.2002 -109.2 0c-5.5 1.19922 -9.40039 6.09961 -9.40039 11.6992v49.2002c-22.2998 7.7998 -42.8994 19.7002 -60.7998 35.1006l-42.5996 -24.6006c-4.7998 -2.7998 -11 -1.7998 -14.7998 2.2998
-c-24.7002 26.8008 -43.6006 59 -54.7002 94.6006c-1.60059 5.39941 0.599609 11.2002 5.5 14l42.5996 24.5996c-4.2998 23.2002 -4.2998 47 0 70.2002l-42.5996 24.5996c-4.90039 2.80078 -7.2002 8.60059 -5.5 14c11.0996 35.7002 30 67.9004 54.7002 94.6006
-c3.7998 4.2002 9.89941 5.09961 14.7998 2.2998l42.5 -24.5996c18 15.2998 38.5996 27.1992 60.7998 35.0996v49.2002c0 5.59961 3.90039 10.5 9.40039 11.7002c34.8994 7.7998 72.5 8.19922 109.199 0c5.5 -1.2002 9.40039 -6.10059 9.40039 -11.7002v-49.1006
-c22.2998 -7.7998 42.9004 -19.6992 60.7998 -35.0996l42.6006 24.5996c4.7998 2.80078 11 1.80078 14.7998 -2.2998c24.7002 -26.7998 43.5996 -59 54.7002 -94.5996c1.59961 -5.40039 -0.600586 -11.2002 -5.5 -14l-42.6006 -24.6006
-c4.2998 -23.1992 4.2998 -47 0 -70.1992zM256 112c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z" />
-    <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="576" 
-d="M280.37 299.74c2.09082 1.68555 4.76562 2.69434 7.6582 2.69434s5.55078 -1.00879 7.6416 -2.69434l184.33 -151.74v-164c0 -8.83105 -7.16895 -16 -16 -16l-112.02 0.30957c-8.83105 0 -16.001 7.16895 -16.001 15.999c0 0.0175781 0 0.0341797 0.000976562 0.0517578
-v95.6396c0 8.83105 -7.16992 16 -16 16h-64c-8.83105 0 -16 -7.16895 -16 -16v-95.71c0 -8.80371 -7.12695 -15.9561 -15.9209 -16l-112.06 -0.290039c-8.83105 0 -16 7.16895 -16 16v163.89zM571.6 196.53c2.70703 -2.20117 4.42578 -5.56152 4.42578 -9.31836
-c0 -2.88867 -1.02246 -5.54004 -2.72559 -7.6123l-25.5 -31c-2.20117 -2.66309 -5.53418 -4.35059 -9.25684 -4.35059c-2.90332 0 -5.56641 1.0332 -7.64258 2.75098l-235.23 193.74c-2.09082 1.68555 -4.7666 2.69434 -7.6582 2.69434
-c-2.89258 0 -5.55078 -1.00879 -7.6416 -2.69434l-235.22 -193.74c-2.0752 -1.71387 -4.73926 -2.75586 -7.63867 -2.75586c-3.73242 0 -7.07031 1.70898 -9.27148 4.38574l-25.5 31c-1.71875 2.07617 -2.7627 4.74414 -2.7627 7.64648
-c0 3.72266 1.69824 7.05176 4.3623 9.25391l253.13 208.47c8.29102 6.82227 18.9668 10.9209 30.5312 10.9209s22.1787 -4.09863 30.4688 -10.9209l89.5303 -73.6602v72.6104c0 6.62305 5.37695 12 12 12h56c6.62305 0 12 -5.37695 12 -12v-138.51z" />
-    <glyph glyph-name="clock" unicode="&#xf017;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM348.49 127c2.19531 2.73926 3.52637 6.21973 3.52637 10c0 5.05566 -2.35059 9.56738 -6.0166 12.5l-58 42.5v144c0 8.83105 -7.16895 16 -16 16h-32
-c-8.83105 0 -16 -7.16895 -16 -16v-155.55c0 -12.6338 5.8418 -23.8975 15 -31.2305l67 -49.7197v0c2.7373 -2.19043 6.21387 -3.51758 9.98926 -3.51758c5.05566 0 9.56738 2.35059 12.501 6.01758l20 25v0z" />
-    <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="576" 
-d="M573.19 45.3301c9.25977 -21.1904 -5.5 -45.3301 -27.7305 -45.3301h-196.84l-10.3105 97.6797c-0.859375 8.14062 -7.71973 14.3203 -15.9092 14.3203h-68.8008c-8.18945 0 -15.0498 -6.17969 -15.9092 -14.3203l-10.3105 -97.6797h-196.84
-c-22.2305 0 -36.9902 24.1396 -27.7402 45.3301l139.79 320c4.96973 11.3799 15.7998 18.6699 27.7305 18.6699h97.5898l-2.4502 -23.1602c-0.5 -4.71973 3.20996 -8.83984 7.95996 -8.83984h29.1602c4.75 0 8.45996 4.12012 7.95996 8.83984l-2.4502 23.1602h97.5898
-c11.9199 0 22.75 -7.29004 27.7207 -18.6699zM260.4 312.84l-4.59082 -43.5801c-0.75 -7.08984 4.80078 -13.2598 11.9307 -13.2598h40.54c7.12012 0 12.6797 6.16992 11.9297 13.2598l-4.59961 43.5801c-0.430664 4.07031 -3.87012 7.16016 -7.95996 7.16016h-39.29
-c-0.00195312 0 -0.00390625 -0.0078125 -0.00488281 -0.0078125c-4.12891 0 -7.53125 -3.13477 -7.95508 -7.15234zM315.64 144c9.5 0 16.9102 8.23047 15.9102 17.6797l-5.06934 48c-0.860352 8.14062 -7.7207 14.3203 -15.9102 14.3203h-45.1504
-c-8.18945 0 -15.0498 -6.17969 -15.9102 -14.3203l-5.06934 -48c-1 -9.44922 6.40918 -17.6797 15.9092 -17.6797h55.29z" />
-    <glyph glyph-name="download" unicode="&#xf019;" 
-d="M216 448h80c13.2998 0 24 -10.7002 24 -24v-168h87.7002c17.7998 0 26.7002 -21.5 14.0996 -34.0996l-152.1 -152.2c-7.5 -7.5 -19.7998 -7.5 -27.2998 0l-152.301 152.2c-12.5996 12.5996 -3.69922 34.0996 14.1006 34.0996h87.7998v168c0 13.2998 10.7002 24 24 24z
-M512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h146.7l49 -49c20.0996 -20.0996 52.5 -20.0996 72.5996 0l49 49h146.7c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20
-s9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z" />
-    <glyph glyph-name="inbox" unicode="&#xf01c;" horiz-adv-x="576" 
-d="M567.938 204.092c5.07422 -7.61035 8.06152 -16.7998 8.06152 -26.625v-129.467c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v129.467c0 9.8252 2.9873 19.0146 8.06152 26.625l105.689 158.534c8.60742 12.9102 23.2725 21.374 39.9385 21.374
-h268.621c16.667 0 31.332 -8.46387 39.9395 -21.374zM162.252 320l-85.334 -128h123.082l32 -64h112l32 64h123.082l-85.333 128h-251.497z" />
-    <glyph glyph-name="redo" unicode="&#xf01e;" 
-d="M500.33 448c6.62305 0 12 -5.37695 12 -12v-200.34c0 -6.62305 -5.37695 -12 -12 -12h-200.33c-6.62305 0 -12 5.37695 -12 12v47.4102c0 0.00390625 -0.00878906 0.00878906 -0.00878906 0.0136719c0 6.62305 5.37695 12 12 12
-c0.194336 0 0.386719 -0.00488281 0.579102 -0.0136719l101.529 -4.87012c-31.6084 47.0322 -85.1172 77.8594 -145.992 77.8594c-97.1367 0 -176 -78.8633 -176 -176s78.8633 -176 176 -176c44.502 0 85.168 16.5518 116.173 43.8301
-c2.10938 1.84375 4.87793 2.96582 7.89746 2.96582c3.31055 0 6.31055 -1.34375 8.48242 -3.51562l34 -34c2.17383 -2.17188 3.52246 -5.17285 3.52246 -8.48633c0 -3.55176 -1.54688 -6.74512 -4.00293 -8.94336c-43.8477 -39.6924 -102.079 -63.9102 -165.824 -63.9102
-h-0.355469c-136.9 0 -247.9 110.93 -248 247.81c-0.0996094 136.66 111.34 248.19 248 248.19c0.0927734 0 0.116211 0.140625 0.208984 0.140625c75.5918 0 143.312 -33.9727 188.711 -87.4707l-4 82.7598c-0.00878906 0.192383 -0.0136719 0.375977 -0.0136719 0.570312
-c0 6.62305 5.37695 12 12 12h0.0136719h47.4102z" />
-    <glyph glyph-name="sync" unicode="&#xf021;" 
-d="M440.65 435.43c-0.00976562 0.192383 -0.0136719 0.375977 -0.0136719 0.570312c0 6.62109 5.37305 11.9961 11.9932 12h47.3701c6.62305 0 12 -5.37695 12 -12v-200.35c0 -6.62305 -5.37695 -12 -12 -12h-200.22c-6.62305 0 -12 5.37695 -12 12v47.4092
-c0 0.00488281 -0.00878906 0.00976562 -0.00878906 0.0136719c0 6.62305 5.37695 12 12 12c0.194336 0 0.386719 -0.00390625 0.578125 -0.0136719l101.46 -4.85938c-31.5938 46.9941 -85.1406 77.6738 -145.973 77.6738c-82.8662 0 -152.428 -57.4229 -171.027 -134.614
-c-1.24219 -5.29688 -5.99707 -9.25391 -11.6699 -9.25977h-49.0498c-6.62305 0 -12 5.36719 -12 11.9893c0 0.748047 0.0693359 1.48047 0.200195 2.19043c21.6201 114.9 122.44 201.82 243.54 201.82c0.0966797 0 0.123047 0.141602 0.219727 0.141602
-c75.5615 0 143.248 -33.9814 188.601 -87.4814zM255.83 16c0.015625 0 0.0185547 0.0898438 0.0332031 0.0898438c82.8701 0 152.43 57.4434 170.997 134.65c1.24219 5.29688 5.99707 9.25391 11.6699 9.25977h49.0498c6.62305 0 12 -5.36719 12 -11.9893
-c0 -0.748047 -0.0693359 -1.48047 -0.200195 -2.19043c-21.6201 -114.9 -122.439 -201.82 -243.55 -201.82c-0.0800781 0 -0.0908203 -0.140625 -0.170898 -0.140625c-75.4814 0 -143.106 33.9082 -188.459 87.3105l4.14941 -82.5703
-c0.0107422 -0.201172 0.015625 -0.395508 0.015625 -0.599609c0 -6.62305 -5.37695 -12 -12 -12h-0.015625h-47.3496c-6.62305 0 -12 5.37695 -12 12v200.33c0 6.62305 5.37695 12 12 12h200.2c6.62305 0 12 -5.37695 12 -12v-47.4004
-c0 -0.00390625 0.0078125 -0.00878906 0.0078125 -0.0136719c0 -6.62305 -5.37695 -12 -12 -12c-0.193359 0 -0.386719 0.00488281 -0.578125 0.0136719l-101.8 4.87012c31.5254 -47.0088 85.0449 -77.7998 145.847 -77.7998h0.15332z" />
-    <glyph glyph-name="list-alt" unicode="&#xf022;" 
-d="M464 -32h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM128 328c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 232
-c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 136c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM416 272v32c0 6.62695 -5.37305 12 -12 12h-200
-c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 176v32c0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 80v32
-c0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12z" />
-    <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="448" 
-d="M400 224c26.5 0 48 -21.5 48 -48v-192c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h24v72c0 83.7998 68.2002 152 152 152s152 -68.2002 152 -152v-72h24zM296 224v72c0 39.7002 -32.2998 72 -72 72s-72 -32.2998 -72 -72v-72h144
-z" />
-    <glyph glyph-name="flag" unicode="&#xf024;" 
-d="M349.565 349.217c40.4951 0 82.6113 15.9062 116.949 31.8545c21.2168 9.85352 45.4854 -5.62305 45.4854 -29.0166v-243.1c0 -10.5264 -5.16016 -20.4072 -13.8428 -26.3584c-35.8379 -24.5635 -74.3359 -40.8574 -122.505 -40.8574
-c-67.373 0 -111.629 34.7832 -165.218 34.7832c-50.8525 0 -86.124 -10.0586 -114.435 -22.1221v-94.4004c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v386.055c-14.5029 10.1201 -24 26.9189 -24 45.9453
-c0 31.7041 26.3447 57.2539 58.3379 55.9521c28.4678 -1.1582 51.7793 -23.9668 53.5508 -52.4033c0.0761719 -1.19141 0.0927734 -2.37305 0.0927734 -3.58301c0 -7.03711 -1.30176 -13.7734 -3.67871 -19.9785c20.7363 7.62891 43.0898 12.0127 68.0449 12.0127
-c67.373 0 111.63 -34.7832 165.218 -34.7832z" />
-    <glyph glyph-name="headphones" unicode="&#xf025;" 
-d="M256 416c141.504 0 256 -114.521 256 -256v-48c0 -12.5312 -7.1875 -23.3711 -17.6904 -28.6221l-14.3818 -7.19141c-2.01074 -60.0889 -51.3486 -108.187 -111.928 -108.187h-24c-13.2549 0 -24 10.7451 -24 24v176c0 13.2549 10.7451 24 24 24h24
-c31.3418 0 59.6709 -12.8789 80 -33.627v1.62695c0 105.869 -86.1309 192 -192 192s-192 -86.1309 -192 -192v-1.62695c20.3291 20.748 48.6582 33.627 80 33.627h24c13.2549 0 24 -10.7451 24 -24v-176c0 -13.2549 -10.7451 -24 -24 -24h-24
-c-60.5791 0 -109.917 48.0967 -111.928 108.187l-14.3828 7.19141c-10.502 5.25098 -17.6895 16.0908 -17.6895 28.6221v48c0 141.504 114.52 256 256 256z" />
-    <glyph glyph-name="volume-off" unicode="&#xf026;" horiz-adv-x="256" 
-d="M215 377c15 15 41 4.46973 41 -17v-336c0 -21.4697 -26 -32 -41 -17l-88.9404 89h-102.06c-13.2461 0 -24 10.7539 -24 24v144c0 13.2461 10.7539 24 24 24h102z" />
-    <glyph glyph-name="volume-down" unicode="&#xf027;" horiz-adv-x="384" 
-d="M215.03 375.96c15.0098 15 40.9697 4.49023 40.9697 -16.9795v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM338.23 267.88
-c28.2393 -15.5498 45.7793 -44.9902 45.7793 -76.8701s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104c12.9004 7.08984 20.9199 20.4297 20.9199 34.8096
-s-8.01953 27.7197 -20.9297 34.8203c-11.6104 6.41016 -15.8398 21 -9.4502 32.6094c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z" />
-    <glyph glyph-name="volume-up" unicode="&#xf028;" horiz-adv-x="576" 
-d="M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM448.35 428.03
-c79.9199 -52.46 127.65 -140.7 127.65 -236.03s-47.7305 -183.58 -127.65 -236.04c-11.5801 -7.61035 -26.4697 -3.75977 -33.5098 6.9502c-7.33984 11.1602 -4.21973 26.1797 6.9502 33.5c66.2695 43.4902 105.82 116.6 105.82 195.58
-c0 78.9795 -39.5508 152.09 -105.82 195.58c-11.1699 7.33008 -14.29 22.3398 -6.9502 33.5098c7.33008 11.1895 22.3398 14.2803 33.5098 6.9502zM480 192c0 -63.54 -32.0596 -121.94 -85.7695 -156.24c-12 -7.67969 -26.6104 -2.89941 -33.1201 7.45996
-c-7.09082 11.29 -3.78027 26.2207 7.40918 33.3604c39.75 25.3896 63.4805 68.5303 63.4805 115.42s-23.7305 90.0303 -63.4805 115.42c-11.1895 7.15039 -14.5 22.0801 -7.40918 33.3604c7.08984 11.2793 21.9297 14.5996 33.1201 7.45996
-c53.71 -34.2998 85.7695 -92.71 85.7695 -156.24zM338.23 268.87c28.2393 -15.54 45.7793 -44.9805 45.7793 -76.8604s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104
-c12.9004 7.08984 20.9199 20.4297 20.9199 34.8096c0 14.3701 -8.01953 27.7197 -20.9297 34.8096c-11.6104 6.41016 -15.8398 21 -9.4502 32.6104c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z" />
-    <glyph glyph-name="qrcode" unicode="&#xf029;" horiz-adv-x="448" 
-d="M0 224v192h192v-192h-192zM64 352v-64h64v64h-64zM256 416h192v-192h-192v192zM384 288v64h-64v-64h64zM0 -32v192h192v-192h-192zM64 96v-64h64v64h-64zM416 160h32v-128h-96v32h-32v-96h-64v192h96v-32h64v32zM416 0h32v-32h-32v32zM352 0h32v-32h-32v32z" />
-    <glyph glyph-name="barcode" unicode="&#xf02a;" 
-d="M0 0v384h18v-384h-18zM26.8574 0.273438v383.727h9.14258v-383.727h-9.14258zM54 0.273438v383.727h8.85742v-383.727h-8.85742zM98.8574 0.273438v383.727h8.85645v-383.727h-8.85645zM134.857 0.273438v383.727h17.7139v-383.727h-17.7139zM179.714 0.273438v383.727
-h8.85742v-383.727h-8.85742zM197.714 0.273438v383.727h8.85742v-383.727h-8.85742zM215.714 0.273438v383.727h8.85742v-383.727h-8.85742zM251.429 0.273438v383.727h18v-383.727h-18zM296.286 0.273438v383.727h18v-383.727h-18zM332.285 0.273438v383.727h18.001
-v-383.727h-18.001zM368.286 0.273438v383.727h18.001v-383.727h-18.001zM395.143 0.273438v383.727h18v-383.727h-18zM440.286 0.273438v383.727h26.8564v-383.727h-26.8564zM476 0.273438v383.727h9.14258v-383.727h-9.14258zM494 0v384h18v-384h-18z" />
-    <glyph glyph-name="tag" unicode="&#xf02b;" 
-d="M0 195.882v204.118c0 26.5098 21.4902 48 48 48h204.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-211.883 211.883
-c-8.68848 8.68848 -14.0586 20.6943 -14.0586 33.9404zM112 384c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48z" />
-    <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="640" 
-d="M497.941 222.059c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7461 -18.7451 -49.1387 -18.7441 -67.8818 0l-211.883 211.883c-8.68848 8.68848 -14.0586 20.6943 -14.0586 33.9404v204.118c0 26.5098 21.4902 48 48 48h204.118
-c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM112 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM625.941 154.177l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-0.360352 0.360352
-l174.059 174.059c16.999 16.999 26.3604 39.6006 26.3604 63.6406s-9.3623 46.6406 -26.3604 63.6396l-196.242 196.242h48.7207c13.2461 0 25.252 -5.37012 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818z" />
-    <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="448" 
-d="M448 88c0 -7.5 -3.5 -14.2998 -8.90039 -18.5996c-4.19922 -15.4004 -4.19922 -59.3008 0 -74.7002c5.40039 -4.40039 8.90039 -11.2002 8.90039 -18.7002v-16c0 -13.2998 -10.7002 -24 -24 -24h-328c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h328
-c13.2998 0 24 -10.7002 24 -24v-336zM128 314v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212c-3.2998 0 -6 -2.7002 -6 -6zM128 250v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212
-c-3.2998 0 -6 -2.7002 -6 -6zM381.4 0c-1.90039 17.0996 -1.90039 46.9004 0 64h-285.4c-17.5996 0 -32 -14.4004 -32 -32c0 -17.7002 14.2998 -32 32 -32h285.4z" />
-    <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="384" 
-d="M0 -64v464c0 26.5098 21.4902 48 48 48h288c26.5098 0 48 -21.4902 48 -48v-464l-192 112z" />
-    <glyph glyph-name="print" unicode="&#xf02f;" 
-d="M448 256c35.3496 0 64 -28.6504 64 -64v-112c0 -8.83984 -7.16016 -16 -16 -16h-48v-96c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v96h-48c-8.83984 0 -16 7.16016 -16 16v112c0 35.3496 28.6504 64 64 64v160c0 17.6699 14.3301 32 32 32
-h274.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l45.2598 -45.25c6 -6.00977 9.37012 -14.1396 9.37012 -22.6299v-114.75zM384 0v96h-256v-96h256zM384 224v96h-48c-8.83984 0 -16 7.16016 -16 16v48h-192v-160h256zM432 152c13.25 0 24 10.75 24 24
-c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z" />
-    <glyph glyph-name="camera" unicode="&#xf030;" 
-d="M512 304v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h88l12.2998 32.9004c7 18.6992 24.9004 31.0996 44.9004 31.0996h125.5c20 0 37.8994 -12.4004 44.8994 -31.0996l12.4004 -32.9004h88c26.5 0 48 -21.5 48 -48zM376 160
-c0 66.2002 -53.7998 120 -120 120s-120 -53.7998 -120 -120s53.7998 -120 120 -120s120 53.7998 120 120zM344 160c0 -48.5 -39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88z" />
-    <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="448" 
-d="M432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h19.5801l-23.2998 64h-152.561l-23.2998 -64h19.5801c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h23.4102l130.71 362.31c4.29297 12.6133 16.2363 21.6904 30.293 21.6904h0.00683594h47.1602l-0.00292969 0.00683594c14.0576 0 26.0098 -9.08398 30.3027 -21.6973
-l130.71 -362.31h23.4102zM176.85 176h94.3008l-47.1504 129.49z" />
-    <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="384" 
-d="M333.49 210c34.4395 -27.54 55.5693 -71.1504 50.8301 -119.6c-6.86035 -70.6504 -70.2002 -122.4 -141 -122.4h-209.32c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h31.8701v288h-31.8701c-8.83105 0 -16 7.16895 -16 16v48
-c0 8.83105 7.16895 16 16 16h199.42c74.5801 0 134.45 -64.4902 127.07 -140.79c-2.43945 -24.5273 -12.1992 -47.1309 -27 -65.21zM145.66 336v-96h87.7598c26.4922 0 48 21.5078 48 48s-21.5078 48 -48 48h-87.7598zM233.42 48c30.9072 0 56 25.0928 56 56
-s-25.0928 56 -56 56h-87.7598v-112h87.7598z" />
-    <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="320" 
-d="M320 400v-32c0 -8.83105 -7.16895 -16 -16 -16h-62.7598l-80 -320h46.7598c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h62.7598l80 320h-46.7598
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192c8.83105 0 16 -7.16895 16 -16z" />
-    <glyph glyph-name="text-height" unicode="&#xf034;" horiz-adv-x="576" 
-d="M304 416c8.83105 0 16 -7.16895 16 -16v-96c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32h-56v-304h40c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-160c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h40v304h-56v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v96c0 8.83105 7.16895 16 16 16h288zM560 80c15.6396 0 20.6396 -18 11.3096 -27.3096l-80 -80c-2.89551 -2.89453 -6.89844 -4.68555 -11.3115 -4.68555
-c-4.41406 0 -8.41211 1.79102 -11.3076 4.68555l-80 80c-10.0107 10 -3 27.3096 11.3096 27.3096h48v224h-48c-15.6396 0 -20.6396 18 -11.3096 27.3096l80 80c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -80
-c10.0205 -10 3 -27.3096 -11.3096 -27.3096h-48v-224h48z" />
-    <glyph glyph-name="text-width" unicode="&#xf035;" horiz-adv-x="448" 
-d="M432 416c8.83105 0 16 -7.16895 16 -16v-80c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v16h-120v-112h24c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h24v112h-120v-16c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v80c0 8.83105 7.16895 16 16 16h416zM363.31 155.31l80 -80c2.89453 -2.89551 4.68555 -6.89844 4.68555 -11.3115
-c0 -4.41406 -1.79102 -8.41211 -4.68555 -11.3076l-80 -80c-10 -10.0205 -27.3096 -3 -27.3096 11.3096v48h-224v-48c0 -15.6396 -18 -20.6396 -27.3096 -11.3096l-80 80c-2.89453 2.89551 -4.68555 6.89844 -4.68555 11.3115c0 4.41406 1.79102 8.41211 4.68555 11.3076
-l80 80c10 10.0107 27.3096 3 27.3096 -11.3096v-48h224v48c0 15.6396 18 20.6396 27.3096 11.3096z" />
-    <glyph glyph-name="align-left" unicode="&#xf036;" horiz-adv-x="448" 
-d="M12.8301 96c-7.07617 0 -12.8301 5.74414 -12.8301 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34h0.00976562c7.07617 0 12.8203 -5.74414 12.8203 -12.8193v-0.0107422v-38.3398v-0.00976562
-c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34zM12.8301 352c-7.07617 0 -12.8301 5.74414 -12.8301 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34h0.00976562
-c7.07617 0 12.8203 -5.74414 12.8203 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34zM432 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h416zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" />
-    <glyph glyph-name="align-center" unicode="&#xf037;" horiz-adv-x="448" 
-d="M432 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16
-v32c0 8.83105 7.16895 16 16 16h416zM108.1 352c-6.67773 0 -12.0996 5.42188 -12.0996 12.0996v39.8105c0 6.67285 5.41699 12.0898 12.0898 12.0898h0.00976562h231.811c6.67285 0 12.0898 -5.41699 12.0898 -12.0898v-39.8105v-0.00976562
-c0 -6.67285 -5.41699 -12.0898 -12.0898 -12.0898h-231.811zM339.91 96h-231.811c-6.67773 0 -12.0996 5.42188 -12.0996 12.0996v39.8105c0 6.67285 5.41699 12.0898 12.0898 12.0898h0.00976562h231.811c6.67285 0 12.0898 -5.41699 12.0898 -12.0898v-39.8105
-v-0.00976562c0 -6.67285 -5.41699 -12.0898 -12.0898 -12.0898z" />
-    <glyph glyph-name="align-right" unicode="&#xf038;" horiz-adv-x="448" 
-d="M16 224c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16
-v32c0 8.83105 7.16895 16 16 16h416zM435.17 416c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193
-v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34zM435.17 160c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34h-0.00976562
-c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34z" />
-    <glyph glyph-name="align-justify" unicode="&#xf039;" horiz-adv-x="448" 
-d="M432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM432 160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16
-v32c0 8.83105 7.16895 16 16 16h416zM432 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16
-h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" />
-    <glyph glyph-name="list" unicode="&#xf03a;" 
-d="M80 80c8.83105 0 16 -7.16895 16 -16v-64c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v64c0 8.83105 7.16895 16 16 16h64zM80 400c8.83105 0 16 -7.16895 16 -16v-64c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v64
-c0 8.83105 7.16895 16 16 16h64zM80 240c8.83105 0 16 -7.16895 16 -16v-64c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v64c0 8.83105 7.16895 16 16 16h64zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 384c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 224c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320z" />
-    <glyph glyph-name="outdent" unicode="&#xf03b;" horiz-adv-x="448" 
-d="M100.69 84.71l-96 95.9805c-2.89453 2.89551 -4.68555 6.89844 -4.68555 11.3115c0 4.41406 1.79102 8.41211 4.68555 11.3076l96 96c9.97949 10 27.3096 3.01074 27.3096 -11.3096v-191.98c0 -14.2393 -17.3096 -21.3096 -27.3096 -11.3096zM432 32
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM435.17 160c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562
-c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM435.17 288
-c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562
-c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" />
-    <glyph glyph-name="indent" unicode="&#xf03c;" horiz-adv-x="448" 
-d="M27.3096 84.7002c-9.97949 -10 -27.3096 -3.00977 -27.3096 11.2998v192c0 14.2197 17.2695 21.3398 27.3096 11.3203l96 -96c2.89453 -2.89648 4.68555 -6.89941 4.68555 -11.3125s-1.79102 -8.41211 -4.68555 -11.3076zM432 32c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM435.17 160c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422
-h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM435.17 288c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562
-c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM432 416c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" />
-    <glyph glyph-name="video" unicode="&#xf03d;" horiz-adv-x="576" 
-d="M336.2 384c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-288.4c0 -26.3994 -21.4004 -47.7998 -47.7998 -47.7998h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998v288.4c0 26.3994 21.4004 47.7998 47.7998 47.7998h288.4zM525.6 346.3
-c21.3008 14.6006 50.4004 -0.399414 50.4004 -25.7998v-256.9c0 -25.5 -29.2002 -40.3994 -50.4004 -25.7998l-109.6 75.5v157.4z" />
-    <glyph glyph-name="image" unicode="&#xf03e;" 
-d="M464 0h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM112 328c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56s-25.0723 56 -56 56zM64 64h384
-v112l-87.5146 87.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-135.514 -135.515l-55.5146 55.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-71.5137 -71.5146v-48z" />
-    <glyph glyph-name="map-marker" unicode="&#xf041;" horiz-adv-x="384" 
-d="M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0z" />
-    <glyph glyph-name="adjust" unicode="&#xf042;" 
-d="M8 192c0 136.967 111.034 248 248 248s248 -111.034 248 -248s-111.033 -248 -248 -248s-248 111.034 -248 248zM256 8c101.689 0 184 82.2949 184 184c0 101.689 -82.2949 184 -184 184v-368z" />
-    <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="352" 
-d="M205.22 425.91c46.9902 -158.48 146.78 -200.07 146.78 -311.82c0 -98.4395 -78.7197 -178.09 -176 -178.09s-176 79.6504 -176 178.09c0 111.19 100.01 154.061 146.78 311.82c9 30.1201 50.5 28.7803 58.4395 0zM176 0c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16
-c-44.1104 0 -80 35.8896 -80 80c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16c0 -61.75 50.25 -112 112 -112z" />
-    <glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="576" 
-d="M402.6 364.8l90.2002 -90.2002c3.7998 -3.7998 3.7998 -10 0 -13.7998l-218.399 -218.399l-92.8008 -10.3008c-12.3994 -1.39941 -22.8994 9.10059 -21.5 21.5l10.3008 92.8008l218.399 218.399c3.7998 3.7998 10 3.7998 13.7998 0zM564.6 387.7
-c15.2002 -15.2002 15.2002 -39.9004 0 -55.2002l-35.3994 -35.4004c-3.7998 -3.7998 -10 -3.7998 -13.7998 0l-90.2002 90.2002c-3.7998 3.7998 -3.7998 10 0 13.7998l35.3994 35.4004c15.3008 15.2002 40 15.2002 55.2002 0zM384 101.8c0 3.2002 1.2998 6.2002 3.5 8.5
-l40 40c7.59961 7.5 20.5 2.2002 20.5 -8.5v-157.8c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h285.8c10.7002 0 16.1006 -12.9004 8.5 -20.5l-40 -40c-2.2998 -2.2002 -5.2998 -3.5 -8.5 -3.5h-229.8v-320h320v101.8z" />
-    <glyph glyph-name="step-backward" unicode="&#xf048;" horiz-adv-x="448" 
-d="M64 -20v424c0 6.59961 5.40039 12 12 12h48c6.59961 0 12 -5.40039 12 -12v-176.4l195.5 181c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-384c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-195.5 179.899v-175.3c0 -6.59961 -5.40039 -12 -12 -12h-48
-c-6.59961 0 -12 5.40039 -12 12z" />
-    <glyph glyph-name="fast-backward" unicode="&#xf049;" 
-d="M0 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-151.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-131.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996
-l-171.5 155.3v-130.7c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-171.5 155.3v-150.7c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12z" />
-    <glyph glyph-name="backward" unicode="&#xf04a;" 
-d="M11.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160c20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996zM267.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160
-c20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996z" />
-    <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="448" 
-d="M424.4 233.3c31.5 -18.5 31.3994 -64.0996 0 -82.5996l-352 -208c-31.7002 -18.7998 -72.4004 3.7998 -72.4004 41.2998v416.1c0 41.8008 43.7998 58.2002 72.4004 41.3008z" />
-    <glyph glyph-name="pause" unicode="&#xf04c;" horiz-adv-x="448" 
-d="M144 -31h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM448 17c0 -26.5 -21.5 -48 -48 -48h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352z" />
-    <glyph glyph-name="stop" unicode="&#xf04d;" horiz-adv-x="448" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z" />
-    <glyph glyph-name="forward" unicode="&#xf04e;" 
-d="M500.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996zM244.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160
-c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996z" />
-    <glyph glyph-name="fast-forward" unicode="&#xf050;" 
-d="M512 372v-360c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v131.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320
-c0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v130.8c0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v150.8c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12z" />
-    <glyph glyph-name="step-forward" unicode="&#xf051;" horiz-adv-x="448" 
-d="M384 404v-424c0 -6.59961 -5.40039 -12 -12 -12h-48c-6.59961 0 -12 5.40039 -12 12v176.4l-195.5 -181c-20.5996 -17.1006 -52.5 -2.80078 -52.5 24.5996v384c0 27.4004 31.9004 41.7002 52.5 24.5996l195.5 -179.899v175.3c0 6.59961 5.40039 12 12 12h48
-c6.59961 0 12 -5.40039 12 -12z" />
-    <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="448" 
-d="M448 64v-64c0 -17.6729 -14.3271 -32 -32 -32h-384c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h384c17.6729 0 32 -14.3271 32 -32zM48.0527 128c-41.7285 0 -63.5273 49.7324 -35.3828 80.4346l175.946 192.008
-c19.0156 20.7432 51.7529 20.7422 70.7666 0l175.939 -192.008c28.1973 -30.7607 6.26758 -80.4346 -35.3828 -80.4346h-351.887z" />
-    <glyph glyph-name="chevron-left" unicode="&#xf053;" horiz-adv-x="320" 
-d="M34.5195 208.97l194.351 194.34c9.37012 9.37012 24.5703 9.37012 33.9395 0l22.6709 -22.6699c9.35938 -9.35938 9.36914 -24.5195 0.0390625 -33.8994l-154.029 -154.74l154.02 -154.75c9.33984 -9.37988 9.32031 -24.54 -0.0400391 -33.9004l-22.6699 -22.6699
-c-9.37012 -9.37012 -24.5693 -9.37012 -33.9395 0l-194.341 194.351c-9.36914 9.37012 -9.36914 24.5693 0 33.9395z" />
-    <glyph glyph-name="chevron-right" unicode="&#xf054;" horiz-adv-x="320" 
-d="M285.476 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.667 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667
-c9.37305 9.37207 24.5684 9.37207 33.9404 0l194.343 -194.344c9.37305 -9.37207 9.37305 -24.5674 0.000976562 -33.9404z" />
-    <glyph glyph-name="plus-circle" unicode="&#xf055;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM400 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92c-6.59961 0 -12 -5.40039 -12 -12v-56
-c0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="minus-circle" unicode="&#xf056;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM124 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12z" />
-    <glyph glyph-name="times-circle" unicode="&#xf057;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM377.6 126.9l-65.5996 65.0996l65.7002 65c4.7002 4.7002 4.7002 12.2998 0 17l-39.6006 39.5996c-4.69922 4.7002 -12.2998 4.7002 -17 0l-65.0996 -65.5996l-65 65.7002
-c-4.7002 4.7002 -12.2998 4.7002 -17 0l-39.5996 -39.6006c-4.7002 -4.69922 -4.7002 -12.2998 0 -17l65.5996 -65.0996l-65.5996 -65c-4.7002 -4.7002 -4.7002 -12.2998 0 -17l39.5 -39.5996c4.69922 -4.7002 12.2998 -4.7002 17 0l65.0996 65.5996l65 -65.5996
-c4.7002 -4.7002 12.2998 -4.7002 17 0l39.5996 39.5c4.7002 4.69922 4.7002 12.2998 0 17z" />
-    <glyph glyph-name="check-circle" unicode="&#xf058;" 
-d="M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM227.314 60.6855l184 184c6.24707 6.24805 6.24707 16.3799 0 22.6279l-22.6279 22.627c-6.24707 6.24902 -16.3789 6.24902 -22.6279 0
-l-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24805 -16.3799 6.24805 -22.6279 0l-22.6279 -22.627c-6.24707 -6.24805 -6.24707 -16.3799 0 -22.6279l104 -104c6.24902 -6.24805 16.3799 -6.24805 22.6289 -0.000976562z" />
-    <glyph glyph-name="question-circle" unicode="&#xf059;" 
-d="M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM262.655 358c-54.4971 0 -89.2549 -22.957 -116.549 -63.7578c-3.53613 -5.28613 -2.35352 -12.415 2.71484 -16.2578l34.6982 -26.3105
-c5.20508 -3.94727 12.6211 -3.00781 16.665 2.12207c17.8643 22.6582 30.1133 35.7969 57.3037 35.7969c20.4287 0 45.6973 -13.1475 45.6973 -32.958c0 -14.9756 -12.3623 -22.667 -32.5332 -33.9756c-23.5244 -13.1875 -54.6523 -29.6006 -54.6523 -70.6592v-4
-c0 -6.62695 5.37305 -12 12 -12h56c6.62695 0 12 5.37305 12 12v1.33301c0 28.4619 83.1855 29.6475 83.1855 106.667c0 58.002 -60.1641 102 -116.53 102zM256 110c-25.3652 0 -46 -20.6348 -46 -46c0 -25.3643 20.6348 -46 46 -46s46 20.6357 46 46
-c0 25.3652 -20.6348 46 -46 46z" />
-    <glyph glyph-name="info-circle" unicode="&#xf05a;" 
-d="M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 330c-23.1963 0 -42 -18.8037 -42 -42s18.8037 -42 42 -42s42 18.8037 42 42s-18.8037 42 -42 42zM312 76v24
-c0 6.62695 -5.37305 12 -12 12h-12v100c0 6.62695 -5.37305 12 -12 12h-64c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h12v-64h-12c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h88c6.62695 0 12 5.37305 12 12z" />
-    <glyph glyph-name="crosshairs" unicode="&#xf05b;" 
-d="M500 224c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-30.3643c-13.9121 -93.6748 -87.9609 -167.724 -181.636 -181.636v-30.3643c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v30.3643
-c-93.6748 13.9121 -167.724 87.9609 -181.636 181.636h-30.3643c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h30.3643c13.9121 93.6748 87.9609 167.724 181.636 181.636v30.3643c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-30.3643
-c93.6748 -13.9121 167.724 -87.9609 181.636 -181.636h30.3643zM288 43.3662c58.2432 12.417 104.232 58.46 116.634 116.634h-40.6338c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40.6338c-12.417 58.2432 -58.46 104.232 -116.634 116.634v-40.6338
-c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40.6338c-58.2432 -12.417 -104.232 -58.46 -116.634 -116.634h40.6338c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40.6338
-c12.417 -58.2432 58.46 -104.232 116.634 -116.634v40.6338c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40.6338zM288 192c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z" />
-    <glyph glyph-name="ban" unicode="&#xf05e;" 
-d="M256 440c136.967 0 248 -111.034 248 -248s-111.034 -248 -248 -248s-248 111.033 -248 248s111.034 248 248 248zM386.108 322.108c-65.4121 65.4102 -165.435 70.0312 -235.639 20.6758l256.315 -256.313c49.3232 70.1562 44.7705 170.189 -20.6768 235.638z
-M125.892 61.8916c65.4121 -65.4111 165.436 -70.0312 235.639 -20.6758l-256.315 256.313c-49.3232 -70.1562 -44.7705 -170.189 20.6768 -235.638z" />
-    <glyph glyph-name="arrow-left" unicode="&#xf060;" horiz-adv-x="448" 
-d="M257.5 2.90039l-22.2002 -22.2002c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-194.4 194.3c-9.40039 9.40039 -9.40039 24.5996 0 33.9004l194.4 194.399c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.2002 -22.2002c9.5 -9.5 9.2998 -25 -0.400391 -34.2998
-l-120.5 -114.8h287.4c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-287.4l120.5 -114.8c9.80078 -9.2998 10 -24.7998 0.400391 -34.2998z" />
-    <glyph glyph-name="arrow-right" unicode="&#xf061;" horiz-adv-x="448" 
-d="M190.5 381.1l22.2002 22.2002c9.39941 9.40039 24.5996 9.40039 33.8994 0l194.4 -194.3c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-194.4 -194.399c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.2002 22.2002c-9.5 9.5 -9.2998 25 0.400391 34.2998
-l120.5 114.8h-287.4c-13.2998 0 -24 10.7002 -24 24v32c0 13.2998 10.7002 24 24 24h287.4l-120.5 114.8c-9.80078 9.2998 -10 24.7998 -0.400391 34.2998z" />
-    <glyph glyph-name="arrow-up" unicode="&#xf062;" horiz-adv-x="448" 
-d="M34.9004 158.5l-22.2002 22.2002c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l194.3 194.4c9.40039 9.40039 24.5996 9.40039 33.9004 0l194.3 -194.3c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-22.2002 -22.2002c-9.5 -9.5 -25 -9.2998 -34.2998 0.400391
-l-114.7 120.4v-287.4c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v287.4l-114.8 -120.5c-9.2998 -9.80078 -24.7998 -10 -34.2998 -0.400391z" />
-    <glyph glyph-name="arrow-down" unicode="&#xf063;" horiz-adv-x="448" 
-d="M413.1 225.5l22.2002 -22.2002c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-194.3 -194.4c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-194.399 194.4c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.2002 22.2002c9.5 9.5 25 9.2998 34.2998 -0.400391
-l114.8 -120.5v287.4c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-287.4l114.8 120.5c9.2998 9.80078 24.7998 10 34.2998 0.400391z" />
-    <glyph glyph-name="share" unicode="&#xf064;" 
-d="M503.691 258.164c11.0859 -9.5752 11.0703 -26.7656 0 -36.3281l-176.005 -152c-15.3867 -13.2891 -39.6865 -2.53613 -39.6865 18.1641v87.915c-155.083 -2.23145 -221.934 -40.7295 -176.59 -185.742c5.03418 -16.0977 -14.4238 -28.5615 -28.0771 -18.6309
-c-43.752 31.8232 -83.333 92.6914 -83.333 154.132c0 152.227 127.371 184.419 288 186.258v80.0537c0 20.668 24.2812 31.4688 39.6865 18.1641z" />
-    <glyph glyph-name="expand" unicode="&#xf065;" horiz-adv-x="448" 
-d="M0 268v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM288 404c0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24
-v-124c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40zM436 128c6.59961 0 12 -5.40039 12 -12v-124c0 -13.2998 -10.7002 -24 -24 -24h-124c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84
-v84c0 6.59961 5.40039 12 12 12h40zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40z" />
-    <glyph glyph-name="compress" unicode="&#xf066;" horiz-adv-x="448" 
-d="M436 256h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM160 280c0 -13.2998 -10.7002 -24 -24 -24h-124
-c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84v84c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-124zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40
-c0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24v-124zM352 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84z" />
-    <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="448" 
-d="M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-144v-144c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v144h-144c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h144v144
-c0 17.6699 14.3301 32 32 32h32c17.6699 0 32 -14.3301 32 -32v-144h144z" />
-    <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="448" 
-d="M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z" />
-    <glyph glyph-name="asterisk" unicode="&#xf069;" 
-d="M478.21 113.907c11.7949 -6.47754 15.96 -21.3828 9.23242 -33.0361l-19.4805 -33.7412c-6.72754 -11.6533 -21.7207 -15.499 -33.2266 -8.52246l-138.735 84.1104l3.47559 -162.204c0.288086 -13.4531 -10.5391 -24.5137 -23.9941 -24.5137h-38.9619
-c-13.4551 0 -24.2822 11.0605 -23.9941 24.5137l3.47461 162.204l-138.735 -84.1113c-11.5059 -6.97656 -26.499 -3.13086 -33.2266 8.52246l-19.4805 33.7412c-6.72852 11.6533 -2.5625 26.5596 9.23242 33.0371l142.21 78.0928l-142.209 78.0918
-c-11.7949 6.47754 -15.9609 21.3838 -9.2334 33.0371l19.4805 33.7412c6.72754 11.6533 21.7207 15.499 33.2266 8.52246l138.735 -84.1104l-3.47363 162.204c-0.289062 13.4531 10.5381 24.5137 23.9932 24.5137h38.9609c13.4561 0 24.2822 -11.0605 23.9941 -24.5137
-l-3.47461 -162.204l138.735 84.1113c11.5068 6.97656 26.499 3.13086 33.2266 -8.52246l19.4805 -33.7412c6.72852 -11.6533 2.5625 -26.5596 -9.23242 -33.0371l-142.21 -78.0928z" />
-    <glyph glyph-name="exclamation-circle" unicode="&#xf06a;" 
-d="M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM256 142c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46s46 20.5947 46 46s-20.5947 46 -46 46zM212.327 307.346l7.41797 -136
-c0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838c-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z" />
-    <glyph glyph-name="gift" unicode="&#xf06b;" 
-d="M32 0v128h192v-160h-160c-17.7002 0 -32 14.2998 -32 32zM288 -32v160h192v-128c0 -17.7002 -14.2998 -32 -32 -32h-160zM480 288c17.7002 0 32 -14.2998 32 -32v-80c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v80c0 17.7002 14.2998 32 32 32
-h44.0996c-6.2998 12.0996 -10.0996 25.5 -10.0996 40c0 48.5 39.5 88 88 88c41.5996 0 68.5 -21.2998 103 -68.2998c34.5 47 61.4004 68.2998 103 68.2998c48.5 0 88 -39.5 88 -88c0 -14.5 -3.90039 -27.9004 -10.0996 -40h42.0996zM153.9 288h86.0996
-c-51.5 76.7002 -66.2002 80 -86.0996 80c-22.1006 0 -40 -17.9004 -40 -40s17.8994 -40 40 -40zM360 288c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40c-20.4004 0 -34.7002 -3.5 -86.0996 -80h86.0996z" />
-    <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="576" 
-d="M546.2 438.3c19 -42.3994 29.7998 -94.3994 29.7998 -144.6c0 -172.4 -110.5 -313.2 -267.5 -324.601c-80.9004 -8.59961 -142.5 33.3008 -174.9 77.2002c-51 -42.7002 -70.3994 -87 -71.8994 -90.5996c-6.7998 -16.2002 -25.4004 -24.1006 -41.7998 -17.2998
-c-16.3008 6.69922 -24.1006 25.2998 -17.5 41.5996c23.5996 57.9004 130.199 212 381.6 212c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16c-130.6 0 -222.7 -38.7998 -286.5 -84.5c-0.700195 6.7998 -1.5 13.5 -1.5 20.5c0 106 86 192 192 192h80
-c63.4004 0 118.9 33.5996 149.9 87.5c6.69922 11.7998 22.6992 11.2998 28.2998 -1.2002z" />
-    <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="384" 
-d="M216 424.14c0 -103.14 168 -125.85 168 -296.14c0 -105.87 -86.1299 -192 -192 -192s-192 86.1299 -192 192c0 58.6699 27.7998 106.84 54.5703 134.96c14.96 15.7305 41.4297 5.2002 41.4297 -16.5v-85.5098c0 -35.1699 27.9805 -64.4902 63.1504 -64.9404
-c35.7393 -0.469727 64.8496 28.3604 64.8496 63.9902c0 88 -176 96.1504 -52.1504 277.18c13.5 19.7305 44.1504 10.7607 44.1504 -13.04z" />
-    <glyph glyph-name="eye" unicode="&#xf06e;" horiz-adv-x="576" 
-d="M572.52 206.6c2.21387 -4.37793 3.46094 -9.38965 3.46094 -14.626c0 -5.2373 -1.24707 -10.1855 -3.46094 -14.5635c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626
-c0 5.2373 1.24707 10.1855 3.46094 14.5635c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48c0.0234375 0 0.0458984 -0.000976562 0.0703125 -0.000976562c79.4365 0 143.93 64.4922 143.93 143.93v0.0712891
-c0 79.4756 -64.5244 144 -144 144s-144 -64.5244 -144 -144s64.5244 -144 144 -144zM288 288c0.0761719 0 0.160156 -0.0273438 0.237305 -0.0273438c52.8623 0 95.7803 -42.917 95.7803 -95.7793s-42.918 -95.7803 -95.7803 -95.7803s-95.7803 42.918 -95.7803 95.7803
-c0 8.68945 1.16016 17.1104 3.33301 25.1162c7.93164 -5.83594 17.7432 -9.26758 28.3359 -9.26758c26.4092 0 47.8496 21.4404 47.8496 47.8496c0 10.5938 -3.44922 20.3867 -9.28516 28.3184c8.0459 2.34277 16.541 3.66797 25.3096 3.79004z" />
-    <glyph glyph-name="eye-slash" unicode="&#xf070;" horiz-adv-x="640" 
-d="M320 48c8.91309 0.0830078 17.542 0.976562 26 2.61035l51.8896 -40.1504c-25.0195 -6.45996 -50.9795 -10.46 -77.8896 -10.46c-122.93 0 -230.29 71.5898 -284.52 177.4c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635
-c10.2393 20 22.9297 38.29 36.7197 55.5898l104.899 -81.0693c5.65039 -74.4004 67.0508 -133.11 142.9 -133.11zM633.82 -10.0996c3.76855 -2.92871 6.17676 -7.50977 6.17676 -12.6475c0 -3.69238 -1.25293 -7.09375 -3.35742 -9.80273l-19.6396 -25.2705
-c-2.92871 -3.76855 -7.50879 -6.17578 -12.6465 -6.17578c-3.69727 0 -7.10254 1.25684 -9.81348 3.36621l-588.36 454.729c-3.76562 2.92871 -6.1709 7.50781 -6.1709 12.6426c0 3.69434 1.25488 7.09863 3.36133 9.80762l19.6299 25.2705
-c2.92871 3.76855 7.50879 6.17578 12.6465 6.17578c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l127.22 -98.3301c43.6846 23.8564 94.0967 37.6357 147.32 37.7002c122.93 0 230.29 -71.5898 284.52 -177.4c2.21387 -4.37793 3.46094 -9.38965 3.46094 -14.626
-c0 -5.2373 -1.24707 -10.1855 -3.46094 -14.5635c-20.2109 -39.3887 -47.6904 -73.7881 -81.25 -102.07zM450.1 131.9c8.61035 18.3203 13.9004 38.4697 13.9004 60.0996c0 0.0273438 0.00195312 0.0527344 0.00195312 0.0800781c0 79.4316 -64.4883 143.92 -143.92 143.92
-h-0.0820312c-34.6328 -0.0253906 -66.4756 -12.4902 -91.1504 -33.1104l73.6104 -56.8896c0.857422 3.20508 1.38867 6.5625 1.54004 10c-0.0185547 10.5391 -3.49023 20.3242 -9.30957 28.21c8.43164 2.46191 17.3359 3.82031 26.5576 3.82031
-c52.2998 0 94.7607 -42.46 94.7607 -94.7598c0 -0.423828 -0.00292969 -0.847656 -0.00878906 -1.27051c-0.138672 -10.377 -1.97559 -20.4014 -5.2002 -29.7197z" />
-    <glyph glyph-name="exclamation-triangle" unicode="&#xf071;" horiz-adv-x="576" 
-d="M569.517 7.9873c18.458 -31.9941 -4.71094 -71.9873 -41.5762 -71.9873h-479.887c-36.9365 0 -59.999 40.0547 -41.5771 71.9873l239.946 416.027c18.4668 32.0098 64.7197 31.9512 83.1543 0zM288 94c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46
-s46 20.5947 46 46s-20.5947 46 -46 46zM244.327 259.346l7.41797 -136c0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838
-c-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z" />
-    <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="576" 
-d="M480 256c35.3496 0 96 -28.6504 96 -64s-60.6504 -64 -96 -64h-114.29l-105.11 -183.94c-2.84961 -4.97949 -8.14941 -8.05957 -13.8896 -8.05957h-65.5c-10.6299 0 -18.2998 10.1797 -15.3799 20.4004l49.0303 171.6h-102.86l-43.2002 -57.5996
-c-3.01953 -4.03027 -7.75977 -6.40039 -12.7998 -6.40039h-39.9902c-10.4102 0 -18.0498 9.78027 -15.5195 19.8799l31.5098 108.12l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039
-l43.2002 -57.5996h102.86l-49.0303 171.61c-2.91992 10.2197 4.75 20.3896 15.3799 20.3896h65.5c5.95117 0 11.1396 -3.23633 13.9004 -8.05957l105.1 -183.94h114.29z" />
-    <glyph glyph-name="calendar-alt" unicode="&#xf073;" horiz-adv-x="448" 
-d="M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM320 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM320 52v-40
-c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM192 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40
-c-6.59961 0 -12 -5.40039 -12 -12zM192 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40
-c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48
-c0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z" />
-    <glyph glyph-name="random" unicode="&#xf074;" 
-d="M504.971 88.9707c9.37305 -9.37305 9.37305 -24.5684 0 -33.9404l-80 -79.9844c-15.0098 -15.0098 -40.9707 -4.49023 -40.9707 16.9707v39.9834h-58.7852c-3.46094 0 -6.58105 1.46484 -8.77246 3.81152l-70.5566 75.5967l53.333 57.1426l52.7812 -56.5508h32v39.9814
-c0 21.4375 25.9434 31.9971 40.9707 16.9707zM12 272c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h110.785c3.46094 0 6.58203 -1.46484 8.77246 -3.81152l70.5566 -75.5967l-53.333 -57.1426l-52.7812 56.5508h-84zM384 272h-32l-220.442 -236.188
-c-2.26953 -2.43066 -5.44629 -3.81152 -8.77246 -3.81152h-110.785c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h84l220.442 236.188c2.19141 2.34668 5.31152 3.81152 8.77246 3.81152h58.7852v39.9814c0 21.4365 25.9434 31.9971 40.9707 16.9697
-l80 -79.9814c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-80 -79.9844c-15.0098 -15.0088 -40.9707 -4.48926 -40.9707 16.9707v39.9844z" />
-    <glyph glyph-name="comment" unicode="&#xf075;" 
-d="M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002
-c0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208z" />
-    <glyph glyph-name="magnet" unicode="&#xf076;" 
-d="M164.07 299.9h-152.07c-6.62305 0 -12 5.37695 -12 12v80c0 19.8682 16.1309 36 36 36h104c19.8691 0 36 -16.1318 36 -36v-80c0 -0.0380859 0.000976562 -0.0751953 0.000976562 -0.112305c0 -6.5625 -5.32812 -11.8906 -11.8906 -11.8906
-c-0.0136719 0 -0.0263672 0.00292969 -0.0400391 0.00292969zM512 311.9c0 -0.00390625 0.00195312 -0.0078125 0.00195312 -0.0107422c0 -6.5625 -5.32715 -11.8906 -11.8896 -11.8906c-0.0380859 0 -0.0751953 0.000976562 -0.112305 0.000976562h-152
-c-6.62305 0 -12 5.37695 -12 12v80c0 19.8691 16.1309 36 36 36h104c19.8691 0 36 -16.1309 36 -36v-80.0996zM348 267.9h151.85c6.62305 0 12.001 -5.37598 12.001 -11.998c0 -0.0341797 0 -0.0683594 -0.000976562 -0.102539
-c-0.199219 -20.2002 -0.599609 -40.3994 0 -53.2002c0 -150.699 -134.42 -246.699 -255 -246.699s-256.75 96 -256.75 246.6c0.600586 13 0.100586 31.9004 0 53.2998v0.100586c0 6.62305 5.37695 12 12 12h151.9c6.62305 0 12 -5.37695 12 -12v-52
-c0 -127.9 160 -128.101 160 0v52c0 6.62305 5.37695 12 12 12z" />
-    <glyph glyph-name="chevron-up" unicode="&#xf077;" horiz-adv-x="448" 
-d="M240.971 317.476l194.344 -194.343c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-22.667 -22.667c-9.35742 -9.35742 -24.5225 -9.375 -33.9014 -0.0400391l-154.746 154.02l-154.745 -154.021c-9.37891 -9.33496 -24.5439 -9.31738 -33.9014 0.0400391
-l-22.667 22.667c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l194.344 194.343c9.37207 9.37305 24.5674 9.37305 33.9404 0.000976562z" />
-    <glyph glyph-name="chevron-down" unicode="&#xf078;" horiz-adv-x="448" 
-d="M207.029 66.5244l-194.344 194.344c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l22.667 22.667c9.35742 9.35742 24.5225 9.375 33.9014 0.0400391l154.746 -154.021l154.745 154.021c9.37891 9.33496 24.5439 9.31738 33.9014 -0.0400391l22.667 -22.667
-c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-194.343 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9414 0z" />
-    <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="640" 
-d="M629.657 104.402l-100.687 -100.687c-9.37305 -9.37207 -24.5674 -9.37207 -33.9404 0l-100.688 100.687c-9.37305 9.37305 -9.37305 24.5684 0 33.9404l10.8232 10.8232c9.56152 9.56152 25.1328 9.33984 34.4189 -0.492188l40.415 -42.792v182.118h-187.549
-c-6.62305 0 -12.626 2.68555 -16.9707 7.0293l-16 16c-15.1191 15.1201 -4.41113 40.9707 16.9707 40.9707h243.549c13.2549 0 24 -10.7451 24 -24v-222.118l40.416 42.792c9.28516 9.83105 24.8564 10.0537 34.4189 0.492188l10.8232 -10.8232
-c9.37207 -9.37207 9.37207 -24.5684 -0.000976562 -33.9404zM364.519 88.9707l16.001 -16c15.1191 -15.1201 4.41113 -40.9707 -16.9707 -40.9707h-243.549c-13.2549 0 -24 10.7451 -24 24v222.119l-40.416 -42.793c-9.28613 -9.83105 -24.8574 -10.0527 -34.4189 -0.491211
-l-10.8223 10.8223c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l100.688 100.687c9.37207 9.37305 24.5674 9.37305 33.9404 0l100.687 -100.686c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-10.8223 -10.8223c-9.5625 -9.5625 -25.1328 -9.33984 -34.4189 0.491211
-l-40.416 42.792v-182.119h187.548c6.62305 0 12.627 -2.68457 16.9707 -7.0293z" />
-    <glyph glyph-name="shopping-cart" unicode="&#xf07a;" horiz-adv-x="576" 
-d="M528.12 146.681c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -30.9277 -25.0723 -56 -56 -56
-s-56 25.0723 -56 56c0 15.6738 6.44727 29.835 16.8232 40h-209.647c10.377 -10.165 16.8242 -24.3262 16.8242 -40c0 -30.9277 -25.0723 -56 -56 -56s-56 25.0723 -56 56c0 20.7783 11.3252 38.9004 28.1309 48.5654l-70.248 343.435h-69.8828
-c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2285 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782c15.4004 0 26.8154 -14.3008 23.4023 -29.3193z" />
-    <glyph glyph-name="folder" unicode="&#xf07b;" 
-d="M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192z" />
-    <glyph glyph-name="folder-open" unicode="&#xf07c;" horiz-adv-x="576" 
-d="M572.694 155.907l-72.4248 -124.155c-11.0967 -19.0244 -31.6865 -31.752 -55.2803 -31.752h-399.964c-18.5234 0 -30.0645 20.0928 -20.7314 36.0928l72.4238 124.155c11.0986 19.0244 31.6875 31.752 55.2822 31.752h399.964
-c18.5234 0 30.0645 -20.0928 20.7305 -36.0928zM152 224c-34.0107 0 -65.7861 -18.25 -82.9229 -47.6279l-69.0771 -118.418v278.046c0 26.5098 21.4902 48 48 48h160l64 -64h160c26.5098 0 48 -21.4902 48 -48v-48h-328z" />
-    <glyph glyph-name="chart-bar" unicode="&#xf080;" 
-d="M332.8 128c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM428.8 128
-c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM140.8 128
-c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM236.8 128
-c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM496 64c8.83984 0 16 -7.16016 16 -16v-32
-c0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432z" />
-    <glyph glyph-name="camera-retro" unicode="&#xf083;" 
-d="M48 416h416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48zM48 384c-8.7998 0 -16 -7.2002 -16 -16v-10c0 -3.2998 2.7002 -6 6 -6h116c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-106z
-M474 288c3.2998 0 6 2.7002 6 6v74c0 8.7998 -7.2002 16 -16 16h-252.8c-2 0 -3.90039 -1 -5 -2.7002l-30.2002 -45.2998h-138c-3.2998 0 -6 -2.7002 -6 -6v-36c0 -3.2998 2.7002 -6 6 -6h436zM256 24c66.2002 0 120 53.7998 120 120s-53.7998 120 -120 120
-s-120 -53.7998 -120 -120s53.7998 -120 120 -120zM256 232c48.5 0 88 -39.5 88 -88s-39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88zM208 128c8.7998 0 16 7.2002 16 16c0 17.5996 14.4004 32 32 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16
-c-35.2998 0 -64 -28.7002 -64 -64c0 -8.7998 7.2002 -16 16 -16z" />
-    <glyph glyph-name="key" unicode="&#xf084;" 
-d="M512 271.999c0 -97.2021 -78.7979 -175.999 -176 -175.999c-11.2197 0 -22.1904 1.06152 -32.8271 3.06934l-24.0117 -27.0146c-4.39746 -4.94727 -10.8047 -8.05469 -17.9385 -8.05469h-37.2227v-40c0 -13.2549 -10.7451 -24 -24 -24h-40v-40
-c0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v78.0586c0 6.36523 2.5293 12.4707 7.0293 16.9717l161.802 161.802c-5.72266 17.3535 -8.83105 35.8965 -8.83105 55.168c0 97.2021 78.7969 175.999 175.999 176
-c97.4893 0.000976562 176.001 -78.5107 176.001 -176.001zM336 320c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48z" />
-    <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="640" 
-d="M512.1 257l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.40039c-11.7998 4.40039 -22.5996 10.7002 -32.0996 18.6006c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.6992l8.19922 14.3008c-6.89941 8 -12.2998 17.2998 -15.8994 27.3994h-16.5
-c-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.6006 0 37.1006c1 6 6.2002 10.3994 12.2002 10.3994h16.5c3.59961 10.1006 9 19.4004 15.8994 27.4004l-8.19922 14.2998c-3 5.2002 -1.90039 11.9004 2.7998 15.7002
-c9.5 7.90039 20.3994 14.2002 32.0996 18.5996c5.7002 2.10059 12.1006 -0.0996094 15.1006 -5.39941l8.19922 -14.2998c10.5 1.89941 21.2002 1.89941 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.39941c11.8008 -4.39941 22.6006 -10.6992 32.1006 -18.5996
-c4.59961 -3.7998 5.7998 -10.5 2.7998 -15.7002l-8.2002 -14.2998c6.90039 -8 12.2998 -17.2998 15.9004 -27.4004h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.5996 0 -37.0996c-1 -6 -6.2002 -10.4004 -12.2002 -10.4004h-16.5
-c-3.60059 -10.0996 -9 -19.3994 -15.9004 -27.3994l8.2002 -14.3008c3 -5.19922 1.90039 -11.8994 -2.7998 -15.6992c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.6006c-5.69922 -2.09961 -12.0996 0.100586 -15.0996 5.40039l-8.2002 14.2998
-c-10.3994 -1.90039 -21.2002 -1.90039 -31.7002 0zM501.6 315.8c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.7002 -82.4004 -14.2998 -52.8008 -52.7998zM386.3 161.9l33.7002 -16.8008c10.0996 -5.7998 14.5 -18.0996 10.5 -29.0996
-c-8.90039 -24.2002 -26.4004 -46.4004 -42.5996 -65.7998c-7.40039 -8.90039 -20.2002 -11.1006 -30.3008 -5.2998l-29.0996 16.7998c-16 -13.7002 -34.5996 -24.6006 -54.9004 -31.7002v-33.5996c0 -11.6006 -8.2998 -21.6006 -19.6992 -23.6006
-c-24.6006 -4.2002 -50.4004 -4.39941 -75.9004 0c-11.5 2 -20 11.9004 -20 23.6006v33.5996c-20.2998 7.2002 -38.9004 18 -54.9004 31.7002l-29.0996 -16.7002c-10 -5.7998 -22.9004 -3.59961 -30.2998 5.2998c-16.2002 19.4004 -33.2998 41.6006 -42.2002 65.7002
-c-4 10.9004 0.400391 23.2002 10.5 29.0996l33.2998 16.8008c-3.89941 20.8994 -3.89941 42.3994 0 63.3994l-33.2998 16.9004c-10.0996 5.7998 -14.5996 18.0996 -10.5 29c8.90039 24.2002 26 46.3994 42.2002 65.7998c7.39941 8.90039 20.2002 11.0996 30.2998 5.2998
-l29.0996 -16.7998c16 13.7002 34.6006 24.5996 54.9004 31.7002v33.7002c0 11.5 8.2002 21.5 19.5996 23.5c24.6006 4.19922 50.5 4.39941 76 0.0996094c11.5 -2 20 -11.9004 20 -23.5996v-33.6006c20.3008 -7.2002 38.9004 -18 54.9004 -31.7002l29.0996 16.8008
-c10 5.7998 22.9004 3.59961 30.3008 -5.30078c16.1992 -19.3994 33.1992 -41.5996 42.0996 -65.7998c4 -10.8994 0.0996094 -23.2002 -10 -29.0996l-33.7002 -16.7998c3.90039 -21 3.90039 -42.5 0 -63.5zM268.7 140.8c59.2002 77 -28.7002 164.9 -105.7 105.7
-c-59.2002 -77 28.7002 -164.9 105.7 -105.7zM512.1 -41.9004l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.39941c-11.7998 4.39941 -22.5996 10.6992 -32.0996 18.5996c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.7002l8.19922 14.2998
-c-6.89941 8 -12.2998 17.2998 -15.8994 27.4004h-16.5c-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.5996 0 37.0996c1 6 6.2002 10.4004 12.2002 10.4004h16.5c3.59961 10.0996 9 19.3994 15.8994 27.3994l-8.19922 14.3008
-c-3 5.19922 -1.90039 11.8994 2.7998 15.6992c9.5 7.90039 20.3994 14.2002 32.0996 18.6006c5.7002 2.09961 12.1006 -0.100586 15.1006 -5.40039l8.19922 -14.2998c10.5 1.90039 21.2002 1.90039 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.40039
-c11.8008 -4.40039 22.6006 -10.7002 32.1006 -18.6006c4.59961 -3.7998 5.7998 -10.5 2.7998 -15.6992l-8.2002 -14.3008c6.90039 -8 12.2998 -17.2998 15.9004 -27.3994h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.6006 0 -37.1006
-c-1 -6 -6.2002 -10.3994 -12.2002 -10.3994h-16.5c-3.60059 -10.1006 -9 -19.4004 -15.9004 -27.4004l8.2002 -14.2998c3 -5.2002 1.90039 -11.9004 -2.7998 -15.7002c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.5996
-c-5.69922 -2.10059 -12.0996 0.0996094 -15.0996 5.39941l-8.2002 14.2998c-10.3994 -1.89941 -21.2002 -1.89941 -31.7002 0zM501.6 17c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.6006 -82.4004 -14.2998 -52.8008 -52.7998z" />
-    <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="576" 
-d="M416 256c0 -88.4004 -93.0996 -160 -208 -160c-41 0 -79.0996 9.2998 -111.3 25c-21.7998 -12.7002 -52.1006 -25 -88.7002 -25c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002c0.299805 0.299805 22.3994 24.2998 35.7998 54.5
-c-23.9004 26.0996 -38 57.7002 -38 92c0 88.4004 93.0996 160 208 160s208 -71.5996 208 -160zM538 36c13.4004 -30.2998 35.5 -54.2002 35.7998 -54.5c2.2002 -2.40039 2.7998 -5.7998 1.5 -8.7002c-1.2002 -2.89941 -4.09961 -4.7998 -7.2998 -4.7998
-c-36.5996 0 -66.9004 12.2998 -88.7002 25c-32.2002 -15.7998 -70.2998 -25 -111.3 -25c-86.2002 0 -160.2 40.4004 -191.7 97.9004c10.4004 -1.10059 20.9004 -1.90039 31.7002 -1.90039c132.3 0 240 86.0996 240 192c0 6.7998 -0.400391 13.5 -1.2998 20.0996
-c75.7998 -23.8994 129.3 -81.1992 129.3 -148.1c0 -34.2998 -14.0996 -66 -38 -92z" />
-    <glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="576" 
-d="M288 448v-439.6l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998z" />
-    <glyph glyph-name="thumbtack" unicode="&#xf08d;" horiz-adv-x="384" 
-d="M298.028 233.733c47.9893 -22.3135 85.9717 -62.5508 85.9727 -113.733c0 -13.2549 -10.7451 -24 -24 -24h-136v-104.007c0 -1.2832 -0.307617 -2.50293 -0.844727 -3.57812l-24 -48c-2.94727 -5.89258 -11.3701 -5.88184 -14.3115 0l-24 48
-c-0.555664 1.11133 -0.844727 2.33594 -0.844727 3.57812v104.007h-136c-13.2549 0 -24 10.7451 -24 24c0 50.7393 37.4648 91.1797 85.9717 113.733l12.2354 118.267h-42.207c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24h272
-c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-42.207z" />
-    <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="576" 
-d="M552 384c13.2998 0 24 -10.7002 24 -24v-56c0 -35.7002 -22.5996 -72.4004 -61.9004 -100.7c-31.3994 -22.7002 -69.6992 -37.0996 -110 -41.7002c-31.3994 -52.0996 -68.0996 -73.5996 -68.0996 -73.5996v-72h48c35.2998 0 64 -20.7002 64 -56v-12
-c0 -6.59961 -5.40039 -12 -12 -12h-296c-6.59961 0 -12 5.40039 -12 12v12c0 35.2998 28.7002 56 64 56h48v72s-36.7002 21.5 -68.0996 73.5996c-40.2002 4.60059 -78.5 19 -110 41.7002c-39.4004 28.2998 -61.9004 65 -61.9004 100.7v56c0 13.2998 10.7002 24 24 24h104v40
-c0 13.2998 10.7002 24 24 24h272c13.2998 0 24 -10.7002 24 -24v-40h104zM99.2998 255.2c12.5 -9 26.6006 -16.2002 41.7002 -21.4004c-7 25 -11.7998 53.6006 -12.7998 86.2002h-64.2002v-16c0 -11.5996 10.9004 -31.2002 35.2998 -48.7998zM512 304v16h-64.2998
-c-1 -32.5996 -5.7998 -61.2002 -12.7998 -86.2002c15.0996 5.2002 29.2998 12.4004 41.7998 21.4004c17.5996 12.7002 35.2998 32.7002 35.2998 48.7998z" />
-    <glyph glyph-name="upload" unicode="&#xf093;" 
-d="M296 64h-80c-13.2998 0 -24 10.7002 -24 24v168h-87.7002c-17.7998 0 -26.7002 21.5 -14.0996 34.0996l152.1 152.2c7.5 7.5 19.7998 7.5 27.2998 0l152.2 -152.2c12.6006 -12.5996 3.7002 -34.0996 -14.0996 -34.0996h-87.7002v-168c0 -13.2998 -10.7002 -24 -24 -24z
-M512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h136v-8c0 -30.9004 25.0996 -56 56 -56h80c30.9004 0 56 25.0996 56 56v8h136c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20
-s9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z" />
-    <glyph glyph-name="lemon" unicode="&#xf094;" 
-d="M489.038 425.037c23.0938 -23.0938 28.8916 -54.3906 16.833 -75.0928c-34.3115 -58.9043 53.0762 -181.249 -86.7461 -321.071s-262.167 -52.4326 -321.068 -86.7432c-20.7031 -12.0586 -52 -6.2627 -75.0947 16.832c-23.0928 23.0938 -28.8916 54.3906 -16.833 75.0928
-c34.3125 58.9043 -53.0781 181.247 86.7451 321.07s262.167 52.4336 321.073 86.7461c20.7012 12.0586 51.9971 6.25879 75.0908 -16.834zM243.881 352.478c8.57227 2.14355 13.7832 10.8291 11.6416 19.4023c-2.14258 8.57324 -10.8281 13.7852 -19.4033 11.6426
-c-69.8027 -17.4521 -154.218 -101.949 -171.643 -171.643c-2.1416 -8.57324 3.07031 -17.2588 11.6426 -19.4033c1.30273 -0.324219 2.6084 -0.480469 3.89258 -0.480469c7.16895 0 13.6943 4.85352 15.5117 12.124c14.5498 58.2031 90.1689 133.811 148.357 148.357z" />
-    <glyph glyph-name="phone" unicode="&#xf095;" 
-d="M493.4 423.4c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004c0 -256.5 -207.9 -464 -464 -464c-11.2998 0 -20.9004 7.7998 -23.4004 18.5996l-24 104c-2.59961 11.3008 3.30078 22.9004 14 27.6006l112 48c9.80078 4.2002 21.2002 1.39941 28 -6.90039
-l49.6006 -60.5996c78.2998 36.7002 141.2 100.5 177.2 177.2l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004z" />
-    <glyph glyph-name="phone-square" unicode="&#xf098;" horiz-adv-x="448" 
-d="M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM94 32c160.055 0 290 129.708 290 290c0 7.11621 -4.97559 13.0801 -11.6279 14.6143l-65 14.998
-c-1.08691 0.250977 -2.20312 0.394531 -3.36621 0.394531c-6.18457 0 -11.501 -3.75195 -13.7939 -9.10156l-30 -69.998c-0.775391 -1.81055 -1.22266 -3.81055 -1.22266 -5.90332c0 -4.68066 2.14844 -8.86328 5.51172 -11.6152l37.8857 -30.9971
-c-22.4834 -47.9219 -61.8369 -87.8164 -110.78 -110.779l-30.9971 37.8848c-2.75195 3.36328 -6.94043 5.49414 -11.6211 5.49414c-2.09277 0 -4.08691 -0.429688 -5.89746 -1.20508l-69.998 -29.999c-5.34961 -2.29297 -9.08984 -7.59375 -9.08984 -13.7783
-c0 -1.16309 0.131836 -2.29492 0.382812 -3.38184l14.998 -65c1.55957 -6.75391 7.58301 -11.627 14.6162 -11.627z" />
-    <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="448" 
-d="M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16
-c0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248z" />
-    <glyph glyph-name="credit-card" unicode="&#xf09d;" horiz-adv-x="576" 
-d="M0 16v176h576v-176c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM192 84v-40c0 -6.59961 5.40039 -12 12 -12h136c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-136c-6.59961 0 -12 -5.40039 -12 -12zM64 84v-40
-c0 -6.59961 5.40039 -12 12 -12h72c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-72c-6.59961 0 -12 -5.40039 -12 -12zM576 368v-48h-576v48c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48z" />
-    <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="448" 
-d="M128.081 32.041c0 -35.3691 -28.6719 -64.041 -64.041 -64.041s-64.04 28.6719 -64.04 64.041s28.6719 64.041 64.041 64.041s64.04 -28.6729 64.04 -64.041zM303.741 -15.209c0.494141 -9.13477 -6.84668 -16.791 -15.9951 -16.79h-48.0693
-c-8.41406 0 -15.4707 6.49023 -16.0176 14.8867c-7.29883 112.07 -96.9404 201.488 -208.772 208.772c-8.39648 0.545898 -14.8867 7.60254 -14.8867 16.0176v48.0693c0 9.14746 7.65625 16.4883 16.791 15.9941c154.765 -8.36328 278.596 -132.351 286.95 -286.95z
-M447.99 -15.4971c0.324219 -9.03027 -6.97168 -16.5029 -16.0049 -16.5039h-48.0684c-8.62598 0 -15.6455 6.83496 -15.999 15.4531c-7.83789 191.148 -161.286 344.626 -352.465 352.465c-8.61816 0.354492 -15.4531 7.37402 -15.4531 15.999v48.0684
-c0 9.03418 7.47266 16.3301 16.5029 16.0059c234.962 -8.43555 423.093 -197.667 431.487 -431.487z" />
-    <glyph glyph-name="hdd" unicode="&#xf0a0;" horiz-adv-x="576" 
-d="M576 144v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48zM528 224h-480c-0.0234375 0 -0.0996094 -0.0361328 -0.124023 -0.0361328
-c-10.8613 0 -21.2168 -2.18066 -30.6533 -6.12891l96.5283 144.791c8.60742 12.9102 23.2725 21.374 39.9385 21.374h268.621c16.667 0 31.332 -8.46387 39.9395 -21.374l96.5273 -144.791c-9.43652 3.94824 -19.8447 6.16504 -30.7061 6.16504h-0.0712891zM480 128
-c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32s-14.3271 32 -32 32zM384 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32s-14.3271 32 -32 32z" />
-    <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="576" 
-d="M576 208c0 -23.6299 -12.9502 -44.04 -32.0098 -55.1299v-152.87c0 -9.21973 -7.08008 -32 -32 -32c-7.5459 0.00683594 -14.5078 2.64062 -19.9805 7.01953l-85.0293 68.0303c-42.7002 34.1406 -96.3203 52.9502 -150.98 52.9502h-28.0801
-c-2.79004 -10.21 -4.41016 -20.8896 -4.41016 -32c0 -29.0801 9.75 -55.9199 26.1504 -77.4404c15.79 -20.7197 0.149414 -50.5596 -25.9004 -50.5596h-74.2793c-11.8809 0 -23.2109 6.37012 -28.4004 17.0596c-16.2998 33.5908 -25.5605 71.1709 -25.5605 110.94
-c0 10.8604 0.790039 21.5195 2.18066 32h-33.7002c-35.3496 0 -64 28.6504 -64 64v96c0 35.3496 28.6504 64 64 64h192c54.6602 0 108.28 18.8096 150.99 52.9502l85.0293 68.0303c5.79004 4.63965 12.8604 7.01953 19.9805 7.01953c25.0195 0 32 -23.2598 32 -32.0098
-v-152.87c19.0498 -11.0801 32 -31.4902 32 -55.1201zM480 66.5801v282.84l-33.0498 -26.4395c-54 -43.2002 -121.83 -66.9805 -190.95 -66.9805v-96c69.1201 0 136.95 -23.7803 190.95 -66.9805z" />
-    <glyph glyph-name="certificate" unicode="&#xf0a3;" 
-d="M458.622 192.08l45.9844 -45.0039c13.7012 -12.9727 7.32227 -36.0371 -10.6641 -40.3389l-62.6504 -15.9902l17.6611 -62.0146c4.99023 -17.834 -11.8252 -34.665 -29.6611 -29.6719l-61.9941 17.667l-15.9834 -62.6709
-c-4.33887 -18.1533 -27.8252 -24.1553 -40.3252 -10.668l-44.9893 46.001l-44.9912 -46.001c-12.6289 -13.3496 -35.8857 -7.90625 -40.3252 10.668l-15.9834 62.6709l-61.9941 -17.667c-17.832 -4.99121 -34.6523 11.833 -29.6611 29.6719l17.6611 62.0146
-l-62.6504 15.9902c-17.9795 4.2998 -24.3721 27.3613 -10.6641 40.3389l45.9854 45.0039l-45.9854 45.0049c-13.7012 12.9707 -7.32227 36.0371 10.665 40.3379l62.6504 15.9902l-17.6611 62.0146c-4.99023 17.834 11.8242 34.665 29.6611 29.6709l61.9951 -17.667
-l15.9834 62.6709c4.27832 17.9023 27.6953 24.0195 40.3252 10.6689l44.9893 -46.3418l44.9902 46.3428c12.7744 13.5039 36.0947 7.03027 40.3252 -10.6689l15.9834 -62.6709l61.9941 17.667c17.832 4.99219 34.6523 -11.833 29.6611 -29.6709l-17.6611 -62.0146
-l62.6504 -15.9902c17.9795 -4.2998 24.3721 -27.3623 10.6641 -40.3389z" />
-    <glyph glyph-name="hand-point-right" unicode="&#xf0a4;" 
-d="M512 248.348c0 -23.625 -20.6504 -43.8252 -44.7998 -43.8252h-99.8516c16.3408 -17.0488 18.3467 -49.7666 -6.29883 -70.9443c14.2881 -22.8291 2.14746 -53.0176 -16.4502 -62.3154c8.97461 -49.1406 -21.9453 -71.2627 -72.5996 -71.2627
-c-2.74609 0 -13.2764 0.203125 -16 0.195312c-61.9707 -0.167969 -76.8936 31.0645 -123.731 38.3145c-11.6729 1.80762 -20.2686 11.8916 -20.2686 23.7041v171.525l0.00195312 0.000976562c0.0107422 18.3662 10.6074 35.8887 28.4639 43.8447
-c28.8857 12.9941 95.4131 49.0381 107.534 77.3232c7.79688 18.1934 21.3838 29.084 40 29.0918c34.2217 0.0136719 57.752 -35.0977 44.1191 -66.9082c-3.58301 -8.3584 -8.3125 -16.6699 -14.1533 -24.918h149.234c23.4502 0 44.7998 -20.543 44.7998 -43.8262zM96 248
-v-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24h48c13.2549 0 24 -10.7451 24 -24zM68 80c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20z" />
-    <glyph glyph-name="hand-point-left" unicode="&#xf0a5;" 
-d="M44.7998 292.174h149.234c-5.84082 8.24805 -10.5703 16.5586 -14.1533 24.918c-13.6328 31.8105 9.89746 66.9219 44.1191 66.9082c18.6162 -0.0078125 32.2031 -10.8975 40 -29.0918c12.1221 -28.2861 78.6484 -64.3291 107.534 -77.3232
-c17.8564 -7.95605 28.4531 -25.4785 28.4639 -43.8447l0.00195312 -0.000976562v-171.526c0 -11.8115 -8.5957 -21.8965 -20.2686 -23.7031c-46.8379 -7.25 -61.7607 -38.4824 -123.731 -38.3145c-2.72363 0.00683594 -13.2539 -0.195312 -16 -0.195312
-c-50.6543 0 -81.5742 22.1221 -72.5996 71.2627c-18.5977 9.29688 -30.7383 39.4863 -16.4502 62.3154c-24.6455 21.1768 -22.6396 53.8955 -6.29883 70.9443h-99.8516c-24.1494 0 -44.7998 20.2002 -44.7998 43.8252c0 23.2832 21.3496 43.8262 44.7998 43.8262zM440 272
-h48c13.2549 0 24 -10.7451 24 -24v-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24zM464 60c11.0459 0 20 8.9541 20 20s-8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20z" />
-    <glyph glyph-name="hand-point-up" unicode="&#xf0a6;" horiz-adv-x="384" 
-d="M135.652 448c23.625 0 43.8252 -20.6504 43.8252 -44.7998v-99.8516c17.0488 16.3408 49.7666 18.3467 70.9443 -6.29883c22.8291 14.2881 53.0176 2.14746 62.3154 -16.4502c49.1406 8.97461 71.2627 -21.9453 71.2627 -72.5996
-c0 -2.74609 -0.203125 -13.2764 -0.195312 -16c0.167969 -61.9707 -31.0645 -76.8936 -38.3145 -123.731c-1.80762 -11.6729 -11.8916 -20.2686 -23.7041 -20.2686h-171.525l-0.000976562 0.00195312c-18.3662 0.0107422 -35.8887 10.6074 -43.8447 28.4639
-c-12.9941 28.8857 -49.0381 95.4121 -77.3232 107.534c-18.1943 7.79688 -29.084 21.3838 -29.0918 40c-0.0136719 34.2217 35.0977 57.752 66.9082 44.1191c8.3584 -3.58301 16.6699 -8.3125 24.918 -14.1533v149.234c0 23.4502 20.543 44.7998 43.8262 44.7998zM136 32
-h192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24zM304 4c-11.0459 0 -20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20s-8.9541 20 -20 20z" />
-    <glyph glyph-name="hand-point-down" unicode="&#xf0a7;" horiz-adv-x="384" 
-d="M91.8262 -19.2002v149.234c-8.24805 -5.84082 -16.5586 -10.5703 -24.918 -14.1533c-31.8105 -13.6328 -66.9219 9.89746 -66.9082 44.1191c0.0078125 18.6162 10.8975 32.2031 29.0918 40c28.2861 12.1221 64.3291 78.6484 77.3232 107.534
-c7.95605 17.8564 25.4785 28.4531 43.8447 28.4639l0.000976562 0.00195312h171.526c11.8115 0 21.8965 -8.5957 23.7031 -20.2686c7.25 -46.8379 38.4824 -61.7607 38.3145 -123.731c-0.00683594 -2.72363 0.195312 -13.2539 0.195312 -16
-c0 -50.6543 -22.1221 -81.5742 -71.2627 -72.5996c-9.29688 -18.5977 -39.4863 -30.7383 -62.3154 -16.4502c-21.1768 -24.6455 -53.8955 -22.6396 -70.9443 -6.29883v-99.8516c0 -24.1494 -20.2002 -44.7998 -43.8252 -44.7998
-c-23.2832 0 -43.8262 21.3496 -43.8262 44.7998zM112 376v48c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24zM324 400c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20
-s8.9541 -20 20 -20s20 8.9541 20 20z" />
-    <glyph glyph-name="arrow-circle-left" unicode="&#xf0a8;" 
-d="M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM284.9 87.5996l-75.5 72.4004h182.6c13.2998 0 24 10.7002 24 24v16c0 13.2998 -10.7002 24 -24 24h-182.6l75.5 72.4004c9.69922 9.2998 9.89941 24.7998 0.399414 34.2998
-l-11 10.8994c-9.39941 9.40039 -24.5996 9.40039 -33.8994 0l-132.7 -132.6c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l132.7 -132.699c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l11 10.8994c9.5 9.5 9.2998 25 -0.399414 34.2998z" />
-    <glyph glyph-name="arrow-circle-right" unicode="&#xf0a9;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM227.1 296.4l75.5 -72.4004h-182.6c-13.2998 0 -24 -10.7002 -24 -24v-16c0 -13.2998 10.7002 -24 24 -24h182.6l-75.5 -72.4004
-c-9.69922 -9.2998 -9.89941 -24.7998 -0.399414 -34.2998l11 -10.8994c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l132.7 132.6c9.40039 9.40039 9.40039 24.5996 0 33.9004l-132.7 132.8c-9.39941 9.39941 -24.5996 9.39941 -33.8994 0l-11 -10.9004
-c-9.5 -9.59961 -9.2998 -25.0996 0.399414 -34.3994z" />
-    <glyph glyph-name="arrow-circle-up" unicode="&#xf0aa;" 
-d="M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM151.6 163.1l72.4004 75.5v-182.6c0 -13.2998 10.7002 -24 24 -24h16c13.2998 0 24 10.7002 24 24v182.6l72.4004 -75.5c9.2998 -9.69922 24.7998 -9.89941 34.2998 -0.399414
-l10.8994 11c9.40039 9.39941 9.40039 24.5996 0 33.8994l-132.6 132.7c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-132.8 -132.7c-9.39941 -9.39941 -9.39941 -24.5996 0 -33.8994l10.9004 -11c9.59961 -9.5 25.0996 -9.2998 34.3994 0.399414z" />
-    <glyph glyph-name="arrow-circle-down" unicode="&#xf0ab;" 
-d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM360.4 220.9l-72.4004 -75.5v182.6c0 13.2998 -10.7002 24 -24 24h-16c-13.2998 0 -24 -10.7002 -24 -24v-182.6l-72.4004 75.5
-c-9.2998 9.69922 -24.7998 9.89941 -34.2998 0.399414l-10.8994 -11c-9.40039 -9.39941 -9.40039 -24.5996 0 -33.8994l132.6 -132.7c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l132.699 132.7c9.40039 9.39941 9.40039 24.5996 0 33.8994l-10.8994 11
-c-9.5 9.5 -25 9.2998 -34.2998 -0.399414z" />
-    <glyph glyph-name="globe" unicode="&#xf0ac;" horiz-adv-x="496" 
-d="M336.5 288h-177c14.5 89.2998 48.7002 152 88.5 152s74 -62.7002 88.5 -152zM152 192c0 22.2002 1.2002 43.5 3.2998 64h185.3c2.10059 -20.5 3.30078 -41.7998 3.30078 -64s-1.2002 -43.5 -3.30078 -64h-185.3c-2.09961 20.5 -3.2998 41.7998 -3.2998 64zM476.7 288
-h-108c-8.7998 56.9004 -25.6006 107.8 -50 141.6c71.5 -21.1992 129.399 -73.6992 158 -141.6zM177.2 429.6c-24.4004 -33.7998 -41.2002 -84.6992 -49.9004 -141.6h-108c28.5 67.9004 86.5 120.4 157.9 141.6zM487.4 256c5.39941 -20.5 8.5 -41.7998 8.5 -64
-s-3.10059 -43.5 -8.60059 -64h-114.6c2.09961 21 3.2998 42.5 3.2998 64s-1.2002 43 -3.2998 64h114.7zM120 192c0 -21.5 1.2002 -43 3.2002 -64h-114.601c-5.39941 20.5 -8.59961 41.7998 -8.59961 64s3.2002 43.5 8.59961 64h114.7
-c-2.09961 -21 -3.2998 -42.5 -3.2998 -64zM159.5 96h177c-14.5 -89.2998 -48.7002 -152 -88.5 -152s-74 62.7002 -88.5 152zM318.8 -45.5996c24.4004 33.7998 41.2002 84.6992 50 141.6h108c-28.5996 -67.9004 -86.5996 -120.4 -158 -141.6zM19.2998 96h108
-c8.7998 -56.9004 25.6006 -107.8 50 -141.6c-71.5 21.1992 -129.399 73.6992 -158 141.6z" />
-    <glyph glyph-name="wrench" unicode="&#xf0ad;" 
-d="M507.73 338.9c11.7891 -47.4102 -0.84082 -99.6602 -37.9102 -136.73c-39.9004 -39.9004 -97.25 -50.9297 -147.37 -34.2197l-213.21 -213.21c-24.9902 -24.9902 -65.5098 -24.9902 -90.5 0s-24.9902 65.5098 0 90.5l213.39 213.39
-c-16.5 50.1006 -5.58984 107.561 34.0498 147.2c37.0303 37.0195 89.2002 49.6699 136.58 37.9297c9.08984 -2.25977 12.2803 -13.54 5.66016 -20.1602l-74.3604 -74.3594l11.3105 -67.8799l67.8799 -11.3105l74.3604 74.3604
-c6.58008 6.58008 17.8799 3.51953 20.1201 -5.50977zM64 -24c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z" />
-    <glyph glyph-name="tasks" unicode="&#xf0ae;" 
-d="M139.61 412.5l17 -16.5c2.13281 -2.18066 3.44922 -5.16797 3.44922 -8.45605c0 -3.33496 -1.35352 -6.35547 -3.54004 -8.54395l-72.1992 -72.1904l-15.5898 -15.6191c-2.29297 -2.17969 -5.39941 -3.51758 -8.80859 -3.51758
-c-3.41016 0 -6.50977 1.33789 -8.80176 3.51758l-47.5898 47.3994c-2.18066 2.17383 -3.53125 5.18262 -3.53125 8.50195c0 3.31836 1.35059 6.3252 3.53125 8.49805l15.7002 15.7197c2.17285 2.18164 5.18164 3.53125 8.50098 3.53125s6.3252 -1.34961 8.49902 -3.53125
-l22.6992 -22.1191l63.6807 63.3096c2.17285 2.18066 5.18262 3.53125 8.50098 3.53125c3.31934 0 6.3252 -1.35059 8.49902 -3.53125zM139.61 253.31l16.9795 -17c2.125 -2.16504 3.43652 -5.13574 3.43652 -8.40625c0 -3.31641 -1.34863 -6.32031 -3.52637 -8.49316
-l-72.2002 -72.2197l-15.7002 -15.6904c-2.29004 -2.17871 -5.39551 -3.5166 -8.80273 -3.5166c-3.4082 0 -6.50586 1.33789 -8.79688 3.5166l-47.4697 47.5c-2.18066 2.17285 -3.53125 5.18262 -3.53125 8.50195c0 3.31836 1.35059 6.3252 3.53125 8.49805l15.7002 15.6904
-c2.17285 2.18066 5.18164 3.53125 8.50098 3.53125s6.3252 -1.35059 8.49902 -3.53125l22.6992 -22.1006l63.6807 63.7197c2.17285 2.18164 5.18262 3.53125 8.50098 3.53125c3.31934 0 6.3252 -1.34961 8.49902 -3.53125zM64 80c26.4922 0 48 -21.5078 48 -48
-s-21.5078 -48 -48 -48c-26.4697 0 -48.5898 21.5 -48.5898 48s22.0996 48 48.5898 48zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288zM496 384
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288zM496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h288z" />
-    <glyph glyph-name="filter" unicode="&#xf0b0;" 
-d="M487.976 448c21.3623 0 32.0459 -25.8965 16.9717 -40.9707l-184.947 -184.971v-262.039c0 -19.5127 -21.9805 -30.71 -37.7627 -19.6611l-80 55.9795c-6.41602 4.49219 -10.2373 11.8311 -10.2373 19.6621v206.059l-184.942 184.971
-c-15.1045 15.1045 -4.34766 40.9707 16.9707 40.9707h463.947z" />
-    <glyph glyph-name="briefcase" unicode="&#xf0b1;" 
-d="M320 112v48h192v-144c0 -25.5996 -22.4004 -48 -48 -48h-416c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16zM464 320c25.5996 0 48 -22.4004 48 -48v-80h-512v80c0 25.5996 22.4004 48 48 48h80v48
-c0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80zM320 320v32h-128v-32h128z" />
-    <glyph glyph-name="arrows-alt" unicode="&#xf0b2;" 
-d="M352.201 22.2246l-79.1963 -79.1953c-9.37305 -9.37305 -24.5684 -9.37305 -33.9404 0l-79.1963 79.1953c-15.1191 15.1191 -4.41113 40.9717 16.9707 40.9707h51.1621l-0.000976562 100.805h-100.804v-51.1621c0 -21.3818 -25.8516 -32.0898 -40.9717 -16.9707
-l-79.1953 79.1963c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l79.1953 79.1963c15.1191 15.1191 40.9717 4.41113 40.9717 -16.9717v-51.2285h100.804v100.804h-51.2305c-21.3818 0 -32.0898 25.8516 -16.9707 40.9717l79.1963 79.1953
-c9.37305 9.37305 24.5684 9.37305 33.9404 0l79.1963 -79.1953c15.1191 -15.1191 4.41113 -40.9717 -16.9707 -40.9717h-51.1621v-100.804h100.804v51.1621c0 21.3818 25.8516 32.0898 40.9707 16.9707l79.1953 -79.1963c9.37305 -9.37207 9.37305 -24.5684 0 -33.9404
-l-79.1953 -79.1963c-15.1191 -15.1191 -40.9717 -4.41113 -40.9707 16.9717v51.2285h-100.803v-100.804h51.2305c21.3818 0 32.0898 -25.8516 16.9707 -40.9717z" />
-    <glyph glyph-name="users" unicode="&#xf0c0;" horiz-adv-x="640" 
-d="M96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM544 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM576 192c35.2998 0 64 -28.7002 64 -64v-32
-c0 -17.7002 -14.2998 -32 -32 -32h-66c-6.2002 47.4004 -34.7998 87.2998 -75.0996 109.4c11.5996 11.5 27.5 18.5996 45.0996 18.5996h64zM320 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM396.8 160
-c63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM173.1 173.4
-c-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004c-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z" />
-    <glyph glyph-name="link" unicode="&#xf0c1;" 
-d="M326.612 262.609c59.7471 -59.8096 58.9268 -155.698 0.359375 -214.591c-0.109375 -0.119141 -0.239258 -0.25 -0.359375 -0.369141l-67.2002 -67.2002c-59.2705 -59.2705 -155.699 -59.2627 -214.96 0c-59.2705 59.2598 -59.2705 155.7 0 214.96l37.1055 37.1055
-c9.84082 9.84082 26.7861 3.30078 27.2939 -10.6055c0.648438 -17.7227 3.82617 -35.5273 9.69043 -52.7207c1.98633 -5.82227 0.567383 -12.2627 -3.7832 -16.6123l-13.0869 -13.0869c-28.0254 -28.0264 -28.9053 -73.6602 -1.15527 -101.96
-c28.0244 -28.5791 74.0859 -28.749 102.325 -0.510742l67.2002 67.1904c28.1914 28.1914 28.0732 73.7568 0 101.83c-3.70117 3.69434 -7.42871 6.56348 -10.3408 8.56934c-4.05078 2.78125 -6.74707 7.37402 -6.94727 12.6055
-c-0.395508 10.5674 3.34766 21.4561 11.6982 29.8057l21.0537 21.0557c5.52148 5.52051 14.1826 6.19922 20.584 1.73047c7.38574 -5.15723 14.1709 -10.8447 20.5225 -17.1963zM467.547 403.551c59.2705 -59.2598 59.2705 -155.7 -0.000976562 -214.959l-37.1055 -37.1055
-c-9.84082 -9.83984 -26.7852 -3.30078 -27.2939 10.6055c-0.648438 17.7227 -3.82617 35.5273 -9.69043 52.7217c-1.98633 5.82129 -0.567383 12.2617 3.7832 16.6113l13.0869 13.0869c28.0264 28.0264 28.9053 73.6602 1.15527 101.96
-c-28.0254 28.5791 -74.0869 28.749 -102.325 0.510742l-67.2002 -67.1904c-28.1914 -28.1914 -28.0732 -73.7568 0 -101.83c3.70117 -3.69434 7.42871 -6.56348 10.3408 -8.56934c4.05078 -2.78125 6.74707 -7.37402 6.94727 -12.6055
-c0.395508 -10.5674 -3.34766 -21.4561 -11.6982 -29.8057l-21.0537 -21.0557c-5.52051 -5.51953 -14.1826 -6.19922 -20.584 -1.73047c-7.38574 5.15625 -14.1699 10.8447 -20.5215 17.1953c-59.7471 59.8096 -58.9258 155.698 -0.359375 214.591
-c0.109375 0.119141 0.239258 0.25 0.359375 0.369141l67.2002 67.2002c59.2705 59.2705 155.699 59.2627 214.96 0z" />
-    <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="640" 
-d="M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160
-c59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996z" />
-    <glyph glyph-name="flask" unicode="&#xf0c3;" horiz-adv-x="448" 
-d="M437.2 44.5c29.2998 -47 -4.40039 -108.5 -60.1006 -108.5h-306.199c-55.6006 0 -89.4004 61.4004 -60.1006 108.5l117.2 188.5v151h-8c-13.2998 0 -24 10.7002 -24 24v16c0 13.2998 10.7002 24 24 24h208c13.2998 0 24 -10.7002 24 -24v-16
-c0 -13.2998 -10.7002 -24 -24 -24h-8v-151zM137.9 128h172l-48.2002 77.5996c-3.60059 5.2002 -5.7998 11.5 -5.7998 18.4004v160h-64v-160c0 -6.7998 -2.10059 -13.2002 -5.80078 -18.4004z" />
-    <glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="448" 
-d="M278.06 192l166.421 -166.43c4.68945 -4.69043 4.68945 -12.29 0 -16.9707c-32.8008 -32.7998 -85.9902 -32.7998 -118.79 0l-115.511 115.521l-24.8594 -24.8604c4.30957 -10.9199 6.67969 -22.8096 6.67969 -35.2598c0 -53.0195 -42.9805 -96 -96 -96
-s-96 42.9805 -96 96s42.9805 96 96 96c4.53027 0 8.99023 -0.320312 13.3604 -0.929688l32.9297 32.9297l-32.9297 32.9297c-4.37012 -0.609375 -8.82031 -0.929688 -13.3604 -0.929688c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96
-c0 -12.4502 -2.37012 -24.3398 -6.67969 -35.2598l24.8594 -24.8604l115.511 115.521c32.7998 32.7998 85.9893 32.7998 118.79 0c4.68945 -4.68066 4.68945 -12.2803 0 -16.9707zM96 288c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32
-s14.3604 -32 32 -32zM96 32c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z" />
-    <glyph glyph-name="copy" unicode="&#xf0c5;" horiz-adv-x="448" 
-d="M320 0v-40c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h72v-296c0 -30.8789 25.1211 -56 56 -56h168zM320 344c0 -13.2002 10.7998 -24 24 -24h104v-264c0 -13.2549 -10.7451 -24 -24 -24h-272
-c-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h168v-104zM440.971 375.029c4.34473 -4.34473 7.0293 -10.3477 7.0293 -16.9707v-6.05859h-96v96h6.05859c6.62305 0 12.626 -2.68457 16.9707 -7.0293z" />
-    <glyph glyph-name="paperclip" unicode="&#xf0c6;" horiz-adv-x="448" 
-d="M43.2461 -18.1416c-58.4297 60.2891 -57.3408 157.511 1.38574 217.581l209.76 214.561c44.3164 45.332 116.352 45.3359 160.672 0c43.8896 -44.8936 43.9424 -117.329 0 -162.276l-182.85 -186.852c-29.8545 -30.5371 -78.6328 -30.1113 -107.981 0.998047
-c-28.2754 29.9697 -27.3682 77.4727 1.45117 106.953l143.743 146.835c6.18262 6.31348 16.3125 6.42188 22.626 0.241211l22.8613 -22.3799c6.31445 -6.18164 6.42188 -16.3115 0.241211 -22.626l-143.729 -146.82c-4.93164 -5.04492 -5.23535 -13.4287 -0.647461 -18.292
-c4.37207 -4.63379 11.2451 -4.71094 15.6875 -0.165039l182.85 186.851c19.6123 20.0625 19.6123 52.7256 -0.0117188 72.7979c-19.1885 19.627 -49.957 19.6377 -69.1533 0l-209.762 -214.56c-34.7627 -35.5605 -35.2988 -93.1201 -1.19043 -128.313
-c34.0098 -35.0928 88.9844 -35.1367 123.058 -0.285156l172.061 175.999c6.17676 6.31836 16.3066 6.43262 22.626 0.255859l22.877 -22.3643c6.31836 -6.17676 6.43359 -16.3066 0.255859 -22.626l-172.061 -175.998c-59.5752 -60.9385 -155.942 -60.2158 -214.77 0.485352
-z" />
-    <glyph glyph-name="save" unicode="&#xf0c7;" horiz-adv-x="448" 
-d="M433.941 318.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM224 32
-c35.3457 0 64 28.6543 64 64s-28.6543 64 -64 64s-64 -28.6543 -64 -64s28.6543 -64 64 -64zM320 336.52c0 3.31152 -1.34277 6.31348 -3.51465 8.48535l-3.48047 3.48047c-2.25 2.25098 -5.30176 3.51465 -8.48535 3.51465h-228.52c-6.62695 0 -12 -5.37305 -12 -12v-104
-c0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12v100.52z" />
-    <glyph glyph-name="square" unicode="&#xf0c8;" horiz-adv-x="448" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z" />
-    <glyph glyph-name="bars" unicode="&#xf0c9;" horiz-adv-x="448" 
-d="M16 316c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 156c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40
-c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 -4c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416z" />
-    <glyph glyph-name="list-ul" unicode="&#xf0ca;" 
-d="M48 400c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48s-48 21.5078 -48 48s21.5078 48 48 48zM48 240c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48s-48 21.5078 -48 48s21.5078 48 48 48zM48 80c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48
-s-48 21.5078 -48 48s21.5078 48 48 48zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 384c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16
-h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320z" />
-    <glyph glyph-name="list-ol" unicode="&#xf0cb;" 
-d="M61.7695 47c19.6104 -5.12012 28.7002 -20.5 28.7305 -34.8799c0 -21.3701 -14.3398 -44.1201 -48.5 -44.1201c-16.6201 0 -29.29 4.75 -37 9.44043c-5.82031 4.21973 -6.34961 9.80957 -2.62988 15.9395l5.58984 9.31055c3.86035 6.61914 9.11035 7 15.5996 3.11914
-c4.76758 -1.95996 10.0107 -3.07617 15.4707 -3.11914c10.1602 0 14.3594 3.5 14.3594 8.21973c0 6.64941 -5.60938 9.08984 -15.9395 9.08984h-4.73047c-5.95996 0 -9.25 2.12012 -12.25 7.87988l-1.0498 1.92969c-2.4502 4.75 -1.2002 9.81055 2.7998 14.8809l5.61035 7
-c3.47461 4.32422 7.0957 8.37695 11 12.3096h-22.8301c-4.41504 0 -8 3.58496 -8 8v16c0 4.41504 3.58496 8 8 8h57c7.5 0 11.3398 -4 11.3398 -11.3496v-3.31055c0.0136719 -0.299805 0.0175781 -0.595703 0.0175781 -0.899414
-c0 -5.10449 -1.9248 -9.76367 -5.08789 -13.29zM496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 384c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM16 288
-c-4.41504 0 -8 3.58496 -8 8v16c0 4.41504 3.58496 8 8 8h16v64h-8c-4.4082 0.0078125 -7.98145 3.59766 -7.98145 8.00781c0 1.2832 0.303711 2.49707 0.841797 3.57227l8 16c1.31055 2.62012 4.01367 4.41406 7.13965 4.41992h24c4.41504 0 8 -3.58496 8 -8v-88h16
-c4.41504 0 8 -3.58496 8 -8v-16c0 -4.41504 -3.58496 -8 -8 -8h-64zM12.0898 128c-7.00977 0 -12.0898 4 -12.0898 11.4102v4c0 47.2803 51 56.3994 50.9697 69.1201c0 7.18945 -5.9502 8.75 -9.2793 8.75c-0.0185547 0 -0.0380859 0.000976562 -0.0566406 0.000976562
-c-3.65918 0 -6.97949 -1.46582 -9.40332 -3.84082c-5.12012 -4.91016 -10.5107 -7 -16.1201 -2.44043l-8.58008 6.87988c-5.7998 4.53027 -7.16992 9.78027 -2.7998 15.3701c6.65918 8.75 19.0996 18.75 40.46 18.75c19.4697 0 44.4697 -10.5 44.4697 -39.5596
-c0 -37.7607 -45.0498 -46.1504 -48.3398 -56.4404h38.6797c4.41504 0 8 -3.58496 8 -8v-16c0 -4.41504 -3.58496 -8 -8 -8h-67.9102z" />
-    <glyph glyph-name="strikethrough" unicode="&#xf0cc;" 
-d="M496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-480c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h102.29c-11.6797 16.5303 -19.7803 35.4697 -21.7803 56.3604c-0.385742 3.97559 -0.577148 7.88281 -0.577148 11.96
-c0 68.2266 55.3633 123.624 123.577 123.68h68c50.1416 0 93.5244 -28.7686 114.521 -70.7998l0.529297 -1c1.07324 -2.14844 1.70215 -4.57715 1.70215 -7.13965c0 -6.26562 -3.61035 -11.6953 -8.86133 -14.3203l-42.9404 -21.4707
-c-2.14941 -1.07324 -4.5791 -1.70312 -7.14355 -1.70312c-6.2627 0 -11.6895 3.60645 -14.3164 8.85352c-8.18652 16.374 -25.0859 27.5801 -44.623 27.5801h-0.0371094h-66.79c-24.0352 -0.000976562 -43.5479 -19.5059 -43.5479 -43.541
-c0 -19.5742 12.9414 -36.1494 30.7285 -41.6289l87.1699 -26.8301h202.1zM315.76 128h94.3906c2.6084 -7.7373 4.44434 -15.9834 5.33984 -24.3604c0.385742 -3.97559 0.577148 -7.88281 0.577148 -11.96c0 -68.2266 -55.3633 -123.624 -123.577 -123.68h-68
-c-50.1416 0 -93.5244 28.7686 -114.521 70.7998l-0.529297 1c-1.07324 2.14844 -1.70215 4.57715 -1.70215 7.13965c0 6.26562 3.61035 11.6953 8.86133 14.3203l42.9404 21.4707c2.14941 1.07324 4.5791 1.70312 7.14355 1.70312
-c6.2627 0 11.6895 -3.60645 14.3164 -8.85352c8.18652 -16.374 25.0859 -27.5801 44.623 -27.5801h0.0371094h66.79c24.0254 0.0224609 43.5273 19.5244 43.5498 43.5498c-0.0117188 15.3828 -8.07227 28.8594 -20.2402 36.4502z" />
-    <glyph glyph-name="underline" unicode="&#xf0cd;" horiz-adv-x="448" 
-d="M32 384c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h144c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32v-160c0 -44.1533 35.8467 -80 80 -80s80 35.8467 80 80v160h-32c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h144c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32v-160c0 -88.2197 -71.7803 -160 -160 -160s-160 71.7803 -160 160v160h-32zM432 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" />
-    <glyph glyph-name="table" unicode="&#xf0ce;" 
-d="M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v96h-160v-96h160zM224 192v96h-160v-96h160zM448 32v96h-160v-96h160zM448 192v96h-160v-96h160z" />
-    <glyph glyph-name="magic" unicode="&#xf0d0;" 
-d="M224 352l-16 32l-32 16l32 16l16 32l16 -32l32 -16l-32 -16zM80 288l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699l26.6602 53.3301l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699zM432 160l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699
-l-26.6602 -53.3301l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699zM502.62 353.77c12.5 -12.4893 12.5 -32.7598 0 -45.2393l-363.14 -363.15c-6.25 -6.25 -14.4404 -9.37012 -22.6309 -9.37012c-8.17969 0 -16.3691 3.12012 -22.6191 9.37012l-84.8506 84.8506
-c-12.5 12.4893 -12.5 32.75 0 45.25l363.14 363.14c6.25 6.25977 14.4404 9.37988 22.6309 9.37988c8.18945 0 16.3799 -3.12012 22.6191 -9.37988zM359.45 244.54l86.5996 86.5996l-50.9102 50.9102l-86.5996 -86.5996z" />
-    <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="640" 
-d="M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996
-c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48
-s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z" />
-    <glyph glyph-name="money-bill" unicode="&#xf0d6;" horiz-adv-x="640" 
-d="M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 96
-c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z" />
-    <glyph glyph-name="caret-down" unicode="&#xf0d7;" horiz-adv-x="320" 
-d="M31.2998 256h257.3c17.8008 0 26.7002 -21.5 14.1006 -34.0996l-128.601 -128.7c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-128.6 128.7c-12.6006 12.5996 -3.7002 34.0996 14.0996 34.0996z" />
-    <glyph glyph-name="caret-up" unicode="&#xf0d8;" horiz-adv-x="320" 
-d="M288.662 96h-257.324c-17.8184 0 -26.7412 21.543 -14.1416 34.1416l128.662 128.662c7.80957 7.81055 20.4736 7.81055 28.2832 0l128.662 -128.662c12.6006 -12.5986 3.67676 -34.1416 -14.1416 -34.1416z" />
-    <glyph glyph-name="caret-left" unicode="&#xf0d9;" horiz-adv-x="192" 
-d="M192 320.662v-257.324c0 -17.8184 -21.543 -26.7412 -34.1416 -14.1416l-128.662 128.662c-7.81055 7.80957 -7.81055 20.4736 0 28.2832l128.662 128.662c12.5986 12.6006 34.1416 3.67676 34.1416 -14.1416z" />
-    <glyph glyph-name="caret-right" unicode="&#xf0da;" horiz-adv-x="192" 
-d="M0 63.3379v257.324c0 17.8184 21.543 26.7412 34.1416 14.1416l128.662 -128.662c7.81055 -7.80957 7.81055 -20.4736 0 -28.2832l-128.662 -128.662c-12.5986 -12.6006 -34.1416 -3.67676 -34.1416 14.1416z" />
-    <glyph glyph-name="columns" unicode="&#xf0db;" 
-d="M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v256h-160v-256h160zM448 32v256h-160v-256h160z" />
-    <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="320" 
-d="M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41zM296 265c15.0996 -15.0996 4.40039 -41 -17 -41h-238c-21.4004 0 -32.0996 25.9004 -17 41l119.1 119
-c9.30078 9.40039 24.5 9.40039 33.9004 0z" />
-    <glyph glyph-name="sort-down" unicode="&#xf0dd;" horiz-adv-x="320" 
-d="M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41z" />
-    <glyph glyph-name="sort-up" unicode="&#xf0de;" horiz-adv-x="320" 
-d="M279 224h-238c-21.4004 0 -32.0996 25.9004 -17 41l119 119c9.40039 9.40039 24.5996 9.40039 33.9004 0l119 -119c15.1992 -15.0996 4.5 -41 -16.9004 -41z" />
-    <glyph glyph-name="envelope" unicode="&#xf0e0;" 
-d="M502.3 257.2c3.90039 3.09961 9.7002 0.200195 9.7002 -4.7002v-204.5c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v204.4c0 5 5.7002 7.7998 9.7002 4.69922c22.3994 -17.3994 52.0996 -39.5 154.1 -113.6
-c21.1006 -15.4004 56.7002 -47.7998 92.2002 -47.5996c35.7002 -0.300781 72 32.7998 92.2998 47.5996c102 74.0996 131.601 96.2998 154 113.7zM256 128c-23.2002 -0.400391 -56.5996 29.2002 -73.4004 41.4004c-132.699 96.2998 -142.8 104.8 -173.399 128.699
-c-5.7998 4.60059 -9.2002 11.5 -9.2002 18.9004v19c0 26.5 21.5 48 48 48h416c26.5 0 48 -21.5 48 -48v-19c0 -7.40039 -3.40039 -14.4004 -9.2002 -18.9004c-30.5996 -24 -40.7002 -32.3994 -173.399 -128.699c-16.8008 -12.2002 -50.2002 -41.8008 -73.4004 -41.4004z" />
-    <glyph glyph-name="undo" unicode="&#xf0e2;" 
-d="M212.333 223.667h-200.333c-6.62695 0 -12 5.37305 -12 12v200.333c0 6.62695 5.37305 12 12 12h48c6.62695 0 12 -5.37305 12 -12v-78.1123c45.7734 50.833 112.26 82.6426 186.175 82.1055c136.906 -0.994141 246.448 -111.623 246.157 -248.532
-c-0.291016 -136.719 -111.212 -247.461 -247.999 -247.461c-64.0889 0 -122.496 24.3135 -166.51 64.2148c-5.09961 4.62207 -5.33398 12.5537 -0.466797 17.4199l33.9668 33.9668c4.47363 4.47461 11.6621 4.71777 16.4004 0.525391
-c31.0361 -27.4629 71.8564 -44.127 116.609 -44.127c97.2676 0 176 78.7158 176 176c0 97.2666 -78.7158 176 -176 176c-58.4961 0 -110.28 -28.4756 -142.274 -72.333h98.2744c6.62695 0 12 -5.37305 12 -12v-48c0 -6.62695 -5.37305 -12 -12 -12z" />
-    <glyph glyph-name="gavel" unicode="&#xf0e3;" 
-d="M504.971 248.638c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-124.451 -124.451c-9.37109 -9.37305 -24.5674 -9.37305 -33.9404 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9414l5.65723 5.65625l-39.5986 39.5986l-81.04 -81.04l5.65723 -5.65723
-c12.4971 -12.4971 12.4971 -32.7578 0 -45.2549l-114.745 -114.745c-12.4971 -12.4971 -32.7578 -12.4971 -45.2549 0l-45.2549 45.2549c-12.4971 12.4971 -12.4971 32.7578 0 45.2549l114.744 114.746c12.4971 12.4971 32.7578 12.4971 45.2549 0l5.65723 -5.65723
-l81.04 81.04l-39.5986 39.5986l-5.65625 -5.65723c-9.37207 -9.37305 -24.5684 -9.37305 -33.9414 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l124.451 124.451c9.37207 9.37305 24.5674 9.37305 33.9404 0l22.627 -22.6279
-c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-5.65625 -5.65723l113.138 -113.137l5.65723 5.65625c9.37207 9.37305 24.5674 9.37305 33.9404 0z" />
-    <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="320" 
-d="M296 288c18.5 0 30 -20.0996 20.7002 -36l-176 -304c-4.40039 -7.59961 -12.4004 -12 -20.7998 -12c-15.3008 0 -26.9004 14.2998 -23.3008 29.5l46.1006 194.5h-118.7c-14.5 0 -25.7002 12.7998 -23.7998 27.2002l32 240
-c1.59961 11.8994 11.7998 20.7998 23.7998 20.7998h144c15.7002 0 27.2002 -15 23.2002 -30.2002l-42.6006 -129.8h115.4z" />
-    <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="640" 
-d="M128 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM104 176v-48h-48v57.5898c0 21.1797 17.2305 38.4102 38.4102 38.4102h201.59v64h-40c-17.6699 0 -32 14.3301 -32 32
-v96c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-40v-64h201.59c21.1797 0 38.4102 -17.2402 38.4102 -38.4102v-57.5898h-48v48h-192v-48h-48v48h-192zM368 96c17.6699 0 32 -14.3301 32 -32v-96
-c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM608 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96z" />
-    <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="576" 
-d="M575.7 167.2c2.2002 -10.1006 -8.40039 -21.4004 -18.7002 -11.4004c-51.5 54.4004 -107.6 52.5 -158.6 -37c-5.30078 -9.5 -14.9004 -8.59961 -19.7002 0c-2.5 4.40039 -32.2002 73.2002 -90.7002 73.2002c-45.7998 0 -70.5 -37.7998 -90.7002 -73.2002
-c-4.7998 -8.59961 -14.3994 -9.5 -19.7002 0c-50.8994 89.4004 -106.6 92 -158.6 37c-10.2002 -9.89941 -20.9004 1.2998 -18.7002 11.4004c29.2002 136.3 138 218.2 255.7 230.899v17.9004c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-17.9004
-c117.3 -12.6992 227.1 -94.5996 255.7 -230.899zM256 146.3c9.59961 8.90039 19.7002 13.6006 32 13.7002c12.2002 0 22.9004 -5.7002 32 -13.5996v-130.301c0 -44.0996 -35.9004 -80 -80 -80c-33.7998 0 -64.2002 21.4004 -75.4004 53.3008
-c-5.89941 16.5996 2.80078 34.8994 19.5 40.7998c16.7002 5.89941 34.9004 -2.7998 40.8008 -19.5c1.89941 -5.40039 7.2998 -10.7002 15.0996 -10.7002c8.7998 0 16 7.2002 16 16v130.3z" />
-    <glyph glyph-name="paste" unicode="&#xf0ea;" horiz-adv-x="448" 
-d="M128 264v-232h-104c-13.2549 0 -24 10.7451 -24 24v336c0 13.2549 10.7451 24 24 24h80.6104c11.084 19.1104 31.7529 32 55.3896 32s44.3057 -12.8896 55.3896 -32h80.6104c13.2549 0 24 -10.7451 24 -24v-72h-136c-30.8779 0 -56 -25.1211 -56 -56zM160 408
-c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM344 160h104v-200c0 -13.2549 -10.7451 -24 -24 -24h-240c-13.2549 0 -24 10.7451 -24 24v304c0 13.2549 10.7451 24 24 24h136v-104c0 -13.2002 10.7998 -24 24 -24z
-M448 198.059v-6.05859h-96v96h6.05859c6.62305 0 12.626 -2.68457 16.9707 -7.0293l65.9404 -65.9404c4.34473 -4.34473 7.03027 -10.3477 7.03027 -16.9717z" />
-    <glyph glyph-name="lightbulb" unicode="&#xf0eb;" horiz-adv-x="352" 
-d="M96.0596 -6.34961l-0.0498047 38.3496h159.98l-0.0400391 -38.3496c-0.0078125 -6.52637 -1.99219 -12.6309 -5.36035 -17.6904l-17.0898 -25.6904c-5.73242 -8.62305 -15.5176 -14.2793 -26.6396 -14.2793h-61.71c-11.123 0 -20.9072 5.65625 -26.6406 14.2793
-l-17.0898 25.6904c-3.49023 5.24023 -5.34961 11.4004 -5.36035 17.6904zM0 272c0 93.0303 73.4404 175.69 175.45 176c97.46 0.299805 176.55 -78.6104 176.55 -176c0 -44.3701 -16.4502 -84.8496 -43.5596 -115.78c-16.5205 -18.8496 -42.3604 -58.2295 -52.21 -91.4502
-c-0.0400391 -0.269531 -0.0703125 -0.519531 -0.110352 -0.779297h-160.24c-0.0400391 0.259766 -0.0703125 0.519531 -0.110352 0.779297c-9.84961 33.2207 -35.6895 72.6006 -52.21 91.4502c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78zM176 352
-c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16c-61.7598 0 -112 -50.2402 -112 -112c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16c0 44.1104 35.8896 80 80 80z" />
-    <glyph glyph-name="user-md" unicode="&#xf0f0;" horiz-adv-x="448" 
-d="M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM104 24c0 13.2998 10.7002 24 24 24s24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24zM320 159.4c71.2002 -3.5 128 -61.8008 128 -133.801
-v-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 66.6006 48.5 121.4 112.1 132.101v-80.4004c-23.0996 -6.89941 -40 -28.0996 -40 -53.3994c0 -30.9004 25.1006 -56 56 -56
-c30.9004 0 56 25.0996 56 56c0 25.2998 -16.8994 46.5 -40 53.3994v81.6006c7.7002 -1 15.2002 -2.60059 22.6006 -5.2002c18 -6.2998 37.2998 -9.7998 57.3994 -9.7998c20.1006 0 39.4004 3.5 57.4004 9.7998c2.2002 0.799805 4.40039 1.2002 6.59961 1.89941v-45.1992
-c-36.5 -7.5 -64 -39.8008 -64 -78.4004v-43.7998c0 -8.10059 5.90039 -14.7998 13.8008 -15.9004l31.1992 -4.2002c4.30078 -0.799805 8.5 2 9.40039 6.30078l3.09961 15.6992c0.800781 4.30078 -2 8.5 -6.2998 9.40039l-19.2998 3.90039v26.6992
-c0 67 96 64.7002 96 1.90039v-28.5l-19.2998 -3.90039c-4.40039 -0.799805 -7.2002 -5.09961 -6.2998 -9.39941l3.09961 -15.7002c0.900391 -4.40039 5.09961 -7.2002 9.40039 -6.2998l32.1992 6.39941c7.5 1.5 12.9004 8.10059 12.9004 15.7002v41.7002
-c0 38.5996 -27.5 71 -64 78.4004v49z" />
-    <glyph glyph-name="stethoscope" unicode="&#xf0f1;" 
-d="M447.1 336c35.7002 0.5 64.9004 -28.2998 64.9004 -64c0 -23.7002 -12.9004 -44.2998 -32 -55.4004v-112.6c0 -92.5996 -79 -168 -176 -168c-95.4004 0 -173.3 72.7998 -175.9 163.2c-73 14.7998 -128.1 79.5 -128.1 156.8v155.4c0 11.5 8.09961 21.2998 19.2998 23.5996
-l62.7998 12.4004c13 2.59961 25.6006 -5.80078 28.2002 -18.8008l3.10059 -15.6992c2.59961 -13 -5.80078 -25.6006 -18.8008 -28.2002l-30.6992 -6.10059v-122.5c0 -53.2998 43.5 -96.5 96.8994 -96c52.9004 0.5 95.1006 44.3008 95.1006 97.2002v121.4l-30.7002 6.09961
-c-13 2.60059 -21.4004 15.2002 -18.7998 28.2002l3.19922 15.7002c2.60059 13 15.2002 21.3994 28.2002 18.7998l62.9004 -12.5996c11.2002 -2.2002 19.2998 -12.1006 19.2998 -23.5v-155.4c0 -77.2002 -55 -141.8 -127.8 -156.8
-c2.7002 -55.1006 51.8994 -99.2002 111.899 -99.2002c61.8008 0 112 46.7002 112 104v112.6c-19.5 11.2002 -32.5 32.5 -32 56.8008c0.700195 34.1992 28.8008 62.0996 63 62.5996zM448 256c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16
-s7.2002 -16 16 -16z" />
-    <glyph glyph-name="suitcase" unicode="&#xf0f2;" 
-d="M128 -32v400c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-400h-256zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5 -21.5 -48 -48 -48h-48v352h48c26.5 0 48 -21.5 48 -48zM96 -32h-48c-26.5 0 -48 21.5 -48 48v256c0 26.5 21.5 48 48 48h48v-352z" />
-    <glyph glyph-name="bell" unicode="&#xf0f3;" horiz-adv-x="448" 
-d="M224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64zM439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32
-c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29c0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398
-c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29z" />
-    <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="640" 
-d="M192 64c-53 0 -96 43 -96 96v232c0 13.2998 10.7002 24 24 24h392c70.5996 0 128 -57.4004 128 -128s-57.4004 -128 -128 -128h-32c0 -53 -43 -96 -96 -96h-192zM512 352h-32v-128h32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64zM559.7 -32h-511.4
-c-47.5996 0 -61 64 -36 64h583.3c25 0 11.8008 -64 -35.8994 -64z" />
-    <glyph glyph-name="hospital" unicode="&#xf0f8;" horiz-adv-x="448" 
-d="M448 -44v-20h-448v20c0 6.62695 5.37305 12 12 12h20v360c0 13.2549 10.7451 24 24 24h88v72c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-72h88c13.2549 0 24 -10.7451 24 -24v-360h20c6.62695 0 12 -5.37305 12 -12zM308 256h-40
-c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12zM140 192h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40
-c0 -6.62695 5.37305 -12 12 -12zM244 64h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64v84c0 6.62695 -5.37305 12 -12 12zM308 160h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12
-zM192 148c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40zM182 352h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20
-c0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6z" />
-    <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="640" 
-d="M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996
-c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM304 232v48c0 4.40039 -3.59961 8 -8 8h-56v56
-c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8zM480 -16c26.5 0 48 21.5 48 48
-s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z" />
-    <glyph glyph-name="medkit" unicode="&#xf0fa;" 
-d="M96 -32v352h32v48c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-48h32v-352h-320zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5098 -21.4902 -48 -48 -48h-16v352h16c26.5098 0 48 -21.4902 48 -48zM64 -32h-16c-26.5098 0 -48 21.4902 -48 48v256
-c0 26.5098 21.4902 48 48 48h16v-352zM352 176c0 8.83691 -7.16309 16 -16 16h-48v48c0 8.83691 -7.16309 16 -16 16h-32c-8.83691 0 -16 -7.16309 -16 -16v-48h-48c-8.83691 0 -16 -7.16309 -16 -16v-32c0 -8.83691 7.16309 -16 16 -16h48v-48
-c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v48h48c8.83691 0 16 7.16309 16 16v32z" />
-    <glyph glyph-name="fighter-jet" unicode="&#xf0fb;" horiz-adv-x="640" 
-d="M544 224c96 -21.333 96 -26.583 96 -32s0 -10.667 -96 -32l-128 -16l-48 -16h-24l-116.842 -148h39.5088c11.666 0 21.333 -2.625 21.333 -6s-9.66602 -6 -21.333 -6h-114.667v12h16v164h-48l-66.666 -80h-34.667l-10.667 10.667v69.333h8v16h48v2.66699l-64 8v42.667
-l64 8v2.66602h-48v16h-8v69.333l10.667 10.667h34.666l66.667 -80h48v164h-16v12h114.667c11.666 0 21.333 -2.625 21.333 -6s-9.66699 -6 -21.333 -6h-39.5088l116.842 -148h24l48 -16z" />
-    <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="448" 
-d="M368 352c44.1123 0 80 -35.8877 80 -80v-128.86c0 -31.5273 -18.6035 -60.2031 -47.3936 -73.0527l-80.6064 -35.9766v-42.1104c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h272c13.2549 0 24 -10.7451 24 -24
-v-40h48zM384 143.14v128.86c0 8.82227 -7.17773 16 -16 16h-48v-183.805l54.5215 24.334c5.58789 2.49902 9.47363 8.09863 9.47852 14.6104zM208 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224
-c0 -8.83594 7.16406 -16 16 -16zM112 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224c0 -8.83594 7.16406 -16 16 -16z" />
-    <glyph glyph-name="h-square" unicode="&#xf0fd;" horiz-adv-x="448" 
-d="M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM336 320h-32c-8.83691 0 -16 -7.16309 -16 -16v-80h-128v80c0 8.83691 -7.16309 16 -16 16h-32
-c-8.83691 0 -16 -7.16309 -16 -16v-224c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v80h128v-80c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v224c0 8.83691 -7.16309 16 -16 16z" />
-    <glyph glyph-name="plus-square" unicode="&#xf0fe;" horiz-adv-x="448" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM368 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92
-c-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="angle-double-left" unicode="&#xf100;" horiz-adv-x="448" 
-d="M223.7 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002
-c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34zM31.7002 175c-9.40039 9.40039 -9.40039 24.5996 0.0996094 34l136 136c9.2998 9.40039 24.5 9.40039 33.9004 0l22.5996 -22.7002
-c9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-96.3994 -96.4004l96.2998 -96.5c9.39941 -9.2998 9.39941 -24.5 0 -33.9004l-22.6006 -22.5996c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0z" />
-    <glyph glyph-name="angle-double-right" unicode="&#xf101;" horiz-adv-x="448" 
-d="M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998
-c9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34zM416.3 209c9.40039 -9.40039 9.40039 -24.5996 0 -33.7998l-136 -136c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-22.6006 22.5996
-c-9.39941 9.2998 -9.39941 24.5 0 33.9004l96.4004 96.3994l-96.4004 96.4004c-9.39941 9.2998 -9.39941 24.5 0 33.9004l22.6006 22.5996c9.2998 9.40039 24.5 9.40039 33.8994 0z" />
-    <glyph glyph-name="angle-double-up" unicode="&#xf102;" horiz-adv-x="320" 
-d="M177 192.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996
-c-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094zM143 384.3c9.40039 9.40039 24.5996 9.40039 33.7998 0l136 -136c9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-22.5996 -22.6006c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0
-l-96.3994 96.4004l-96.4004 -96.4004c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0l-22.5996 22.6006c-9.40039 9.2998 -9.40039 24.5 0 33.8994z" />
-    <glyph glyph-name="angle-double-down" unicode="&#xf103;" horiz-adv-x="320" 
-d="M143 191.7l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.7998 -22.5
-c9.40039 -9.40039 9.40039 -24.6006 0 -33.9004l-136 -136c-9.40039 -9.5 -24.5996 -9.5 -34 -0.0996094zM177 -0.299805c-9.40039 -9.40039 -24.5996 -9.40039 -34 0.0996094l-136 136c-9.40039 9.2998 -9.40039 24.5 0 33.9004l22.7002 22.5996
-c9.2998 9.40039 24.5 9.40039 33.8994 0l96.4004 -96.3994l96.5 96.2998c9.2998 9.39941 24.5 9.39941 33.9004 0l22.5996 -22.6006c9.40039 -9.2998 9.40039 -24.5 0 -33.8994z" />
-    <glyph glyph-name="angle-left" unicode="&#xf104;" horiz-adv-x="256" 
-d="M31.7002 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002
-c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34z" />
-    <glyph glyph-name="angle-right" unicode="&#xf105;" horiz-adv-x="256" 
-d="M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998
-c9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34z" />
-    <glyph glyph-name="angle-up" unicode="&#xf106;" horiz-adv-x="320" 
-d="M177 288.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996
-c-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094z" />
-    <glyph glyph-name="angle-down" unicode="&#xf107;" horiz-adv-x="320" 
-d="M143 95.7002l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.5996 -22.6006
-c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-136 -136c-9.2002 -9.40039 -24.3994 -9.40039 -33.7998 0z" />
-    <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="576" 
-d="M528 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-192l16 -48h72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24h-272c-13.2998 0 -24 10.7002 -24 24s10.7002 24 24 24h72l16 48h-192c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h480z
-M512 96v288h-448v-288h448z" />
-    <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="640" 
-d="M624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23c-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336
-c0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z" />
-    <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="448" 
-d="M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="mobile" unicode="&#xf10b;" horiz-adv-x="320" 
-d="M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="quote-left" unicode="&#xf10d;" 
-d="M464 192c26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80zM176 192
-c26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80z" />
-    <glyph glyph-name="quote-right" unicode="&#xf10e;" 
-d="M464 416c26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128zM176 416
-c26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128z" />
-    <glyph glyph-name="spinner" unicode="&#xf110;" 
-d="M304 400c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM256 32c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM464 240c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48
-s-48 21.4902 -48 48s21.4902 48 48 48zM96 192c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM108.922 92.9219c26.5088 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z
-M403.078 92.9219c26.5098 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM108.922 387.078c26.5088 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z" />
-    <glyph glyph-name="circle" unicode="&#xf111;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z" />
-    <glyph glyph-name="smile" unicode="&#xf118;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32
-s32 14.2998 32 32s-14.2998 32 -32 32zM362.8 101.8c13.5 16.2998 -11.2002 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.2002 -4.2002 -24.5996 -20.5
-c28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998z" />
-    <glyph glyph-name="frown" unicode="&#xf119;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32
-s32 14.2998 32 32s-14.2998 32 -32 32zM338.2 53.7998c13.5 -16.2998 38.0996 4.2002 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998s-86.2998 -19.5996 -114.8 -53.7002c-13.5 -16.2998 11.0996 -36.7998 24.5996 -20.5
-c22.4004 26.7998 55.2998 42.2002 90.2002 42.2002s67.7998 -15.4004 90.2002 -42.2002z" />
-    <glyph glyph-name="meh" unicode="&#xf11a;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM344 80c21.2002 0 21.2002 32 0 32h-192c-21.2002 0 -21.2002 -32 0 -32
-h192zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="640" 
-d="M480.07 352c88.2842 -0.0263672 159.938 -71.7402 159.938 -160.03c0 -88.3066 -71.6934 -160 -160 -160c-44.7324 0 -85.2021 18.3965 -114.249 48.0303h-91.5195c-29.0469 -29.6338 -69.5078 -48 -114.24 -48c-88.3066 0 -160 71.6934 -160 160s71.6934 160 160 160
-h320.07zM248 180v24c0 6.62305 -5.37695 12 -12 12h-52v52c0 6.62305 -5.37695 12 -12 12h-24c-6.62305 0 -12 -5.37695 -12 -12v-52h-52c-6.62305 0 -12 -5.37695 -12 -12v-24c0 -6.62305 5.37695 -12 12 -12h52v-52c0 -6.62305 5.37695 -12 12 -12h24
-c6.62305 0 12 5.37695 12 12v52h52c6.62305 0 12 5.37695 12 12zM464 104c22.0762 0 40 17.9238 40 40s-17.9238 40 -40 40s-40 -17.9238 -40 -40s17.9238 -40 40 -40zM528 200c22.0762 0 40 17.9238 40 40s-17.9238 40 -40 40s-40 -17.9238 -40 -40s17.9238 -40 40 -40z
-" />
-    <glyph glyph-name="keyboard" unicode="&#xf11c;" horiz-adv-x="576" 
-d="M528 0h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM128 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40
-c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM224 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 268v40c0 6.62695 -5.37305 12 -12 12h-40
-c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM512 268v40
-c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM176 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40
-c6.62695 0 12 5.37305 12 12zM272 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM368 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40
-c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM464 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM128 76v40c0 6.62695 -5.37305 12 -12 12h-40
-c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 76v40c0 6.62695 -5.37305 12 -12 12h-232c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12zM512 76v40
-c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z" />
-    <glyph glyph-name="flag-checkered" unicode="&#xf11e;" 
-d="M243.2 258.1c24.2002 -6.69922 47.5996 -16.3994 73.5996 -22.1992v-68.2002c-24.2998 6.7002 -47.5 16.3994 -73.5996 22.2998v68.0996zM466.5 381.1c21.2002 9.80078 45.5 -5.69922 45.4004 -29v-243.1c0 -10.5996 -5.10059 -20.4004 -13.8008 -26.4004
-c-35.7998 -24.5996 -74.2998 -40.8994 -122.5 -40.8994c-67.3994 0 -111.6 34.7998 -165.199 34.7998c-50.8008 0 -86.1006 -10 -114.4 -22.0996v-94.4004c0 -13.2998 -10.7002 -24 -24 -24h-16c-13.2998 0 -24 10.7002 -24 24v386.1c-14.5 10.1006 -24 26.9004 -24 45.9004
-c0 31.7002 26.2998 57.2998 58.2998 56c28.5 -1.2002 51.7998 -24 53.6006 -52.4004c0.5 -8.39941 -0.800781 -16.2998 -3.60059 -23.5996c20.7002 7.59961 43 12 68 12c67.4004 0 111.7 -34.7998 165.2 -34.7998c40.5 0 82.7002 16 117 31.8994zM169.6 122.5v71.2998
-c-26.0996 -2.39941 -47.3994 -8.09961 -73.5996 -17.3994v-70.5c23.5996 8.39941 47.7998 13.8994 73.5996 16.5996zM464 257v70.5c-21.2998 -8.90039 -46.5996 -17.7002 -73.5996 -22.5v-71.9004c-26 -4.19922 -49.9004 -2.59961 -73.6006 2.7002v68.4004
-c-26.3994 4.59961 -49.8994 13.8994 -73.5996 21.2998v-67.4004c-25.2002 7 -46.6006 9.40039 -73.6006 5.7002v71.6006c-23.5 -2.2002 -40.3994 -9.80078 -73.5996 -22v-70.5c29 10.6992 51.2002 17.7998 73.5996 20.8994v-70c32.8008 3 53.9004 0.600586 73.6006 -3.7998
-v-68.5c26.2998 -4.59961 49.7002 -13.9004 73.5996 -21.2998v67.3994c25.7002 -7.09961 46.6006 -9.2998 73.6006 -5.59961v-71.5996c25.0996 2.39941 48.5 11 73.5996 27.0996v70.5c-22.2002 -14.2002 -48.7998 -22.5996 -73.5996 -26v71.0996
-c27.2998 4.40039 50 14.1006 73.5996 23.9004z" />
-    <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="640" 
-d="M257.981 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.668 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667
-c9.37305 9.37207 24.5684 9.37207 33.9404 0l194.344 -194.344c9.37207 -9.37207 9.37207 -24.5674 0 -33.9404zM640 -8c0 -13.2549 -10.7451 -24 -24 -24h-304c-13.2549 0 -24 10.7451 -24 24v32c0 13.2549 10.7451 24 24 24h304c13.2549 0 24 -10.7451 24 -24v-32z" />
-    <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="640" 
-d="M278.9 -63.5l-61 17.7002c-6.40039 1.7998 -10 8.5 -8.2002 14.8994l136.5 470.2c1.7998 6.40039 8.5 10 14.8994 8.2002l61 -17.7002c6.40039 -1.7998 10 -8.5 8.2002 -14.8994l-136.5 -470.2c-1.89941 -6.40039 -8.5 -10.1006 -14.8994 -8.2002zM164.9 48.7002
-c-4.5 -4.90039 -12.1006 -5.10059 -17 -0.5l-144.101 135.1c-5.09961 4.7002 -5.09961 12.7998 0 17.5l144.101 135c4.89941 4.60059 12.5 4.2998 17 -0.5l43.5 -46.3994c4.69922 -4.90039 4.2998 -12.7002 -0.800781 -17.2002l-90.5996 -79.7002l90.5996 -79.7002
-c5.10059 -4.5 5.40039 -12.2998 0.800781 -17.2002zM492.1 48.0996c-4.89941 -4.5 -12.5 -4.2998 -17 0.600586l-43.5 46.3994c-4.69922 4.90039 -4.2998 12.7002 0.800781 17.2002l90.5996 79.7002l-90.5996 79.7998c-5.10059 4.5 -5.40039 12.2998 -0.800781 17.2002
-l43.5 46.4004c4.60059 4.7998 12.2002 5 17 0.5l144.101 -135.2c5.09961 -4.7002 5.09961 -12.7998 0 -17.5z" />
-    <glyph glyph-name="reply-all" unicode="&#xf122;" horiz-adv-x="576" 
-d="M136.309 258.164l176.005 151.985c15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-82.7637c129.182 -10.2305 224 -52.2119 224 -183.548c0 -61.4404 -39.582 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309
-c38.5117 123.162 -3.92188 169.482 -112.59 182.016v-84.1758c0 -20.7012 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 151.987c-11.0703 9.56152 -11.0859 26.7529 0 36.3281zM8.30859 221.836c-11.0703 9.56152 -11.0859 26.7529 0 36.3281l176.005 151.985
-c15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-15.8174l-108.607 -93.7861c-11.8906 -10.2637 -19.3926 -25.4307 -19.3926 -42.3564v-0.0234375c0 -0.0078125 -0.0292969 -0.00292969 -0.0292969 -0.0117188c0 -16.9268 7.53125 -32.1084 19.4229 -42.373
-l108.606 -93.7852v-15.8184c0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641z" />
-    <glyph glyph-name="location-arrow" unicode="&#xf124;" 
-d="M444.52 444.48c38.3809 16 79.9609 -25.5801 63.9707 -63.9707l-191.9 -415.779c-22.3896 -47.9805 -92.75 -31.9805 -92.75 19.1895v175.91h-175.91c-51.1699 0 -67.1602 70.3604 -19.1895 92.75z" />
-    <glyph glyph-name="crop" unicode="&#xf125;" 
-d="M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v282.75l-146.75 -146.75h114.75v-96h-232c-13.25 0 -24 10.75 -24 24v264h-40c-13.25 0 -24 10.75 -24 24v48
-c0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24v-282.75l146.75 146.75h-114.75v96h210.75l59.3096 59.3096c6.25 6.25 16.3809 6.25 22.6309 0l22.6191 -22.6191c6.25 -6.25 6.25 -16.3809 0 -22.6309l-59.3096 -59.3096v-242.75
-h40z" />
-    <glyph glyph-name="code-branch" unicode="&#xf126;" horiz-adv-x="384" 
-d="M384 304c0 -35.2002 -22.7998 -65.0996 -54.4004 -75.9004c-0.5 -28.0996 -7.59961 -50.5 -21.5996 -67.8994c-28.2002 -35 -76 -39.5 -118.2 -43.4004c-25.7002 -2.39941 -49.8994 -4.59961 -66.0996 -12.7998c-7.10059 -3.59961 -11.7998 -8.2002 -14.9004 -13.4004
-c30 -11.5 51.2002 -40.5996 51.2002 -74.5996c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 35.7998 23.5 66.0996 56 76.4004v199.3c-32.5 10.2002 -56 40.5 -56 76.2998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80c0 -35.7998 -23.5 -66.0996 -56 -76.2998
-v-144c23.9004 11.5 53.0996 14.2998 81.2998 16.8994c35.9004 3.30078 69.7998 6.5 85.2002 25.7002c6.7998 8.40039 10.4004 20.7998 11 36.9004c-33.2002 9.7002 -57.5 40.3994 -57.5 76.7998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80zM80 384
-c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16s-7.2002 16 -16 16zM80 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 320c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16
-s-7.2002 16 -16 16z" />
-    <glyph glyph-name="unlink" unicode="&#xf127;" 
-d="M304.083 42.0928c4.68555 -4.68555 4.68555 -12.2842 0 -16.9707l-44.6738 -44.6738c-59.2627 -59.2627 -155.693 -59.2666 -214.961 0c-59.2646 59.2646 -59.2646 155.695 0 214.96l44.6748 44.6748c4.68555 4.68555 12.2842 4.68555 16.9707 0l39.5986 -39.5977
-c4.68555 -4.68652 4.68555 -12.2842 0 -16.9717l-44.6758 -44.6738c-28.0713 -28.0732 -28.0713 -73.75 0 -101.823c28.0723 -28.0713 73.75 -28.0723 101.824 0l44.6738 44.6748c4.68652 4.68555 12.2842 4.68555 16.9717 0zM247.515 302.309l-39.5967 39.5986
-c-4.68555 4.68652 -4.68555 12.2852 0 16.9707l44.6738 44.6738c59.2666 59.2646 155.695 59.2646 214.961 0s59.2656 -155.694 0 -214.96l-44.6748 -44.6748c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-39.5986 39.5977c-4.68555 4.6875 -4.68555 12.2852 0 16.9717
-l44.6758 44.6738c28.0713 28.0732 28.0713 73.75 0 101.823c-28.0742 28.0723 -73.752 28.0742 -101.824 0l-44.6738 -44.6748c-4.6875 -4.68555 -12.2852 -4.68555 -16.9717 0zM482.343 -56.9707c-9.37207 -9.37207 -24.5674 -9.37207 -33.9404 0l-441.373 441.373
-c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l22.6279 22.6279c9.37207 9.37305 24.5674 9.37305 33.9404 0l441.372 -441.374c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404z" />
-    <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="384" 
-d="M202.021 448c84.8809 0 175.482 -66.2559 175.481 -153.6c0 -115.982 -125.268 -117.768 -125.268 -160.627v-5.77344c0 -13.2549 -10.7451 -24 -24 -24h-72.4717c-13.2549 0 -24 10.7451 -24 24v9.78809c0 61.8291 46.876 86.5449 82.2998 106.405
-c30.376 17.0293 48.9922 28.6113 48.9922 51.1641c0 29.832 -38.0518 49.6309 -68.8154 49.6309c-39.127 0 -57.708 -18.0684 -82.7568 -49.4492c-8.12109 -10.1738 -22.8809 -12.0127 -33.2529 -4.14844l-43.1387 32.709c-10.2705 7.78809 -12.541 22.2939 -5.17773 32.874
-c40.5889 58.3232 92.2881 91.0264 172.107 91.0264zM192 74.541c38.1963 0 69.2715 -31.0742 69.2715 -69.2695c0 -38.1963 -31.0752 -69.2715 -69.2715 -69.2715s-69.2715 31.0752 -69.2715 69.2695c0 38.1963 31.0752 69.2715 69.2715 69.2715z" />
-    <glyph glyph-name="info" unicode="&#xf129;" horiz-adv-x="192" 
-d="M20 23.7715h20v144.457h-20c-11.0459 0 -20 8.9541 -20 20v47.7715c0 11.0459 8.9541 20 20 20h112c11.0459 0 20 -8.9541 20 -20v-212.229h20c11.0459 0 20 -8.9541 20 -20v-47.7715c0 -11.0459 -8.9541 -20 -20 -20h-152c-11.0459 0 -20 8.9541 -20 20v47.7715
-c0 11.0459 8.9541 20 20 20zM96 448c39.7637 0 72 -32.2354 72 -72s-32.2354 -72 -72 -72s-72 32.2354 -72 72s32.2354 72 72 72z" />
-    <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="192" 
-d="M176 16c0 -44.1123 -35.8877 -80 -80 -80s-80 35.8877 -80 80s35.8877 80 80 80s80 -35.8877 80 -80zM25.2598 422.801c-0.68457 13.709 10.2441 25.1992 23.9707 25.1992h93.5391c13.7266 0 24.6553 -11.4902 23.9707 -25.1992l-13.6006 -272
-c-0.638672 -12.7725 -11.1807 -22.8008 -23.9697 -22.8008h-66.3398c-12.7891 0 -23.3311 10.0283 -23.9697 22.8008z" />
-    <glyph glyph-name="superscript" unicode="&#xf12b;" 
-d="M496 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32
-c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-144h16zM336 384c8.83105 0 16 -7.16895 16 -16v-48c0 -8.83105 -7.16895 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83105 0 16 -7.16895 16 -16v-48
-c0 -8.83105 -7.16895 -16 -16 -16h-67c-5.41113 0.0273438 -10.1836 2.73047 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.89062 -4.16016 -7.69531 -6.87012 -13.1396 -6.87012h-67c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h33.4805l77.8096 112
-l-77.8096 112h-33.4805c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h67c5.41113 -0.0273438 10.1836 -2.73047 13.0596 -6.87012l79.9004 -115l79.9004 115c2.89062 4.16016 7.69531 6.87012 13.1396 6.87012h67z" />
-    <glyph glyph-name="subscript" unicode="&#xf12c;" 
-d="M496 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32
-c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-144h16zM336 384c8.83105 0 16 -7.16895 16 -16v-48c0 -8.83105 -7.16895 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83105 0 16 -7.16895 16 -16v-48
-c0 -8.83105 -7.16895 -16 -16 -16h-67c-5.41113 0.0273438 -10.1836 2.73047 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.89062 -4.16016 -7.69531 -6.87012 -13.1396 -6.87012h-67c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h33.4805l77.8096 112
-l-77.8096 112h-33.4805c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h67c5.41113 -0.0273438 10.1836 -2.73047 13.0596 -6.87012l79.9004 -115l79.9004 115c2.89062 4.16016 7.69531 6.87012 13.1396 6.87012h67z" />
-    <glyph glyph-name="eraser" unicode="&#xf12d;" 
-d="M497.941 174.059l-142.059 -142.059h144.117c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-356c-13.2461 0 -25.2529 5.37012 -33.9424 14.0586l-96 96c-18.7441 18.7451 -18.7441 49.1377 0 67.8828l256 256
-c18.7471 18.7451 49.1387 18.7441 67.8838 0l160 -160c18.7441 -18.7451 18.7441 -49.1377 0 -67.8828zM195.314 236.686l-124.687 -124.686l80 -80h114.745l67.3135 67.3135z" />
-    <glyph glyph-name="puzzle-piece" unicode="&#xf12e;" horiz-adv-x="576" 
-d="M519.442 159.349c37.5957 0 56.5576 -31.5928 56.5576 -65.792c0 -33.5469 -19.2881 -61.5566 -54.9229 -61.5557c-39.8848 0 -50.3457 36.1523 -86.3086 36.1523c-60.5518 0 -25.8262 -120.102 -25.8262 -120.102c-51.5557 0 -181.23 -35.0732 -181.23 25.7305
-c0 35.8271 36.2881 46.25 36.2881 85.9844c0 35.501 -28.1152 54.7178 -61.7881 54.7178c-34.3271 0 -63.5771 -18.8906 -63.5771 -56.3467c0 -41.3633 40 -58.998 40 -81.4707c0 -69.709 -178.635 -28.6621 -178.635 -28.6621v333.237s175.885 -40.9609 175.884 28.6621
-c0 22.4727 -31.7109 40.3857 -31.7109 81.75c0 37.4551 31.7119 56.3457 66.3662 56.3457c33.3457 0 61.4609 -19.2158 61.4609 -54.7178c0 -39.7354 -36.2881 -50.1582 -36.2881 -85.9854c0 -83.2969 196.288 -3.29688 196.288 -3.29688
-s-54.5908 -176.244 5.38379 -176.244c22.5586 0 40.5391 31.5928 82.0586 31.5928z" />
-    <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="352" 
-d="M176 96c-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96v-160c0 -53.0195 -42.9805 -96 -96 -96zM336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16
-c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998
-c0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16z" />
-    <glyph glyph-name="microphone-slash" unicode="&#xf131;" horiz-adv-x="640" 
-d="M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705
-c5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.54 -137.99v45.3604c0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96v-160.01c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48
-c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -29.0098 -7.38965 -56.1299 -19.9805 -80.1396zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56
-v34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2305c12.4395 -53.2197 55.3301 -96.4004 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.199219l50.1104 -38.7295c-10.8203 -3.77051 -22.0098 -6.70996 -33.6699 -8.31055
-v-33.7695h56z" />
-    <glyph glyph-name="calendar" unicode="&#xf133;" horiz-adv-x="448" 
-d="M12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM448 300c0 -6.59961 -5.40039 -12 -12 -12h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52
-c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36z" />
-    <glyph glyph-name="fire-extinguisher" unicode="&#xf134;" horiz-adv-x="448" 
-d="M434.027 421.671c7.31445 1.21875 13.9727 -4.4209 13.9727 -11.8369v-115.668c0 -7.41602 -6.6582 -13.0557 -13.9727 -11.8369l-168 28c-11.7305 1.95508 -10.0273 14.6973 -10.0273 17.6709h-40v-27.0303c41.4043 -10.6582 72 -48.2383 72 -92.9697v-248
-c0 -13.2549 -10.7451 -24 -24 -24h-144c-13.2549 0 -24 10.7451 -24 24v246.795c0 44.8945 30.457 83.2666 72 94.1289v27.0762c-61.0361 0 -92.9424 7.00977 -121.711 -64.9141c-4.91699 -12.2949 -18.8789 -18.2959 -31.1963 -13.3701
-c-12.3066 4.92285 -18.293 18.8906 -13.3701 31.1973c14.668 36.6709 38.0107 77.833 90.0498 90.8838c-14.1406 36.5273 12.793 76.2031 52.2275 76.2031c37.4463 0 64.3525 -36.1084 53.668 -72h58.332c0 4.2002 -1.30664 15.7822 10.0273 17.6709zM144 376
-c8.82227 0 16 7.17773 16 16s-7.17773 16 -16 16s-16 -7.17773 -16 -16s7.17773 -16 16 -16z" />
-    <glyph glyph-name="rocket" unicode="&#xf135;" 
-d="M505.12 428.906c6.95508 -32.2031 6.95508 -57.4062 6.86133 -82.6094c0 -102.688 -55.4375 -164.781 -128.035 -211.094v-104.438c0 -16.3594 -11.8789 -35.5625 -26.5078 -42.8594l-98.7275 -49.3906c-3.27441 -1.48047 -6.91699 -2.375 -10.707 -2.51562
-c-13.2471 0.00195312 -24.002 10.7539 -24.0059 24v103.844l-22.4746 -22.4688c-13.1211 -13.1562 -34.1211 -11.1875 -45.2773 0l-50.9043 50.9062c-12.9961 12.9922 -11.3652 33.8887 0 45.25l22.4746 22.4688h-103.811c-13.2461 0.00195312 -24.001 10.7539 -24.0059 24
-c0.136719 3.79004 1.03223 7.43164 2.51562 10.7031l49.4355 98.8125c7.33008 14.6094 26.5391 26.4688 42.8867 26.4844h104.215c46.2168 72.7969 108.122 128 211.354 128c25.0996 0 50.3086 0 82.5059 -6.90625c5.54883 -1.1875 11.0176 -6.65625 12.207 -12.1875z
-M384.04 280c22.0752 0.0078125 39.9971 17.9258 40.0098 40c0 22.0762 -17.9229 40 -40 40c-22.0762 0 -40 -17.9238 -40 -40c0 -22.0732 17.918 -39.9951 39.9902 -40z" />
-    <glyph glyph-name="chevron-circle-left" unicode="&#xf137;" 
-d="M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM142.1 175l135.5 -135.5c9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-101.6 101.6l101.6 101.6
-c9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-135.5 -135.5c-9.39941 -9.40039 -9.39941 -24.5996 0 -34z" />
-    <glyph glyph-name="chevron-circle-right" unicode="&#xf138;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.9 209l-135.5 135.5c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l101.6 -101.6l-101.6 -101.6
-c-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l135.5 135.5c9.39941 9.40039 9.39941 24.5996 0 34z" />
-    <glyph glyph-name="chevron-circle-up" unicode="&#xf139;" 
-d="M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM239 305.9l-135.5 -135.5c-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l101.6 101.6l101.6 -101.6
-c9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-135.5 135.5c-9.40039 9.39941 -24.5996 9.39941 -34 0z" />
-    <glyph glyph-name="chevron-circle-down" unicode="&#xf13a;" 
-d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM273 78.0996l135.5 135.5c9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-101.6 -101.6l-101.6 101.6
-c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l135.5 -135.5c9.40039 -9.39941 24.5996 -9.39941 34 0z" />
-    <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="576" 
-d="M12.9707 96c-10.6904 0 -16.0449 12.9258 -8.48535 20.4854l67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-35.1465c20.2969 -54.3359 85.1816 -86.6162 144.117 -94.0146v190.015
-h-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52v5.46973c-37.2842 13.1807 -64 48.7324 -64 90.5303c0 53.4746 43.7227 96.7393 97.3701 95.9902c52.2354 -0.728516 94.6348 -43.7627 94.6289 -96.002
-c-0.00488281 -41.793 -26.7188 -77.3398 -64 -90.5186v-5.46973h52c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52v-190.015c59.1543 7.42676 123.827 39.6973 144.117 94.0146h-35.1465c-10.6904 0 -16.0449 12.9248 -8.48438 20.4854
-l67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-32.3945c-21.7822 -102.62 -136.406 -160 -242.635 -160c-106.056 0 -220.828 57.2646 -242.635 160h-32.3945zM288 384
-c-17.6445 0 -32 -14.3555 -32 -32s14.3555 -32 32 -32s32 14.3555 32 32s-14.3555 32 -32 32z" />
-    <glyph glyph-name="unlock-alt" unicode="&#xf13e;" horiz-adv-x="448" 
-d="M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16
-c0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248zM264 40v48c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-48c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40z" />
-    <glyph glyph-name="bullseye" unicode="&#xf140;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 8c101.71 0 184 82.3096 184 184c0 101.71 -82.3096 184 -184 184c-101.71 0 -184 -82.3096 -184 -184c0 -101.71 82.3096 -184 184 -184zM248 320
-c70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128zM248 128c35.29 0 64 28.71 64 64s-28.71 64 -64 64s-64 -28.71 -64 -64s28.71 -64 64 -64z" />
-    <glyph glyph-name="ellipsis-h" unicode="&#xf141;" 
-d="M328 192c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM432 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM80 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72
-s-72 32.2002 -72 72s32.2002 72 72 72z" />
-    <glyph glyph-name="ellipsis-v" unicode="&#xf142;" horiz-adv-x="192" 
-d="M96 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM24 368c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72zM24 16c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72
-s-32.2002 -72 -72 -72s-72 32.2002 -72 72z" />
-    <glyph glyph-name="rss-square" unicode="&#xf143;" horiz-adv-x="448" 
-d="M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM112 32c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM269.533 32
-c6.53516 0 11.7764 5.46777 11.4248 11.9941c-5.9668 110.428 -94.418 198.99 -204.964 204.964c-6.52637 0.351562 -11.9941 -4.88965 -11.9941 -11.4248v-34.335c0 -6.00977 4.63574 -11.0508 10.6328 -11.4414c79.8799 -5.20312 143.909 -69.0732 149.123 -149.123
-c0.391602 -5.99805 5.43066 -10.6338 11.4424 -10.6338h34.335zM372.56 32c6.4541 0 11.6641 5.33789 11.4326 11.7871c-5.99512 167.014 -140.375 302.18 -308.205 308.205c-6.44922 0.231445 -11.7871 -4.97852 -11.7871 -11.4326v-34.334
-c0 -6.16016 4.88184 -11.1748 11.0391 -11.4277c136.556 -5.59863 246.162 -115.225 251.76 -251.76c0.251953 -6.15625 5.2666 -11.0381 11.4268 -11.0381h34.334z" />
-    <glyph glyph-name="play-circle" unicode="&#xf144;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM371.7 168c16.3994 9.09961 16.3994 32.7998 0 42l-176 107c-15.9004 8.7998 -35.7002 -2.59961 -35.7002 -21v-208c0 -18.5 19.9004 -29.7998 35.7002 -21z" />
-    <glyph glyph-name="minus-square" unicode="&#xf146;" horiz-adv-x="448" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM92 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56
-c0 -6.59961 5.40039 -12 12 -12z" />
-    <glyph glyph-name="check-square" unicode="&#xf14a;" horiz-adv-x="448" 
-d="M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM195.314 66.0586l184 184c6.24707 6.24805 6.24707 16.3799 0 22.627l-22.6279 22.6279
-c-6.24707 6.24707 -16.3789 6.24805 -22.6279 0l-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24707 -16.3799 6.24707 -22.6279 0l-22.6279 -22.6279c-6.24707 -6.24707 -6.24707 -16.3789 0 -22.627l104 -104c6.24902 -6.25 16.3799 -6.25 22.6289 -0.000976562z" />
-    <glyph glyph-name="pen-square" unicode="&#xf14b;" horiz-adv-x="448" 
-d="M400 -32h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM238.1 270.1l-135.699 -135.699l-6.30078 -57.1006c-0.799805 -7.59961 5.60059 -14.0996 13.3008 -13.2998l57.0996 6.2998l135.7 135.7
-c2.2998 2.2998 2.2998 6.09961 0 8.5l-55.5 55.5c-2.5 2.40039 -6.2998 2.40039 -8.60059 0.0996094zM345 282.9l-30.0996 30.0996c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-23.0996 -23.0996c-2.30078 -2.30078 -2.30078 -6.10059 0 -8.5l55.5 -55.5
-c2.2998 -2.30078 6.09961 -2.30078 8.5 0l23.0996 23.0996c9.2998 9.2998 9.2998 24.5 0 33.9004z" />
-    <glyph glyph-name="share-square" unicode="&#xf14d;" horiz-adv-x="576" 
-d="M568.482 270.552l-144.004 -135.984c-15.1787 -14.335 -40.4785 -3.70703 -40.4785 17.4473v71.9629c-144.575 -0.969727 -205.566 -35.1123 -164.775 -171.353c4.4834 -14.9727 -12.8457 -26.5674 -25.0059 -17.3301
-c-38.9668 29.5996 -74.2188 86.2168 -74.2188 143.366c0 143.937 117.599 172.5 264 173.312v72.0156c0 21.1738 25.3174 31.7676 40.4785 17.4473l144.004 -135.987c10.0195 -9.46289 10.0273 -25.4248 0 -34.8965zM384 68.8721c0 7.34473 6.53027 12.9053 13.7998 11.8594
-c3.36816 -0.485352 6.75977 -0.711914 10.2607 -0.711914c8.3877 0 16.4424 1.44043 23.9287 4.08887c7.81348 2.76367 16.0107 -3.01465 16.0107 -11.3027v-88.8057c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48
-h121.033c12.5508 0 16.6748 -16.8301 5.54492 -22.6309c-18.7773 -9.78613 -36.0615 -22.1084 -51.0137 -37.6758c-2.18164 -2.27637 -5.25098 -3.69141 -8.64844 -3.69336h-50.916v-320h320v68.8721z" />
-    <glyph glyph-name="compass" unicode="&#xf14e;" horiz-adv-x="496" 
-d="M225.38 214.63c12.4902 12.4902 32.75 12.4902 45.25 0s12.5 -32.75 0 -45.25c-12.4902 -12.5 -32.7598 -12.5 -45.25 0c-12.5 12.4902 -12.5 32.75 0 45.25zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248z
-M374.14 291.95c7.61035 16.6494 -9.54004 33.7998 -26.1895 26.2002l-144.34 -65.9707c-6.98438 -3.19238 -12.5781 -8.78516 -15.7705 -15.7695l-65.9795 -144.351c-7.61035 -16.6494 9.5498 -33.8096 26.1992 -26.1992l144.341 65.9697
-c6.9834 3.19238 12.5771 8.78613 15.7695 15.7695z" />
-    <glyph glyph-name="caret-square-down" unicode="&#xf150;" horiz-adv-x="448" 
-d="M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM92.5 227.5l123 -123c4.7002 -4.7002 12.2998 -4.7002 17 0l123 123c7.59961 7.59961 2.2002 20.5 -8.5 20.5h-246
-c-10.7002 0 -16.0996 -12.9004 -8.5 -20.5z" />
-    <glyph glyph-name="caret-square-up" unicode="&#xf151;" horiz-adv-x="448" 
-d="M0 16v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48zM355.515 156.485l-123.029 123.029c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-123.028 -123.029
-c-7.56055 -7.56055 -2.20605 -20.4854 8.48438 -20.4854h246.06c10.6904 0 16.0449 12.9258 8.48535 20.4854z" />
-    <glyph glyph-name="caret-square-right" unicode="&#xf152;" horiz-adv-x="448" 
-d="M48 416h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48zM188.485 60.4854l123.028 123.028c4.68652 4.68652 4.68652 12.2842 0 16.9717l-123.028 123.029
-c-7.56055 7.56055 -20.4854 2.20605 -20.4854 -8.48438v-246.06c0 -10.6904 12.9258 -16.0449 20.4854 -8.48535z" />
-    <glyph glyph-name="euro-sign" unicode="&#xf153;" horiz-adv-x="320" 
-d="M310.706 34.2354l8.81836 -44.4902c1.23828 -6.24902 -2.62109 -12.3623 -8.78809 -13.957c-12.5391 -3.24414 -34.8008 -7.78809 -61.1016 -7.78809c-104.371 0 -182.496 65.3076 -207.521 155.64h-30.1143c-6.62695 0 -12 5.37305 -12 12v28.3604
-c0 6.62695 5.37305 12 12 12h21.3877c-1 12.958 -0.828125 28.6377 0.181641 42.2451h-21.5693c-6.62695 0 -12 5.37305 -12 12v29.7549c0 6.62695 5.37305 12 12 12h33.0752c28.9551 83.748 107.376 144 204.56 144c21.0752 0 40.582 -2.91211 52.6865 -5.20703
-c6.86035 -1.30078 11.1475 -8.17578 9.32617 -14.917l-11.9912 -44.3682c-1.65527 -6.125 -7.78613 -9.89062 -14.002 -8.62305c-9.28711 1.89551 -23.3652 4.14551 -37.8516 4.14551c-54.9287 0 -96.9854 -30.0391 -117.619 -75.0303h138.278
-c7.66211 0 13.3613 -7.08203 11.7227 -14.5664l-6.51172 -29.7549c-1.17969 -5.3877 -5.9834 -9.43359 -11.7227 -9.43359h-146.593c-1.55176 -13.958 -1.34766 -27.917 -0.137695 -42.2451h134.237c7.68945 0 13.3936 -7.12891 11.708 -14.6309l-6.37305 -28.3604
-c-1.20312 -5.35547 -5.99121 -9.36914 -11.708 -9.36914h-113.689c19.5322 -50.6582 64.6982 -85.4482 121.462 -85.4482c18.0039 0 34.7334 2.97363 45.4258 5.41211c6.58887 1.50391 13.1094 -2.73828 14.4238 -9.36816z" />
-    <glyph glyph-name="pound-sign" unicode="&#xf154;" horiz-adv-x="320" 
-d="M308 96c6.62695 0 12 -5.37305 12 -12v-104c0 -6.62695 -5.37305 -12 -12 -12h-296c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v128h-28c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h28v66.0391
-c0 73.2188 58.0264 125.961 139.931 125.961c48.6455 0 85.1934 -22.5596 101.575 -34.9277c5.39844 -4.07617 6.35254 -11.8057 2.11914 -17.0811l-28.4932 -35.5137c-3.7998 -4.73535 -10.5371 -5.89746 -15.6875 -2.68457
-c-11.7744 7.34375 -33.9941 18.8486 -57.6523 18.8486c-37.2305 0 -61.792 -24.8193 -61.792 -57.0859v-63.5557h84c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-84v-126.848h122.505v50.8477c0 6.62695 5.37305 12 12 12h45.4951z" />
-    <glyph glyph-name="dollar-sign" unicode="&#xf155;" horiz-adv-x="288" 
-d="M209.2 214.6c57.8994 -16.8994 94 -80.0996 72.5 -141.699c-15.4004 -44.1006 -59.1006 -71.8008 -105.7 -72.7002v-48.2002c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48c-31.4004 0.0996094 -62 10.7998 -86.5 30
-c-7.90039 6.09961 -8.90039 17.5996 -1.7998 24.5l34.7998 34c5.2002 5.09961 13.4004 6.09961 19.5 2c10 -6.7998 22 -10.5 34.2002 -10.5h66.2998c16.2998 0 29.5 13.2002 29.5 29.5c0 13 -8.7002 24.5996 -21.2002 28.2998l-102.5 30
-c-44.3994 13 -79.5996 50.5 -83.7998 96.6006c-5.90039 64.8994 45.2998 119.6 109 119.6h2.5v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48c31.4004 -0.0996094 62 -10.7998 86.5 -30c7.90039 -6.09961 8.90039 -17.5996 1.7998 -24.5l-34.7998 -34
-c-5.2002 -5.09961 -13.4004 -6.09961 -19.5 -2c-10 6.7998 -22 10.5 -34.2002 10.5h-66.2998c-16.2998 0 -29.5 -13.2002 -29.5 -29.5c0 -13 8.7002 -24.7002 21.2002 -28.2998z" />
-    <glyph glyph-name="rupee-sign" unicode="&#xf156;" horiz-adv-x="320" 
-d="M308 352h-72.9424c5.97266 -9.75391 10.7666 -20.459 14.252 -32h58.6904c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52.8105c-7.1748 -74.5107 -61.8193 -125.566 -138.318 -127.906l150.882 -139.275
-c8.02734 -7.41016 2.78516 -20.8184 -8.13867 -20.8184h-82.5625c-3.1377 0 -6 1.20801 -8.13867 3.18164l-165.052 152.356c-2.46094 2.27148 -3.86133 5.46875 -3.86133 8.81836v53.0117c0 6.62695 5.37305 12 12 12h84c41.7959 0 68.54 22.5459 74.7568 58.6318h-158.757
-c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h146.25c-12.709 17.2939 -33.6621 27.252 -60.9697 27.252h-85.2803c-6.62695 0 -12 5.37305 -12 12v44.748c0 6.62695 5.37305 12 12 12h296c6.62695 0 12 -5.37305 12 -12v-40
-c0 -6.62695 -5.37305 -12 -12 -12z" />
-    <glyph glyph-name="yen-sign" unicode="&#xf157;" horiz-adv-x="384" 
-d="M351.2 416c9.09961 0 14.8994 -9.7002 10.5996 -17.5996l-80.0996 -150.4h58.2998c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-88.2002l-19.7998 -37.2002v-26.7998h108c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12
-h-108v-92c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v92h-108c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h108v26.7998l-19.7998 37.2002h-88.2002c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h58.2998
-l-80.0996 150.4c-4.2002 7.89941 1.5 17.5996 10.5996 17.5996h65.2002c4.59961 0 8.7998 -2.59961 10.7998 -6.7002l55.4004 -113.2c14.5 -34.6992 27.0996 -71.8994 27.0996 -71.8994h1.2998s12.6006 37.2002 27.1006 71.8994l55.3994 113.2
-c2 4.10059 6.2002 6.7002 10.8008 6.7002h65.2998z" />
-    <glyph glyph-name="ruble-sign" unicode="&#xf158;" horiz-adv-x="384" 
-d="M239.36 128h-92.8008v-32h161.44c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-161.44v-52c0 -6.62695 -5.37305 -12 -12 -12h-58.5596c-6.62695 0 -12 5.37305 -12 12v52h-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52
-v32h-52c-6.62695 0 -12 5.37305 -12 12v45.3682c0 6.62695 5.37305 12 12 12h52v206.632c0 6.62695 5.37305 12 12 12h163.36c85.1201 0 144.64 -57.5996 144.64 -143.071c0 -85.4707 -59.5195 -144.929 -144.64 -144.929zM146.56 347.252v-149.884h77.4404
-c48 0 76.1602 29.7285 76.1602 75.5605c0 45.2129 -28.1602 74.3232 -74.8799 74.3232h-78.7207z" />
-    <glyph glyph-name="won-sign" unicode="&#xf159;" horiz-adv-x="576" 
-d="M564 256h-62.7002l-7.39941 -32h70.0996c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84.9004l-42.0996 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.4004 3.90039 -11.7002 9.2998l-42.3994 182.7
-h-55.1006l-42.2998 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.5 3.90039 -11.7002 9.40039l-40.8994 182.6h-83.9004c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h69.5l-7.2002 32h-62.2998
-c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h48l-18.0996 80.7002c-1.7002 7.5 4 14.5996 11.6992 14.5996h42.1006c5.7002 0 10.7002 -4 11.7998 -9.59961l17.5 -85.7002h108.7l20 86c1.2998 5.5 6.09961 9.2998 11.7002 9.2998h44
-c5.59961 0 10.3994 -3.7998 11.6992 -9.2998l19.7002 -86h109.9l14.3994 85.7998c1.10059 5.5 6 9.5 11.7002 9.5h46.1006c7.69922 0 13.3994 -7.2002 11.6992 -14.7002l-18.5996 -80.5996h48c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM183.8 106
-l12.6006 54h-38.8008l11 -54c5.10059 -25.2002 6.80078 -47.2002 6.80078 -47.2002h1.09961c0.5 0 1.09961 21.4004 7.2998 47.2002zM211.3 224l7.5 32h-80.7998l6.5 -32h66.7998zM274.2 224h25.3994l-2 8.59961c-1.89941 8 -3.5 16 -4.7998 23.4004h-11.7998
-c-1.2998 -7.40039 -2.90039 -15.4004 -4.7998 -23.4004zM405.1 106l11.5 54h-39.0996l12.4004 -54c6.19922 -25.7998 6.69922 -47.2002 7.2998 -47.2002h1.09961s1.7002 22 6.7998 47.2002zM430.3 224l6.90039 32h-81.6006l7.30078 -32h67.3994z" />
-    <glyph glyph-name="file" unicode="&#xf15b;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98
-c4.5 -4.5 7 -10.5996 7 -16.9004z" />
-    <glyph glyph-name="file-alt" unicode="&#xf15c;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM288 76v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8
-c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 140v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 212c0 6.59961 -5.40039 12 -12 12h-168
-c-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12v8zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z" />
-    <glyph glyph-name="sort-alpha-down" unicode="&#xf15d;" horiz-adv-x="448" 
-d="M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32
-c8.83105 0 16 -7.16895 16 -16v-304h48zM416 160c8.83105 0 16 -7.16895 16 -16v-17.6299c0 -9.51074 -4.14355 -18.0566 -10.7402 -23.9199l-61.2598 -70.4502h56c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16
-v17.6299c0 9.51074 4.14355 18.0566 10.7402 23.9199l61.2598 70.4502h-56c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128zM447.06 245.38c0.600586 -1.67969 0.931641 -3.49512 0.931641 -5.37988c0 -8.82812 -7.16406 -15.9951 -15.9912 -16h-24.8398
-c-0.015625 0 -0.0263672 -0.00195312 -0.0419922 -0.00195312c-7.11426 0 -13.1514 4.6543 -15.2285 11.082l-4.40918 12.9199h-71l-4.4209 -12.9199c-2.07617 -6.42773 -8.10938 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301
-c-8.82715 0.00488281 -15.9863 7.17773 -15.9863 16.0049c0 1.88574 0.326172 3.69531 0.926758 5.375l59.2695 160c2.20996 6.19043 8.125 10.6201 15.0703 10.6201h41.4395c6.94531 0 12.8604 -4.42969 15.0703 -10.6201zM335.61 304h32.7793l-16.3896 48z" />
-    <glyph glyph-name="sort-alpha-up" unicode="&#xf15e;" horiz-adv-x="448" 
-d="M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16
-h-32c-8.83105 0 -16 7.16895 -16 16v304h-48zM416 160c8.83105 0 16 -7.16895 16 -16v-17.6299c0 -9.51074 -4.14355 -18.0566 -10.7402 -23.9199l-61.2598 -70.4502h56c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128
-c-8.83105 0 -16 7.16895 -16 16v17.6299c0 9.51074 4.14355 18.0566 10.7402 23.9199l61.2598 70.4502h-56c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128zM447.06 245.38c0.600586 -1.67969 0.931641 -3.49512 0.931641 -5.37988
-c0 -8.82812 -7.16406 -15.9951 -15.9912 -16h-24.8398c-0.015625 0 -0.0263672 -0.00195312 -0.0419922 -0.00195312c-7.11426 0 -13.1514 4.6543 -15.2285 11.082l-4.40918 12.9199h-71l-4.4209 -12.9199c-2.07617 -6.42773 -8.10938 -11.0801 -15.2246 -11.0801
-h-0.00488281h-24.8301c-8.82715 0.00488281 -15.9863 7.17773 -15.9863 16.0049c0 1.88574 0.326172 3.69531 0.926758 5.375l59.2695 160c2.20996 6.19043 8.125 10.6201 15.0703 10.6201h41.4395c6.94531 0 12.8604 -4.42969 15.0703 -10.6201zM335.61 304h32.7793
-l-16.3896 48z" />
-    <glyph glyph-name="sort-amount-down" unicode="&#xf160;" 
-d="M304 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96
-c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-304h48zM432 288
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192zM368 160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h128zM496 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256z" />
-    <glyph glyph-name="sort-amount-up" unicode="&#xf161;" 
-d="M304 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64zM16 288c-14.2305 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555
-c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48zM432 288c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192zM368 160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128zM496 416
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256z" />
-    <glyph glyph-name="sort-numeric-down" unicode="&#xf162;" horiz-adv-x="448" 
-d="M304 352c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16zM330.15 189.09c53.4502 14.25 101.85 -25.8799 101.869 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132
-c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8496 102.53c7.62793 26.2793 28.5596 46.9287 55 54.1699
-zM352 92c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555
-l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-304h48z" />
-    <glyph glyph-name="sort-numeric-up" unicode="&#xf163;" horiz-adv-x="448" 
-d="M330.17 189.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408
-c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c7.62891 26.2793 28.5596 46.9287 55 54.1699zM352 92c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20zM304 352
-c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16zM107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48
-c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555z" />
-    <glyph glyph-name="thumbs-up" unicode="&#xf164;" 
-d="M104 224c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240c0 13.2549 10.7451 24 24 24h80zM64 -24c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM384 366.548
-c0 -42.416 -25.9697 -66.208 -33.2773 -94.5479h101.724c33.3965 0 59.3965 -27.7461 59.5527 -58.0977c0.0839844 -17.9385 -7.5459 -37.249 -19.4395 -49.1973l-0.109375 -0.110352c9.83594 -23.3369 8.23633 -56.0371 -9.30859 -79.4688
-c8.68164 -25.8945 -0.0683594 -57.7041 -16.3818 -74.7568c4.29785 -17.5977 2.24414 -32.5752 -6.14746 -44.6318c-20.4102 -29.3242 -70.9961 -29.7373 -113.773 -29.7373l-2.84473 0.000976562c-48.2871 0.0166016 -87.8057 17.5977 -119.561 31.7246
-c-15.957 7.09961 -36.8203 15.8877 -52.6504 16.1787c-6.54004 0.120117 -11.7832 5.45703 -11.7832 11.998v213.77c0 3.2002 1.28223 6.27148 3.55762 8.52148c39.6143 39.1436 56.6484 80.5869 89.1172 113.11c14.8037 14.832 20.1885 37.2363 25.3936 58.9023
-c4.44629 18.501 13.749 57.7939 33.9316 57.7939c24 0 72 -8 72 -81.4521z" />
-    <glyph glyph-name="thumbs-down" unicode="&#xf165;" 
-d="M0 392c0 13.2549 10.7451 24 24 24h80c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240zM40 192c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24zM312 -64
-c-20.1826 0 -29.4854 39.293 -33.9307 57.7949c-5.20605 21.666 -10.5889 44.0703 -25.3936 58.9023c-32.4688 32.5234 -49.5029 73.9668 -89.1172 113.11c-2.19727 2.17285 -3.55762 5.19043 -3.55762 8.52148v213.77c0 6.54102 5.24316 11.8779 11.7832 11.998
-c15.8311 0.290039 36.6934 9.0791 52.6504 16.1787c31.7549 14.127 71.2744 31.708 119.561 31.7246h2.84375c42.7773 0 93.3633 -0.413086 113.774 -29.7373c8.3916 -12.0566 10.4453 -27.0342 6.14746 -44.6318c16.3125 -17.0527 25.0635 -48.8633 16.3818 -74.7568
-c17.5439 -23.4316 19.1436 -56.1318 9.30859 -79.4688l0.109375 -0.110352c11.8936 -11.9492 19.5234 -31.2588 19.4395 -49.1973c-0.15625 -30.3516 -26.1572 -58.0977 -59.5527 -58.0977h-101.725c7.30762 -28.3398 33.2773 -52.1318 33.2773 -94.5479
-c0 -73.4521 -48 -81.4521 -72 -81.4521z" />
-    <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="256" 
-d="M128 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM247.283 93.8213c3.78809 -15.1504 -7.69238 -29.8213 -23.2832 -29.8213h-56v-104c0 -13.2549 -10.7451 -24 -24 -24h-32c-13.2549 0 -24 10.7451 -24 24v104h-56
-c-15.6172 0 -27.0654 14.6953 -23.2832 29.8213l48 192c2.6084 10.4316 12.0488 18.1787 23.2832 18.1787h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604c11.2344 0 20.6748 -7.74707 23.2832 -18.1787z" />
-    <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="192" 
-d="M96 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM144 304c26.5098 0 48 -21.4902 48 -48v-136c0 -13.2549 -10.7451 -24 -24 -24h-16v-136c0 -13.2549 -10.7451 -24 -24 -24h-64c-13.2549 0 -24 10.7451 -24 24v136h-16
-c-13.2549 0 -24 10.7451 -24 24v136c0 26.5098 21.4902 48 48 48h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604z" />
-    <glyph glyph-name="sun" unicode="&#xf185;" 
-d="M256 288c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM502.4 207.5c12.7998 -6.40039 12.7998 -24.5996 -0.200195 -31.0996l-94.7002 -47.3008l33.5 -100.399c4.59961 -13.5 -8.2998 -26.4004 -21.9004 -21.9004
-l-100.399 33.5l-47.2998 -94.7002c-6.40039 -12.7998 -24.6006 -12.7998 -31 0l-47.3008 94.7002l-100.399 -33.5c-13.5 -4.59961 -26.4004 8.2998 -21.9004 21.9004l33.5 100.5l-94.7002 47.2998c-12.7998 6.40039 -12.7998 24.5996 0 31l94.7002 47.4004l-33.5 100.399
-c-4.59961 13.5 8.2998 26.4004 21.9004 21.9004l100.5 -33.5l47.2998 94.7002c6.40039 12.7998 24.5996 12.7998 31 0l47.4004 -94.8008l100.399 33.5c13.5 4.60059 26.4004 -8.2998 21.9004 -21.8994l-33.5 -100.4zM346.5 101.5c49.9004 49.9004 49.9004 131.1 0 181
-s-131.1 49.9004 -181 0s-49.9004 -131.1 0 -181s131.1 -49.9004 181 0z" />
-    <glyph glyph-name="moon" unicode="&#xf186;" 
-d="M283.211 -64c-141.489 0 -256 114.691 -256 256c0 141.489 114.691 256 256 256c16.0479 -0.00195312 31.5352 -1.46973 46.7754 -4.28027c11.0059 -2.0332 13.4414 -16.7178 3.75586 -22.2295c-62.8359 -35.7588 -101.498 -102.172 -101.498 -174.395
-c0 -125.378 114.059 -220.607 238.262 -196.954c10.9229 2.08008 18.6299 -10.6416 11.5625 -19.3496c-47.7783 -58.8672 -119.896 -94.792 -198.857 -94.792z" />
-    <glyph glyph-name="archive" unicode="&#xf187;" 
-d="M32 0v288h448v-288c0 -17.7002 -14.2998 -32 -32 -32h-384c-17.7002 0 -32 14.2998 -32 32zM192 212v-8c0 -6.59961 5.40039 -12 12 -12h104c6.59961 0 12 5.40039 12 12v8c0 6.59961 -5.40039 12 -12 12h-104c-6.59961 0 -12 -5.40039 -12 -12zM480 416
-c17.7002 0 32 -14.2998 32 -32v-48c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v48c0 17.7002 14.2998 32 32 32h448z" />
-    <glyph glyph-name="bug" unicode="&#xf188;" 
-d="M511.988 159.1c-0.478516 -17.4297 -15.2168 -31.0996 -32.6533 -31.0996h-55.335v-16c0 -21.8643 -4.88184 -42.584 -13.5996 -61.1445l60.2275 -60.2285c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0
-l-54.7363 54.7363c-24.75 -20.0732 -56.2852 -32.1084 -90.6357 -32.1084v244c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-244c-34.3506 0 -65.8857 12.0352 -90.6357 32.1084l-54.7363 -54.7363c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0
-c-12.4961 12.4971 -12.4961 32.7578 0 45.2549l60.2275 60.2285c-8.71777 18.5605 -13.5996 39.2803 -13.5996 61.1445v16h-55.334c-17.4355 0 -32.1748 13.6699 -32.6533 31.0996c-0.49707 18.084 14.0156 32.9004 31.9873 32.9004h56v58.7451l-46.6279 46.6279
-c-12.4961 12.4971 -12.4961 32.7578 0 45.2549c12.498 12.4971 32.7578 12.4971 45.2559 0l54.627 -54.6279h229.489l54.627 54.627c12.498 12.4971 32.7578 12.4971 45.2559 0c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549l-46.627 -46.627v-58.7451h56
-c17.9717 0 32.4844 -14.8164 31.9883 -32.9004zM257 448c61.8564 0 112 -50.1436 112 -112h-224c0 61.8564 50.1436 112 112 112z" />
-    <glyph glyph-name="caret-square-left" unicode="&#xf191;" horiz-adv-x="448" 
-d="M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM259.515 323.515l-123.029 -123.029c-4.68652 -4.68652 -4.68652 -12.2842 0 -16.9717l123.028 -123.028
-c7.56055 -7.56055 20.4854 -2.20605 20.4854 8.48438v246.06c0.000976562 10.6904 -12.9248 16.0449 -20.4844 8.48535z" />
-    <glyph glyph-name="dot-circle" unicode="&#xf192;" 
-d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM336 192c0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80z" />
-    <glyph glyph-name="wheelchair" unicode="&#xf193;" 
-d="M496.101 62.3311l14.2275 -28.6631c3.92871 -7.91504 0.697266 -17.5156 -7.21777 -21.4453l-65.4658 -32.8857c-16.0488 -7.9668 -35.5557 -1.19434 -43.1885 15.0547l-62.7773 133.608h-139.679c-15.9248 0 -29.4258 11.71 -31.6787 27.4746
-c-33.8887 237.218 -31.9414 222.481 -32.3213 228.525c0 36.3584 30.3184 65.6348 67.0518 63.9287c33.2715 -1.54492 60.0479 -28.9043 60.9248 -62.2012c0.868164 -32.9326 -23.1514 -60.4229 -54.6074 -65.0381l4.66992 -32.6904h129.961c8.83691 0 16 -7.16309 16 -16
-v-32c0 -8.83691 -7.16309 -16 -16 -16h-120.818l4.57227 -32h132.246c12.8076 0 23.8506 -7.5127 28.9619 -18.3916l57.5146 -122.407l36.1787 18.3486c7.91504 3.92871 17.5166 0.697266 21.4453 -7.21777zM311.358 96l25.752 -54.8076
-c-27.3047 -61.8848 -89.2402 -105.192 -161.11 -105.192c-97.0469 0 -176 78.9531 -176 176c0 74.0371 45.9561 137.536 110.836 163.489c2.64453 -18.4736 5.77637 -40.3682 9.48828 -66.333c-33.6299 -19.3477 -56.3242 -55.6514 -56.3242 -97.1562
-c0 -61.7568 50.2432 -112 112 -112c56.3242 0 103.064 41.7959 110.852 96h24.5068z" />
-    <glyph glyph-name="lira-sign" unicode="&#xf195;" horiz-adv-x="384" 
-d="M371.994 192c6.78613 0 12.2578 -5.62598 11.9971 -12.4082c-5.15332 -133.758 -94.3174 -211.592 -228.408 -211.592h-79.583c-6.62695 0 -12 5.37305 -12 12v193.442l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766
-c0 5.72656 4.02734 10.5205 9.39746 11.7139l54.6025 12.1338v30.4395l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766c0 5.72656 4.02734 10.5205 9.39746 11.7139l54.6025 12.1338v68.9971c0 6.62695 5.37305 12 12 12h56
-c6.62695 0 12 -5.37305 12 -12v-51.2188l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139v-40.9756c0 -5.72656 -4.02734 -10.5205 -9.39746 -11.7139l-134.603 -29.9121v-30.4385l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139
-v-40.9766c0 -5.72656 -4.02734 -10.5205 -9.39746 -11.7139l-134.603 -29.9121v-159.219c86.1787 0 168 48 168 148.754c0 6.33398 5.63965 11.2461 11.9746 11.2461h48.0195z" />
-    <glyph glyph-name="space-shuttle" unicode="&#xf197;" horiz-adv-x="640" 
-d="M592.604 239.756c29.6787 -13.9111 47.3965 -31.7637 47.3965 -47.7559s-17.7178 -33.8447 -47.3965 -47.7559c-32.8682 -15.4082 -76.8262 -24.2441 -120.604 -24.2441h-285.674c-4.95215 -6.55469 -10.585 -11.9775 -16.7197 -16h206.394
-c-146.843 -30.2529 -156.597 -136 -279.997 -136h-0.00292969v128h-16v-128c-26.5098 0 -48 28.6543 -48 64v64c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v16c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v64
-c0 35.3457 21.4902 64 48 64v-128h16v128h0.00292969c123.4 0 133.154 -105.747 279.997 -136h-206.393c6.13477 -4.02246 11.7676 -9.44531 16.7197 -16h285.673c43.7773 0 87.7354 -8.83594 120.604 -24.2441zM488 152c31.9424 0 31.9092 80 0 80
-c-4.41504 0 -8 -3.58496 -8 -8v-64c0 -4.41504 3.58496 -8 8 -8z" />
-    <glyph glyph-name="envelope-square" unicode="&#xf199;" horiz-adv-x="448" 
-d="M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM178.117 185.896c10.5156 -7.66895 31.3799 -26.1133 45.8828 -25.8955
-c14.4912 -0.225586 35.3828 18.2393 45.8828 25.8936c90.6836 65.8145 89.7461 65.9697 114.117 84.9385v25.167c0 13.2549 -10.7451 24 -24 24h-272c-13.2549 0 -24 -10.7451 -24 -24v-25.167c24.3525 -18.9541 23.4287 -19.1201 114.117 -84.9365zM384 230.225
-c-13.958 -10.793 -33.3252 -25.2334 -95.2832 -70.1982c-13.6826 -9.98438 -37.833 -32.1592 -64.7197 -32.0254c-26.7188 -0.134766 -50.5322 21.6689 -64.6943 32.0098c-61.9736 44.9785 -81.3447 59.4199 -95.3027 70.2139v-142.225c0 -13.2549 10.7451 -24 24 -24h272
-c13.2549 0 24 10.7451 24 24v142.225z" />
-    <glyph glyph-name="university" unicode="&#xf19c;" 
-d="M496 320v-16c0 -4.41504 -3.58496 -8 -8 -8h-24v-12c0 -6.62695 -5.37305 -12 -12 -12h-392c-6.62695 0 -12 5.37305 -12 12v12h-24c-4.41504 0 -8 3.58496 -8 8v16c0 3.33398 2.03906 6.19141 4.94141 7.3916l232 88
-c0.94043 0.389648 1.97168 0.605469 3.05371 0.605469c1.08105 0 2.12305 -0.21582 3.06348 -0.605469l232 -88c2.90234 -1.2002 4.94141 -4.05762 4.94141 -7.3916zM472 16c13.2549 0 24 -10.7451 24 -24v-16c0 -4.41504 -3.58496 -8 -8 -8h-464
-c-4.41504 0 -8 3.58496 -8 8v16c0 13.2549 10.7451 24 24 24h432zM96 256h64v-192h64v192h64v-192h64v192h64v-192h36c6.62695 0 12 -5.37305 12 -12v-20h-416v20c0 6.62695 5.37305 12 12 12h36v192z" />
-    <glyph glyph-name="graduation-cap" unicode="&#xf19d;" horiz-adv-x="640" 
-d="M622.34 294.8c23.5498 -7.24023 23.5498 -38.3594 0 -45.5996l-278.95 -85.7002c-20.3496 -6.25 -37.7295 -2.78027 -46.79 0l-195.569 60.0898c-12.25 -8.41992 -19.9307 -21.7002 -20.6904 -36.7197c9.19043 -5.62012 15.6602 -15.2998 15.6602 -26.8701
-c0 -10.7803 -5.67969 -19.8496 -13.8604 -25.6504l25.5303 -114.88c2.21973 -9.98926 -5.37988 -19.4697 -15.6201 -19.4697h-56.1094c-10.2305 0 -17.8301 9.48047 -15.6104 19.4697l25.5303 114.88c-8.18066 5.80078 -13.8604 14.8701 -13.8604 25.6504
-c0 11.8896 6.78027 21.8496 16.4102 27.3701c0.649414 17.6201 7.20996 33.71 17.8799 46.8994l-48.6299 14.9404c-23.54 7.23047 -23.54 38.3604 0 45.5898l278.95 85.7002c15.1895 4.66992 31.5898 4.66992 46.79 0zM352.79 132.91l145.03 44.5596l14.1797 -113.47
-c0 -35.3496 -85.96 -64 -192 -64s-192 28.6504 -192 64l14.1797 113.46l145.021 -44.5498c12.75 -3.91992 37.0596 -8.75977 65.5898 0z" />
-    <glyph glyph-name="language" unicode="&#xf1ab;" horiz-adv-x="640" 
-d="M152.1 211.8l10.9004 -37.5h-38.0996l11.0996 37.5c3.5 12.1006 7.7998 33.2002 7.7998 33.2002h0.5s4.2998 -21.0996 7.7998 -33.2002zM616 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-280v320h280zM592 232v16
-c0 6.59961 -5.40039 12 -12 12h-64v16c0 6.59961 -5.40039 12 -12 12h-16c-6.59961 0 -12 -5.40039 -12 -12v-16h-64c-6.59961 0 -12 -5.40039 -12 -12v-16c0 -6.59961 5.40039 -12 12 -12h114.3c-6.2002 -14.2998 -16.5 -29 -30 -43.2002
-c-6.59961 6.90039 -12.3994 13.9004 -17.3994 20.9004c-3.60059 5.09961 -10.6006 6.59961 -16 3.39941l-7.30078 -4.2998l-6.5 -3.89941c-5.89941 -3.5 -7.69922 -11.4004 -3.69922 -17.1006c6.09961 -8.7002 13.0996 -17.2998 21 -25.7002
-c-8.10059 -6.2998 -16.8008 -12.2998 -26.1006 -18c-5.59961 -3.39941 -7.39941 -10.5996 -4.2002 -16.1992l7.90039 -13.9004c3.40039 -5.90039 10.9004 -7.7998 16.7002 -4.2998c12.7002 7.7998 24.5 16.2002 35.3994 24.8994
-c10.9004 -8.7998 22.8008 -17.0996 35.4004 -24.8994c5.7998 -3.5 13.2998 -1.60059 16.7002 4.2998l7.89941 13.9004c3.2002 5.69922 1.40039 12.7998 -4.09961 16.1992c-9 5.5 -17.7002 11.6006 -26.0996 18c21 22.5 35.7998 46.3008 42.6992 69.9004h11.4004
-c6.59961 0 12 5.40039 12 12zM0 328c0 13.2998 10.7002 24 24 24h280v-320h-280c-13.2998 0 -24 10.7002 -24 24v272zM58.9004 111.9c-2.60059 -7.80078 3.19922 -15.9004 11.3994 -15.9004h22.9004c5.2998 0 10 3.59961 11.5 8.7002l9.09961 31.7998h60.2002
-l9.40039 -31.9004c1.4668 -4.96582 6.06152 -8.5957 11.5 -8.59961h22.8994c8.2998 0 14 8.09961 11.4004 15.9004l-57.5 169.1c-1.7002 4.7998 -6.2998 8.09961 -11.4004 8.09961h-32.5c-5.2002 0 -9.7002 -3.19922 -11.3994 -8.09961z" />
-    <glyph glyph-name="fax" unicode="&#xf1ac;" 
-d="M480 288c17.6611 0 32 -14.3389 32 -32v-288c0 -17.6611 -14.3389 -32 -32 -32h-320c-17.6611 0 -32 14.3389 -32 32v448c0 17.6611 14.3389 32 32 32h242.75c8.82715 -0.000976562 16.8291 -3.58008 22.6201 -9.37012l45.25 -45.25
-c5.7959 -5.79199 9.37891 -13.7979 9.37988 -22.6299v-82.75zM288 16v32c0 8.83105 -7.16895 16 -16 16h-32c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM288 144v32c0 8.83105 -7.16895 16 -16 16h-32
-c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM416 16v32c0 8.83105 -7.16895 16 -16 16h-32c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM416 144v32
-c0 8.83105 -7.16895 16 -16 16h-32c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM416 256v64h-48c-8.83105 0 -16 7.16895 -16 16v48h-160v-128h224zM64 320c17.6611 0 32 -14.3389 32 -32v-320
-c0 -17.6611 -14.3389 -32 -32 -32h-32c-17.6611 0 -32 14.3389 -32 32v320c0 17.6611 14.3389 32 32 32h32z" />
-    <glyph glyph-name="building" unicode="&#xf1ad;" horiz-adv-x="448" 
-d="M436 -32c6.62695 0 12 -5.37305 12 -12v-20h-448v20c0 6.62695 5.37305 12 12 12h20v456c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-456h20zM128 372v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40
-c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM128 276v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM180 128c6.62695 0 12 5.37305 12 12v40
-c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40zM256 -32v84c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64zM320 140v40c0 6.62695 -5.37305 12 -12 12h-40
-c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 236v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 332v40
-c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z" />
-    <glyph glyph-name="child" unicode="&#xf1ae;" horiz-adv-x="384" 
-d="M120 376c0 39.7646 32.2354 72 72 72s72 -32.2354 72 -72c0 -39.7637 -32.2354 -72 -72 -72s-72 32.2363 -72 72zM374.627 374.627c12.4971 -12.4971 12.4971 -32.7568 0 -45.2539l-94.627 -94.627v-266.746c0 -17.6729 -14.3271 -32 -32 -32h-16
-c-17.6729 0 -32 14.3271 -32 32v112h-16v-112c0 -17.6729 -14.3271 -32 -32 -32h-16c-17.6729 0 -32 14.3271 -32 32v266.746l-94.627 94.626c-12.4971 12.4971 -12.4971 32.7578 0 45.2549c12.4961 12.4971 32.7578 12.4971 45.2539 0l86.627 -86.627h101.491
-l86.6279 86.627c12.4961 12.4971 32.7578 12.4971 45.2539 0z" />
-    <glyph glyph-name="paw" unicode="&#xf1b0;" 
-d="M256 224c79.4102 0 192 -122.76 192 -200.25c0 -34.9004 -26.8096 -55.75 -71.7402 -55.75c-48.4102 0 -80.75 25.0801 -120.26 25.0801c-39.1699 0 -71.4199 -25.0801 -120.26 -25.0801c-44.9307 0 -71.7402 20.8496 -71.7402 55.75c0 77.4902 112.59 200.25 192 200.25
-zM108.72 236.61c10.4004 -34.6504 -4.76953 -68.3799 -33.8896 -75.3408c-29.1201 -6.95996 -61.1602 15.4805 -71.5605 50.1309c-10.3994 34.6494 4.77051 68.3799 33.8906 75.3398s61.1602 -15.4805 71.5596 -50.1299zM193.44 257.39
-c-30.9307 -8.14941 -65.6201 20.4502 -77.46 63.8701c-11.8408 43.4199 3.63965 85.2207 34.5791 93.3604c30.9404 8.13965 65.6201 -20.4502 77.46 -63.8701c11.8408 -43.4199 -3.63965 -85.2197 -34.5791 -93.3604zM474.83 286.73
-c29.1201 -6.96094 44.29 -40.6904 33.8896 -75.3408c-10.4102 -34.6494 -42.4395 -57.0898 -71.5596 -50.1299s-44.29 40.6904 -33.8906 75.3398c10.4102 34.6504 42.4404 57.0908 71.5605 50.1309zM318.56 257.39c-30.9395 8.14062 -46.4199 49.9404 -34.5791 93.3604
-c11.8398 43.4199 46.5195 72.0195 77.46 63.8701c30.9395 -8.15039 46.4199 -49.9404 34.5791 -93.3604c-11.8398 -43.4199 -46.5195 -72.0098 -77.46 -63.8701z" />
-    <glyph glyph-name="cube" unicode="&#xf1b2;" 
-d="M239.1 441.7c10.9004 4.09961 22.9004 4.09961 33.7002 -0.100586l208 -78c18.7002 -7 31.1006 -24.8994 31.1006 -44.8994v-225.101c0 -18.0996 -10.2002 -34.7998 -26.5 -42.8994l-208 -104c-13.5 -6.7998 -29.4004 -6.7998 -42.9004 0l-208 104
-c-16.2002 8.09961 -26.5 24.7002 -26.5 42.8994v225.101c0 20 12.4004 38 31.0996 45zM256 379.6l-192 -72v-1.09961l192 -78l192 78v1.09961zM288 23.5996l160 80v133.9l-160 -65v-148.9z" />
-    <glyph glyph-name="cubes" unicode="&#xf1b3;" 
-d="M488.6 197.8c14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-110.1c0 -13.5996 -7.7002 -26.0996 -19.9004 -32.2002l-100 -50c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-103.9 52l-103.9 -52c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-100 50
-c-12.2002 6.10059 -19.9004 18.6006 -19.9004 32.2002v110.1c0 15 9.2998 28.4004 23.2998 33.7002l96.6006 36.2002v108.5c0 15 9.2998 28.4004 23.3994 33.7002l100 37.5c8.2002 3.09961 17.2002 3.09961 25.2998 0l100 -37.5
-c14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-108.5zM358 233.2v73.2998l-85 -37v-68.2002zM154 343.9v-0.600586l102 -41.3994l102 41.3994v0.600586l-102 38.1992zM238 52.7998v75.4004l-85 -38.7998v-79.1006zM238 164.8v0.600586l-102 38.1992l-102 -38.1992
-v-0.600586l102 -41.3994zM478 52.7998v75.4004l-85 -38.7998v-79.1006zM478 164.8v0.600586l-102 38.1992l-102 -38.1992v-0.600586l102 -41.3994z" />
-    <glyph glyph-name="recycle" unicode="&#xf1b8;" 
-d="M184.561 186.097c3.23242 -13.9971 -12.1221 -24.6348 -24.0674 -17.168l-40.7363 25.4551l-50.8672 -81.4014c-13.2832 -21.2559 2.07031 -48.9824 27.1221 -48.9824h51.9883c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-51.8848
-c-75.334 0 -121.302 83.0479 -81.4082 146.88l50.8223 81.3877l-40.7256 25.4482c-12.0811 7.54688 -8.96582 25.9609 4.87891 29.1582l110.237 25.4502c8.61133 1.9873 17.2012 -3.38086 19.1895 -11.9902zM283.122 369.012
-c-12.2842 19.6543 -41.5449 20.3193 -54.2568 -0.0214844l-17.9609 -28.7432c-3.5127 -5.62012 -10.916 -7.3291 -16.5361 -3.81738l-33.9189 21.1953c-5.62012 3.51172 -7.33008 10.9131 -3.82031 16.5332l17.9629 28.7656c37.6074 60.1709 125.295 60.0332 162.816 0
-l41.2627 -66.082l40.6875 25.4238c12.0771 7.55176 27.2646 -3.32324 24.0674 -17.168l-25.4502 -110.236c-1.97363 -8.55273 -10.5166 -13.9893 -19.1885 -11.9902l-110.237 25.4502c-13.8789 3.20508 -16.9297 21.6299 -4.87891 29.1572l40.7402 25.457zM497.288 146.88
-c39.9268 -63.8828 -6.13379 -146.88 -81.4082 -146.88h-95.8799v-47.9893c0 -14.3105 -17.3105 -21.3184 -27.3135 -11.3145l-80 79.9883c-6.24805 6.24805 -6.24805 16.3799 0 22.627l80 79.9814c10.0713 10.0703 27.3135 2.90039 27.3135 -11.3125v-47.9814h95.9844
-c25.0791 0 40.3926 27.749 27.1357 48.96l-27.5645 44.1123c-3.51172 5.62109 -1.80176 13.0234 3.81836 16.5361l33.8613 21.1582c5.62207 3.51367 13.0264 1.80273 16.5381 -3.82031z" />
-    <glyph glyph-name="car" unicode="&#xf1b9;" 
-d="M499.99 272c7.80957 0 13.54 -7.33984 11.6494 -14.9102l-6 -24c-1.33008 -5.33984 -6.12988 -9.08984 -11.6396 -9.08984h-20.0703c13.4199 -11.7305 22.0703 -28.7803 22.0703 -48v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703
-c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 19.2197 8.65039 36.2695 22.0801 48h-20.0703
-c-5.50977 0 -10.3096 3.75 -11.6396 9.08984l-6 24c-1.90039 7.57031 3.83008 14.9102 11.6396 14.9102h59.8604l16.6396 41.5996c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.98 -70.4004l16.6396 -41.5996h59.8701z
-M147.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM96 128.2c19.2002 0 48 -3.19043 48 15.9502c0 19.1396 -28.7998 47.8496 -48 47.8496
-s-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM416 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z" />
-    <glyph glyph-name="taxi" unicode="&#xf1ba;" 
-d="M462 206.36c28.5898 -6.40039 50 -31.8301 50 -62.3604v-48c0 -23.6201 -12.9502 -44.0303 -32 -55.1201v-40.8799c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32
-v40.8799c-19.0498 11.0801 -32 31.4902 -32 55.1201v48c0 30.5303 21.4102 55.96 50 62.3604l22 84.8398c9.59961 35.2002 41.5996 60.7998 76.7998 60.7998h11.2002v32c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-32h11.2002
-c35.2002 0 67.2002 -25.5996 76.7998 -60.7998zM96 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM116.55 208h278.9l-17.3906 67.1396c-2.01953 7.37988 -9.37988 12.8604 -14.8496 12.8604h-214.4
-c-5.46973 0 -12.8291 -5.48047 -15.0596 -13.6396zM416 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="tree" unicode="&#xf1bb;" horiz-adv-x="384" 
-d="M378.31 69.5098c6 -6.79004 7.36035 -16.0898 3.56055 -24.2598c-3.75 -8.0498 -12 -13.25 -21.0098 -13.25h-136.86v-24.4502l30.29 -48.3994c5.32031 -10.6406 -2.41992 -23.1602 -14.3096 -23.1602h-95.9609c-11.8896 0 -19.6299 12.5195 -14.3096 23.1602
-l30.29 48.3994v24.4502h-136.86c-9.00977 0 -17.2598 5.2002 -21.0098 13.25c-3.7998 8.16992 -2.43945 17.4697 3.56055 24.2598l79.8896 90.4902h-30.6299c-9.02051 0 -16.9805 5 -20.7803 13.0498c-3.79004 8.0498 -2.54004 17.2598 3.27051 24.04l78.1396 90.9102
-h-28.8896c-9.10059 0 -17.3105 5.34961 -20.8701 13.6104c-3.51074 8.12988 -1.86035 17.5898 4.23926 24.0801l110.28 117.479c6.04004 6.4502 17.29 6.4502 23.3203 0l110.27 -117.479c6.10059 -6.49023 7.76074 -15.9502 4.24023 -24.0801
-c-3.55957 -8.26074 -11.7598 -13.6104 -20.8604 -13.6104h-28.8896l78.1299 -90.8896c5.83008 -6.79004 7.08008 -16.0107 3.28027 -24.0508c-3.7998 -8.05957 -11.7705 -13.0596 -20.7803 -13.0596h-30.6299z" />
-    <glyph glyph-name="database" unicode="&#xf1c0;" horiz-adv-x="448" 
-d="M448 374.857v-45.7148c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v45.7148c0 40.2852 100.333 73.1426 224 73.1426s224 -32.8574 224 -73.1426zM448 272v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426
-v102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723zM448 112v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723z
-" />
-    <glyph glyph-name="file-pdf" unicode="&#xf1c1;" horiz-adv-x="384" 
-d="M181.9 191.9c-5 16 -4.90039 46.8994 -2 46.8994c8.39941 0 7.59961 -36.8994 2 -46.8994zM180.2 144.7c9.59961 -17.4004 21.7998 -31.2002 34.5 -40.7998c-23.9004 -4.7002 -44.6006 -14.9004 -62.9004 -21.9004c11.1006 19.4004 20.7002 42.5 28.4004 62.7002z
-M86.0996 19.9004c5.80078 15.6992 28.2002 33.8994 34.9004 40.1992c-21.7002 -34.7998 -34.9004 -41 -34.9004 -40.1992zM248 288h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136
-c0 -13.2002 10.7998 -24 24 -24zM240 116.2c-20 12.2002 -33.2998 29 -42.7002 53.7998c4.5 18.5 11.6006 46.5996 6.2002 64.2002c-4.7002 29.3994 -42.4004 26.5 -47.7998 6.7998c-5 -18.2998 -0.400391 -44.0996 8.09961 -77
-c-11.5996 -27.5996 -28.7002 -64.5996 -40.7998 -85.7998c-0.0996094 0 -0.0996094 -0.100586 -0.200195 -0.100586c-27.0996 -13.8994 -73.5996 -44.5 -54.5 -68c5.60059 -6.89941 16 -10 21.5 -10c17.9004 0 35.7002 18 61.1006 61.8008
-c25.7998 8.5 54.0996 19.0996 79 23.1992c21.6992 -11.7998 47.0996 -19.5 64 -19.5c29.1992 0 31.1992 32 19.6992 43.4004c-13.8994 13.5996 -54.2998 9.7002 -73.5996 7.2002zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6c6.40039 0 12.5 -2.5 17 -7z
-M302.9 87.7002c0 0 -5.7002 -6.7998 -42.8008 9c40.3008 2.89941 46.9004 -6.2998 42.8008 -9z" />
-    <glyph glyph-name="file-word" unicode="&#xf1c2;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM281.1 192c-5.59961 0 -10.5 -3.90039 -11.5 -9.5c-24.1992 -111.4 -21.7998 -118 -21.5996 -129.2
-c-0.799805 5.40039 -5.59961 29 -29.5996 129.4c-1.30078 5.39941 -6.10059 9.2002 -11.7002 9.2002h-29.1006c-5.59961 0 -10.3994 -3.7002 -11.6992 -9.10059c-22.1006 -90 -27.8008 -112.5 -29.4004 -122.7c-0.900391 12.7002 -5.40039 44.2002 -21 122.2
-c-1.09961 5.7002 -6.09961 9.7002 -11.7998 9.7002h-24.5c-7.7002 0 -13.4004 -7.09961 -11.7002 -14.5996l37.7998 -168c1.2002 -5.5 6.10059 -9.40039 11.7002 -9.40039h37.0996c5.5 0 10.3008 3.7998 11.6006 9.09961c23.2002 93.1006 24.5 96.2002 25.5996 110.5h0.5
-c4.7998 -29.2998 -0.200195 -7 25.6006 -110.5c1.2998 -5.2998 6.09961 -9.09961 11.5996 -9.09961h38c5.59961 0 10.5 3.7998 11.7002 9.2998l38 168c1.7002 7.60059 -4 14.7002 -11.7002 14.7002h-23.9004zM384 326.1v-6.09961h-128v128h6.09961
-c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z" />
-    <glyph glyph-name="file-excel" unicode="&#xf1c3;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM284.1 205.5c5.10059 8 -0.599609 18.5 -10.0996 18.4004h-34.7998
-c-4.40039 0 -8.5 -2.40039 -10.6006 -6.30078c-30.5 -56.7998 -36.5996 -68.5 -36.5996 -68.5c-16.5996 34.9004 -10.5 19.7002 -36.5996 68.5c-2.10059 3.90039 -6.2002 6.30078 -10.6006 6.30078h-34.7998c-9.5 0 -15.2998 -10.5 -10.0996 -18.5l60.2998 -93.5
-l-60.2998 -93.5c-5.10059 -8 0.599609 -18.5 10.0996 -18.5h34.9004c4.39941 0 8.39941 2.39941 10.5 6.2998c26.5996 48.7998 30.1992 54 36.5996 68.7998c0 0 16.9004 -32.5 36.5 -68.7002c2.09961 -3.89941 6.2002 -6.2998 10.5996 -6.2998h34.9004
-c9.5 0 15.2002 10.5 10.0996 18.5l-60.0996 93.5zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z" />
-    <glyph glyph-name="file-powerpoint" unicode="&#xf1c4;" horiz-adv-x="384" 
-d="M193.7 176.8c8.7998 0 15.5 -2.7002 20.2998 -8.09961c9.59961 -10.9004 9.7998 -32.7002 -0.200195 -44.1006c-4.89941 -5.59961 -11.8994 -8.5 -21.0996 -8.5h-26.9004v60.7002h27.9004zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6
-c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM277 146.8c0 44.2002 -28.4004 77 -72.9004 77h-81
-c-6.59961 0 -12 -5.39941 -12 -12v-199.8c0 -6.59961 5.40039 -12 12 -12h30.8008c6.59961 0 12 5.40039 12 12v57.2002c22.2998 0 111.1 -12.7002 111.1 77.5996z" />
-    <glyph glyph-name="file-image" unicode="&#xf1c5;" horiz-adv-x="384" 
-d="M384 326.059v-6.05859h-128v128h6.05859c6.62305 0 12.626 -2.68457 16.9707 -7.0293l97.9404 -97.9404c4.34473 -4.34473 7.03027 -10.3477 7.03027 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464
-c0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM112.545 272c-26.5088 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM320.545 32v112l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0
-l-103.515 -103.515l-39.5146 39.5146c-4.68652 4.68652 -11.7988 5.1709 -16.4854 0.485352l-39.5146 -39.5146l-0.485352 -48.4854h256z" />
-    <glyph glyph-name="file-archive" unicode="&#xf1c6;" horiz-adv-x="384" 
-d="M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM128.4 112c17.8994 0 32.5 -12.0996 32.5 -27s-14.5 -27 -32.4004 -27s-32.5 12 -32.5 27c0 14.9004 14.5 27 32.4004 27zM224 312c0 -13.2002 10.7998 -24 24 -24h136
-v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h104.4v-32h32v32h63.5996v-136zM95.9004 416v-32h32v32h-32zM128.2 32c33 0 57.7998 30.2002 51.3994 62.5996l-17.2998 87.7002
-c-1.09961 5.60059 -6.09961 9.7002 -11.7998 9.7002h-22.0996v32h32v32h-32v32h32v32h-32v32h32v32h-32v-32h-32v-32h32v-32h-32v-32h32v-32h-32v-32l-19.6006 -97.0996c-6.59961 -32.5 18.2002 -62.9004 51.4004 -62.9004z" />
-    <glyph glyph-name="file-audio" unicode="&#xf1c7;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM160 44v136c0 10.7002 -12.9004 16.0996 -20.5 8.5l-35.5 -36.5h-28c-6.59961 0 -12 -5.40039 -12 -12
-v-56c0 -6.59961 5.40039 -12 12 -12h28l35.5 -36.5c7.59961 -7.5 20.5 -2.2002 20.5 8.5zM193.2 91.5996c-22.5 -23.0996 12.5996 -55.7998 34.3994 -33.5c27.2002 28 27.2002 72.5 0 100.4c-22.1992 22.7002 -56.5 -10.7002 -34.3994 -33.5
-c9.09961 -9.2998 9.09961 -24.0996 0 -33.4004zM279.2 208.7c-22.1006 22.7998 -56.5 -10.7002 -34.4004 -33.5c36.2998 -37.2998 36.2002 -96.6006 0 -133.8c-22.5996 -23.2002 12.6006 -55.9004 34.4004 -33.5c54.3994 56 54.3994 144.899 0 200.8zM384 326.1v-6.09961
-h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z" />
-    <glyph glyph-name="file-video" unicode="&#xf1c8;" horiz-adv-x="384" 
-d="M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c4.34375 -4.34473 7.0293 -10.3486 7.0293 -16.9717zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336
-c-13.2549 0 -24 10.7451 -24 24v464c0 13.2549 10.7451 24 24 24h200v-136zM320 167.984c0 21.4609 -25.96 31.9795 -40.9707 16.9697l-55.0293 -55.0127v38.0586c0 13.2549 -10.7451 24 -24 24h-112c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24
-h112c13.2549 0 24 10.7451 24 24v38.0586l55.0293 -55.0088c15.0273 -15.0264 40.9707 -4.47363 40.9707 16.9717v111.963z" />
-    <glyph glyph-name="file-code" unicode="&#xf1c9;" horiz-adv-x="384" 
-d="M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c4.34375 -4.34473 7.0293 -10.3486 7.0293 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464
-c0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM123.206 47.4951l19.5791 20.8838c0.905273 0.96582 1.46289 2.26562 1.46289 3.69238c0 1.61426 -0.709961 3.06445 -1.83496 4.05469l-40.7627 35.874l40.7627 35.874
-c1.125 0.990234 1.83203 2.44043 1.83203 4.05566c0 1.42676 -0.554688 2.72559 -1.45996 3.69141l-19.5791 20.8848c-0.985352 1.05176 -2.3877 1.70703 -3.94141 1.70703c-1.42676 0 -2.72559 -0.555664 -3.69141 -1.46094l-64.8662 -60.8115
-c-1.05078 -0.986328 -1.70801 -2.38672 -1.70801 -3.93945c0 -1.55371 0.657227 -2.9541 1.70801 -3.94043l64.8662 -60.8115c0.96582 -0.905273 2.26562 -1.46289 3.69336 -1.46289c1.55273 0 2.9541 0.657227 3.93945 1.70898zM174.501 -2.98438
-c0.478516 -0.138672 0.982422 -0.212891 1.50488 -0.212891c2.45801 0 4.53418 1.64551 5.18555 3.89453l61.4395 211.626c0.138672 0.478516 0.213867 0.982422 0.213867 1.50488c0 2.45801 -1.64551 4.53418 -3.89355 5.18652l-27.4521 7.9707
-c-0.477539 0.138672 -0.981445 0.212891 -1.50391 0.212891c-2.45801 0 -4.53516 -1.64551 -5.18848 -3.89453l-61.4395 -211.626c-0.138672 -0.477539 -0.212891 -0.981445 -0.212891 -1.50293c0 -2.45898 1.64551 -4.53516 3.89355 -5.18848zM335.293 108.061
-c1.05176 0.986328 1.70898 2.38672 1.70898 3.94043c0 1.55273 -0.657227 2.95312 -1.70801 3.93945l-64.8662 60.8115c-0.96582 0.905273 -2.26562 1.46289 -3.69336 1.46289c-1.55273 0 -2.9541 -0.657227 -3.93945 -1.70898l-19.5801 -20.8848
-c-0.905273 -0.96582 -1.46289 -2.26562 -1.46289 -3.69238c0 -1.61426 0.709961 -3.06445 1.83496 -4.05469l40.7627 -35.874l-40.7637 -35.873c-1.125 -0.990234 -1.83203 -2.44043 -1.83203 -4.05566c0 -1.42676 0.554688 -2.72559 1.45996 -3.69141l19.5801 -20.8848
-c0.985352 -1.05176 2.3877 -1.70703 3.94141 -1.70703c1.42676 0 2.72559 0.555664 3.69141 1.46094z" />
-    <glyph glyph-name="life-ring" unicode="&#xf1cd;" 
-d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM429.696 320.441c-12.8584 17.3291 -27.9258 32.3965 -45.2549 45.2549l-63.3994 -63.3994c18.585 -11.0029 34.2676 -26.6963 45.2549 -45.2549zM256 96
-c53.0186 0 96 42.9814 96 96s-42.9814 96 -96 96s-96 -42.9814 -96 -96s42.9814 -96 96 -96zM127.559 365.696c-17.3291 -12.8584 -32.3965 -27.9258 -45.2549 -45.2549l63.3994 -63.3994c11.0029 18.585 26.6963 34.2676 45.2549 45.2549zM82.3037 63.5586
-c12.8584 -17.3291 27.9258 -32.3965 45.2549 -45.2549l63.3994 63.3994c-18.585 11.0029 -34.2676 26.6963 -45.2549 45.2549zM384.441 18.3037c17.3291 12.8584 32.3965 27.9258 45.2549 45.2549l-63.3994 63.3994c-11.0029 -18.585 -26.6963 -34.2676 -45.2549 -45.2549z
-" />
-    <glyph glyph-name="circle-notch" unicode="&#xf1ce;" 
-d="M288 408.944c0 15.5996 14.6777 27.167 29.7891 23.292c107.071 -27.457 186.211 -124.604 186.211 -240.236c0 -136.788 -110.745 -247.711 -247.466 -247.999c-137.054 -0.289062 -247.812 109.615 -248.531 246.667c-0.609375 116.126 78.5996 213.85 185.951 241.502
-c15.2119 3.91895 30.0459 -7.52539 30.0459 -23.2344v-16.6475c0 -10.8047 -7.28125 -20.1621 -17.6885 -23.0693c-77.5254 -21.6543 -134.312 -92.749 -134.312 -177.219c0 -101.705 82.3105 -184 184 -184c101.705 0 184 82.3105 184 184
-c0 84.4824 -56.7959 155.566 -134.314 177.219c-10.4043 2.90723 -17.6855 12.2627 -17.6855 23.0664v16.6592z" />
-    <glyph glyph-name="paper-plane" unicode="&#xf1d8;" 
-d="M476 444.8c17.2998 10 39 -4.59961 35.5996 -24.7998l-72 -432c-2.59961 -15.2998 -18.7998 -24.2002 -33 -18.2002l-124.6 52.2002l-63.5 -77.2998c-14 -17.1006 -42.5 -7.7998 -42.5 15.7998v80.5l240.9 293.5c4.69922 5.7002 -3.10059 13.2002 -8.60059 8.2998
-l-287.3 -253.2l-106.3 44.6006c-18 7.59961 -20.2998 32.7998 -2.2002 43.2002z" />
-    <glyph glyph-name="history" unicode="&#xf1da;" 
-d="M504 192.469c0.25293 -136.64 -111.18 -248.372 -247.82 -248.468c-59.0146 -0.0419922 -113.223 20.5303 -155.821 54.9111c-11.0771 8.93945 -11.9053 25.541 -1.83984 35.6064l11.2676 11.2676c8.6084 8.6084 22.3525 9.55078 31.8906 1.9834
-c31.3848 -24.9043 71.1045 -39.7695 114.323 -39.7695c101.705 0 184 82.3105 184 184c0 101.705 -82.3105 184 -184 184c-48.8145 0 -93.1494 -18.9688 -126.068 -49.9316l50.7539 -50.7539c10.0801 -10.0801 2.94141 -27.3145 -11.3125 -27.3145h-145.373
-c-8.83691 0 -16 7.16309 -16 16v145.373c0 14.2539 17.2344 21.3926 27.3145 11.3135l49.3711 -49.3711c44.5234 42.5488 104.866 68.6846 171.314 68.6846c136.81 0 247.747 -110.78 248 -247.531zM323.088 113.685c-8.1377 -10.4629 -23.2158 -12.3467 -33.6787 -4.20996
-l-65.4092 50.874v135.651c0 13.2549 10.7451 24 24 24h16c13.2549 0 24 -10.7451 24 -24v-104.349l40.7012 -31.6572c10.4629 -8.13672 12.3477 -23.2158 4.20996 -33.6787z" />
-    <glyph glyph-name="heading" unicode="&#xf1dc;" 
-d="M448 352v-320h32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-160c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32v128h-192v-128h32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-160
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32v320h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32v-128h192v128h-32c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32z" />
-    <glyph glyph-name="paragraph" unicode="&#xf1dd;" horiz-adv-x="448" 
-d="M448 400v-32c0 -8.83105 -7.16895 -16 -16 -16h-48v-368c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v368h-32v-368c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v112h-32c-88.3066 0 -160 71.6934 -160 160
-s71.6934 160 160 160h240c8.83105 0 16 -7.16895 16 -16z" />
-    <glyph glyph-name="sliders-h" unicode="&#xf1de;" 
-d="M496 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-336v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-80c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h80v16c0 8.7998 7.2002 16 16 16h32
-c8.7998 0 16 -7.2002 16 -16v-16h336zM496 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-80v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-336c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h336v16
-c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h80zM496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-208v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-208c-8.7998 0 -16 7.2002 -16 16v32
-c0 8.7998 7.2002 16 16 16h208v16c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h208z" />
-    <glyph glyph-name="share-alt" unicode="&#xf1e0;" horiz-adv-x="448" 
-d="M352 128c53.0186 0 96 -42.9814 96 -96s-42.9814 -96 -96 -96s-96 42.9814 -96 96c0 0.00976562 0.00292969 -0.0429688 0.00292969 -0.0332031c0 7.16699 0.785156 14.1523 2.27344 20.874l-102.486 64.0537c-16.4033 -13.0752 -37.1816 -20.8945 -59.79 -20.8945
-c-53.0186 0 -96 42.9814 -96 96s42.9814 96 96 96c22.6084 0 43.3867 -7.81934 59.79 -20.8945l102.486 64.0537c-1.48633 6.71094 -2.27637 13.6826 -2.27637 20.8408c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96s-42.9814 -96 -96 -96
-c-22.6084 0 -43.3867 7.81934 -59.79 20.8965l-102.486 -64.0547c1.48828 -6.73145 2.27344 -13.6025 2.27344 -20.7793s-0.785156 -14.1719 -2.27344 -20.9033l102.486 -64.0537c16.4033 13.0752 37.1816 20.8945 59.79 20.8945z" />
-    <glyph glyph-name="share-alt-square" unicode="&#xf1e1;" horiz-adv-x="448" 
-d="M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM304 152c-14.5615 0 -27.8232 -5.56055 -37.7832 -14.6709l-67.958 40.7744
-c1.13379 4.45312 1.73633 9.11719 1.73633 13.9199c0 4.80371 -0.602539 9.4209 -1.73633 13.874l67.958 40.7744c9.95996 -9.11133 23.2217 -14.6719 37.7832 -14.6719c30.9277 0 56 25.0723 56 56s-25.0723 56 -56 56s-56 -25.0723 -56 -56
-c0 -4.79688 0.605469 -9.45312 1.74023 -13.8975l-67.958 -40.7744c-9.95898 9.11133 -23.2207 14.6719 -37.7822 14.6719c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56c14.5615 0 27.8232 5.56055 37.7832 14.6709l67.958 -40.7744
-c-1.13281 -4.44141 -1.73535 -9.09375 -1.73535 -13.8857c0 -0.0117188 -0.00488281 0 -0.00488281 -0.0117188c0 -30.9277 25.0723 -56 56 -56s56 25.0723 56 56c-0.000976562 30.9287 -25.0732 56.001 -56.001 56.001z" />
-    <glyph glyph-name="bomb" unicode="&#xf1e2;" 
-d="M440.5 359.5l-52 -52l26.5 -26.5c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-17.4004 -17.3994c11.8008 -26.1006 18.4004 -55.1006 18.4004 -85.6006c0 -114.899 -93.0996 -208 -208 -208s-208 93 -208 207.9s93.0996 208 208 208
-c30.5 0 59.5 -6.59961 85.5996 -18.4004l17.4004 17.4004c9.40039 9.40039 24.5996 9.40039 33.9004 0l26.5 -26.5l52 52zM500 388c6.59961 0 12 -5.40039 12 -12s-5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12s5.40039 12 12 12h24zM440 448
-c6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12s-12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12zM473.9 393c-4.60059 -4.7002 -12.2002 -4.7002 -17 0c-4.7002 4.7002 -4.7002 12.2998 0 17l17 17c4.69922 4.7002 12.2998 4.7002 17 0
-c4.69922 -4.7002 4.69922 -12.2998 0 -17zM406.1 393l-17 17c-4.69922 4.7002 -4.69922 12.2998 0 17c4.7002 4.7002 12.3008 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17c-4.69922 -4.7002 -12.2998 -4.7002 -17 0zM473.9 359l17 -17
-c4.69922 -4.7002 4.69922 -12.2998 0 -17c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-17 17c-4.7002 4.7002 -4.7002 12.2998 0 17c4.69922 4.7002 12.2998 4.7002 17 0zM112 176c0 35.2998 28.7002 64 64 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16
-c-52.9004 0 -96 -43.0996 -96 -96c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16z" />
-    <glyph glyph-name="futbol" unicode="&#xf1e3;" 
-d="M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM456 192l-0.00292969 0.282227l-26.0645 -22.7412l-62.6787 58.5l16.4541 84.3555l34.3027 -3.07227
-c-24.8887 34.2158 -60.0039 60.0889 -100.709 73.1406l13.6514 -31.9385l-74.9531 -41.5264l-74.9531 41.5254l13.6514 31.9385c-40.6309 -13.0283 -75.7803 -38.8701 -100.709 -73.1406l34.5645 3.07324l16.1924 -84.3555l-62.6777 -58.5l-26.0645 22.7412
-l-0.00292969 -0.282227c0 -43.0146 13.4971 -83.9521 38.4717 -117.991l7.7041 33.8975l85.1387 -10.4473l36.3008 -77.8262l-29.9023 -17.7861c40.2021 -13.1221 84.29 -13.1475 124.572 0l-29.9023 17.7861l36.3008 77.8262l85.1387 10.4473l7.7041 -33.8975
-c24.9756 34.0391 38.4727 74.9766 38.4727 117.991zM207.898 122.429l-29.8945 91.3125l77.9961 56.5264l77.9961 -56.5264l-29.6221 -91.3125h-96.4756z" />
-    <glyph glyph-name="tty" unicode="&#xf1e4;" 
-d="M5.37012 344.178c138.532 138.532 362.936 138.326 501.262 0c6.07812 -6.07812 7.07422 -15.4961 2.58301 -22.6807l-43.2139 -69.1377c-3.24023 -5.18457 -8.99902 -8.63672 -15.5576 -8.63672c-2.40137 0 -4.69531 0.490234 -6.79883 1.33105l-86.4219 34.5693
-c-6.75684 2.70312 -11.5352 9.31348 -11.5352 17.0312c0 0.621094 0.0410156 1.20898 0.101562 1.81445l5.95215 59.5312c-62.1455 22.4541 -130.636 21.9863 -191.483 0l5.95312 -59.5322c0.0605469 -0.606445 0.0917969 -1.22168 0.0917969 -1.84375
-c0 -7.7168 -4.76855 -14.2998 -11.5254 -17.002l-86.4238 -34.5684c-2.10254 -0.84082 -4.39648 -1.30371 -6.79785 -1.30371c-6.55859 0 -12.3174 3.4248 -15.5576 8.60938l-43.2109 69.1387c-1.75879 2.81348 -2.77539 6.1377 -2.77539 9.69727
-c0 5.05859 2.04004 9.66406 5.3584 12.9824zM96 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM192 140c0 -6.62695 -5.37305 -12 -12 -12h-40
-c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM288 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 140
-c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM480 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40
-c6.62695 0 12 -5.37305 12 -12v-40zM144 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM240 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40
-c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM336 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM432 44c0 -6.62695 -5.37305 -12 -12 -12h-40
-c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM96 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 -52
-c0 -6.62695 -5.37305 -12 -12 -12h-232c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h232c6.62695 0 12 -5.37305 12 -12v-40zM480 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40
-c6.62695 0 12 -5.37305 12 -12v-40z" />
-    <glyph glyph-name="binoculars" unicode="&#xf1e5;" 
-d="M416 400v-48h-96v48c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16zM63.9102 288.01c0.479492 17.6201 14.2998 31.9902 31.9297 31.9902h96.1602v-160h-32v-160c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v44
-c3.45996 129.78 61.4004 150.16 63.9102 244.01zM448.09 288.01c2.50977 -93.8496 60.4502 -114.229 63.9102 -244.01v-44c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v160h-32v160h96.1602c17.6299 0 31.4502 -14.3701 31.9297 -31.9902zM176 416
-c8.83984 0 16 -7.16016 16 -16v-48h-96v48c0 8.83984 7.16016 16 16 16h64zM224 160v160h64v-160h-64z" />
-    <glyph glyph-name="plug" unicode="&#xf1e6;" horiz-adv-x="384" 
-d="M320 416v-96h-64v96c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32zM368 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-16v-32c-0.0117188 -77.3096 -55.0684 -141.886 -128 -156.8v-99.2002h-64v99.2002
-c-72.9316 14.9141 -127.988 79.4902 -128 156.8v32h-16c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h352zM128 416v-96h-64v96c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32z" />
-    <glyph glyph-name="newspaper" unicode="&#xf1ea;" horiz-adv-x="576" 
-d="M552 384c13.2549 0 24 -10.7451 24 -24v-312c0 -26.5098 -21.4902 -48 -48 -48h-472c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h40v8c0 13.2549 10.7451 24 24 24h464zM56 48c4.41504 0 8 3.58496 8 8v248h-16v-248c0 -4.41504 3.58496 -8 8 -8z
-M292 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8
-c0 -6.62695 5.37305 -12 12 -12h152zM292 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152
-c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 256c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-360c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h360z" />
-    <glyph glyph-name="wifi" unicode="&#xf1eb;" horiz-adv-x="640" 
-d="M634.91 293.12c6.66016 -6.16016 6.79004 -16.5898 0.359375 -22.9805l-34.2393 -33.9697c-6.14062 -6.08984 -16.0205 -6.22949 -22.4004 -0.379883c-145.95 133.71 -371.33 133.68 -517.25 0c-6.37988 -5.84961 -16.2598 -5.71973 -22.3994 0.379883l-34.2402 33.9697
-c-6.44043 6.39062 -6.31055 16.8203 0.349609 22.9805c177.101 163.81 452.65 163.87 629.82 0zM320 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM522.67 179.59c6.88965 -6.08984 7.12012 -16.6895 0.560547 -23.1494
-l-34.4404 -33.9902c-6 -5.93066 -15.6602 -6.32031 -22.0498 -0.799805c-83.75 72.4092 -209.54 72.5693 -293.49 0c-6.38965 -5.52051 -16.0498 -5.12012 -22.0498 0.799805l-34.4404 33.9902c-6.5498 6.45996 -6.33008 17.0498 0.570312 23.1494
-c115.13 101.82 290.08 101.93 405.34 0z" />
-    <glyph glyph-name="calculator" unicode="&#xf1ec;" horiz-adv-x="448" 
-d="M400 448c25.5996 0 48 -22.4004 48 -48v-416c0 -25.5996 -22.4004 -48 -48 -48h-352c-25.5996 0 -48 22.4004 -48 48v416c0 25.5996 22.4004 48 48 48h352zM128 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM128 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 12.7998v166.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-166.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 268.8v102.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-294.4
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-102.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h294.4c6.39941 0 12.7998 6.40039 12.7998 12.7998z" />
-    <glyph glyph-name="bell-slash" unicode="&#xf1f6;" horiz-adv-x="640" 
-d="M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.80957 -22.4502l-19.6396 -25.2705c-5.43066 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.351 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705
-c5.41992 6.97949 15.4805 8.22949 22.46 2.80957l144.96 -112.04c22.9307 31.5 57.2607 54.1904 97.5898 62.5703v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8301c73.46 -15.2598 127.939 -77.46 127.939 -155.16
-c0 -102.3 36.1504 -133.529 55.4697 -154.29c6 -6.43945 8.66016 -14.1602 8.61035 -21.71c0 -1.39941 -0.610352 -2.67969 -0.799805 -4.05957zM157.23 196.46l212.789 -164.46h-241.92c-19.1191 0 -31.9893 15.5996 -32.0996 32
-c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c16.21 17.4199 44.0098 42.79 52.6201 110.75zM320 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z" />
-    <glyph glyph-name="trash" unicode="&#xf1f8;" horiz-adv-x="448" 
-d="M432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3
-c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375c9.41113 0 17.5645 -5.42871 21.4961 -13.3232l9.40039 -18.7002h120zM53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.57031 -25.0762 -22.4316 -44.9971 -47.8994 -45h-245.801
-c-25.4678 0.00292969 -46.3291 19.9238 -47.8994 45z" />
-    <glyph glyph-name="copyright" unicode="&#xf1f9;" 
-d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM373.134 93.2471c1.78516 2.09473 2.86035 4.82812 2.86035 7.79395c0 2.64355 -0.856445 5.08789 -2.30762 7.07227l-24.5469 33.5713
-c-4.44824 6.08691 -13.376 6.61816 -18.5078 1.05371c-0.263672 -0.287109 -26.8467 -28.625 -65.5439 -28.625c-48.7627 0 -74.2773 40.0898 -74.2773 79.6914c0 42.5068 27.8008 76.082 73.916 76.082c35.3516 0 61.6475 -23.666 61.8809 -23.8799
-c5.45996 -5.05566 14.1846 -3.97168 18.2334 2.29492l22.3799 34.6553c1.20996 1.87305 1.91895 4.12109 1.91895 6.51465c0 3.125 -1.19727 5.97168 -3.15625 8.1084c-1.45703 1.58887 -36.4658 38.9043 -103.423 38.9043c-81.7578 0 -143.762 -62.0986 -143.762 -143.401
-c0 -82.3066 59.792 -145.567 144.484 -145.567c70.0752 0 108.259 43.8643 109.851 45.7314z" />
-    <glyph glyph-name="at" unicode="&#xf1fa;" 
-d="M256 440c138.023 0 248 -87.6533 248 -224c0 -75.7979 -41.3906 -147.41 -150.299 -147.41c-30.0977 0 -61.1885 -0.000976562 -70.71 34.1035c-17.6221 -22.6963 -48.0068 -38.333 -74.9912 -38.333c-59.2148 0 -96 40.5664 -96 105.87
-c0 89.2256 63.251 151.46 137.831 151.46c19.5225 0 45.2744 -3.87402 59.9707 -21.7754l0.00976562 0.0917969c0.765625 6.7373 6.49219 11.9932 13.4326 11.9932h44.9805c15.083 0 26.4287 -13.75 23.5625 -28.5586l-23.4336 -121.11
-c-3.43359 -17.167 -3.87207 -29.5703 13.4766 -30.0244c37.0771 3.95117 58.1699 44.9072 58.1699 83.6934c0 102.381 -83.8613 160 -184 160c-101.458 0 -184 -82.542 -184 -184s82.542 -184 184 -184c35.3145 0 69.9199 10.2432 99.4102 29.1572
-c10.1934 6.53809 23.7021 4.24219 31.373 -5.12891l10.1768 -12.4336c9.07324 -11.084 6.45312 -27.5566 -5.55176 -35.3721c-40.0664 -26.083 -87.2539 -40.2227 -135.408 -40.2227c-137.081 0 -248 110.941 -248 248c0 137.081 110.941 248 248 248zM234.32 135.57
-c24.2861 0 58.1611 27.6689 58.1611 72.7295c0 25.5293 -13.3096 40.7705 -35.6016 40.7705c-27.8506 0 -58.6299 -27.7363 -58.6299 -72.7295c0 -25.1475 13.8213 -40.7705 36.0703 -40.7705z" />
-    <glyph glyph-name="eye-dropper" unicode="&#xf1fb;" 
-d="M50.75 114.75l126.63 126.61l128 -128l-126.64 -126.62c-12 -12 -28.2803 -18.7402 -45.25 -18.7402h-45.4902l-56 -32l-32 32l32 56v45.4902c0 16.9795 6.75 33.2598 18.75 45.2598zM483.88 419.88c37.5 -37.4902 37.5 -98.2695 -0.00976562 -135.75l-77.0898 -77.0898
-l13.0996 -13.0996c9.37012 -9.37012 9.37012 -24.5703 0 -33.9404l-40.9697 -40.96c-9.29004 -9.30957 -24.5 -9.44043 -33.9404 0l-161.939 161.94c-9.37012 9.36914 -9.37012 24.5693 0 33.9395l40.9697 40.9697c9.29004 9.31055 24.5 9.44043 33.9404 0l13.0996 -13.0996
-l77.0898 77.0898c37.4697 37.5 98.2803 37.5 135.75 0z" />
-    <glyph glyph-name="paint-brush" unicode="&#xf1fc;" 
-d="M167.02 138.66l88.0107 -73.3398c0.319336 -3.05078 0.969727 -6.02051 0.969727 -9.12988c0 -76.4209 -52.1396 -120.19 -128 -120.19c-90.0703 0 -128 72.3799 -128.01 154.73c9.79004 -6.68066 44.1396 -34.3506 55.25 -34.3506
-c6.58984 0 12.2402 3.77051 14.5898 9.98047c20.6602 54.4395 57.0703 69.7197 97.1895 72.2998zM457.89 448c28.1104 0 54.1104 -20.6396 54.1104 -49.5498c0 -16.1406 -6.51953 -31.6406 -13.9004 -45.9902c-113.05 -210.99 -149.05 -256.46 -211.159 -256.46
-c-7.75 0 -15.1807 1.23047 -22.3906 3.03027l-63.8193 53.1797c-5.48047 11.9404 -8.73047 25 -8.73047 38.7002c0 53.75 21.2695 58.04 225.68 240.64c10.8398 9.74023 25.0508 16.4502 40.21 16.4502z" />
-    <glyph glyph-name="birthday-cake" unicode="&#xf1fd;" horiz-adv-x="448" 
-d="M448 64c-28.0195 0 -31.2598 32 -74.5 32c-43.4297 0 -46.8252 -32 -74.75 -32c-27.6953 0 -31.4541 32 -74.75 32c-42.8418 0 -47.2178 -32 -74.5 -32c-28.1484 0 -31.2021 32 -74.75 32c-43.5469 0 -46.6533 -32 -74.75 -32v80c0 26.5 21.5 48 48 48h16v144h64v-144h64
-v144h64v-144h64v144h64v-144h16c26.5 0 48 -21.5 48 -48v-80zM448 -64h-448v96c43.3564 0 46.7666 32 74.75 32c27.9512 0 31.2529 -32 74.75 -32c42.8428 0 47.2168 32 74.5 32c28.1484 0 31.2012 -32 74.75 -32c43.3574 0 46.7666 32 74.75 32
-c27.4883 0 31.252 -32 74.5 -32v-96zM96 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM224 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM352 352c-17.75 0 -32 14.25 -32 32
-c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40z" />
-    <glyph glyph-name="chart-area" unicode="&#xf1fe;" 
-d="M500 64c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-488c-6.59961 0 -12 5.40039 -12 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-308h436zM372.7 288.5c6 4 14.2002 1.7998 17.3994 -4.7002l89.9004 -187.8h-384v104
-l86.7998 144.7c4.40039 7.2998 14.7998 7.7998 19.9004 1l85.2998 -113.7z" />
-    <glyph glyph-name="chart-pie" unicode="&#xf200;" horiz-adv-x="544" 
-d="M527.79 160c9.5498 0 17.4004 -8.38965 16.0596 -17.8496c-7.80957 -55.25 -34.4297 -104.4 -73.1299 -140.86c-6.20996 -5.84961 -16.1494 -5.36035 -22.1895 0.679688l-158.03 158.03h237.29zM511.96 224.8c0.629883 -9.12012 -7.0498 -16.7998 -16.1904 -16.7998
-h-223.77v223.76c0 9.14062 7.67969 16.8301 16.7998 16.2002c119.46 -8.24023 214.92 -103.7 223.16 -223.16zM224 160l155.86 -155.87c6.84961 -6.84961 6.33008 -18.4795 -1.57031 -24.0801c-38.29 -27.1602 -84.8604 -43.3994 -135.26 -44.0303
-c-128.2 -1.60938 -238.53 103.471 -242.891 231.61c-4.23926 124.771 86.8506 228.88 206.021 245.72c9.4502 1.34082 17.8398 -6.50977 17.8398 -16.0596v-237.29z" />
-    <glyph glyph-name="chart-line" unicode="&#xf201;" 
-d="M496 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432zM464 352c8.83984 0 16 -7.16016 15.9902 -16v-118.05
-c0 -21.3799 -25.8506 -32.0898 -40.9707 -16.9697l-32.3994 32.3994l-96 -96c-12.4902 -12.5 -32.75 -12.5 -45.25 0l-73.3701 73.3701l-46.0596 -46.0703c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6191 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l68.6895 68.6904
-c12.4902 12.5 32.75 12.5 45.25 0l73.3701 -73.3701l73.3701 73.3799l-32.4004 32.4004c-15.1201 15.1201 -4.41016 40.9697 16.9707 40.9697h118.06z" />
-    <glyph glyph-name="toggle-off" unicode="&#xf204;" horiz-adv-x="576" 
-d="M384 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192h-192c-106.039 0 -192 85.9609 -192 192s85.9609 192 192 192h192zM64 192c0 -70.751 57.2588 -128 128 -128c70.751 0 128 57.2588 128 128c0 70.751 -57.2588 128 -128 128
-c-70.751 0 -128 -57.2588 -128 -128zM384 64c70.751 0 128 57.2598 128 128c0 70.751 -57.2588 128 -128 128h-48.9053c65.2363 -72.8799 65.2168 -183.142 0 -256h48.9053z" />
-    <glyph glyph-name="toggle-on" unicode="&#xf205;" horiz-adv-x="576" 
-d="M384 384c106 0 192 -86 192 -192s-86 -192 -192 -192h-192c-106 0 -192 86 -192 192s86 192 192 192h192zM384 64c70.7002 0 128 57.2002 128 128c0 70.7002 -57.2002 128 -128 128c-70.7002 0 -128 -57.2002 -128 -128c0 -70.7002 57.2002 -128 128 -128z" />
-    <glyph glyph-name="bicycle" unicode="&#xf206;" horiz-adv-x="640" 
-d="M512.509 255.999c70.9502 -0.276367 128.562 -59.0547 127.477 -129.996c-1.07422 -70.1934 -58.6494 -126.681 -129.255 -125.996c-68.8301 0.667969 -126.584 58.8857 -126.729 127.719c-0.078125 37.3564 15.8516 70.9893 41.3066 94.4375l-14.9375 24.0674
-l-85.9619 -138.863c-4.23145 -6.83496 -11.7832 -11.3672 -20.4062 -11.3672h-52.0332c-14.209 -55.207 -64.3252 -96 -123.967 -96c-70.9473 0 -128.415 57.7207 -128 128.764c0.410156 70.2246 58.0918 127.406 128.317 127.236
-c15.0879 -0.0371094 29.5586 -2.69043 42.9912 -7.51953l29.417 47.5195h-48.7256c-13.1191 0 -23.7627 10.5186 -23.9951 23.5635c-0.241211 13.4375 11.0947 24.4365 24.5361 24.4365h87.459c8.83691 0 16 -7.16309 16 -16v-16h113.544l-14.8955 24h-50.6494
-c-8.83691 0 -16 7.16309 -16 16v16c0 8.83691 7.16309 16 16 16h64c8.6123 0 16.1572 -4.52148 20.3916 -11.3428l77.6807 -125.153c14.4053 5.54004 30.0625 8.55957 46.4355 8.49512zM186.75 182.228l-23.6641 -38.2275h43.3057
-c-2.96875 14.5674 -9.91504 27.6992 -19.6416 38.2275zM128.002 48c32.7383 0 60.9297 19.7754 73.2998 48h-81.2998c-18.7891 0 -30.2871 20.6729 -20.4062 36.6318l45.5049 73.5088c-5.5127 1.20605 -11.2295 1.85938 -17.0986 1.85938c-44.1123 0 -80 -35.8877 -80 -80
-s35.8877 -80 80 -80zM290.632 144l74.2861 120h-127.547l-24.7461 -39.9736c22.8271 -20.1328 38.4229 -48.2705 42.3828 -80.0264h35.624zM507.689 48.1143c46.0605 -2.43164 84.3115 34.3447 84.3125 79.8848c0 44.1123 -35.8877 80 -80 80
-c-0.0136719 0 0.00585938 -0.0078125 -0.00683594 -0.0078125c-6.85156 0 -13.5029 -0.864258 -19.8516 -2.48926l44.4688 -71.6426c4.66113 -7.50879 2.35156 -17.3721 -5.15625 -22.0322l-13.5938 -8.4375c-7.50879 -4.65918 -17.3721 -2.35156 -22.0322 5.15625
-l-44.4326 71.5859c-12.7021 -14.7451 -20.1475 -34.1416 -19.3359 -55.2627c1.57812 -41.0635 34.5918 -74.5898 75.6279 -76.7549z" />
-    <glyph glyph-name="bus" unicode="&#xf207;" 
-d="M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32
-c-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32
-s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160h256c17.6699 0 32 14.3301 32 32v128c0 17.6699 -14.3301 32 -32 32h-256c-17.6699 0 -32 -14.3301 -32 -32v-128c0 -17.6699 14.3301 -32 32 -32zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32
-s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="closed-captioning" unicode="&#xf20a;" 
-d="M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM218.1 160.3c-41.1992 -37.8994 -92.1992 -15.3994 -92.2998 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992
-c2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002c-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.7 172.8 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002
-c-2.09961 3 -6.39941 3.39941 -9.2002 0.899414zM408.5 160.3c-41.2002 -37.8994 -92.2002 -15.3994 -92.2002 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992c2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002
-c-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.801 172.7 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002c-2.10059 3 -6.40039 3.39941 -9.2002 0.899414z" />
-    <glyph glyph-name="shekel-sign" unicode="&#xf20b;" horiz-adv-x="448" 
-d="M248 280c0 30.9297 -25.0703 56 -56 56h-112v-352c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v408c0 13.2598 10.75 24 24 24h168c75.1104 0 136 -60.8896 136 -136v-168c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16
-v168zM432 416c8.83984 0 16 -7.16016 16 -16v-296c0 -75.1104 -60.8896 -136 -136 -136h-168c-13.25 0 -24 10.75 -24 24v280c0 8.83984 7.16016 16 16 16h48c8.83984 0 16 -7.16016 16 -16v-224h112c30.9297 0 56 25.0703 56 56v296c0 8.83984 7.16016 16 16 16h48z" />
-    <glyph glyph-name="cart-plus" unicode="&#xf217;" horiz-adv-x="576" 
-d="M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941
-c-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917
-c-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782
-c15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM408 280h-48v40c0 8.83691 -7.16309 16 -16 16h-16c-8.83691 0 -16 -7.16309 -16 -16v-40h-48c-8.83691 0 -16 -7.16309 -16 -16v-16
-c0 -8.83691 7.16309 -16 16 -16h48v-40c0 -8.83691 7.16309 -16 16 -16h16c8.83691 0 16 7.16309 16 16v40h48c8.83691 0 16 7.16309 16 16v16c0 8.83691 -7.16309 16 -16 16z" />
-    <glyph glyph-name="cart-arrow-down" unicode="&#xf218;" horiz-adv-x="576" 
-d="M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941
-c-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917
-c-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782
-c15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM403.029 256h-43.0293v60c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-60h-43.0293
-c-10.6904 0 -16.0449 -12.9258 -8.48438 -20.4854l67.0283 -67.0283c4.68652 -4.68652 12.2842 -4.68652 16.9717 0l67.0283 67.0283c7.55957 7.55957 2.20508 20.4854 -8.48535 20.4854z" />
-    <glyph glyph-name="ship" unicode="&#xf21a;" horiz-adv-x="640" 
-d="M496.616 75.3613c17.8418 -44.3604 58.5664 -75.3613 119.384 -75.3613c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c-61.0322 0 -107.505 20.6162 -143.258 59.3965c-14.4189 -34.8281 -48.7637 -59.3965 -88.7422 -59.3965h-128
-c-39.9785 0 -74.3232 24.5684 -88.7422 59.3965c-35.7588 -38.7861 -82.2344 -59.3965 -143.258 -59.3965c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c61.5869 0 101.828 31.7129 119.384 75.3613l-70.0117 70.0117
-c-16.918 16.9189 -9.91699 45.7793 12.8359 53.0918l41.792 13.4336v140.102c0 17.6729 14.3271 32 32 32h64v40c0 13.2549 10.7451 24 24 24h144c13.2549 0 24 -10.7451 24 -24v-40h64c17.6729 0 32 -14.3271 32 -32v-140.102l41.792 -13.4336
-c22.7783 -7.32129 29.7354 -36.1914 12.8359 -53.0918zM192 320v-87.5312l118.208 37.9951c3.08594 0.992188 6.38086 1.52832 9.79492 1.52832c3.41309 0 6.70312 -0.536133 9.78906 -1.52832l118.208 -37.9951v87.5312h-256z" />
-    <glyph glyph-name="user-secret" unicode="&#xf21b;" horiz-adv-x="448" 
-d="M383.9 139.7c38.2998 -23.7002 64.0996 -65.7002 64.0996 -114.101v-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 49.7002 27.2998 92.6006 67.4004 115.9l-25.8008 60.2002
-c-4.5 10.5996 3.2002 22.2998 14.7002 22.2998h57.5c-11 18.9004 -17.7998 40.5996 -17.7998 64v0.299805c-39.2002 7.7998 -64 19.1006 -64 31.7002c0 13.2998 27.2998 25.0996 70 33c9.2002 32.7998 27.0996 65.7998 40.5996 82.7998
-c9.5 11.9004 25.9004 15.6006 39.5 8.7998l27.6006 -13.7998c9 -4.5 19.5996 -4.5 28.5996 0l27.6006 13.7998c13.5996 6.80078 30 3.10059 39.5 -8.7998c13.5996 -17 31.3994 -50 40.5996 -82.7998c42.7998 -7.90039 70.0996 -19.7002 70.0996 -33
-c0 -12.5996 -24.7998 -23.9004 -64 -31.7002v-0.299805c0 -23.4004 -6.7998 -45.0996 -17.7998 -64h58.5c11.2998 0 19 -11.2002 15 -21.7002zM176 -32l32 120l-24 40l-49.5996 32zM272 -32l41.5996 192l-49.5996 -32l-24 -40zM313.7 266.5
-c0.799805 2.59961 6.2998 5.7002 6.39941 5.7998v10.7998c-28.2998 -3.69922 -61 -5.7998 -96 -5.7998s-67.6992 2.2002 -96 5.7998v-10.7998c0 -0.0996094 5.5 -3.2998 6.30078 -5.7998c3.7998 -11.9004 7 -24.5996 16.5 -33.4004c8 -7.39941 47 -25.1992 64 25
-c2.89941 8.40039 15.5 8.40039 18.2998 0c16 -47.3994 53.8994 -34.2998 64 -25c9.5 8.80078 12.5996 21.5 16.5 33.4004z" />
-    <glyph glyph-name="motorcycle" unicode="&#xf21c;" horiz-adv-x="640" 
-d="M512.9 256c69.5996 -0.5 126.5 -57.2998 127.199 -126.9c0.600586 -71.5996 -57.5996 -129.8 -129.199 -129.1c-69.6006 0.599609 -126.301 57.5 -126.801 127.1c-0.299805 39.3008 17.2002 74.5 44.8008 98.2002l-12.5 20.7998
-c-38.7002 -31.2998 -58.3008 -77.8994 -56.2002 -125c0.599609 -13.6992 -10.2998 -25.0996 -24 -25.0996h-84.2002c-14.2998 -55.2002 -64.4004 -96 -124 -96c-71.7002 0 -129.6 58.9004 -128 131c1.59961 67.4004 55.9004 122.5 123.2 124.9
-c14.3994 0.5 28.2998 -1.30078 41.2998 -5.2002l11.2998 20.5c-9.09961 13.8994 -23.2998 24.7998 -47.7998 24.7998h-56c-13.0996 0 -23.7998 10.5 -24 23.5c-0.299805 13.5 11 24.5 24.5 24.5h55.5c55 0 82.2002 -16.9004 99.9004 -40h153.699l-19.1992 32h-66.4004
-c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h80c8.40039 0 16.2002 -4.40039 20.5996 -11.5996l22.8008 -38l37.5 41.6992c4.5 5 11 7.90039 17.7998 7.90039h45.2998c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-82.4004
-l32.9004 -54.9004c13.2998 4.60059 27.5 7 42.4004 6.90039zM128 48c32.7002 0 60.9004 19.7998 73.2998 48h-81.2998c-18.2002 0 -29.7998 19.5996 -21 35.5996l41.5 75.4004c-4.09961 0.700195 -8.2998 1 -12.5 1c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80z
-M591.9 123.6c2.39941 46.1006 -34.3008 84.4004 -79.9004 84.3008c-5.40039 0 -10.7002 -0.5 -15.9004 -1.60059l48.6006 -80.8994c4.5 -7.60059 2.09961 -17.5 -5.5 -22l-13.7002 -8.2002c-7.59961 -4.5 -17.5 -2.10059 -22 5.5l-49.4004 82.3994
-c-13.6992 -14.2998 -22.0996 -33.6992 -22.0996 -55.0996c0 -45.5996 38.2998 -82.4004 84.4004 -79.9004c40.5 2.10059 73.2998 34.9004 75.5 75.5z" />
-    <glyph glyph-name="street-view" unicode="&#xf21d;" 
-d="M367.9 118.24c85.2295 -15.5801 144.1 -48.29 144.1 -86.2402c0 -53.0195 -114.62 -96 -256 -96s-256 42.9805 -256 96c0 37.9502 58.8701 70.6602 144.1 86.2402c4.62012 -5.2998 9.78027 -10.1006 15.9004 -13.6504v-22.9395
-c-66.5195 -9.35059 -112 -28.0508 -112 -49.6504c0 -30.9297 93.1201 -56 208 -56s208 25.0703 208 56c0 21.5996 -45.4805 40.3096 -112 49.6504v22.9395c6.12012 3.5498 11.2803 8.35059 15.9004 13.6504zM256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64
-s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM192 128c-17.6699 0 -32 14.3301 -32 32v96c0 26.5098 21.4902 48 48 48h11.7998c11.0703 -5.03027 23.2598 -8 36.2002 -8s25.1299 2.96973 36.2002 8h11.7998c26.5098 0 48 -21.4902 48 -48v-96
-c0 -17.6699 -14.3301 -32 -32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v96z" />
-    <glyph glyph-name="heartbeat" unicode="&#xf21e;" 
-d="M320.2 204.2l22.0996 -44.2002h109.101l-182.601 -186.5c-7.09961 -7.2998 -18.5996 -7.2998 -25.7002 0l-182.5 186.5h94.1006l30 71.7002l56.8994 -126.3c5.5 -12.3008 22.9004 -12.7002 28.9004 -0.600586zM473.7 374.1
-c48.7002 -49.7998 50.7998 -129.1 7.2998 -182.1h-118.9l-27.5996 55.2002c-5.90039 11.7998 -22.7002 11.7998 -28.5996 0l-49 -97.9004l-58.2002 129.3c-5.7998 12.8008 -24 12.5 -29.4004 -0.399414l-35.8994 -86.2002h-102.4c-43.5 53 -41.4004 132.3 7.2998 182.1
-l2.40039 2.40039c51.5 52.7002 135.899 52.7002 187.399 0l27.9004 -28.5l27.9004 28.5996c51.5996 52.6006 135.899 52.6006 187.399 0z" />
-    <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="288" 
-d="M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40
-c0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z" />
-    <glyph glyph-name="mars" unicode="&#xf222;" horiz-adv-x="384" 
-d="M372 384c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144
-c28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z" />
-    <glyph glyph-name="mercury" unicode="&#xf223;" horiz-adv-x="288" 
-d="M288 240c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40
-c0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 44.2002 19.9004 83.7002 51.2002 110c-2.5 1.90039 -4.90039 3.7998 -7.2002 5.7998c-24.7998 21.2002 -39.7998 48.7998 -43.2002 78.9004
-c-0.899414 7.09961 4.7002 13.2998 11.9004 13.2998h40.5c5.7002 0 10.5996 -4.09961 11.7002 -9.7998c2.5 -12.5 9.59961 -24.2998 20.6992 -33.7998c15.4004 -13.2002 36.1006 -20.4004 58.4004 -20.4004s43 7.2002 58.2998 20.4004
-c11.1006 9.5 18.2998 21.2998 20.7002 33.7998c1.09961 5.7002 6 9.7998 11.7998 9.7998h40.5c7.2002 0 12.7998 -6.2002 11.9004 -13.2998c-3.40039 -30 -18.5 -57.6006 -43.2002 -78.7998c-2.2998 -2 -4.7002 -4 -7.2002 -5.80078
-c31.2998 -26.3994 51.2002 -65.8994 51.2002 -110.1zM64 240c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z" />
-    <glyph glyph-name="transgender" unicode="&#xf224;" horiz-adv-x="384" 
-d="M372 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40
-c0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144
-c28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z" />
-    <glyph glyph-name="transgender-alt" unicode="&#xf225;" horiz-adv-x="480" 
-d="M468 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40
-c0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4
-c0 28.2002 8.09961 54.5 22.2002 76.5996l-16.5 16.5l-19.7998 -19.7998c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-28.3008 28.2998c-4.69922 4.7002 -4.69922 12.3008 0 17l19.8008 19.8008l-19 19l-16.9004 -16.9004c-7.59961 -7.5 -20.5 -2.2002 -20.5 8.5v79
-c0 6.59961 5.40039 12 12 12h79c10.7002 0 16.0996 -12.9004 8.40039 -20.4004l-16.9004 -16.8994l19 -19l19.7998 19.7998c4.7002 4.7002 12.2998 4.7002 17 0l28.2998 -28.2998c4.7002 -4.7002 4.7002 -12.2998 0 -17l-19.7998 -19.7998l16.5 -16.5
-c22.2002 14 48.5 22.0996 76.7002 22.0996s54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM240 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z" />
-    <glyph glyph-name="venus-double" unicode="&#xf226;" 
-d="M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40
-c0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80zM400 131.6v-51.5996h36
-c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v51.5996
-c-21.2002 4.80078 -40.5996 14.3008 -57.2002 27.3008c14 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.6992 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.2998 0 -42.5996 -9.2002 -57.0996 -24
-c-7.10059 21.0996 -18 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c79.5 0 144 -64.5 144 -144c0 -68.5 -47.9004 -125.9 -112 -140.4z" />
-    <glyph glyph-name="mars-double" unicode="&#xf227;" 
-d="M340 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-2.90039 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144
-s64.5 144 144 144c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80zM500 288.1
-c6.59961 0 12 -5.39941 12 -12.0996v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144c-74.4004 0 -135.6 56.4004 -143.2 128.9
-c21.7998 2 43.2998 8.19922 63.2998 18.3994c-0.0996094 -1 -0.0996094 -2.09961 -0.0996094 -3.2002c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80c0 44.1006 -35.9004 80 -80 80c-1 0 -2.09961 -0.0996094 -3.2002 -0.0996094
-c10.2002 20 16.2998 41.5 18.4004 63.2998c22.5 -2.39941 43.2998 -9.89941 61.5 -21.2998l48.7002 48.7002l-16.9004 16.8994c-7.5 7.60059 -2.2002 20.5 8.5 20.5h79z" />
-    <glyph glyph-name="venus-mars" unicode="&#xf228;" horiz-adv-x="576" 
-d="M564 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144
-c-33.7002 0 -64.7002 11.5 -89.2002 30.9004c14.1006 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.7998 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.4004 0 -42.5996 -9.2002 -57.0996 -24
-c-7.10059 21.0996 -18.1006 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 384c79.5 0 144 -64.5 144 -144
-c0 -68.5 -47.9004 -125.8 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12
-h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z" />
-    <glyph glyph-name="mars-stroke" unicode="&#xf229;" horiz-adv-x="384" 
-d="M372 384c6.59961 0 12 -5.40039 12.0996 -12v-78.9004c0 -10.6992 -12.8994 -16.0996 -20.5 -8.5l-16.8994 16.9004l-17.5 -17.5l14.0996 -14.0996c4.7002 -4.7002 4.7002 -12.3008 0 -17l-28.2998 -28.3008c-4.7002 -4.69922 -12.2998 -4.69922 -17 0l-14.0996 14.1006
-l-18 -18c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 143.9 144c28.1992 0 54.5 -8.09961 76.6992 -22.0996l18 18l-14.0996 14.0996c-4.7002 4.7002 -4.7002 12.2998 0 17l28.2998 28.2002
-c4.7002 4.7002 12.2998 4.7002 17 0l14.1006 -14.1006l17.5 17.5l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z" />
-    <glyph glyph-name="mars-stroke-v" unicode="&#xf22a;" horiz-adv-x="288" 
-d="M245.8 213.8c56.2998 -56.2002 56.2998 -147.399 0 -203.6c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6c19.8994 19.9004 44.2002 32.7998 69.7998 38.6006v25.3994h-20c-6.59961 0 -12 5.40039 -12 12v40c0 6.60059 5.40039 12 12 12h20
-v24.7002h-23.9004c-10.6992 0 -16.0996 12.9004 -8.5 20.5l55.9004 55.9004c4.7002 4.69922 12.2998 4.69922 17 0l55.9004 -55.8008c7.5 -7.59961 2.19922 -20.5 -8.5 -20.5h-23.9004v-24.7998h20c6.59961 0 12 -5.39941 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20
-v-25.3994c25.5996 -5.80078 49.9004 -18.7002 69.7998 -38.6006zM200.6 55.4004c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z" />
-    <glyph glyph-name="mars-stroke-h" unicode="&#xf22b;" horiz-adv-x="480" 
-d="M476.2 200.5c4.7002 -4.7002 4.7002 -12.2998 0.0996094 -17l-55.8994 -55.9004c-7.60059 -7.5 -20.5 -2.19922 -20.5 8.5v23.9004h-23.9004v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20h-27.5996
-c-5.80078 -25.5996 -18.7002 -49.9004 -38.6006 -69.7998c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6s147.399 56.2002 203.6 0c19.9004 -19.8994 32.7998 -44.2002 38.6006 -69.7998h27.5996v20c0 6.59961 5.40039 12 12 12h40
-c6.59961 0 12 -5.40039 12 -12v-20h23.7998v23.9004c0 10.6992 12.9004 16.0996 20.5 8.5zM200.6 135.4c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z" />
-    <glyph glyph-name="neuter" unicode="&#xf22c;" horiz-adv-x="288" 
-d="M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-151.6c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.6c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM144 192c44.0996 0 80 35.9004 80 80
-s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z" />
-    <glyph glyph-name="genderless" unicode="&#xf22d;" horiz-adv-x="288" 
-d="M144 272c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80zM144 336c79.5 0 144 -64.5 144 -144s-64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144z" />
-    <glyph glyph-name="server" unicode="&#xf233;" 
-d="M480 288h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 376c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 376
-c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 128h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 216
-c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 216c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 -32h-448c-17.6729 0 -32 14.3271 -32 32v64
-c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24
-s24 10.7451 24 24s-10.7451 24 -24 24z" />
-    <glyph glyph-name="user-plus" unicode="&#xf234;" horiz-adv-x="640" 
-d="M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-64v-64c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v64h-64c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h64v64c0 8.7998 7.2002 16 16 16h32
-c8.7998 0 16 -7.2002 16 -16v-64h64zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352
-c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z" />
-    <glyph glyph-name="user-times" unicode="&#xf235;" horiz-adv-x="640" 
-d="M589.6 208l45.6006 -45.5996c6.2998 -6.30078 6.2998 -16.5 0 -22.8008l-22.7998 -22.7998c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-45.5996 45.6006l-45.5996 -45.6006c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-22.7998 22.7998
-c-6.2998 6.30078 -6.2998 16.5 0 22.8008l45.6006 45.5996l-45.6006 45.5996c-6.2998 6.30078 -6.2998 16.5 0 22.8008l22.7998 22.7998c6.30078 6.2998 16.5 6.2998 22.8008 0l45.5996 -45.6006l45.5996 45.6006c6.30078 6.2998 16.5 6.2998 22.8008 0l22.7998 -22.7998
-c6.2998 -6.30078 6.2998 -16.5 0 -22.8008zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352
-c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z" />
-    <glyph glyph-name="bed" unicode="&#xf236;" horiz-adv-x="640" 
-d="M176 192c-44.1104 0 -80 35.8896 -80 80s35.8896 80 80 80s80 -35.8896 80 -80s-35.8896 -80 -80 -80zM528 320c61.8604 0 112 -50.1396 112 -112v-192c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-512v-48c0 -8.83984 -7.16016 -16 -16 -16
-h-32c-8.83984 0 -16 7.16016 -16 16v352c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-208h224v144c0 8.83984 7.16016 16 16 16h224z" />
-    <glyph glyph-name="train" unicode="&#xf238;" horiz-adv-x="448" 
-d="M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96
-h192c65 0 128 -42.9814 128 -96zM400 216v112c0 13.2549 -10.7451 24 -24 24h-304c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h304c13.2549 0 24 10.7451 24 24zM224 152c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56
-s-25.0723 56 -56 56z" />
-    <glyph glyph-name="subway" unicode="&#xf239;" horiz-adv-x="448" 
-d="M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96
-h192c65 0 128 -42.9814 128 -96zM200 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM400 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24
-v-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM352 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM96 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48
-s-21.4902 48 -48 48z" />
-    <glyph glyph-name="battery-full" unicode="&#xf240;" horiz-adv-x="640" 
-d="M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224
-c0 26.5098 21.4902 48 48 48h512zM512 256v-128h-416v128h416z" />
-    <glyph glyph-name="battery-three-quarters" unicode="&#xf241;" horiz-adv-x="640" 
-d="M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224
-c0 26.5098 21.4902 48 48 48h512zM416 256v-128h-320v128h320z" />
-    <glyph glyph-name="battery-half" unicode="&#xf242;" horiz-adv-x="640" 
-d="M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224
-c0 26.5098 21.4902 48 48 48h512zM320 256v-128h-224v128h224z" />
-    <glyph glyph-name="battery-quarter" unicode="&#xf243;" horiz-adv-x="640" 
-d="M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224
-c0 26.5098 21.4902 48 48 48h512zM224 256v-128h-128v128h128z" />
-    <glyph glyph-name="battery-empty" unicode="&#xf244;" horiz-adv-x="640" 
-d="M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224
-c0 26.5098 21.4902 48 48 48h512z" />
-    <glyph glyph-name="mouse-pointer" unicode="&#xf245;" horiz-adv-x="320" 
-d="M302.189 118.874h-106.084l55.8301 -135.993c3.88965 -9.42773 -0.554688 -19.999 -9.44336 -23.999l-49.165 -21.4268c-9.16504 -4 -19.4434 0.571289 -23.332 9.71387l-53.0527 129.136l-86.6641 -89.1377c-11.5498 -11.877 -30.2783 -2.7207 -30.2783 12.8564v429.678
-c0 16.3994 19.9209 24.3945 30.2773 12.8555l284.412 -292.542c11.4717 -11.1787 3.00684 -31.1406 -12.5 -31.1406z" />
-    <glyph glyph-name="i-cursor" unicode="&#xf246;" horiz-adv-x="256" 
-d="M256 395.952c0 -6.64648 -5.4043 -12.0098 -12.0498 -11.9922c-27.875 0.0712891 -83.9502 -3.20996 -83.9502 -48.1416v-111.818h36c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-36v-112c0 -44.9395 57.8887 -48.5527 83.8555 -48.2422
-c6.68652 0.0800781 12.1445 -5.31055 12.1445 -11.998v-39.6445c0 -6.5957 -5.31836 -11.957 -11.9131 -12c-35.0654 -0.228516 -78.3525 0.62207 -116.087 37.8447c-38.4688 -37.9482 -83.6211 -38.3027 -116.158 -37.8936
-c-6.56738 0.0820312 -11.8418 5.42969 -11.8418 11.999v39.9824c0 6.64648 5.4043 12.0098 12.0498 11.9932c27.875 -0.0722656 83.9502 3.02734 83.9502 47.959v112h-36c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v111.818
-c0 44.9385 -57.8887 48.7344 -83.8555 48.4248c-6.68652 -0.0800781 -12.1445 5.31055 -12.1445 11.998v39.6445c0 6.5957 5.31836 11.957 11.9131 12c35.0654 0.228516 78.3525 -0.62207 116.087 -37.8447c38.4688 37.9482 83.6211 38.3027 116.158 37.8926
-c6.56738 -0.0820312 11.8418 -5.42969 11.8418 -11.999v-39.9824z" />
-    <glyph glyph-name="object-group" unicode="&#xf247;" 
-d="M480 320v-288h20c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v20h-384v-20c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h20v320h-20
-c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-20h384v20c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-20v-32zM96 172c0 -6.62695 5.37305 -12 12 -12h168
-c6.62695 0 12 5.37305 12 12v136c0 6.62695 -5.37305 12 -12 12h-168c-6.62695 0 -12 -5.37305 -12 -12v-136zM416 76v136c0 6.62695 -5.37305 12 -12 12h-84v-72c0 -13.2549 -10.7451 -24 -24 -24h-72v-52c0 -6.62695 5.37305 -12 12 -12h168c6.62695 0 12 5.37305 12 12z
-" />
-    <glyph glyph-name="object-ungroup" unicode="&#xf248;" horiz-adv-x="576" 
-d="M64 128v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v192h-26c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-26h288v26c0 3.31152 2.68848 6 6 6h52
-c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-192h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v26h-288zM544 192v-160h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52
-c-3.31152 0 -6 2.68848 -6 6v26h-288v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v72h136v-8c0 -13.2549 10.7451 -24 24 -24h64c13.2549 0 24 10.7451 24 24v64c0 13.2549 -10.7451 24 -24 24h-8v72h104v26
-c0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-32z" />
-    <glyph glyph-name="sticky-note" unicode="&#xf249;" horiz-adv-x="448" 
-d="M312 128c-13.2002 0 -24 -10.7998 -24 -24v-136h-264c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h400c13.2998 0 24 -10.7002 24 -24v-264h-136zM441 73l-98 -98c-4.5 -4.5 -10.5996 -7 -17 -7h-6v128h128v-6.09961
-c0 -6.30078 -2.5 -12.4004 -7 -16.9004z" />
-    <glyph glyph-name="clone" unicode="&#xf24d;" 
-d="M464 448c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h288zM176 32h208v-48c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288
-c0 26.5098 21.4902 48 48 48h48v-208c0 -44.1123 35.8877 -80 80 -80z" />
-    <glyph glyph-name="balance-scale" unicode="&#xf24e;" horiz-adv-x="640" 
-d="M256 112c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312zM128 272l-72 -144h144zM639.98 112
-c0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 128h144l-72 144zM528 0c8.83984 0 16 -7.16016 16 -16v-32
-c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v294.75c-23.5195 10.29 -41.1602 31.4902 -46.3896 57.25h-129.61c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h144.36
-c14.5996 19.3203 37.5498 32 63.6396 32s49.04 -12.6797 63.6396 -32h144.36c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-129.61c-5.22949 -25.7695 -22.8799 -46.96 -46.3896 -57.25v-294.75h176z" />
-    <glyph glyph-name="hourglass-start" unicode="&#xf251;" horiz-adv-x="384" 
-d="M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336
-c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM296 0c0 77.4834 -46.2139 144 -104 144
-c-57.7959 0 -104 -66.542 -104 -144h208z" />
-    <glyph glyph-name="hourglass-half" unicode="&#xf252;" horiz-adv-x="384" 
-d="M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336
-c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM284.922 64
-c-17.0596 46.8037 -52.1006 80 -92.9219 80c-40.8242 0 -75.8613 -33.2031 -92.9199 -80h185.842zM284.941 320c7.07129 19.4131 11.0586 41.1953 11.0586 64h-208c0 -22.748 3.98828 -44.5479 11.0781 -64h185.863z" />
-    <glyph glyph-name="hourglass-end" unicode="&#xf253;" horiz-adv-x="384" 
-d="M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24
-c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24zM192 240c57.4902 0 104 66.0547 104 144
-h-208c0 -77.4824 46.2129 -144 104 -144z" />
-    <glyph glyph-name="hourglass" unicode="&#xf254;" horiz-adv-x="384" 
-d="M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24
-c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24z" />
-    <glyph glyph-name="hand-rock" unicode="&#xf255;" 
-d="M464.8 368c26.2998 -0.400391 47.2002 -22.5 47.2002 -48.7998v-133.5c0 -12.7998 -2.5 -25.5 -7.5 -37.2998l-49 -116.301c-4.90039 -11.7998 -7.5 -24.5 -7.5 -37.2998v-2.89941c0 -13.3008 -10.7002 -24 -24 -24h-240c-13.2998 0 -24 10.6992 -24 24v6.69922
-c0 13.7002 -5.90039 26.8008 -16.0996 35.9004l-111.7 99.2998c-20.5 18.2998 -32.2002 44.4004 -32.2002 71.7998v66.4004c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-48.1006l8 -7.09961v136
-c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8v48c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-47.2002h8v32c0 26.7998 21.9004 48.4004 48.7998 48
-c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8c0 26.7998 21.9004 48.4004 48.7998 48z" />
-    <glyph glyph-name="hand-paper" unicode="&#xf256;" horiz-adv-x="448" 
-d="M408.781 319.993c21.7305 -0.416016 39.2188 -18.1621 39.2178 -39.9932v-150.359c0 -15.166 -1.77344 -29.8193 -5.10449 -43.9746l-26.5078 -112.66c-5.10156 -21.6816 -24.4502 -37.0059 -46.7236 -37.0059h-197.59c-15.9629 0 -30.0908 7.76562 -38.8193 19.7676
-l-125.601 172.705c-12.9932 17.8672 -9.04297 42.8838 8.82129 55.877c17.8682 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5195v235.992c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-175.21h8v216
-c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-215.21h8v177c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-176.21h8v87.21
-c0 22.4297 18.3564 41.2119 40.7812 40.7832z" />
-    <glyph glyph-name="hand-scissors" unicode="&#xf257;" 
-d="M216 8c0 22.0918 17.9092 40 40 40v8h-32c-22.0908 0 -40 17.9082 -40 40s17.9092 40 40 40h32v8h-208c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h208v13.5723l-177.551 69.7393c-24.6738 9.69434 -36.8184 37.5557 -27.125 62.2285
-c9.69238 24.6738 37.5537 36.8174 62.2275 27.124l190.342 -74.7646l24.8721 31.0898c12.3066 15.3809 33.9785 19.5146 51.0811 9.74121l112 -64c12.0605 -6.89355 20.1533 -19.8564 20.1533 -34.7305v-240c0 -18.5615 -12.7695 -34.6855 -30.8379 -38.9365l-136 -32
-c-2.94824 -0.694336 -6.00391 -1.06348 -9.16211 -1.06348h-80c-22.0908 0 -40 17.9082 -40 40z" />
-    <glyph glyph-name="hand-lizard" unicode="&#xf258;" horiz-adv-x="576" 
-d="M384 -32v61.4609c0 8.5332 -4.4375 16.0166 -11.1543 20.2734l-111.748 70.8105c-7.41895 4.70215 -16.2656 7.45508 -25.6914 7.45508h-147.406c-13.2549 0 -24 10.7451 -24 24v8c0 35.3457 28.6543 64 64 64h123.648c13.3086 0 24.7158 8.12109 29.5371 19.6924
-l21.4102 51.3848c4.94141 11.8555 -3.77051 24.9229 -16.6143 24.9229h-229.981c-30.9277 0 -56 25.0723 -56 56v16c0 13.2549 10.7451 24 24 24h333.544c17.0908 0 32.0781 -8.90137 40.583 -22.3682l163.04 -258.146c9.35645 -14.8145 14.833 -32.4619 14.833 -51.2637
-v-116.222h-192z" />
-    <glyph glyph-name="hand-spock" unicode="&#xf259;" 
-d="M510.9 302.729l-68.2969 -286.823c-10.8975 -45.7705 -52.0801 -79.9062 -101.166 -79.9062h-127.363c-36.0293 0 -68.8447 14.0459 -93.1855 36.9531l-108.298 101.92c-7.72754 7.29297 -12.5537 17.6299 -12.5537 29.084c0 22.0723 17.9199 39.9922 39.9922 39.9922
-c10.5742 0 20.2188 -4.11426 27.374 -10.8262l60.5928 -57.0254v0c0 27.958 -4.1084 54.9473 -11.6699 80.4668l-42.6885 144.075c-1.06738 3.60254 -1.63965 7.41699 -1.63965 11.3633c0 22.0801 17.9258 40.0059 40.0049 40.0059
-c18.1338 0 33.4512 -12.0977 38.3525 -28.6504l37.1543 -125.395c1.02148 -3.44629 4.21387 -5.96387 7.99023 -5.96387c4.59766 0 8.33105 3.7334 8.33105 8.33105c0 0.717773 -0.09375 1.41016 -0.264648 2.07422l-50.3047 195.641
-c-0.821289 3.19238 -1.25879 6.53711 -1.25879 9.98438c0 22.0742 17.9219 39.9961 39.9971 39.9961c18.6279 0 34.291 -12.793 38.7305 -30.043l56.0947 -218.158c1.15527 -4.49512 5.23926 -7.82129 10.0928 -7.82129c5.03125 0 9.23438 3.57715 10.207 8.32227
-l37.6826 183.704c3.76074 18.2139 19.9043 31.9248 39.2256 31.9248c4.20703 0 8.26562 -0.629883 12.0771 -1.83496c19.8604 -6.2998 30.8623 -27.6738 26.6758 -48.085l-33.8389 -164.967c-0.101562 -0.492188 -0.154297 -1.00098 -0.154297 -1.52344
-c0 -4.16797 3.38379 -7.55176 7.55176 -7.55176c3.56445 0 6.55566 2.48535 7.34668 5.80859l29.3975 123.459c4.19141 17.6016 20.0312 30.708 38.9082 30.708c22.0732 0 39.9941 -17.9209 39.9941 -39.9941c0 -3.19727 -0.380859 -6.26465 -1.09082 -9.24512v0z" />
-    <glyph glyph-name="hand-pointer" unicode="&#xf25a;" horiz-adv-x="448" 
-d="M448 208v-96c0 -3.08398 -0.356445 -6.15918 -1.06348 -9.16211l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-208c-13.3018 0 -25.0752 6.47168 -32.3496 16.4727l-127.997 176c-12.9932 17.8662 -9.04297 42.8838 8.82129 55.876
-c17.8672 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5186v275.992c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-200h8v40c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-40h8v24c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-24h8
-c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40zM192 128h-8v-96h8v96zM280 128h-8v-96h8v96zM368 128h-8v-96h8v96z" />
-    <glyph glyph-name="hand-peace" unicode="&#xf25b;" horiz-adv-x="448" 
-d="M408 232c22.0918 0 40 -17.9092 40 -40v-80c0 -3.1582 -0.369141 -6.21484 -1.06348 -9.16211l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-240c-14.874 0 -27.8379 8.09375 -34.7285 20.1543l-64 112
-c-9.77441 17.1025 -5.64062 38.7744 9.74023 51.0811l31.0898 24.8721l-74.7646 190.342c-9.69336 24.6738 2.4502 52.5342 27.124 62.2266c24.6729 9.69434 52.5332 -2.4502 62.2275 -27.125l69.7393 -177.551h13.5723v208c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48
-v-208h8v32c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-32h8c0 22.0908 17.9082 40 40 40z" />
-    <glyph glyph-name="trademark" unicode="&#xf25c;" horiz-adv-x="640" 
-d="M260.6 352c6.60059 0 12 -5.40039 11.9004 -12v-43.0996c0 -6.60059 -5.40039 -12 -12 -12h-85.0996v-240.9c0 -6.59961 -5.40039 -12 -12 -12h-54.3008c-6.59961 0 -12 5.40039 -12 12v240.9h-85.0996c-6.59961 0 -12 5.39941 -12 12v43.0996
-c0 6.59961 5.40039 12 12 12h248.6zM640 45c0.5 -7 -5 -13 -12 -13h-53.9004c-6.2998 0 -11.5996 4.90039 -12 11.2002l-9.09961 132.899c-1.7998 24.2002 0 53.7002 0 53.7002h-0.900391s-10.6992 -33.5996 -17.8994 -53.7002l-30.7002 -84.6992
-c-1.7002 -4.7002 -6.2002 -7.90039 -11.2998 -7.90039h-50.2998c-5.10059 0 -9.60059 3.2002 -11.3008 7.90039l-30.6992 84.6992c-7.2002 20.1006 -17.9004 53.7002 -17.9004 53.7002h-0.900391s1.80078 -29.5 0 -53.7002l-9.09961 -132.899
-c-0.5 -6.2998 -5.7002 -11.2002 -12 -11.2002h-54.5c-7.09961 0 -12.5996 6 -12 13l24.4004 296c0.599609 6.2002 5.7998 11 12 11h65.3994c5.10059 0 9.60059 -3.2998 11.2998 -8.09961l43.8008 -127.101c7.19922 -20.5996 16.0996 -52.7998 16.0996 -52.7998h0.900391
-s8.89941 32.2002 16.0996 52.7998l43.7998 127.101c1.60059 4.7998 6.2002 8.09961 11.2998 8.09961h65.4004c6.2998 0 11.5 -4.7998 12 -11z" />
-    <glyph glyph-name="registered" unicode="&#xf25d;" 
-d="M285.363 240.525c0 -18.6006 -9.83105 -28.4316 -28.4316 -28.4316h-29.876v56.1406h23.3779c28.668 0 34.9297 -8.77344 34.9297 -27.709zM504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248z
-M363.411 87.5859c-46.7295 84.8252 -43.2988 78.6357 -44.7021 80.9805c23.4316 15.1719 37.9453 42.9785 37.9453 74.4854c0 54.2441 -31.5 89.252 -105.498 89.252h-70.667c-13.2549 0 -24 -10.7451 -24 -24v-232.304c0 -13.2549 10.7451 -24 24 -24h22.5664
-c13.2549 0 24 10.7451 24 24v71.6631h25.5566l44.1289 -82.9375c4.03516 -7.58301 12.0049 -12.7266 21.1875 -12.7266h24.4639c18.2617 0.000976562 29.8291 19.5908 21.0186 35.5869z" />
-    <glyph glyph-name="tv" unicode="&#xf26c;" horiz-adv-x="640" 
-d="M592 448c26.4922 0 48 -21.5078 48 -48v-320c0 -26.4922 -21.5078 -48 -48 -48h-240v-32h176c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h176v32h-240
-c-26.4922 0 -48 21.5078 -48 48v320c0 26.4922 21.5078 48 48 48h544zM576 96v288h-512v-288h512z" />
-    <glyph glyph-name="calendar-plus" unicode="&#xf271;" horiz-adv-x="448" 
-d="M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36
-c0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM328 116c0 6.59961 -5.40039 12 -12 12h-60v60c0 6.59961 -5.40039 12 -12 12h-40
-c-6.59961 0 -12 -5.40039 -12 -12v-60h-60c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h60v-60c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v60h60c6.59961 0 12 5.40039 12 12v40z" />
-    <glyph glyph-name="calendar-minus" unicode="&#xf272;" horiz-adv-x="448" 
-d="M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36
-c0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM316 64c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-184
-c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h184z" />
-    <glyph glyph-name="calendar-times" unicode="&#xf273;" horiz-adv-x="448" 
-d="M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36
-c0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM269.3 96l48.1006 48.0996c4.69922 4.7002 4.69922 12.3008 0 17l-28.3008 28.3008
-c-4.69922 4.69922 -12.2998 4.69922 -17 0l-48.0996 -48.1006l-48.0996 48.1006c-4.7002 4.69922 -12.3008 4.69922 -17 0l-28.3008 -28.3008c-4.69922 -4.69922 -4.69922 -12.2998 0 -17l48.1006 -48.0996l-48.1006 -48.0996c-4.69922 -4.7002 -4.69922 -12.3008 0 -17
-l28.3008 -28.3008c4.69922 -4.69922 12.2998 -4.69922 17 0l48.0996 48.1006l48.0996 -48.1006c4.7002 -4.69922 12.3008 -4.69922 17 0l28.3008 28.3008c4.69922 4.69922 4.69922 12.2998 0 17z" />
-    <glyph glyph-name="calendar-check" unicode="&#xf274;" horiz-adv-x="448" 
-d="M436 288h-424c-6.62695 0 -12 5.37305 -12 12v36c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h48c26.5098 0 48 -21.4902 48 -48v-36
-c0 -6.62695 -5.37305 -12 -12 -12zM12 256h424c6.62695 0 12 -5.37305 12 -12v-260c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v260c0 6.62695 5.37305 12 12 12zM345.296 160.053l-28.1689 28.3984
-c-4.66699 4.70508 -12.2646 4.73535 -16.9697 0.0673828l-106.037 -105.184l-45.9805 46.3516c-4.66699 4.70508 -12.2656 4.73633 -16.9707 0.0683594l-28.3965 -28.1699c-4.70508 -4.66699 -4.73633 -12.2646 -0.0683594 -16.9697l82.6006 -83.2695
-c4.66699 -4.70508 12.2656 -4.73535 16.9707 -0.0673828l142.952 141.805c4.70508 4.66699 4.73633 12.2646 0.0683594 16.9697z" />
-    <glyph glyph-name="industry" unicode="&#xf275;" 
-d="M475.115 284.219c15.9541 10.1514 36.8848 -1.33105 36.8848 -20.248v-271.971c0 -13.2549 -10.7451 -24 -24 -24h-464c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-196.309l139.115 88.5273
-c15.9541 10.1514 36.8848 -1.33203 36.8848 -20.248v-68.2793z" />
-    <glyph glyph-name="map-pin" unicode="&#xf276;" horiz-adv-x="288" 
-d="M112 131.06c10.3896 -1.91992 21.0596 -3.05957 32 -3.05957s21.6104 1.13965 32 3.05957v-156.689l-22.0098 -33.0205c-4.75 -7.11914 -15.2207 -7.11914 -19.9707 0l-22.0195 33.0205v156.689zM144 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144
-s-144 64.4697 -144 144s64.4697 144 144 144zM144 372c6.62012 0 12 5.37988 12 12s-5.37988 12 -12 12c-50.7197 0 -92 -41.2695 -92 -92c0 -6.62012 5.37988 -12 12 -12s12 5.37988 12 12c0 37.5 30.5 68 68 68z" />
-    <glyph glyph-name="map-signs" unicode="&#xf277;" 
-d="M507.31 363.31c6.25 -6.25 6.25 -16.3691 0 -22.6299l-43.3096 -43.3096c-6.00977 -6 -14.1396 -9.37012 -22.6299 -9.37012h-385.37c-13.25 0 -24 10.75 -24 24v80c0 13.25 10.75 24 24 24h168v16c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-16
-h153.37c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM224 -48v112h64v-112c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16zM456 224c13.25 0 24 -10.75 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-385.37
-c-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-43.3096 43.3096c-6.25 6.25 -6.25 16.3799 0 22.6299l43.3096 43.3203c6.00977 6 14.1396 9.37012 22.6299 9.37012h153.37v32h64v-32h168z" />
-    <glyph glyph-name="map" unicode="&#xf279;" horiz-adv-x="576" 
-d="M0 330.34c0.00292969 13.4697 8.32617 24.9932 20.1201 29.71l139.88 55.9502v-384l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v346.32zM192 32v384l192 -64v-384zM554.06 414.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-346.32
-c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-139.88 -55.9502v384z" />
-    <glyph glyph-name="comment-alt" unicode="&#xf27a;" 
-d="M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.7002c-7.89941 -5.7998 -19.0996 -0.0996094 -19.0996 9.7002v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z" />
-    <glyph glyph-name="pause-circle" unicode="&#xf28b;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM240 112v160c0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16zM352 112v160
-c0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16z" />
-    <glyph glyph-name="stop-circle" unicode="&#xf28d;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM352 112v160c0 8.7998 -7.2002 16 -16 16h-160c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h160c8.7998 0 16 7.2002 16 16z" />
-    <glyph glyph-name="shopping-bag" unicode="&#xf290;" horiz-adv-x="448" 
-d="M352 288h96v-272c0 -44.1826 -35.8174 -80 -80 -80h-288c-44.1826 0 -80 35.8174 -80 80v272h96v32c0 70.5801 57.4199 128 128 128c70.5791 0 128 -57.4199 128 -128v-32zM160 320v-32h128v32c0 35.29 -28.71 64 -64 64s-64 -28.71 -64 -64zM320 200
-c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM128 200c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24z" />
-    <glyph glyph-name="shopping-basket" unicode="&#xf291;" horiz-adv-x="576" 
-d="M576 232v-16c0 -13.2549 -10.7451 -24 -24 -24h-8l-26.1133 -182.788c-3.37793 -23.6465 -23.6299 -41.2119 -47.5166 -41.2119h-364.74c-23.8867 0 -44.1387 17.5654 -47.5176 41.2119l-26.1123 182.788h-8c-13.2549 0 -24 10.7451 -24 24v16
-c0 13.2549 10.7451 24 24 24h67.3408l106.78 146.821c10.3945 14.292 30.4072 17.4531 44.7012 7.05762c14.293 -10.3945 17.4531 -30.4082 7.05762 -44.7012l-79.4033 -109.178h235.047l-79.4033 109.179c-10.3955 14.292 -7.23438 34.3066 7.05859 44.7012
-c14.291 10.3955 34.3066 7.23535 44.7012 -7.05762l106.779 -146.822h67.3408c13.2549 0 24 -10.7451 24 -24zM312 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM424 56v112
-c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM200 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24z" />
-    <glyph glyph-name="hashtag" unicode="&#xf292;" horiz-adv-x="448" 
-d="M440.667 265.891c-1.00195 -5.61328 -5.91309 -9.89062 -11.8135 -9.89062h-79.0957l-22.8564 -128h74.8096c7.4707 0 13.126 -6.75391 11.8135 -14.1094l-7.14355 -40c-1.00195 -5.61328 -5.91309 -9.89062 -11.8125 -9.89062h-79.0967l-15.377 -86.1094
-c-1.00195 -5.61328 -5.91309 -9.89062 -11.8125 -9.89062h-40.6318c-7.47266 0 -13.127 6.75391 -11.8135 14.1094l14.623 81.8906h-98.6338l-15.3779 -86.1094c-1.00195 -5.61328 -5.91309 -9.89062 -11.8135 -9.89062h-40.6318
-c-7.4707 0 -13.126 6.75391 -11.8125 14.1094l14.623 81.8906h-74.8105c-7.4707 0 -13.126 6.75391 -11.8125 14.1094l7.14258 40c1.00195 5.61328 5.91309 9.89062 11.8135 9.89062h79.0957l22.8564 128h-74.8096c-7.4707 0 -13.126 6.75391 -11.8135 14.1094l7.14355 40
-c1.00195 5.61328 5.91309 9.89062 11.8125 9.89062h79.0967l15.377 86.1094c1.00195 5.61328 5.91309 9.89062 11.8125 9.89062h40.6318c7.47266 0 13.127 -6.75391 11.8135 -14.1094l-14.623 -81.8906h98.6348l15.377 86.1094
-c1.00195 5.61328 5.91309 9.89062 11.8135 9.89062h40.6318c7.4707 0 13.126 -6.75391 11.8125 -14.1094l-14.623 -81.8906h74.8105c7.4707 0 13.126 -6.75391 11.8125 -14.1094zM261.889 128l22.8574 128h-98.6338l-22.8574 -128h98.6338z" />
-    <glyph glyph-name="percent" unicode="&#xf295;" horiz-adv-x="448" 
-d="M112 224c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM112 384c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48zM336 160c61.9004 0 112 -50.0996 112 -112
-s-50.0996 -112 -112 -112s-112 50.0996 -112 112s50.0996 112 112 112zM336 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM392.3 447.8l31.6006 0.100586c19.3994 0.0996094 30.8994 -21.8008 19.6992 -37.8008l-366.199 -463.699
-c-4.33203 -6.17773 -11.4912 -10.1973 -19.6006 -10.2002l-33.3994 -0.100586c-19.5 0 -30.9004 21.9004 -19.7002 37.8008l368 463.699c4.5 6.40039 11.7998 10.2002 19.5996 10.2002z" />
-    <glyph glyph-name="universal-access" unicode="&#xf29a;" 
-d="M256 400c-114.971 0 -208 -93.0469 -208 -208c0 -114.971 93.0469 -208 208 -208c114.971 0 208 93.0469 208 208c0 114.971 -93.0469 208 -208 208zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z
-M256 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192s-192 85.9609 -192 192s85.9609 192 192 192zM256 340c-19.8818 0 -36 -16.1182 -36 -36s16.1182 -36 36 -36s36 16.1182 36 36s-16.1182 36 -36 36zM373.741 241.977
-c8.59961 2.03027 13.9258 10.6484 11.8965 19.249c-2.03027 8.60156 -10.6494 13.9258 -19.249 11.8955c-96.4912 -22.7832 -124.089 -22.8291 -220.774 0c-8.60254 2.03125 -17.2178 -3.29395 -19.249 -11.8955c-2.03125 -8.60059 3.29492 -17.2178 11.8945 -19.249
-c28.7129 -6.7793 55.5127 -12.749 82.1416 -15.8066c-0.852539 -101.08 -12.3242 -123.08 -25.0371 -155.621c-3.61719 -9.25879 0.957031 -19.6982 10.2168 -23.3145c9.26465 -3.61914 19.7002 0.961914 23.3154 10.2168c8.72754 22.3408 17.0947 40.6982 22.2617 78.5488
-h9.68555c5.1748 -37.9131 13.5566 -56.2412 22.2617 -78.5488c3.61621 -9.25977 14.0547 -13.834 23.3154 -10.2168c9.25977 3.61621 13.834 14.0547 10.2168 23.3145c-12.7305 32.5693 -24.1855 54.5986 -25.0371 155.621c26.6299 3.05859 53.4287 9.02832 82.1406 15.8066
-z" />
-    <glyph glyph-name="blind" unicode="&#xf29d;" horiz-adv-x="384" 
-d="M380.15 -62.8369c-1.20898 -0.733398 -2.62695 -1.15625 -4.14258 -1.15625c-2.89941 0 -5.44336 1.53223 -6.84668 3.84277l-125.33 206.428c5.10547 2.02539 9.53809 5.2959 12.958 9.48438l126.048 -207.607c0.734375 -1.20898 1.15723 -2.62793 1.15723 -4.14355
-c0 -2.89941 -1.53223 -5.44434 -3.84375 -6.84766zM142.803 133.662l62.8145 -153.537c6.69141 -16.3584 -1.14453 -35.042 -17.501 -41.7344c-16.3564 -6.69043 -35.04 1.1416 -41.7334 17.501l-36.1201 88.2852zM96 360c-24.3008 0 -44 19.6992 -44 44s19.6992 44 44 44
-s44 -19.6992 44 -44s-19.6992 -44 -44 -44zM250.837 190.872c8.19336 -10.374 6.44434 -25.4922 -3.96582 -33.708c-9.33984 -7.37402 -24.5635 -7.61914 -33.708 3.96484l-102.3 129.217c-0.733398 0.924805 -1.86328 1.5127 -3.13281 1.5127
-c-2.20801 0 -4.00098 -1.79297 -4.00098 -4.00098c0 -0.9375 0.323242 -1.7998 0.864258 -2.48242l31.4062 -39.8164v-107.196l-65.9258 -181.288c-6.04102 -16.6143 -24.4072 -25.1768 -41.0088 -19.1387c-16.6104 6.04004 -25.1787 24.4004 -19.1387 41.0098
-l54.0732 148.693v140.698l-16 -20.5713v-79.7656c0 -13.0996 -10.4951 -23.748 -23.5361 -23.9961c-13.4531 -0.254883 -24.4639 11.0811 -24.4639 24.5361v95.6943l61.0557 78.5c4.72754 6.0791 11.7979 9.23633 18.9443 9.23926v0.0263672h32v-0.015625
-c7.08691 -0.00390625 14.1035 -3.11719 18.8369 -9.1123z" />
-    <glyph glyph-name="audio-description" unicode="&#xf29e;" 
-d="M162.925 209.291l8.82227 -30.6553h-25.6064l9.04102 30.6523c1.27734 4.4209 2.65137 9.99414 3.87207 15.2451c1.2207 -5.25098 2.59473 -10.8232 3.87109 -15.2422zM329.399 241.39c28.6846 0 46.1748 -16.7656 46.1748 -49.0049
-c0 -32.0977 -16.3994 -49.7754 -46.1748 -49.7754h-14.5234v98.7803h14.5234zM512 336v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48zM245.459 111.861l-57.0967 168
-c-1.6084 4.73242 -6.08887 8.13867 -11.3623 8.13867h-35.8936c-5.27344 0 -9.75391 -3.40625 -11.3623 -8.13867l-57.0967 -168c-2.64453 -7.7832 3.1416 -15.8613 11.3613 -15.8613h29.1328c5.47559 0 10.0977 3.67676 11.5352 8.69336l8.57422 29.9053h51.3672
-l8.79297 -29.9766c1.46094 -4.97949 6.06543 -8.62207 11.5146 -8.62207h29.1719c8.2207 0 14.0059 8.07812 11.3613 15.8613zM430.16 192.386c0 58.9775 -37.9189 95.6143 -98.96 95.6143h-57.3662c-6.62695 0 -12 -5.37305 -12 -12v-168c0 -6.62695 5.37305 -12 12 -12
-h57.3662c61.041 0 98.96 36.9326 98.96 96.3857z" />
-    <glyph glyph-name="phone-volume" unicode="&#xf2a0;" horiz-adv-x="384" 
-d="M97.333 -58.9658c-129.874 129.874 -129.681 340.252 0 469.933c5.69824 5.69824 14.5273 6.63184 21.2627 2.42188l64.8174 -40.5127c4.86035 -3.03711 8.09668 -8.43652 8.09668 -14.5859c0 -2.25098 -0.458984 -4.40137 -1.24805 -6.37207l-32.4082 -81.0205
-c-2.5332 -6.33496 -8.73047 -10.8145 -15.9648 -10.8145c-0.583008 0 -1.13574 0.0380859 -1.7041 0.0947266l-55.8096 5.58008c-21.0508 -58.2607 -20.6123 -122.471 0 -179.515l55.8105 5.58105c0.568359 0.0566406 1.14551 0.0859375 1.72852 0.0859375
-c7.23438 0 13.4072 -4.4707 15.9414 -10.8047l32.4072 -81.0225c0.789062 -1.9707 1.22266 -4.12207 1.22266 -6.37305c0 -6.14844 -3.21094 -11.5469 -8.07129 -14.585l-64.8174 -40.5127c-2.6377 -1.64844 -5.75391 -2.60156 -9.09082 -2.60156
-c-4.74316 0 -9.06152 1.91211 -12.1729 5.02344zM247.126 352.527c11.832 -20.0469 11.832 -45.0088 0 -65.0557c-3.9502 -6.69238 -13.1084 -7.95898 -18.7178 -2.58105l-5.97559 5.72656c-3.91016 3.74805 -4.79297 9.62207 -2.26074 14.4102
-c2.35645 4.46191 3.69141 9.5459 3.69141 14.9395c0 5.39258 -1.33496 10.543 -3.69141 15.0049c-2.5332 4.78809 -1.64941 10.6621 2.26074 14.4102l5.97559 5.72656c5.60938 5.37793 14.7676 4.11133 18.7178 -2.58105zM338.913 443.714
-c60.1396 -71.6035 60.0918 -175.882 0 -247.428c-4.47363 -5.32715 -12.5303 -5.74609 -17.5518 -0.933594l-5.79785 5.55762c-4.56055 4.37109 -4.97754 11.5293 -0.930664 16.3789c49.6875 59.5381 49.6465 145.933 0 205.422
-c-4.04688 4.84961 -3.63086 12.0078 0.930664 16.3789l5.79785 5.55762c5.02148 4.8125 13.0781 4.39355 17.5518 -0.933594zM292.941 398.773c36.0498 -46.3223 36.1074 -111.149 0 -157.547c-4.39062 -5.64062 -12.6973 -6.25098 -17.8564 -1.30371l-5.81836 5.5791
-c-4.39941 4.21875 -4.99805 11.0947 -1.28418 15.9307c26.5352 34.5645 26.5332 82.5723 0 117.135c-3.71387 4.83594 -3.11523 11.7109 1.28418 15.9307l5.81836 5.5791c5.15918 4.94727 13.4658 4.33691 17.8564 -1.30371z" />
-    <glyph glyph-name="braille" unicode="&#xf2a1;" horiz-adv-x="640" 
-d="M128 192c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM64 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM64 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64
-s-64 28.6543 -64 64s28.6543 64 64 64zM224 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 416
-c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM448 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM448 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32
-s-32 14.3271 -32 32s14.3271 32 32 32zM448 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM608 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 64
-c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 384c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32z" />
-    <glyph glyph-name="assistive-listening-systems" unicode="&#xf2a2;" 
-d="M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176
-c0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622
-c0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM160 128c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM32 0
-c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM512 187.993c0 -15.4639 -12.5371 -28 -28.001 -28s-28 12.5361 -28 28c0 1.12695 -0.00683594 2.24512 -0.0332031 3.36328l-0.00292969 0.1875
-c-1.4668 91.4404 -60.1709 172.599 -146.077 201.953c-14.6318 5.00098 -22.4414 20.917 -17.4414 35.5498c5.00098 14.6328 20.917 22.4404 35.5498 17.4424c108.163 -36.959 182.082 -139.015 183.961 -253.965c0.0332031 -1.50684 0.0449219 -3.01367 0.0449219 -4.53125
-zM152.971 8.9707l-33.9404 -33.9404l-80 80l33.9404 33.9404z" />
-    <glyph glyph-name="american-sign-language-interpreting" unicode="&#xf2a3;" horiz-adv-x="640" 
-d="M290.547 258.961c-20.2949 10.1494 -44.1465 11.1992 -64.7393 3.88965c42.6064 0 71.208 -20.4746 85.5781 -50.5752c8.57617 -17.8994 -5.14746 -38.0713 -23.6172 -38.0713c18.4297 0 32.2119 -20.1357 23.6172 -38.0713
-c-14.7246 -30.8457 -46.123 -50.8535 -80.2979 -50.8535c-0.556641 0 -94.4707 8.61426 -94.4707 8.61426l-66.4062 -33.3467c-9.38379 -4.69336 -19.8145 -0.378906 -23.8945 7.78125l-44.4561 88.9248c-4.16699 8.61523 -1.11133 18.8975 6.94531 23.6211l58.0723 33.0693
-l41.1221 74.1953c6.38965 57.2451 34.7314 109.768 79.7432 146.727c11.3906 9.44824 28.3408 7.78125 37.5098 -3.61328c9.44629 -11.3936 7.78027 -28.0674 -3.6123 -37.5156c-12.5029 -10.5596 -23.6172 -22.5098 -32.5088 -35.5703
-c21.6719 14.7285 46.6787 24.7324 74.1865 28.0674c14.7246 1.94434 28.0625 -8.33594 29.7295 -23.0654c1.94531 -14.7275 -8.33594 -28.0674 -23.0615 -29.7344c-16.1162 -1.94434 -31.1201 -7.50293 -44.1787 -15.2832c26.1143 5.71289 58.7119 3.1377 88.0791 -11.1152
-c13.3359 -6.66895 18.8936 -22.5088 12.2246 -35.8486c-6.38965 -13.0596 -22.5039 -18.6162 -35.5645 -12.2256zM263.318 189.489c-6.1123 12.5049 -18.3379 20.2861 -32.2314 20.2861h-0.107422c-19.5703 0 -35.46 -15.8896 -35.46 -35.46
-c0 -0.0380859 0.00195312 -0.0732422 0.00292969 -0.110352c0 -21.4277 17.8076 -35.5703 35.5645 -35.5703c13.8936 0 26.1191 7.78125 32.2314 20.2861c4.44531 9.44922 13.6133 15.0059 23.3389 15.2842c-9.72559 0.277344 -18.8936 5.83496 -23.3389 15.2842z
-M638.139 226.726c4.16797 -8.61426 1.11133 -18.8965 -6.94531 -23.6201l-58.0713 -33.0693l-41.1221 -74.1963c-6.38965 -57.2451 -34.7314 -109.767 -79.7432 -146.726c-10.9316 -9.1123 -27.7988 -8.14453 -37.5098 3.6123
-c-9.44629 11.3945 -7.78027 28.0674 3.61328 37.5166c12.5029 10.5586 23.6162 22.5088 32.5078 35.5703c-21.6719 -14.7295 -46.6787 -24.7324 -74.1865 -28.0674c-10.0205 -2.50586 -27.5518 5.64258 -29.7295 23.0645c-1.94531 14.7285 8.33594 28.0674 23.0615 29.7344
-c16.1162 1.94629 31.1201 7.50293 44.1787 15.2842c-26.1143 -5.71289 -58.7119 -3.1377 -88.0791 11.1152c-13.3359 6.66895 -18.8936 22.5088 -12.2246 35.8477c6.38965 13.0605 22.5049 18.6191 35.5654 12.2266c20.2949 -10.1484 44.1465 -11.1982 64.7393 -3.88965
-c-42.6064 0 -71.208 20.4746 -85.5781 50.5762c-8.57617 17.8984 5.14746 38.0713 23.6172 38.0713c-18.4297 0 -32.2109 20.1357 -23.6172 38.0703c14.0332 29.3965 44.0391 50.8877 81.9658 50.8545l92.8027 -8.61523l66.4062 33.3467
-c9.4082 4.7041 19.8281 0.354492 23.8936 -7.78027zM408.912 245.344c-13.8936 0 -26.1191 -7.78027 -32.2314 -20.2861c-4.44531 -9.44824 -13.6133 -15.0059 -23.3389 -15.2832c9.72559 -0.27832 18.8936 -5.83594 23.3389 -15.2842
-c6.1123 -12.5049 18.3379 -20.2861 32.2314 -20.2861h0.107422c19.5703 0 35.46 15.8887 35.46 35.46c0 0.0371094 -0.00195312 0.0722656 -0.00292969 0.110352c0 21.4287 -17.8076 35.5693 -35.5645 35.5693z" />
-    <glyph glyph-name="deaf" unicode="&#xf2a4;" 
-d="M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176
-c0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622
-c0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM508.485 416.201c4.68652 -4.68652 4.68652 -12.2842 0 -16.9727l-87.0303 -87.0283
-c-4.68652 -4.68652 -12.2842 -4.68652 -16.9697 0l-28.2852 28.2852c-4.68652 4.68652 -4.68652 12.2842 0 16.9707l87.0283 87.0293c4.6875 4.68555 12.2842 4.68555 16.9717 0zM168.97 133.255l28.2861 -28.2842c4.68652 -4.68652 4.68652 -12.2852 0 -16.9707
-l-148.484 -148.485c-4.6875 -4.68555 -12.2842 -4.68555 -16.9717 0l-28.2852 28.2842c-4.68555 4.6875 -4.68555 12.2852 0 16.9707l148.485 148.485c4.68555 4.68652 12.2842 4.68652 16.9697 0z" />
-    <glyph glyph-name="sign-language" unicode="&#xf2a7;" horiz-adv-x="448" 
-d="M91.4336 -35.9873c-0.306641 16.0186 13.1094 29.1289 29.1309 29.1289h62.293v5.71484h-125.864c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5234 12.9717 28.0146 28.5645 28.0146h126.43v5.71387h-153.722
-c-16.0205 0 -29.4365 13.1113 -29.1299 29.1289c0.296875 15.5225 12.9727 28.0137 28.5664 28.0137h154.286v5.71387h-125.151c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5215 12.9727 28.0127 28.5654 28.0127h168.566l-31.085 22.6064
-c-12.7617 9.28027 -15.583 27.1484 -6.30176 39.9121c9.28027 12.7607 27.1494 15.5811 39.9121 6.30176l123.36 -89.7148c8.57324 -6.23535 14.1201 -16.3271 14.1201 -27.7285v-141.136c0 -15.9102 -10.9463 -29.7305 -26.4326 -33.374l-80.4717 -18.9346
-c-10.1113 -2.37891 -20.5771 -3.64551 -31.4102 -3.64551h-107.4c-15.5928 0.000976562 -28.2686 12.4922 -28.5664 28.0137zM164.683 189.714l-36.3711 46.71c-9.5791 12.3027 -7.51172 29.9795 4.55371 39.75c12.4502 10.083 31.0371 7.55273 40.8799 -5.08789
-l13.0039 -16.7002c-17.1426 -15.6484 -15.4092 -43.0244 3.16992 -56.5361l11.1875 -8.13574h-36.4238zM447.981 191.817c0.0117188 -0.379883 0.0439453 -0.729492 0.0439453 -1.1123c0 -10.9961 -5.1875 -20.7891 -13.2461 -27.0654l-61.0645 -47.5488v16.999
-c0 13.4834 -6.51074 26.2686 -17.415 34.1982l-123.359 89.7139c-12.6357 9.18945 -29.1934 9.16113 -41.6904 0.904297l-52.0527 66.8486c-9.84375 12.6416 -7.74121 31.2822 5.08594 40.8809c12.4297 9.30273 30.0732 6.97559 39.6523 -5.32812l77.6758 -99.7539
-l4.50879 3.51172l-94.4434 121.287c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8818c12.4307 9.30176 30.0732 6.97461 39.6533 -5.32812l94.79 -121.734l4.50879 3.51074l-76.8887 98.7451c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8809
-c12.4297 9.30273 30.0732 6.97559 39.6533 -5.32715l103.562 -133.001l-1.26172 38.4141c-0.518555 15.7715 11.8457 28.9756 27.6191 29.4932c15.7705 0.517578 28.9746 -11.8477 29.4922 -27.6191z" />
-    <glyph glyph-name="low-vision" unicode="&#xf2a8;" horiz-adv-x="576" 
-d="M569.344 216.369c4.20996 -7.13086 6.62598 -15.5469 6.62598 -24.4199c0 -8.87402 -2.41699 -17.1875 -6.62695 -24.3193c-31.9746 -54.2607 -79.6484 -98.3232 -136.81 -126.301l0.00683594 -0.00878906l43.1201 -58.377
-c7.60156 -10.8594 4.95996 -25.8252 -5.90039 -33.4268l-13.1133 -9.17773c-10.8594 -7.59863 -25.8223 -4.95801 -33.4238 5.90039l-251.836 356.544c-13.5234 -6.16211 -26.5166 -13.3994 -38.7764 -21.5635l189.979 -271.399
-c-11.4863 -1.21191 -22.4707 -1.83301 -34.2754 -1.83301c-15.1465 0 -30.0566 1.02344 -44.6641 3.00293l-40.6309 58.04h-0.00976562l-119.399 170.58c-10.457 -11.1943 -19.8271 -23.0791 -28.2939 -35.9121l124.19 -177.417
-c-73.1172 25.4863 -134.358 76.0166 -172.858 141.349c-8.96484 15.2109 -8.76562 33.8643 0 48.7393c0.0107422 0.0166016 0.0234375 0.0332031 0.0332031 0.0498047c33.5459 56.8984 82.7676 99.8506 136.79 126.242l-43.1309 58.3945
-c-7.60156 10.8604 -4.95996 25.8252 5.90039 33.4268l13.1143 9.17773c10.8584 7.59961 25.8213 4.95801 33.4229 -5.90039l52.7705 -72.1689c26.3496 6.79004 53.9834 10.4092 82.4512 10.4092c119.81 0 224.96 -63.9492 281.344 -159.631zM390.026 102.06
-c21.1406 23.9658 33.9736 55.4365 33.9736 89.9404c0 75.1738 -60.8379 136 -136 136c-17.5117 0 -34.2422 -3.30566 -49.6084 -9.32324l19.0684 -27.2363c25.9883 7.96289 54.7598 5.56836 79.5098 -7.68066h-0.0292969c-23.6504 0 -42.8203 -19.1699 -42.8203 -42.8193
-c0 -23.4717 18.9922 -42.8203 42.8203 -42.8203c23.6494 0 42.8193 19.1699 42.8193 42.8203v0.0292969c18.9111 -35.3271 15.8818 -79.1123 -8.7998 -111.68z" />
-    <glyph glyph-name="handshake" unicode="&#xf2b5;" horiz-adv-x="640" 
-d="M434.7 384c8.5 0 16.7002 -3.40039 22.5996 -9.40039l54.6006 -54.5996v-193.5c-2.40039 2.7002 -5 5.2998 -7.90039 7.7002l-145.6 118.2l26.0996 23.8994c6.5 6 7 16.1006 1 22.6006c-5.90039 6.5 -16.0996 6.89941 -22.5996 1l-79.9004 -73.2002
-c-0.0996094 -0.100586 -0.299805 -0.100586 -0.400391 -0.200195c-16.6992 -14.9004 -43.3994 -11.2002 -56.0996 2.7002c-14.2002 15.5 -14.5 40.3994 2.09961 56c0.100586 0.0996094 0.200195 0.299805 0.300781 0.399414l98.2998 90
-c5.89941 5.40039 13.5996 8.40039 21.5996 8.40039h85.9004zM544 319.8h96v-255.899h-64c-17.7002 0 -32 14.2998 -32 32v223.899zM592 95.9004c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM0 64v255.8h96
-v-223.8c0 -17.7002 -14.2998 -32 -32 -32h-64zM48 127.9c-8.7998 0 -16 -7.10059 -16 -16c0 -8.80078 7.2002 -16 16 -16s16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16zM483.9 109.3c13.6992 -11.2002 15.7998 -31.2998 4.59961 -45.0996l-9.5 -11.7002
-c-11.0996 -13.7998 -31.2998 -15.7998 -45 -4.7002l-5.40039 4.40039l-31.3994 -38.6006c-12.9004 -15.8994 -36.4004 -18.3994 -52.2998 -5.39941l-17.9004 15.5l-0.200195 -0.200195c-22.2998 -27.4004 -62.5996 -31.5996 -90 -9.2998l-90.5 81.8994h-18.2998v223.9
-l54.7002 54.5996c6 6 14.0996 9.40039 22.5996 9.40039h83.7998l-81.7998 -74.9004c-29.2002 -26.7998 -31.2998 -72.2998 -4.39941 -101.699c26.5 -28.9004 72 -31.5 101.699 -4.40039l30 27.5z" />
-    <glyph glyph-name="envelope-open" unicode="&#xf2b6;" 
-d="M512 -16c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v263.276c0 15.3379 7.17383 28.9863 18.3867 37.7754c24.9131 19.5293 45.501 35.3652 164.2 121.512c16.8252 12.2666 50.21 41.7832 73.4131 41.4336
-c23.1982 0.353516 56.5957 -29.1719 73.4131 -41.4326c118.687 -86.1377 139.303 -101.995 164.2 -121.513c11.2129 -8.78906 18.3867 -22.4375 18.3867 -37.7754v-263.276zM446.334 180.605c-2.5625 3.72754 -7.7002 4.59473 -11.3389 1.90625
-c-22.8447 -16.873 -55.4619 -40.7051 -105.582 -77.0791c-16.8252 -12.2656 -50.21 -41.7803 -73.4131 -41.4297c-23.2109 -0.34375 -56.5586 29.1436 -73.4131 41.4297c-50.1143 36.3701 -82.7344 60.2041 -105.582 77.0791
-c-3.63867 2.68848 -8.77637 1.82129 -11.3389 -1.90625l-9.07227 -13.1963c-0.884766 -1.28711 -1.40332 -2.8457 -1.40332 -4.52539c0 -2.63867 1.26953 -4.98438 3.24219 -6.44141c22.8877 -16.8994 55.4541 -40.6904 105.304 -76.8682
-c20.2734 -14.7812 56.5234 -47.8135 92.2637 -47.5732c35.7236 -0.242188 71.9609 32.7715 92.2627 47.5732c49.8506 36.1787 82.418 59.9697 105.304 76.8682c1.97266 1.45703 3.25391 3.79883 3.25391 6.4375c0 1.67969 -0.530273 3.24219 -1.41504 4.5293z" />
-    <glyph glyph-name="address-book" unicode="&#xf2b9;" horiz-adv-x="448" 
-d="M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48
-h320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM208 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM320 83.2002v19.2002
-c0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199
-c12.4004 0 22.4004 8.59961 22.4004 19.2002z" />
-    <glyph glyph-name="address-card" unicode="&#xf2bb;" horiz-adv-x="576" 
-d="M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM176 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM288 83.2002v19.2002
-c0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199
-c12.4004 0 22.4004 8.59961 22.4004 19.2002zM512 136v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 200v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16
-c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 264v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z" />
-    <glyph glyph-name="user-circle" unicode="&#xf2bd;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 344c-48.5996 0 -88 -39.4004 -88 -88s39.4004 -88 88 -88s88 39.4004 88 88s-39.4004 88 -88 88zM248 0c58.7002 0 111.3 26.5996 146.5 68.2002
-c-18.7998 35.3994 -55.5996 59.7998 -98.5 59.7998c-2.40039 0 -4.7998 -0.400391 -7.09961 -1.09961c-12.9004 -4.2002 -26.6006 -6.90039 -40.9004 -6.90039s-27.9004 2.7002 -40.9004 6.90039c-2.2998 0.699219 -4.69922 1.09961 -7.09961 1.09961
-c-42.9004 0 -79.7002 -24.4004 -98.5 -59.7998c35.2002 -41.6006 87.7998 -68.2002 146.5 -68.2002z" />
-    <glyph glyph-name="id-badge" unicode="&#xf2c1;" horiz-adv-x="384" 
-d="M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM144 416c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-96zM192 288
-c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 51.2002v19.2002c0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5
-c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199c12.4004 0 22.4004 8.59961 22.4004 19.2002z" />
-    <glyph glyph-name="id-card" unicode="&#xf2c2;" horiz-adv-x="576" 
-d="M528 416c26.5 0 48 -21.5 48 -48v-16h-576v16c0 26.5 21.5 48 48 48h480zM0 16v304h576v-304c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM352 248v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144
-c-4.40039 0 -8 -3.59961 -8 -8zM352 184v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM352 120v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16
-c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM176 256c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM67.0996 51.7998c-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6
-c10.4004 0 18.7998 9.90039 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.4004 0 -52.5 -18.5 -60.9004 -44.2002z" />
-    <glyph glyph-name="thermometer-full" unicode="&#xf2c7;" horiz-adv-x="256" 
-d="M224 352v-203.347c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3018 -128 -128 -128c-0.298828 0 -0.610352 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1973 12.2227 61.5771 31.998 83.9863
-v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96zM128 -16c44.1123 0 80 35.8877 80 80c0 34.3379 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7334 -14.4277 -31.8262 -32.0996 -31.999 -66.0801
-c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199zM192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v232.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-232.583c19.124 -11.0684 32 -31.7324 32 -55.417z" />
-    <glyph glyph-name="thermometer-three-quarters" unicode="&#xf2c8;" horiz-adv-x="256" 
-d="M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v168.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-168.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533
-c0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z
-M208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312
-c44.1123 0 80 35.8877 80 80z" />
-    <glyph glyph-name="thermometer-half" unicode="&#xf2c9;" horiz-adv-x="256" 
-d="M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v104.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-104.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533
-c0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z
-M208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312
-c44.1123 0 80 35.8877 80 80z" />
-    <glyph glyph-name="thermometer-quarter" unicode="&#xf2ca;" horiz-adv-x="256" 
-d="M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v40.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-40.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533
-c0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z
-M208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312
-c44.1123 0 80 35.8877 80 80z" />
-    <glyph glyph-name="thermometer-empty" unicode="&#xf2cb;" horiz-adv-x="256" 
-d="M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969
-c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347zM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48
-s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312c44.1123 0 80 35.8877 80 80z" />
-    <glyph glyph-name="shower" unicode="&#xf2cc;" 
-d="M304 128c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM336 224c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM368 160c-8.83105 0 -16 7.16895 -16 16s7.16895 16 16 16
-s16 -7.16895 16 -16s-7.16895 -16 -16 -16zM336 128c-8.83105 0 -16 7.16895 -16 16s7.16895 16 16 16s16 -7.16895 16 -16s-7.16895 -16 -16 -16zM304 192c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM432 224
-c-8.83105 0 -16 7.16895 -16 16s7.16895 16 16 16s16 -7.16895 16 -16s-7.16895 -16 -16 -16zM384 208c0 8.83105 7.16895 16 16 16s16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16zM368 256c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16
-s-16 7.16895 -16 16s7.16895 16 16 16zM464 224c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM496 256c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM432 192
-c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM400 160c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM336 96c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16
-s-16 7.16895 -16 16s7.16895 16 16 16zM304 64c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM368 128c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM389.65 346.35
-c2.89648 -2.89551 4.68945 -6.90039 4.68945 -11.3164s-1.79297 -8.41699 -4.68945 -11.3135l-169.381 -169.37c-2.89551 -2.89648 -6.90039 -4.68945 -11.3164 -4.68945s-8.41699 1.79297 -11.3135 4.68945l-11.2998 11.3105
-c-2.89355 2.89551 -4.68457 6.89844 -4.68457 11.3125c0 4.41309 1.79102 8.41113 4.68457 11.3076l5.66016 5.66992c-19.7871 20.0811 -31.9951 47.6602 -32 78.0498c0 19.2402 5.2998 37.0801 13.9297 52.8604l-10 10c-10.5723 10.6055 -25.1416 17.167 -41.2861 17.167
-c-2.58984 0 -5.1416 -0.169922 -7.64355 -0.49707c-30 -3.73047 -51 -31.7803 -51 -61.9307v-305.6c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v303.15c0 67.9395 55.4902 129.35 123.44 128.85
-c33.4453 -0.166992 63.7471 -13.835 85.6592 -35.8496l10 -10c15.8203 8.5498 33.6602 13.8496 52.9004 13.8496c30.3916 -0.000976562 57.9707 -12.21 78.0498 -32l5.66992 5.66016c2.89648 2.89648 6.90137 4.68945 11.3174 4.68945s8.41699 -1.79297 11.3125 -4.68945z
-" />
-    <glyph glyph-name="bath" unicode="&#xf2cd;" 
-d="M32 64v48h448v-48c-0.0576172 -28.2656 -12.3916 -53.6514 -32 -71.0898v-40.9102c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v16h-256v-16c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v40.9102
-c-19.6084 17.4385 -31.9424 42.8242 -32 71.0898zM496 192c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-480c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h16v186.75c0 38.2197 31.0391 69.2656 69.2598 69.2656
-c19.1113 0 36.4248 -7.75879 48.96 -20.2959l19.2607 -19.2695c29.8994 13.1299 59.1094 7.60938 79.7295 -8.62012l0.169922 0.169922c2.89551 2.89355 6.89941 4.68457 11.3125 4.68457s8.41211 -1.79102 11.3076 -4.68457l11.3096 -11.3096
-c2.89746 -2.89648 4.69043 -6.90137 4.69043 -11.3174s-1.79297 -8.41699 -4.69043 -11.3135l-105.369 -105.369c-2.89648 -2.89746 -6.90137 -4.69043 -11.3174 -4.69043s-8.41699 1.79297 -11.3135 4.69043l-11.3096 11.3096
-c-2.88477 2.89453 -4.66992 6.8916 -4.66992 11.2969c0 4.40625 1.78516 8.39844 4.66992 11.293l0.169922 0.169922c-16.2295 20.6201 -21.75 49.8506 -8.62012 79.7305l-19.2695 19.2598c-3.84766 3.84082 -9.16016 6.21289 -15.0205 6.21289
-c-11.7178 0 -21.2344 -9.50098 -21.2598 -21.2129v-186.75h416z" />
-    <glyph glyph-name="podcast" unicode="&#xf2ce;" horiz-adv-x="448" 
-d="M267.429 -40.5635c-5.14258 -19.0098 -24.5703 -23.4365 -43.4287 -23.4365c-18.8574 0 -38.2861 4.42676 -43.4277 23.4365c-7.64551 28.4297 -20.5723 99.665 -20.5723 132.813c0 35.1562 31.1416 43.75 64 43.75s64 -8.59375 64 -43.75
-c0 -32.9492 -12.8711 -104.179 -20.5713 -132.813zM156.867 159.446c2.6748 -2.61914 2.39941 -6.98535 -0.628906 -9.18555c-9.3125 -6.76465 -16.4609 -15.3418 -21.2354 -25.3623c-1.74219 -3.65723 -6.5 -4.6582 -9.45312 -1.8877
-c-28.0176 26.2891 -45.5498 63.6279 -45.5498 104.989c0 80.7852 66.8691 146.247 148.163 143.941c76.1982 -2.16113 137.938 -64.1631 139.793 -140.369c1.04199 -42.7822 -16.6846 -81.5225 -45.5107 -108.565c-2.95215 -2.76855 -7.70801 -1.7627 -9.44922 1.8916
-c-4.77441 10.0195 -11.9219 18.5977 -21.2344 25.3623c-3.02832 2.20117 -3.30273 6.56738 -0.62793 9.1875c17.8018 17.4355 28.8662 41.7246 28.8662 68.5518c0 54.1934 -45.1377 98.042 -99.793 95.9258c-49.7295 -1.9248 -90.0703 -42.1572 -92.124 -91.8809
-c-1.17383 -28.4258 10.0908 -54.291 28.7842 -72.5986zM224 448c123.815 0 224 -100.205 224 -224c0 -90.1865 -52.7734 -165.727 -125.739 -201.407c-4.33203 -2.11914 -9.2666 1.54297 -8.53516 6.31055c2.55566 16.6416 4.625 33.1924 5.62402 47.2295
-c48.4922 31.377 80.6504 85.9355 80.6504 147.867c0 97.2031 -79.207 176.253 -176.468 175.999c-96.2393 -0.250977 -174.938 -78.6621 -175.529 -174.899c-0.376953 -61.3311 30.7871 -115.541 78.1875 -147.347c1.52832 -1.02637 2.53125 -2.67578 2.67773 -4.51172
-c1.06348 -13.3936 3.02344 -28.8271 5.40625 -44.3389c0.731445 -4.7666 -4.20215 -8.42871 -8.53516 -6.31055c-73.1377 35.7607 -125.739 111.416 -125.739 201.408c0 123.815 100.204 224 224 224zM224 288c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64
-s-64 28.6543 -64 64s28.6543 64 64 64z" />
-    <glyph glyph-name="window-maximize" unicode="&#xf2d0;" 
-d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM448 256v84c0 6.59961 -5.40039 12 -12 12h-360c-6.59961 0 -12 -5.40039 -12 -12v-84h384z" />
-    <glyph glyph-name="window-minimize" unicode="&#xf2d1;" 
-d="M464 96c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48h416z" />
-    <glyph glyph-name="window-restore" unicode="&#xf2d2;" 
-d="M512 400v-288c0 -26.5 -21.5 -48 -48 -48h-48v208c0 44.0996 -35.9004 80 -80 80h-208v48c0 26.5 21.5 48 48 48h288c26.5 0 48 -21.5 48 -48zM384 272v-288c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h288
-c26.5 0 48 -21.5 48 -48zM316 244c0 6.59961 -5.40039 12 -12 12h-228c-6.59961 0 -12 -5.40039 -12 -12v-52h252v52z" />
-    <glyph glyph-name="microchip" unicode="&#xf2db;" 
-d="M416 400v-416c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h224c26.5098 0 48 -21.4902 48 -48zM512 342v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42
-c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 246v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 150v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6
-c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 54v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM30 72h42
-v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 168h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6
-c0 3.31152 2.68848 6 6 6zM30 264h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 360h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12
-c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6z" />
-    <glyph glyph-name="snowflake" unicode="&#xf2dc;" horiz-adv-x="448" 
-d="M440.3 102.8c7.40039 -4.2002 9.90039 -13.7002 5.60059 -21l-15.5 -26.7998c-4.30078 -7.40039 -13.7002 -10 -21.1006 -5.7002l-33.7998 19.5l7 -26c2.2002 -8.2002 -2.7002 -16.7002 -10.9004 -18.8994l-14.8994 -4
-c-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-19 70.7998l-62.7998 36.2002v-77.5l53.4004 -53.7002c6.19922 -6.19922 6.19922 -16.3994 0 -22.5996l-11.3008 -11.2998c-6.19922 -6.2002 -16.3994 -6.2002 -22.5996 0l-19.7002 19.7002v-40.4004
-c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v40.2998l-19.7002 -19.7002c-6.19922 -6.19922 -16.3994 -6.19922 -22.5996 0l-11.2998 11.3008c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l53.7002 53.7002v77.5l-62.8008 -36.2002l-19 -70.7998
-c-2.19922 -8.2002 -10.6992 -13.1006 -18.8994 -10.9004l-14.9004 4c-8.2002 2.2002 -13.0996 10.7002 -10.8994 18.9004l7 26l-33.8008 -19.5c-7.39941 -4.2002 -16.7998 -1.7002 -21.0996 5.7002l-15.5 26.7998c-4.2002 7.39941 -1.7002 16.7998 5.7002 21.0996
-l33.7998 19.6006l-26 7c-8.2002 2.19922 -13.0996 10.6992 -10.9004 18.8994l4 14.9004c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994l70.7998 -19l63.7998 36.9004l-63.7998 36.9004l-70.7998 -19c-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-4 14.9004
-c-2.19922 8.2998 2.7002 16.7998 11 19l26 7l-33.7998 19.5c-7.39941 4.2998 -10 13.7002 -5.7002 21.0996l15.5 26.7002c4.30078 7.40039 13.7002 10 21.1006 5.7002l33.7998 -19.5l-7 26c-2.2002 8.2002 2.7002 16.7002 10.9004 18.8994l14.8994 4
-c8.2002 2.2002 16.7002 -2.69922 18.9004 -10.8994l19 -70.7998l62.7998 -36.2002v77.5l-53.7002 53.7002c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l11.4004 11.2998c6.2002 6.2002 16.3994 6.2002 22.5996 0l19.7002 -19.7002v40.4004c0 8.7998 7.2002 16 16 16h32
-c8.7998 0 16 -7.2002 16 -16v-40.4004l19.7998 19.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l11.2998 -11.2998c6.2002 -6.2002 6.2002 -16.4004 0 -22.5996l-53.7002 -53.7002v-77.5l62.7998 36.2002l19 70.7998c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994
-l14.8994 -4c8.2002 -2.19922 13.1006 -10.6992 10.9004 -18.8994l-7 -26l33.7998 19.5c7.40039 4.2002 16.7998 1.7002 21.1006 -5.7002l15.5 -26.7998c4.19922 -7.40039 1.69922 -16.7998 -5.7002 -21.1006l-33.7998 -19.5l26 -7
-c8.19922 -2.19922 13.0996 -10.6992 10.8994 -18.8994l-4 -14.9004c-2.2002 -8.2002 -10.7002 -13.0996 -18.8994 -10.8994l-70.8008 19l-63.7998 -36.9004l63.9004 -37l70.7998 19c8.2002 2.2002 16.7002 -2.7002 18.9004 -10.9004l4 -14.8994
-c2.19922 -8.2002 -2.7002 -16.7002 -10.9004 -18.9004l-26 -7z" />
-    <glyph glyph-name="utensil-spoon" unicode="&#xf2e5;" 
-d="M480.1 416.1c55.1006 -55 34.5 -164.899 -28.5 -227.8c-49.2998 -49.2998 -110 -55.0996 -160.399 -28.7998l-192.4 -214.4c-10.3994 -11.5996 -28.5 -12.0996 -39.5 -1.09961l-51.2998 51.2998c-11.0996 11 -10.5996 29 1 39.5l214.5 192.4
-c-26.2998 50.3994 -20.5 111.1 28.7998 160.399c62.9004 63 172.8 83.6006 227.8 28.5z" />
-    <glyph glyph-name="utensils" unicode="&#xf2e7;" horiz-adv-x="416" 
-d="M207.9 432.8c0.799805 -4.7002 16.0996 -94.5 16.0996 -128.8c0 -52.2998 -27.7998 -89.5996 -68.9004 -104.6l12.9004 -238.101c0.700195 -13.7002 -10.2002 -25.2998 -24 -25.2998h-64c-13.7002 0 -24.7002 11.5 -24 25.2998l12.9004 238.101
-c-41.2002 15 -68.9004 52.3994 -68.9004 104.6c0 34.4004 15.2998 124.1 16.0996 128.8c3.2002 20.2998 45.3008 20.6006 47.9004 -1.09961v-141.2c1.2998 -3.40039 15.0996 -3.2002 16 0c1.40039 25.2998 7.90039 139.2 8 141.8c3.2998 20.7998 44.7002 20.7998 47.9004 0
-c0.199219 -2.7002 6.59961 -116.5 8 -141.8c0.899414 -3.2002 14.7998 -3.40039 16 0v141.2c2.59961 21.5996 44.7998 21.3994 48 1.09961zM327.1 147.1c-156.5 122.4 -17.5996 300.9 64.9004 300.9c13.2998 0 24 -10.7998 24 -24v-464c0 -13.2998 -10.7002 -24 -24 -24h-56
-c-14 0 -25.0996 12 -23.9004 26z" />
-    <glyph glyph-name="undo-alt" unicode="&#xf2ea;" 
-d="M255.545 440c136.809 0.245117 248.456 -111.193 248.455 -248.002c-0.000976562 -136.965 -111.034 -247.998 -248 -247.998c-63.9258 0 -122.202 24.1865 -166.178 63.9082c-5.11328 4.61816 -5.35449 12.5605 -0.482422 17.4326l39.6621 39.6621
-c4.46191 4.46094 11.625 4.71387 16.3682 0.552734c30.6328 -26.8779 69.5029 -41.5557 110.63 -41.5557c93.8164 0 167.236 75.9912 167.994 166.552c0.798828 95.4648 -77.0859 170.24 -169.484 169.442c-42.4287 -0.366211 -82.3662 -16.374 -113.229 -45.2734
-l41.75 -41.75c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-134.059c-13.2549 0 -24 10.7451 -24 24v134.059c0 21.3828 25.8506 32.0908 40.9707 16.9707l35.7139 -35.7139c44.4229 42.4512 104.592 68.5654 170.86 68.6846z" />
-    <glyph glyph-name="trash-alt" unicode="&#xf2ed;" horiz-adv-x="448" 
-d="M32 -16v336h384v-336c0 -26.4922 -21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48zM304 240v-224c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16v224c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM208 240v-224c0 -8.83105 7.16895 -16 16 -16
-s16 7.16895 16 16v224c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM112 240v-224c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16v224c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM432 416c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375
-c9.41113 0 17.5645 -5.42871 21.4961 -13.3232l9.40039 -18.7002h120z" />
-    <glyph glyph-name="sync-alt" unicode="&#xf2f1;" 
-d="M370.72 314.72c-31.2617 29.2725 -71.832 45.3184 -114.872 45.2803c-77.458 -0.0683594 -144.328 -53.1777 -162.791 -126.85c-1.34375 -5.36328 -6.12207 -9.15039 -11.6504 -9.15039h-57.3037c-7.49707 0 -13.1934 6.80664 -11.8066 14.1758
-c21.6367 114.9 122.518 201.824 243.704 201.824c66.4482 0 126.791 -26.1357 171.315 -68.6846l35.7148 35.7148c15.1191 15.1191 40.9697 4.41113 40.9697 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707z
-M32 152h134.059c21.3828 0 32.0908 -25.8506 16.9717 -40.9707l-41.75 -41.75c31.2617 -29.2734 71.835 -45.3193 114.876 -45.2803c77.418 0.0703125 144.314 53.1436 162.787 126.849c1.34375 5.36328 6.12207 9.15039 11.6504 9.15039h57.3047
-c7.49805 0 13.1934 -6.80664 11.8066 -14.1758c-21.6377 -114.898 -122.519 -201.822 -243.705 -201.822c-66.4482 0 -126.791 26.1357 -171.315 68.6846l-35.7148 -35.7148c-15.1191 -15.1191 -40.9697 -4.41113 -40.9697 16.9717v134.059c0 13.2549 10.7451 24 24 24z" />
-    <glyph glyph-name="stopwatch" unicode="&#xf2f2;" horiz-adv-x="448" 
-d="M432 144c0 -114.9 -93.0996 -208 -208 -208s-208 93.0996 -208 208c0 104 76.2998 190.2 176 205.5v34.5h-28c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h120c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-28v-34.5
-c37.5 -5.7998 71.7002 -21.5996 99.7002 -44.5996l27.5 27.5c4.7002 4.69922 12.2998 4.69922 17 0l28.2998 -28.3008c4.7002 -4.69922 4.7002 -12.2998 0 -17l-29.4004 -29.3994l-0.599609 -0.600586c21.2002 -32.3994 33.5 -71.2998 33.5 -113.1zM256 108v151.5
-c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-151.5c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="sign-out-alt" unicode="&#xf2f5;" 
-d="M497 175l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.4004 25.9004 32 41 17l168 -168c9.2998 -9.40039 9.2998 -24.5996 0 -34zM192 12c0 -6.59961 -5.40039 -12 -12 -12h-84
-c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84c-17.7002 0 -32 -14.2998 -32 -32v-192c0 -17.7002 14.2998 -32 32 -32h84c6.59961 0 12 -5.40039 12 -12v-40z" />
-    <glyph glyph-name="sign-in-alt" unicode="&#xf2f6;" 
-d="M416 0h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c17.7002 0 32 14.2998 32 32v192c0 17.7002 -14.2998 32 -32 32h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c53 0 96 -43 96 -96v-192c0 -53 -43 -96 -96 -96z
-M369 201c9.2998 -9.40039 9.2998 -24.5996 0 -34l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.5 26 32 41 17z" />
-    <glyph glyph-name="redo-alt" unicode="&#xf2f9;" 
-d="M256.455 440c66.2686 -0.119141 126.437 -26.2334 170.859 -68.6846l35.7148 35.7148c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707l41.75 41.75
-c-30.8633 28.8994 -70.8008 44.9072 -113.229 45.2734c-92.3984 0.797852 -170.283 -73.9775 -169.484 -169.442c0.757812 -90.5605 74.1777 -166.552 167.994 -166.552c41.127 0 79.9971 14.6777 110.629 41.5557c4.74316 4.16113 11.9062 3.9082 16.3682 -0.552734
-l39.6621 -39.6621c4.87207 -4.87207 4.63086 -12.8145 -0.482422 -17.4326c-43.9746 -39.7217 -102.251 -63.9082 -166.177 -63.9082c-136.966 0 -247.999 111.033 -248 247.998c-0.000976562 136.809 111.646 248.247 248.455 248.002z" />
-    <glyph glyph-name="poo" unicode="&#xf2fe;" 
-d="M451.4 78.9004c34.2998 -5.5 60.5996 -35 60.5996 -70.9004c0 -39.7998 -32.2002 -72 -72 -72h-368c-39.7998 0 -72 32.2002 -72 72c0 35.9004 26.2998 65.4004 60.5996 70.9004c-17.2998 13.0996 -28.5996 33.6992 -28.5996 57.0996c0 39.7998 32.2002 72 72 72h14.0996
-c-13.3994 11.7002 -22.0996 28.7998 -22.0996 48c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96c0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039
-c35.2998 0 64 -28.7002 64 -64c0 -19.2002 -8.7002 -36.2998 -22.0996 -48h14.0996c39.7998 0 72 -32.2002 72 -72c0 -23.4004 -11.2998 -44 -28.5996 -57.0996zM192 192c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32z
-M351.5 53c2 5.2998 -2 11 -7.7998 11h-175.4c-5.7998 0 -9.7998 -5.7002 -7.7998 -11c10.5 -27.9004 58.5 -53 95.5 -53s85 25.0996 95.5 53zM320 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="images" unicode="&#xf302;" horiz-adv-x="576" 
-d="M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-208c0 -44.1123 35.8877 -80 80 -80h336zM576 112c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256
-c0 26.5098 21.4902 48 48 48h384c26.5098 0 48 -21.4902 48 -48v-256zM256 320c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48zM160 176v-48h352v112l-87.5137 87.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0
-l-135.515 -135.515l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0z" />
-    <glyph glyph-name="pencil-alt" unicode="&#xf303;" 
-d="M497.9 305.9l-46.1006 -46.1006c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-111 111c-4.7002 4.7002 -4.7002 12.2998 0 17l46.1006 46.1006c18.6992 18.6992 49.0996 18.6992 67.8994 0l60.1006 -60.1006c18.7998 -18.7002 18.7998 -49.0996 0 -67.8994zM284.2 348.2
-c4.7002 4.7002 12.2998 4.7002 17.0996 0l111 -111c4.7002 -4.7002 4.7002 -12.2998 0 -17l-262.6 -262.601l-121.5 -21.2998c-16.4004 -2.7998 -30.7002 11.4004 -27.7998 27.7998l21.1992 121.5zM124.1 108.1c5.5 -5.5 14.3008 -5.5 19.8008 0l154 154
-c5.5 5.5 5.5 14.3008 0 19.8008s-14.3008 5.5 -19.8008 0l-154 -154c-5.5 -5.5 -5.5 -14.3008 0 -19.8008zM88 24v48h-36.2998l-11.2998 -64.5l31.0996 -31.0996l64.5 11.2998v36.2998h-48z" />
-    <glyph glyph-name="pen" unicode="&#xf304;" 
-d="M290.74 354.76l128.02 -128.02l-277.99 -277.99l-114.14 -12.5996c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l12.7002 114.22zM497.94 373.82c18.75 -18.75 18.75 -49.1504 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5498
-c18.75 18.75 49.1602 18.75 67.9102 0z" />
-    <glyph glyph-name="pen-alt" unicode="&#xf305;" 
-d="M497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0zM251.14 394.36l84.8506 -84.8506l82.7695 -82.7695l-196.79 -196.79
-c-51.1611 -51.1592 -119.559 -85.4326 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c8.42188 75.6777 42.6777 143.978 93.7803 195.08l151.56 151.55l-22.6299 22.6201l-101.82 -101.819
-c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.24023 -6.25 16.3701 0 22.6201l118.78 118.79c15.6201 15.6201 40.9395 15.6201 56.5596 0z" />
-    <glyph glyph-name="long-arrow-alt-down" unicode="&#xf309;" horiz-adv-x="256" 
-d="M168 102.059h46.0576c21.3828 0 32.0908 -25.8516 16.9717 -40.9707l-86.0596 -86.0586c-9.37207 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v301.941c0 6.62695 5.37305 12 12 12h56
-c6.62695 0 12 -5.37305 12 -12v-301.941z" />
-    <glyph glyph-name="long-arrow-alt-left" unicode="&#xf30a;" horiz-adv-x="448" 
-d="M134.059 152v-46.0576c0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h301.941c6.62695 0 12 -5.37305 12 -12v-56
-c0 -6.62695 -5.37305 -12 -12 -12h-301.941z" />
-    <glyph glyph-name="long-arrow-alt-right" unicode="&#xf30b;" horiz-adv-x="448" 
-d="M313.941 232v46.0576c0 21.3828 25.8516 32.0908 40.9707 16.9717l86.0586 -86.0596c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-301.941c-6.62695 0 -12 5.37305 -12 12v56
-c0 6.62695 5.37305 12 12 12h301.941z" />
-    <glyph glyph-name="long-arrow-alt-up" unicode="&#xf30c;" horiz-adv-x="256" 
-d="M88 281.941h-46.0576c-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37207 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-301.941c0 -6.62695 -5.37305 -12 -12 -12h-56
-c-6.62695 0 -12 5.37305 -12 12v301.941z" />
-    <glyph glyph-name="expand-arrows-alt" unicode="&#xf31e;" horiz-adv-x="448" 
-d="M448 104v-112v-0.0615234c0 -13.2129 -10.7275 -23.9395 -23.9395 -23.9395c-0.0205078 0 -0.0400391 0.000976562 -0.0605469 0.000976562h-112c-21.3896 0 -32.0898 25.9004 -17 41l36.2002 36.2002l-107.2 107.2l-107.23 -107.301l36.2305 -36.0996
-c15.0898 -15.0996 4.38965 -41 -17 -41h-112h-0.0615234c-13.2129 0 -23.9395 10.7275 -23.9395 23.9395c0 0.0205078 0.000976562 0.0400391 0.000976562 0.0605469v112c0 21.4004 25.8896 32.0996 41 17l36.1904 -36.2002l107.27 107.2l-107.28 107.3l-36.1797 -36.2998
-c-15.0996 -15.0996 -41 -4.40039 -41 17v112v0.0615234c0 13.2129 10.7275 23.9395 23.9395 23.9395c0.0205078 0 0.0400391 -0.000976562 0.0605469 -0.000976562h112c21.3896 0 32.0898 -25.9004 17 -41l-36.2002 -36.2002l107.2 -107.2l107.23 107.301l-36.2305 36.0996
-c-15.0898 15.0996 -4.38965 41 17 41h112h0.0615234c13.2129 0 23.9395 -10.7275 23.9395 -23.9395c0 -0.0205078 -0.000976562 -0.0400391 -0.000976562 -0.0605469v-112c0 -21.4004 -25.8896 -32.0996 -41 -17l-36.1904 36.2002l-107.27 -107.2l107.28 -107.3
-l36.1797 36.2002c15.0996 15.1992 41 4.5 41 -16.9004z" />
-    <glyph glyph-name="clipboard" unicode="&#xf328;" horiz-adv-x="384" 
-d="M384 336v-352c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h80c0 35.29 28.71 64 64 64s64 -28.71 64 -64h80c26.5098 0 48 -21.4902 48 -48zM192 408c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24
-s24 10.7451 24 24s-10.7451 24 -24 24zM288 294v20c0 3.31152 -2.68848 6 -6 6h-180c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h180c3.31152 0 6 2.68848 6 6z" />
-    <glyph glyph-name="arrows-alt-h" unicode="&#xf337;" 
-d="M377.941 278.059c0 21.3828 25.8516 32.0908 40.9707 16.9707l86.0586 -86.0596c9.37305 -9.37305 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-243.883v-46.0576
-c0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37305 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h243.883v46.0586z" />
-    <glyph glyph-name="arrows-alt-v" unicode="&#xf338;" horiz-adv-x="256" 
-d="M214.059 70.0586c21.3828 0 32.0908 -25.8516 16.9707 -40.9707l-86.0596 -86.0586c-9.37305 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v243.883h-46.0576
-c-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37305 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-243.883h46.0586z" />
-    <glyph glyph-name="arrow-alt-circle-down" unicode="&#xf358;" 
-d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM212 308v-116h-70.9004c-10.6992 0 -16.0996 -13 -8.5 -20.5l114.9 -114.3c4.7002 -4.7002 12.2002 -4.7002 16.9004 0l114.899 114.3c7.60059 7.59961 2.2002 20.5 -8.5 20.5
-h-70.7998v116c0 6.59961 -5.40039 12 -12 12h-64c-6.59961 0 -12 -5.40039 -12 -12z" />
-    <glyph glyph-name="arrow-alt-circle-left" unicode="&#xf359;" 
-d="M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM372 236h-116v70.9004c0 10.6992 -13 16.0996 -20.5 8.5l-114.3 -114.9c-4.7002 -4.7002 -4.7002 -12.2002 0 -16.9004l114.3 -114.899
-c7.59961 -7.60059 20.5 -2.2002 20.5 8.5v70.7998h116c6.59961 0 12 5.40039 12 12v64c0 6.59961 -5.40039 12 -12 12z" />
-    <glyph glyph-name="arrow-alt-circle-right" unicode="&#xf35a;" 
-d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM140 148h116v-70.9004c0 -10.6992 13 -16.0996 20.5 -8.5l114.3 114.9c4.7002 4.7002 4.7002 12.2002 0 16.9004l-114.3 115c-7.59961 7.59961 -20.5 2.19922 -20.5 -8.5
-v-70.9004h-116c-6.59961 0 -12 -5.40039 -12 -12v-64c0 -6.59961 5.40039 -12 12 -12z" />
-    <glyph glyph-name="arrow-alt-circle-up" unicode="&#xf35b;" 
-d="M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM300 76v116h70.9004c10.6992 0 16.0996 13 8.5 20.5l-114.9 114.3c-4.7002 4.7002 -12.2002 4.7002 -16.9004 0l-115 -114.3c-7.59961 -7.59961 -2.19922 -20.5 8.5 -20.5
-h70.9004v-116c0 -6.59961 5.40039 -12 12 -12h64c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="external-link-alt" unicode="&#xf35d;" 
-d="M432 128c8.83105 0 16 -7.16895 16 -16v-128c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-144v-320h320v112
-c0 8.83105 7.16895 16 16 16h32zM488 448c13.2461 0 24 -10.7539 24 -24v-128c0 -21.5 -26 -32 -41 -17l-35.7197 35.6797l-243.61 -243.68c-4.34668 -4.36133 -10.3652 -7.0625 -17.0029 -7.0625s-12.6504 2.70117 -16.9971 7.0625l-22.6699 22.6299
-c-4.36133 4.34668 -7.0625 10.3652 -7.0625 17.0029c0 6.63867 2.70117 12.6504 7.0625 16.9971l243.73 243.64l-35.7305 35.7305c-15.0498 15.0898 -4.37012 41 17 41h128z" />
-    <glyph glyph-name="external-link-square-alt" unicode="&#xf360;" horiz-adv-x="448" 
-d="M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM360 352h-111.971c-21.3135 0 -32.0801 -25.8613 -16.9717 -40.9707l31.9844 -31.9873l-195.527 -195.527
-c-4.68555 -4.68555 -4.68555 -12.2832 0 -16.9707l31.0293 -31.0293c4.6875 -4.68555 12.2852 -4.68555 16.9707 0l195.526 195.526l31.9883 -31.9912c15.0283 -15.0264 40.9707 -4.47461 40.9707 16.9717v111.979c0 13.2549 -10.7451 24 -24 24z" />
-    <glyph glyph-name="exchange-alt" unicode="&#xf362;" 
-d="M0 280v16c0 13.2549 10.7451 24 24 24h360v48c0 21.3672 25.8994 32.042 40.9707 16.9707l80 -80c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-80 -80c-15.0146 -15.0127 -40.9707 -4.48633 -40.9707 16.9697v48h-360c-13.2549 0 -24 10.7451 -24 24zM488 128
-c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-360v-48c0 -21.4365 -25.9434 -31.9971 -40.9707 -16.9697l-80 80c-9.37207 9.37207 -9.37207 24.5674 0 33.9404l80 80c15.1084 15.1094 40.9707 4.34375 40.9707 -16.9707v-48h360z" />
-    <glyph glyph-name="cloud-download-alt" unicode="&#xf381;" horiz-adv-x="640" 
-d="M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160
-c59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM404.7 132.7c10.0996 10.0996 2.89941 27.2998 -11.2998 27.2998h-65.4004v112c0 8.7998 -7.2002 16 -16 16
-h-48c-8.7998 0 -16 -7.2002 -16 -16v-112h-65.4004c-14.1992 0 -21.3994 -17.2002 -11.2998 -27.2998l105.4 -105.4c6.2002 -6.2002 16.3994 -6.2002 22.5996 0z" />
-    <glyph glyph-name="cloud-upload-alt" unicode="&#xf382;" horiz-adv-x="640" 
-d="M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160
-c59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM393.4 160c14.1992 0 21.3994 17.2002 11.2998 27.2998l-105.4 105.4
-c-6.2002 6.2002 -16.3994 6.2002 -22.5996 0l-105.4 -105.4c-10.0996 -10.0996 -3 -27.2998 11.2998 -27.2998h65.4004v-112c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16v112h65.4004z" />
-    <glyph glyph-name="gem" unicode="&#xf3a5;" horiz-adv-x="576" 
-d="M485.5 448l90.5 -160h-101.1l-69.2002 160h79.7998zM357.5 448l69.2002 -160h-277.4l69.2002 160h139zM90.5 448h79.7998l-69.2002 -160h-101.1zM0 256h100.7l123 -251.7c1.5 -3.09961 -2.7002 -5.89941 -5 -3.2998zM148.2 256h279.6l-137 -318.2
-c-1 -2.39941 -4.5 -2.39941 -5.5 0zM352.3 4.2998l123 251.7h100.7l-218.7 -254.9c-2.2998 -2.69922 -6.5 0.100586 -5 3.2002z" />
-    <glyph glyph-name="level-down-alt" unicode="&#xf3be;" horiz-adv-x="320" 
-d="M313.553 55.6689l-103.966 -112.003c-9.48535 -10.2139 -25.6758 -10.2295 -35.1738 0l-103.975 112.003c-14.2061 15.2998 -3.37695 40.3311 17.5869 40.3311h63.9746v272h-83.9756c-3.31152 0 -6.31348 1.34277 -8.48535 3.51465l-56 56
-c-7.56055 7.55957 -2.20605 20.4854 8.48535 20.4854h195.976c13.2549 0 24 -10.7451 24 -24v-328h63.9658c20.8779 0 31.8516 -24.9688 17.5869 -40.3311z" />
-    <glyph glyph-name="level-up-alt" unicode="&#xf3bf;" horiz-adv-x="320" 
-d="M313.553 328.331c14.2646 -15.3623 3.29102 -40.3311 -17.5869 -40.3311h-63.9658v-328c0 -13.2549 -10.7451 -24 -24 -24h-195.976c-10.6914 0 -16.0459 12.9258 -8.48535 20.4854l56 56c2.17188 2.17188 5.17383 3.51465 8.48535 3.51465h83.9756v272h-63.9746
-c-20.9639 0 -31.793 25.0312 -17.5869 40.3311l103.975 112.003c9.49805 10.2295 25.6885 10.2139 35.1738 0z" />
-    <glyph glyph-name="lock-open" unicode="&#xf3c1;" horiz-adv-x="576" 
-d="M423.5 448c84 0.299805 152.5 -68 152.5 -152v-80c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v80c0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-71.0996h48c26.5 0 48 -21.5 48 -48v-192
-c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h224v70.5c0 84 67.5 153.2 151.5 153.5z" />
-    <glyph glyph-name="map-marker-alt" unicode="&#xf3c5;" horiz-adv-x="384" 
-d="M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0zM192 176c44.1826 0 80 35.8174 80 80
-s-35.8174 80 -80 80s-80 -35.8174 -80 -80s35.8174 -80 80 -80z" />
-    <glyph glyph-name="microphone-alt" unicode="&#xf3c9;" horiz-adv-x="352" 
-d="M336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504
-c-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998c0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16zM176 96
-c-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16
-c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301c0 -53.0195 -42.9805 -96 -96 -96z" />
-    <glyph glyph-name="mobile-alt" unicode="&#xf3cd;" horiz-adv-x="320" 
-d="M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM272 76v312
-c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="money-bill-alt" unicode="&#xf3d1;" horiz-adv-x="640" 
-d="M352 160c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-64c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h16v55.4404l-0.469727 -0.310547c-1.26855 -0.845703 -2.79395 -1.35156 -4.43164 -1.35156
-c-2.77734 0 -5.22559 1.41895 -6.6582 3.57129l-8.88086 13.3105c-0.845703 1.26758 -1.35156 2.79395 -1.35156 4.43066c0 2.77734 1.41992 5.22656 3.57227 6.65918l15.3301 10.2197c3.93945 2.62988 8.56934 4.03027 13.3096 4.03027h13.5801c4.41992 0 8 -3.58008 8 -8
-v-88h16zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 80
-c53 0 96 50.1299 96 112c0 61.8604 -42.9805 112 -96 112s-96 -50.1396 -96 -112c0 -61.8496 42.9805 -112 96 -112zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z" />
-    <glyph glyph-name="phone-slash" unicode="&#xf3dd;" horiz-adv-x="640" 
-d="M268.2 66.5996c11.5 5.40039 22.7002 11.6006 33.5996 18.1006l80 -61.7998c-76 -54.5 -169 -86.9004 -269.7 -86.9004c-11.2998 0 -20.8994 7.7998 -23.3994 18.5996l-24 104c-2.60059 11.4004 3.2002 22.9004 13.8994 27.5l112 48
-c9.80078 4.2002 21.2002 1.40039 28 -6.89941zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002
-c5.5 7 15.5 8.2002 22.5 2.7998l353.9 -273.5c18.0996 22.5 33.7998 46.7002 46 72.8008l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004l104 -24c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004
-c0 -108.9 -38.0996 -208.4 -100.9 -287.5z" />
-    <glyph glyph-name="portrait" unicode="&#xf3e0;" horiz-adv-x="384" 
-d="M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM192 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 83.2002v19.2002
-c0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199
-c12.4004 0 22.4004 8.59961 22.4004 19.2002z" />
-    <glyph glyph-name="reply" unicode="&#xf3e5;" 
-d="M8.30859 258.164l176.005 151.985c15.4053 13.3047 39.6865 2.50391 39.6865 -18.1641v-80.0537c160.629 -1.83887 288 -34.0312 288 -186.258c0 -61.4404 -39.5811 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309
-c45.3438 145.012 -21.5068 183.51 -176.59 185.742v-87.915c0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 152c-11.0703 9.5625 -11.0859 26.7529 0 36.3281z" />
-    <glyph glyph-name="shield-alt" unicode="&#xf3ed;" 
-d="M466.5 364.3c17.7998 -7.39941 29.5 -24.8994 29.5 -44.2998c0 -221.3 -135.9 -344.6 -221.6 -380.3c-11.8008 -4.90039 -25.1006 -4.90039 -36.9004 0c-107 44.5996 -221.5 181.8 -221.5 380.3c0 19.4004 11.7002 36.9004 29.5996 44.2998l192 80
-c5.67578 2.35449 11.96 3.6543 18.4824 3.6543c6.52148 0 12.7432 -1.2998 18.418 -3.6543zM256.1 1.7002c93.7002 46.5996 172.5 156.3 175.801 307.7l-175.9 73.2998z" />
-    <glyph glyph-name="tablet-alt" unicode="&#xf3fa;" horiz-adv-x="448" 
-d="M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM400 76v312
-c0 6.59961 -5.40039 12 -12 12h-328c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h328c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="tachometer-alt" unicode="&#xf3fd;" horiz-adv-x="576" 
-d="M288 416c159.06 0 288 -128.94 288 -288c0 -52.7998 -14.25 -102.26 -39.0596 -144.8c-5.61035 -9.62012 -16.3008 -15.2002 -27.4404 -15.2002h-443c-11.1396 0 -21.8301 5.58008 -27.4404 15.2002c-24.8096 42.54 -39.0596 92 -39.0596 144.8
-c0 159.06 128.94 288 288 288zM288 352c-17.6699 0 -31.9902 -14.3301 -31.9902 -32s14.3301 -32 32 -32c6.66992 0 12.5098 2.51953 17.6406 6.00977l9.21973 27.6699c0.80957 2.44043 2.33984 4.41016 3.4502 6.66992c-3.74023 13.5205 -15.6104 23.6504 -30.3203 23.6504
-zM96 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM144 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM390.77 296.41c4.18066 12.5703 -2.59961 26.1699 -15.1699 30.3594
-c-12.6299 4.28027 -26.1895 -2.60938 -30.3594 -15.1699l-61.3398 -184.01c-33.4004 -2.16016 -59.9004 -29.6494 -59.9004 -63.5898c0 -11.7197 3.37988 -22.5498 8.87988 -32h110.24c5.5 9.4502 8.87988 20.2803 8.87988 32c0 19.46 -8.87012 36.6699 -22.5596 48.4102z
-M405.43 239.21c5.68066 -8.94043 15.1904 -15.21 26.5703 -15.2197c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32c-3.91992 0 -7.58008 -0.94043 -11.0498 -2.23047zM480 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z
-" />
-    <glyph glyph-name="ticket-alt" unicode="&#xf3ff;" horiz-adv-x="576" 
-d="M128 288h320v-192h-320v192zM528 192c0 -26.5098 21.4902 -48 48 -48v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48
-v-96c-26.5098 0 -48 -21.4902 -48 -48zM480 296c0 13.2549 -10.7451 24 -24 24h-336c-13.2549 0 -24 -10.7451 -24 -24v-208c0 -13.2549 10.7451 -24 24 -24h336c13.2549 0 24 10.7451 24 24v208z" />
-    <glyph glyph-name="user-alt" unicode="&#xf406;" 
-d="M256 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144s-64.5 -144 -144 -144zM384 128c70.7002 0 128 -57.2998 128 -128v-16c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v16c0 70.7002 57.2998 128 128 128h55.0996
-c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h55.0996z" />
-    <glyph glyph-name="window-close" unicode="&#xf410;" 
-d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM380.4 125.5l-67.1006 66.5l67.1006 66.5c4.7998 4.7998 4.7998 12.5996 0 17.4004l-40.5 40.5
-c-4.80078 4.7998 -12.6006 4.7998 -17.4004 0l-66.5 -67.1006l-66.5 67.1006c-4.7998 4.7998 -12.5996 4.7998 -17.4004 0l-40.5 -40.5c-4.7998 -4.80078 -4.7998 -12.6006 0 -17.4004l67.1006 -66.5l-67.1006 -66.5c-4.7998 -4.7998 -4.7998 -12.5996 0 -17.4004
-l40.5 -40.5c4.80078 -4.7998 12.6006 -4.7998 17.4004 0l66.5 67.1006l66.5 -67.1006c4.7998 -4.7998 12.5996 -4.7998 17.4004 0l40.5 40.5c4.7998 4.80078 4.7998 12.6006 0 17.4004z" />
-    <glyph glyph-name="compress-alt" unicode="&#xf422;" horiz-adv-x="448" 
-d="M4.68555 20.6855l99.3145 99.3145l-32.9219 31.0293c-15.1201 15.1201 -4.41211 40.9707 16.9697 40.9707h112c13.2549 0 23.9521 -10.7451 23.9521 -24v-112c0 -21.3818 -25.8027 -32.0898 -40.9219 -16.9707l-31.0781 32.9707l-99.3145 -99.3145
-c-6.24707 -6.24707 -16.3789 -6.24707 -22.627 0l-25.373 25.373c-6.24707 6.24805 -6.24707 16.3799 0 22.627zM443.314 363.314l-99.3145 -99.3145l32.9219 -31.0293c15.1201 -15.1201 4.41211 -40.9707 -16.9697 -40.9707h-112c-13.2549 0 -23.9521 10.7451 -23.9521 24
-v112c0 21.3818 25.8027 32.0898 40.9219 16.9707l31.0781 -32.9707l99.3145 99.3145c6.24707 6.24707 16.3789 6.24707 22.627 0l25.373 -25.373c6.24707 -6.24805 6.24707 -16.3799 0 -22.627z" />
-    <glyph glyph-name="expand-alt" unicode="&#xf424;" horiz-adv-x="448" 
-d="M212.686 132.686l-92.6855 -92.6855l32.9219 -31.0293c15.1201 -15.1201 4.41211 -40.9707 -16.9697 -40.9707h-112c-13.2549 0 -23.9521 10.7451 -23.9521 24v112c0 21.3818 25.8027 32.0898 40.9219 16.9707l31.0781 -32.9707l92.6855 92.6855
-c6.24805 6.24805 16.3799 6.24805 22.6279 0l25.3721 -25.3721c6.24902 -6.24805 6.24902 -16.3789 0 -22.6279zM235.314 251.314l92.6855 92.6855l-32.9219 31.0293c-15.1201 15.1201 -4.41211 40.9707 16.9697 40.9707h112c13.2549 0 23.9521 -10.7451 23.9521 -24v-112
-c0 -21.3818 -25.8027 -32.0898 -40.9219 -16.9707l-31.0781 32.9707l-92.6855 -92.6855c-6.24805 -6.24805 -16.3799 -6.24805 -22.6279 0l-25.3721 25.3721c-6.24902 6.24805 -6.24902 16.3789 0 22.6279z" />
-    <glyph glyph-name="baseball-ball" unicode="&#xf433;" horiz-adv-x="496" 
-d="M368.5 84.0996c12.9004 -26.6992 30.2998 -50.1992 51.4004 -70.5996c-44.6006 -43 -105.101 -69.5 -171.9 -69.5c-66.9004 0 -127.5 26.5996 -172 69.7002c21.2002 20.3994 38.5996 44 51.5 70.7002l-28.7998 13.8994c-11.1006 -23 -26.1006 -43.2998 -44.2998 -61
-c-34 42.4004 -54.4004 96.1006 -54.4004 154.7s20.4004 112.3 54.4004 154.8c17.7998 -17.2998 32.5 -37.0996 43.5 -59.3994l28.6992 14.0996c-12.7998 25.9004 -30 48.9004 -50.6992 68.7998c44.5996 43.1006 105.199 69.7002 172.1 69.7002
-c67 0 127.6 -26.7002 172.2 -69.7998c-20.7998 -20 -38 -43 -50.7998 -69l28.6992 -14.1006c11 22.4004 25.8008 42.2002 43.6006 59.5c33.7998 -42.3994 54.2002 -96.0996 54.2002 -154.6c0 -58.5996 -20.5 -112.4 -54.5 -154.9c-18.1006 17.7002 -33 38 -44.1006 60.9004z
-M140.2 116.1c17.2998 53.9004 14.2998 108.2 -0.700195 153.801l-30.4004 -10c13.3008 -40.2002 15.5 -87.6006 0.600586 -134zM356.5 269.5c-15 -45.5 -18 -99.7998 -0.700195 -153.8l30.5 9.7998c-14.8994 46.5 -12.5996 93.9004 0.600586 134z" />
-    <glyph glyph-name="basketball-ball" unicode="&#xf434;" horiz-adv-x="496" 
-d="M212.3 437.7c-1.5 -50 -17 -95.4004 -44.7998 -131.2l-77.4004 77.4004c36 29.6992 78.4004 47.5 122.2 53.7998zM248 226l-46.2998 46.2998c37.2002 45.4004 57.5 103.8 58.7002 167.7c51.8994 -2.59961 103.1 -21.0996 145.5 -56.0996zM56.0996 349.9l77.4004 -77.4004
-c-35.7002 -27.7998 -81.2002 -43.2998 -131.2 -44.7998c6.2998 43.7998 24.1006 86.2002 53.7998 122.2zM328.3 145.7l-46.2998 46.2998l157.9 157.9c35 -42.4004 53.5 -93.6006 56.0996 -145.5c-64 -1.30078 -122.4 -21.6006 -167.7 -58.7002zM248 158l46.2998 -46.2998
-c-37.0996 -45.2998 -57.3994 -103.7 -58.7002 -167.7c-51.8994 2.59961 -103.1 21.2002 -145.5 56.0996zM439.9 34.0996l-77.4004 77.4004c35.7002 27.7002 81.0996 43.2002 131.2 44.7998c-6.2998 -43.7998 -24.1006 -86.2002 -53.7998 -122.2zM167.7 238.3
-l46.2998 -46.2998l-157.9 -157.9c-35 42.4004 -53.5 93.6006 -56.0996 145.5c63.9004 1.10059 122.3 21.5 167.7 58.7002zM283.7 -53.7002c1.59961 50 17.0996 95.5 44.7998 131.2l77.4004 -77.4004c-36 -29.6992 -78.4004 -47.5 -122.2 -53.7998z" />
-    <glyph glyph-name="bowling-ball" unicode="&#xf436;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM120 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM184 352c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32
-s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM232 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="chess" unicode="&#xf439;" 
-d="M74 240l-33.9102 90.3799c-0.655273 1.74707 -1.01953 3.64551 -1.01953 5.62012c0 8.83105 7.16895 16 16 16h0.0195312h56.9102v32h-24c-4.41504 0 -8 3.58496 -8 8v16c0 4.41504 3.58496 8 8 8h24v24c0 4.41504 3.58496 8 8 8h16c4.41504 0 8 -3.58496 8 -8v-24h24
-c4.41504 0 8 -3.58496 8 -8v-16c0 -4.41504 -3.58496 -8 -8 -8h-24v-32h56.8896c0.00683594 0 0.0078125 -0.00683594 0.0146484 -0.00683594c8.83008 0 16 -7.16992 16 -16c0 -1.97461 -0.359375 -3.86621 -1.01465 -5.61328l-33.8896 -90.3799h10
-c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-15.9404c0.142578 -44.1934 5.69141 -86.9287 15.9404 -128h-128c10.249 41.0713 15.7979 83.8066 15.9404 128h-15.9404c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h10z
-M247.16 -11.5801c5.24805 -2.62598 8.83984 -8.0459 8.83984 -14.3096v-22.1104c0 -8.83105 -7.16895 -16 -16 -16h-224c-8.83105 0 -16 7.16895 -16 16v22.1104c0.000976562 6.26562 3.59668 11.6855 8.84961 14.3096l23.1504 11.5801v16c0 8.83105 7.16895 16 16 16h160
-c8.83105 0 16 -7.16895 16 -16v-16zM339.93 146.2l-24.5693 20.7998c-6.94434 5.86133 -11.3438 14.6143 -11.3604 24.4004v58.5996c0 3.31152 2.68848 6 6 6h26.3896c3.31152 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.68848 6 6 6h53.8105c3.31152 0 6 -2.68848 6 -6
-v-26h24.71v26c0 3.31152 2.68848 6 6 6h26.3799c3.31152 0 6 -2.68848 6 -6v-58.54c0 -0.0107422 0.0185547 -0.0126953 0.0185547 -0.0234375c0 -9.79297 -4.40918 -18.5645 -11.3486 -24.4365l-24.5996 -20.79l3.29004 -82.21h-126.721zM384 144v-32h32v32
-c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM503.16 -11.5801c5.24805 -2.62598 8.83984 -8.0459 8.83984 -14.3096v-22.1104c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v22.1104c0.000976562 6.26562 3.59668 11.6855 8.84961 14.3096
-l23.1504 11.5801v16c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-16z" />
-    <glyph glyph-name="chess-bishop" unicode="&#xf43a;" horiz-adv-x="320" 
-d="M8 160.12c0 73.3799 59.8096 181.08 112.6 225.37c-14 3.41992 -24.5996 15.5098 -24.5996 30.5098c0 17.6611 14.3389 32 32 32h64c17.6611 0 32 -14.3389 32 -32c0 -15.0498 -10.5996 -27.0898 -24.5996 -30.5098c24.3994 -20.4902 50.0693 -54.6807 70.8691 -92.5898
-l-107.89 -107.931c-1.44727 -1.44727 -2.3418 -3.44922 -2.3418 -5.65625c0 -2.20605 0.894531 -4.20508 2.3418 -5.65332l11.3105 -11.3105c1.44727 -1.44629 3.44922 -2.3418 5.65527 -2.3418c2.20703 0 4.20605 0.895508 5.6543 2.3418l100.31 100.33
-c15.96 -35.46 26.6904 -71.9492 26.6904 -102.56c0 -51.6006 -22.1396 -73.8301 -56 -84.6006v-43.5195h-192v43.5195c-33.8604 10.7705 -56 32.9609 -56 84.6006zM304 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288z" />
-    <glyph glyph-name="chess-board" unicode="&#xf43c;" 
-d="M255.9 447.8v-64h-64v64h64zM0 383.83h64v-64h-64v64zM128 447.8v-64h-64v64h64zM192 191.9h64v-64h-64v64zM0 255.88h64v-64h-64v64zM383.85 447.8v-64h-64v64h64zM511.85 447.8v-64h-64v64h64zM128 191.9v-64h-64v64h64zM511.8 0h-64v64h64v-64zM511.8 128h-64v64h64
-v-64zM383.85 -64v64h64v-64h-64zM511.85 255.88h-64v64h64v-64zM128 -64v64h64v-64h-64zM0 -64v64h64v-64h-64zM255.9 -64v64h64v-64h-64zM0 127.93h64v-64h-64v64zM319.88 319.85h-64v64h64v-64zM255.88 191.85v64h64v-64h-64zM191.88 63.8496h64v-64h-64v64z
-M319.88 127.85v64h64v-64h-64zM319.88 255.8v64h64v-64h-64zM319.88 63.8701h64v-64h-64v64zM64 63.9502h64v-64h-64v64zM192 319.85h-64v64h64v-64zM383.92 63.9502v64h64v-64h-64zM255.92 255.88h-64v64h64v-64zM383.92 383.83h64v-64h-64v64zM255.92 127.93h64v-64h-64
-v64zM191.92 255.88l0.0800781 -64h-64v64h63.9199zM383.84 191.88v64h64v-64h-64zM128 319.85v-64h-64v64h64zM128 127.93h64v-64h-64v64z" />
-    <glyph glyph-name="chess-king" unicode="&#xf43f;" horiz-adv-x="448" 
-d="M400 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h352zM416 288c17.6494 -0.0136719 31.9688 -14.3477 31.9688 -32.001c0 -3.32129 -0.507812 -6.52539 -1.44922 -9.53906
-l-73.0791 -214.46h-298.881l-73.0791 214.46c-0.941406 3.01367 -1.45508 6.21875 -1.45508 9.54004c0 17.6533 14.3252 31.9863 31.9746 32h160v48h-40c-4.41504 0 -8 3.58496 -8 8v48c0 4.41504 3.58496 8 8 8h40v40c0 4.41504 3.58496 8 8 8h48
-c4.41504 0 8 -3.58496 8 -8v-40h40c4.41504 0 8 -3.58496 8 -8v-48c0 -4.41504 -3.58496 -8 -8 -8h-40v-48h160z" />
-    <glyph glyph-name="chess-knight" unicode="&#xf441;" horiz-adv-x="384" 
-d="M19 175.53c-11.2041 4.98145 -19 16.1963 -19 29.2393v0.0205078v137.21c0 0.0195312 -0.00292969 0.0419922 -0.00292969 0.0625c0 6.60742 2.67578 12.5957 7.00293 16.9375l9 9l-14.21 28.4199c-1.13867 2.27344 -1.79004 4.85547 -1.79004 7.56934v0.0107422
-c0 6.62305 5.37695 12 12 12h147.94c106 0 191.92 -86 191.92 -192v-192h-319.86v14.5195c0 0.0078125 -0.078125 -0.03125 -0.078125 -0.0244141c0 31.3145 18.0312 58.4512 44.2686 71.585l57.2197 28.6504c15.751 7.87695 26.5303 24.1348 26.5303 42.9297v0.00976562
-v50.3301l-22.1201 -11.0801c-6.19238 -3.09668 -10.8369 -8.78906 -12.5508 -15.6504l-9.21973 -30.6494c-2.81152 -9.35645 -9.77051 -16.9043 -18.7598 -20.5l-12.7803 -5.12012c-3.66895 -1.46777 -7.7168 -2.27246 -11.9082 -2.27246
-c-4.61621 0 -9.00586 0.979492 -12.9717 2.74219zM52 320c-11.0381 0 -20 -8.96191 -20 -20s8.96191 -20 20 -20s20 8.96191 20 20s-8.96191 20 -20 20zM368 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h352z" />
-    <glyph glyph-name="chess-pawn" unicode="&#xf443;" horiz-adv-x="320" 
-d="M105.1 224c-29.3896 18.3799 -49.0996 50.7803 -49.0996 88c0 57.3994 46.6006 104 104 104s104 -46.6006 104 -104c0 -37.2197 -19.71 -69.6201 -49.0996 -88h25.0996c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-16v-5.49023
-c0 -44 4.11035 -86.5996 24 -122.51h-176c19.8604 35.9102 24 78.5098 24 122.51v5.49023h-16c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h25.0996zM304 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288z" />
-    <glyph glyph-name="chess-queen" unicode="&#xf445;" 
-d="M256 336c-30.9072 0 -56 25.0928 -56 56s25.0928 56 56 56s56 -25.0928 56 -56s-25.0928 -56 -56 -56zM432 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h352zM504.87 263.84
-c4.30566 -2.86816 7.11914 -7.77344 7.11914 -13.3311c0 -2.56445 -0.604492 -4.98926 -1.67969 -7.13867l-102.55 -211.37h-303.52l-102.55 211.33c-1.0752 2.14941 -1.70508 4.58008 -1.70508 7.14453c0 5.55762 2.83887 10.457 7.14453 13.3252l28.5703 16
-c7.35938 4.91016 16.8096 2.5498 22.0898 -4.54004c8.6543 -11.709 22.4922 -19.2686 38.1572 -19.2686c1.13672 0 2.26562 0.0400391 3.38281 0.119141c25.6699 1.73926 44.6699 24.7998 44.6699 50.4893c0 7.39648 6.00391 13.4004 13.4004 13.4004h38.7695
-c6.04004 0 11.6104 -3.99023 12.8604 -9.91016c4.57715 -21.7363 23.8789 -38.0752 46.9688 -38.0752s42.3936 16.3389 46.9707 38.0752c1.25 5.91016 6.86035 9.91016 12.8604 9.91016h38.7695c7.39648 0 13.4004 -6.00391 13.4004 -13.4004
-c0 -23.5293 15.7002 -45.46 38.8398 -49.75c2.95898 -0.576172 5.9541 -0.918945 9.08105 -0.918945c15.6064 0 29.4688 7.5293 38.1494 19.1494c5.37988 7.13965 14.8496 9.67969 22.29 4.67969z" />
-    <glyph glyph-name="chess-rook" unicode="&#xf447;" horiz-adv-x="384" 
-d="M368 416c8.83105 0 16 -7.16895 16 -16v-176l-64 -32c0 -47.7197 1.54004 -95 13.21 -160h-282.42c11.6699 65 13.21 111.67 13.21 160l-64 32v176c0 8.83105 7.16895 16 16 16h56.0996c8.83105 0 16 -7.16895 16 -16v-48h47.9004v48c0 8.83105 7.16895 16 16 16h80
-c8.83105 0 16 -7.16895 16 -16v-48h48v48c0 8.83105 7.16895 16 16 16h56zM224 128v64c0 17.6611 -14.3389 32 -32 32s-32 -14.3389 -32 -32v-64h64zM368 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h352z" />
-    <glyph glyph-name="dumbbell" unicode="&#xf44b;" horiz-adv-x="640" 
-d="M104 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-24c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h24v104c0 13.2998 10.7002 24 24 24h48zM632 224c4.40039 0 8 -3.59961 8 -8v-48
-c0 -4.40039 -3.59961 -8 -8 -8h-24v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v272c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-104h24zM456 416c13.2998 0 24 -10.7002 24 -24v-400c0 -13.2998 -10.7002 -24 -24 -24h-48
-c-13.2998 0 -24 10.7002 -24 24v168h-128v-168c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-168h128v168c0 13.2998 10.7002 24 24 24h48z" />
-    <glyph glyph-name="football-ball" unicode="&#xf44e;" horiz-adv-x="496" 
-d="M481.5 387.7c6.2998 -23.9004 13.7002 -61 14.5 -104.5l-156.6 156.8c43.5996 -0.900391 80.8994 -8.5 104.8 -14.9004c18.2002 -4.89941 32.5 -19.1992 37.2998 -37.3994zM14.5 -3.7002c-6.2998 23.9004 -13.7002 61 -14.5 104.5l156.6 -156.8
-c-43.5996 0.900391 -80.8994 8.5 -104.8 14.9004c-18.2002 4.89941 -32.5 19.1992 -37.2998 37.3994zM4.2002 164.6c22.5996 152.7 138.899 252 271.399 271.4l216.301 -216.6c-22.7002 -152.7 -139 -252 -271.5 -271.4zM321.5 288.2l-28.2998 -28.5l-28.2998 28.2998
-c-3.10059 3.09961 -8.2002 3.09961 -11.3008 0l-11.2998 -11.2998c-3.09961 -3.10059 -3.09961 -8.2002 0 -11.2998l28.2998 -28.3008l-22.5996 -22.5996l-28.2998 28.2998c-3.10059 3.10059 -8.2002 3.10059 -11.2998 0l-11.3008 -11.2998
-c-3.09961 -3.09961 -3.09961 -8.2002 0 -11.2998l28.3008 -28.2998l-22.6006 -22.6006l-28.2998 28.2998c-3.09961 3.10059 -8.2002 3.10059 -11.2998 0l-11.2998 -11.2998c-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l28.2998 -28.2002l-28.2998 -28.2998
-c-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l11.2998 -11.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0l28.2998 28.2998l28.2998 -28.2998c3.10059 -3.10059 8.2002 -3.10059 11.3008 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998
-l-28.2998 28.2998l22.5996 22.6006l28.2998 -28.3008c3.10059 -3.09961 8.2002 -3.09961 11.2998 0l11.3008 11.3008c3.09961 3.09961 3.09961 8.19922 0 11.2998l-28.3008 28.2998l22.6006 22.7002l28.2998 -28.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0
-l11.2998 11.2998c3.10059 3.09961 3.10059 8.2002 0 11.2998l-28.2998 28.2998l28.2998 28.2998c3.10059 3.10059 3.10059 8.2002 0 11.3008l-11.2998 11.2998c-3.09961 3.09961 -8.2002 3.09961 -11.2998 0z" />
-    <glyph glyph-name="golf-ball" unicode="&#xf450;" horiz-adv-x="416" 
-d="M96 32h224c0 -17.7002 -14.2998 -32 -32 -32h-16c-17.7002 0 -32 -14.2998 -32 -32v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20c0 17.7002 -14.2998 32 -32 32h-16c-17.7002 0 -32 14.2998 -32 32zM416 240
-c0 -74.2002 -39 -139.2 -97.5 -176h-221c-58.5 36.7998 -97.5 101.8 -97.5 176c0 114.9 93.0996 208 208 208s208 -93.0996 208 -208zM235.9 196.1c18.2998 0 33.0996 14.8008 33.0996 33.1006c0 14.3994 -9.2998 26.2998 -22.0996 30.8994
-c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006zM285 149.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994
-c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006c18.2998 0 33.0996 14.9004 33.0996 33.1006zM349 213.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006
-c18.2998 0 33.0996 14.9004 33.0996 33.1006z" />
-    <glyph glyph-name="hockey-puck" unicode="&#xf453;" 
-d="M0 288c0 53 114.6 96 256 96s256 -43 256 -96s-114.6 -96 -256 -96s-256 43 -256 96zM0 205.8c113.5 -82.3994 398.6 -82.2998 512 0v-109.8c0 -53 -114.6 -96 -256 -96s-256 43 -256 96v109.8z" />
-    <glyph glyph-name="quidditch" unicode="&#xf458;" horiz-adv-x="640" 
-d="M256.5 231.2l86.7002 -109.2s-16.6006 -102.4 -76.6006 -150.1c-59.8994 -47.7002 -266.6 -34.1006 -266.6 -34.1006s3.7998 23.1006 11 55.4004l94.5996 112.2c4 4.69922 -0.899414 11.5996 -6.59961 9.5l-60.4004 -22.1006c14.4004 41.7002 32.7002 80 54.6006 97.5
-c59.8994 47.7998 163.3 40.9004 163.3 40.9004zM494.5 96.2002c44 0 79.7998 -35.7002 79.7998 -79.9004c0 -44.0996 -35.7002 -79.8994 -79.7998 -79.8994s-79.7998 35.7998 -79.7998 79.8994c0 44.1006 35.7998 79.9004 79.7998 79.9004zM636.5 417
-c5.5 -6.90039 4.40039 -17 -2.5 -22.5l-232.5 -177.9l34.0996 -42.8994c5.10059 -6.40039 1.7002 -15.9004 -6.2998 -17.6006l-58.7998 -12.3994l-86.7002 109.2l25.2998 54.5996c3.5 7.40039 13.5 8.59961 18.6006 2.2002l34.0996 -43l232.5 177.899
-c6.90039 5.40039 16.9004 4.30078 22.4004 -2.59961z" />
-    <glyph glyph-name="square-full" unicode="&#xf45c;" 
-d="M512 -64h-512v512h512v-512z" />
-    <glyph glyph-name="table-tennis" unicode="&#xf45d;" 
-d="M496.2 151.5c-64.1006 43.2002 -149.5 27.9004 -195.601 -34.2002l-211.5 211.5l56 56.1006c83.9004 84.0996 220 84.0996 303.9 0c63 -63.1006 78.7002 -155.601 47.2002 -233.4zM278.3 71.7998c-3.7002 -12.7002 -6.2998 -25.8994 -6.2002 -39.7002
-c0 -19.5 3.90039 -38.0996 11 -55.0996c-25.6992 2.7998 -50.5996 13.5996 -70.2998 33.2998l-35.7002 35.7002l-89.2998 -103.3c-7.5 -8.60059 -20.7002 -9.10059 -28.7002 -1l-53.3994 53.5c-8.10059 8.09961 -7.60059 21.2998 1 28.7998l103 89.4004l-34.5 34.5996
-c-39 39.0996 -44.6006 98.7998 -17.2998 144.1zM416 128c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96z" />
-    <glyph glyph-name="volleyball-ball" unicode="&#xf45f;" 
-d="M231.39 204.52c-70.1855 -43.1172 -122.835 -111.301 -146.1 -192.199c-24.0918 22.8398 -43.4365 50.252 -56.9004 81.0996c22.8008 94.4004 89.5 174.4 180.301 216.8c13.8145 -32.4951 21.9121 -68.375 22.6992 -105.7zM194.49 338.92
-c-84 -39.5 -149 -108.4 -182.4 -191.5c-19.7998 109.3 34 212.4 125 262.2c22.8408 -20.3574 42.0732 -43.9951 57.4004 -70.7002zM382.09 173.82c-36.7021 4.46582 -71.8574 16.1094 -102.899 33.1797c-2.36035 86.3154 -37.5332 164.725 -93.5 222.72
-c47.2998 14 84.1992 10.2002 98.8994 8.5c70.2002 -66.8994 106.101 -164.6 97.5 -264.399zM257.39 164.32c49.7002 -26.8008 104 -40.8008 158.601 -40.9004c27.9346 0.173828 54.9697 3.79297 80.8994 10.4004c-7.93359 -32.9053 -22.5615 -63.5879 -42.1992 -89.9004
-c-93 -27.2998 -195.5 -9.5 -277.5 47.7998c21.9443 29.166 48.8877 53.5898 80.1992 72.6006zM159.09 64.6201c53.6006 -37.2998 144 -78.2002 256.9 -62.1006c-43.0684 -36.5068 -99.1953 -58.4424 -160.021 -58.4424c-47.2529 0 -91.4258 13.2939 -128.979 36.3428
-c6.39941 29.7998 16.8994 58.2002 32.0996 84.2002zM339.39 425.22c95.9004 -34.2998 164.601 -125.6 164.601 -233.399c0 -2 -0.299805 -4 -0.299805 -6c-28.0381 -9.1709 -57.998 -14.2012 -89.083 -14.2012c-0.206055 0 -0.412109 0 -0.617188 0.000976562
-c7.89941 92.3994 -19.2998 183.2 -74.6006 253.6z" />
-    <glyph glyph-name="allergies" unicode="&#xf461;" horiz-adv-x="448" 
-d="M416 336c17.5996 0 32 -14.4004 32 -32v-176.1c-0.200195 -14 -1.90039 -28.6006 -5.09961 -42.3008l-26.5 -112.699c-5.10059 -21.7002 -24.4004 -37 -46.7002 -37h-197.601c-15.2998 0 -29.7998 7.39941 -38.7998 19.7998l-125.6 172.7
-c-13 17.8994 -9.10059 42.8994 8.7998 55.8994s42.9004 9.10059 55.9004 -8.7998l23.5996 -32.5v241c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v184c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-184
-c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v152c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v72c0 17.5996 14.4004 32 32 32zM176 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16
-s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM176 128c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 96c8.7998 0 16 7.2002 16 16
-s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM336 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM368 128
-c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z" />
-    <glyph glyph-name="band-aid" unicode="&#xf462;" horiz-adv-x="640" 
-d="M0 288c0 35.2998 28.7002 64 64 64h96v-320h-96c-35.2998 0 -64 28.7002 -64 64v192zM576 352c35.2998 0 64 -28.7002 64 -64v-192c0 -35.2998 -28.7002 -64 -64 -64h-96v320h96zM192 32v320h256v-320h-256zM368 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24
-s24 10.7002 24 24s-10.7002 24 -24 24zM368 168c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 168
-c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24z" />
-    <glyph glyph-name="box" unicode="&#xf466;" 
-d="M509.5 263.4c0.799805 -2.40039 0.799805 -4.90039 1.2002 -7.40039h-238.7v192h141.4c20.6992 0 39 -13.2002 45.5 -32.7998zM240 448v-192h-238.7c0.400391 2.5 0.400391 5 1.2002 7.40039l50.5996 151.8c6.5 19.5996 24.8008 32.7998 45.5 32.7998h141.4zM0 224h512
-v-240c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v240z" />
-    <glyph glyph-name="boxes" unicode="&#xf468;" horiz-adv-x="576" 
-d="M560 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998l32 -21.2998v96h80zM176 224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96
-l32 21.2998l32 -21.2998v96h80c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224zM240 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998
-l32 -21.2998v96h80z" />
-    <glyph glyph-name="briefcase-medical" unicode="&#xf469;" 
-d="M464 320c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h80v48c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-48h80zM192 352v-32h128v32h-128zM352 104v48c0 4.40039 -3.59961 8 -8 8h-56v56
-c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8z" />
-    <glyph glyph-name="burn" unicode="&#xf46a;" horiz-adv-x="384" 
-d="M192 448c111.8 -100.9 192 -220.6 192 -300.5c0 -124.5 -79 -211.5 -192 -211.5s-192 87 -192 211.5c0 79.5996 79.7002 199.2 192 300.5zM192 0c56.5 0 96 39 96 94.7998c0 13.5 -4.59961 61.5 -96 161.2c-91.4004 -99.7002 -96 -147.7 -96 -161.2
-c0 -55.7998 39.5 -94.7998 96 -94.7998z" />
-    <glyph glyph-name="capsules" unicode="&#xf46b;" horiz-adv-x="576" 
-d="M555.3 147.9c36.2002 -51.7002 23.7002 -123 -28 -159.2c-20 -14 -42.7998 -20.7002 -65.5 -20.7002c-36.0996 0 -71.5996 17 -93.7998 48.7998l-131.2 187.3c-5.5 7.90039 -9.5 16.4004 -12.7998 25v-149.1c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112
-v224c0 61.9004 50.0996 112 112 112c60 0 108.5 -47.2002 111.4 -106.5c7.7998 21 21.7998 40 41.5 53.7998c20 14 42.8994 20.7002 65.5 20.7002c36 0 71.5 -17 93.7998 -48.7998zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM354.8 147.1
-l82.5 57.7002l-65.5996 93.7002c-9.40039 13.5 -24.7998 21.5 -41.2998 21.5c-10.3008 0 -20.3008 -3.09961 -28.8008 -9.09961c-11 -7.7002 -18.3994 -19.3008 -20.6992 -32.5c-2.40039 -13.2002 0.599609 -26.6006 8.2998 -37.6006z" />
-    <glyph glyph-name="clipboard-check" unicode="&#xf46c;" horiz-adv-x="384" 
-d="M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24
-s-10.7002 24 -24 24zM313.2 176.2c4.7002 4.7002 4.7998 12.2002 0.0996094 17l-28.2002 28.3994c-4.69922 4.7002 -12.2998 4.80078 -17 0.100586l-106 -105.2l-46 46.4004c-4.69922 4.69922 -12.2998 4.7998 -17 0.0996094l-28.3994 -28.2002
-c-4.7002 -4.7002 -4.7998 -12.2998 -0.100586 -17l82.6006 -83.2998c4.7002 -4.7002 12.2998 -4.7998 17 -0.0996094z" />
-    <glyph glyph-name="clipboard-list" unicode="&#xf46d;" horiz-adv-x="384" 
-d="M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM96 24c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24
-s10.7002 -24 24 -24zM96 120c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM96 216c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM192 408c-13.2998 0 -24 -10.7002 -24 -24
-s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM320 40v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 136v16c0 4.40039 -3.59961 8 -8 8h-144
-c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 232v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z" />
-    <glyph glyph-name="diagnoses" unicode="&#xf470;" horiz-adv-x="640" 
-d="M496 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM320 272c-48.5 0 -88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88s-39.5 -88 -88 -88zM59.7998 84l-17.7002 26.7002c-8.7998 13.2998 -7.59961 34.5996 10 45.0996
-c7.40039 4.40039 17.5 10 28.7002 16c31.6006 -27.2998 79 -4.2002 79.2002 36c47.0996 17.7002 103 32.2002 160 32.2002c45.0996 0 89.2998 -9.2002 129.2 -21.7998c-11.7002 -52.9004 59.5996 -81.2002 87.7002 -35.1006
-c21.3994 -10.3994 39.1992 -20.2998 51.0996 -27.3994c17.5996 -10.5 18.7998 -31.9004 10 -45.1006l-17.7998 -26.6992c-10.2002 -15.1006 -29.2998 -17.8008 -42.9004 -9.80078c-16.2002 9.60059 -56.2002 31.8008 -105.3 48.6006v-90.7002h-224v90.7998
-c-49.0996 -16.8994 -89.0996 -39 -105.3 -48.5996c-13.6006 -8 -32.7002 -5.5 -42.9004 9.7998zM368 104c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 200c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24
-s24 10.7002 24 24s-10.7002 24 -24 24zM112 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32
-c0 8.7998 7.2002 16 16 16h608z" />
-    <glyph glyph-name="dna" unicode="&#xf471;" horiz-adv-x="448" 
-d="M0.0996094 -46.0996c5.2002 42.8994 31.4004 153.899 159.9 238.1c-128.6 84.2002 -154.7 195.2 -159.9 238.1c-1.09961 9.5 6.40039 17.8008 16 17.8008l32.3008 0.0996094c8.09961 0.0996094 14.8994 -5.90039 16 -13.9004
-c0.699219 -5 1.7998 -11.0996 3.39941 -18.0996h312.4c1.59961 7 2.7002 13.2002 3.39941 18.0996c1.10059 8 7.90039 13.9004 16 13.9004l32.4004 -0.0996094c9.59961 0 17 -8.30078 15.9004 -17.8008c-5.80078 -47.8994 -37.4004 -181.199 -209.5 -266.699
-c-31.7002 -15.8008 -57.4004 -33.3008 -78.7002 -51.4004h127.6c-5.59961 4.7998 -10.7998 9.59961 -17 14.2002c21.4004 11.2002 40.9004 23 58.5 35.3994c93.2998 -78.6992 114.3 -169.8 118.9 -207.699c1.2002 -9.5 -6.2998 -17.8008 -15.9004 -17.8008
-l-32.2998 -0.0996094c-8.09961 -0.0996094 -14.9004 5.90039 -16 13.9004c-0.599609 4.89941 -1.90039 11.1992 -3.5 18.0996h-312.3c-1.60059 -7 -2.7002 -13.2002 -3.40039 -18.0996c-1.09961 -8 -7.89941 -13.9004 -16 -13.9004l-32.2998 0.0996094
-c-9.59961 0 -17 8.30078 -15.9004 17.8008zM224 228.4c25.0996 13.5996 46.4004 28.3994 64.2002 43.5996h-128.5c17.8994 -15.2002 39.2002 -29.9004 64.2998 -43.5996zM355.1 352h-262.1c5.7002 -10.4004 12.7002 -21.0996 21 -32h220.1
-c8.2002 10.9004 15.2002 21.5996 21 32zM92.9004 32h261.6c-5.7998 10.4004 -12.9004 21.0996 -21.2002 32h-219.399c-8.2002 -10.9004 -15.2002 -21.5996 -21 -32z" />
-    <glyph glyph-name="dolly" unicode="&#xf472;" horiz-adv-x="576" 
-d="M294.2 170.3l-53 159.4c-2.7998 8.2998 1.7002 17.3994 10.0996 20.2002l61.6006 20.5l33.0996 -99.4004l60.7002 20.0996l-33.1006 99.4004l61.1006 20.4004c8.2998 2.7998 17.3994 -1.7002 20.2002 -10.1006l60.3994 -181.2
-c2.7998 -8.2998 -1.7002 -17.3994 -10.0996 -20.1992l-161.5 -53.8008c-14.7998 11.3008 -31.5 19.7002 -49.5 24.7002zM575.2 121.6c2.7998 -8.39941 -1.7998 -17.3994 -10.1006 -20.1992l-213.3 -71.2002c-1.09961 -57.7998 -53.2002 -103.3 -113.399 -92.6006
-c-39.4004 6.90039 -71.2002 39.8008 -77.3008 79.2002c-5.69922 36.9004 9.90039 70.1006 36 90.5l-92.1992 276.7h-88.9004c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h112c13.7998 0 26 -8.7998 30.4004 -21.9004l99.3994 -298.199
-c29.9004 -0.600586 56.2998 -15 73.5 -37l213.5 71.1992c8.2998 2.80078 17.4004 -1.69922 20.2002 -10.0996zM256 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z" />
-    <glyph glyph-name="dolly-flatbed" unicode="&#xf474;" horiz-adv-x="640" 
-d="M208 128c-8.7998 0 -16 7.2002 -16 16v256c0 8.7998 7.2002 16 16 16h144v-128l48 32l48 -32v128h144c8.7998 0 16 -7.2002 16 -16v-256c0 -8.7998 -7.2002 -16 -16 -16h-384zM624 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-82.7998
-c1.7002 -5 2.89941 -10.4004 2.89941 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.10059 11 2.90039 16h-197.9c1.7002 -5 2.90039 -10.4004 2.90039 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.09961 11 2.90039 16h-82.9004
-c-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16v-368h496z" />
-    <glyph glyph-name="file-medical" unicode="&#xf477;" horiz-adv-x="384" 
-d="M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z
-M288 152c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56
-c4.40039 0 8 3.59961 8 8v48z" />
-    <glyph glyph-name="file-medical-alt" unicode="&#xf478;" horiz-adv-x="448" 
-d="M288 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v168h70.0996l34.8008 -69.5c2.89941 -5.90039 11.3994 -5.90039 14.2998 0l56.7998 113.7l22.0996 -44.2002h89.9004c8.7998 0 16 7.2002 16 16
-s-7.2002 16 -16 16h-70.2002l-34.7002 69.5c-2.89941 5.90039 -11.3994 5.90039 -14.2998 0l-56.7998 -113.7l-19.9004 39.7998c-1.39941 2.7002 -4.19922 4.40039 -7.19922 4.40039h-140.9c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h56v232
-c0 13.2998 10.7002 24 24 24h200v-136zM441 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z" />
-    <glyph glyph-name="first-aid" unicode="&#xf479;" horiz-adv-x="576" 
-d="M0 368c0 26.5 21.5 48 48 48h48v-448h-48c-26.5 0 -48 21.5 -48 48v352zM128 -32v448h320v-448h-320zM192 216v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48
-c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-48v448h48z" />
-    <glyph glyph-name="hospital-alt" unicode="&#xf47d;" horiz-adv-x="576" 
-d="M544 352c17.7002 0 32 -14.2998 32 -32v-368c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v368c0 17.7002 14.2998 32 32 32h128v64c0 17.7002 14.2998 32 32 32h192c17.7002 0 32 -14.2998 32 -32v-64h128zM160 12v40c0 6.59961 -5.40039 12 -12 12
-h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM160 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 12v40
-c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40
-c6.59961 0 12 5.40039 12 12zM336 310v20c0 3.2998 -2.7002 6 -6 6h-26v26c0 3.2998 -2.7002 6 -6 6h-20c-3.2998 0 -6 -2.7002 -6 -6v-26h-26c-3.2998 0 -6 -2.7002 -6 -6v-20c0 -3.2998 2.7002 -6 6 -6h26v-26c0 -3.2998 2.7002 -6 6 -6h20c3.2998 0 6 2.7002 6 6v26h26
-c3.2998 0 6 2.7002 6 6zM480 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40
-c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z" />
-    <glyph glyph-name="hospital-symbol" unicode="&#xf47e;" 
-d="M256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM368 72v240c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-88h-96v88c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-240
-c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v88h96v-88c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8z" />
-    <glyph glyph-name="id-card-alt" unicode="&#xf47f;" horiz-adv-x="576" 
-d="M528 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h144v-96h192v96h144zM288 224c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM381.3 0
-c10.4004 0 18.7998 10 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.5 0 -52.5996 -18.5996 -60.9004 -44.2002
-c-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6zM352 416v-96h-128v96c0 17.7002 14.2998 32 32 32h64c17.7002 0 32 -14.2998 32 -32z" />
-    <glyph glyph-name="notes-medical" unicode="&#xf481;" horiz-adv-x="384" 
-d="M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24
-s-10.7002 24 -24 24zM288 104v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8
-v56h56c4.40039 0 8 3.59961 8 8zM288 296v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8z" />
-    <glyph glyph-name="pallet" unicode="&#xf482;" horiz-adv-x="640" 
-d="M144 192c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h112v-128l64 32l64 -32v128h112c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-352zM624 64h-48v-64h48c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608
-c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v64h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16zM288 0v64h-160v-64h160zM512 0v64h-160v-64h160z" />
-    <glyph glyph-name="pills" unicode="&#xf484;" horiz-adv-x="576" 
-d="M112 416c61.9004 0 112 -50.0996 112 -112v-224c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112v224c0 61.9004 50.0996 112 112 112zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM299.7 221.7l210.8 -210.8
-c3.5 -3.5 3.2002 -9.40039 -0.799805 -12.3008c-62.5 -45.2998 -150.101 -40.3994 -206.4 15.9004s-61.2002 143.9 -15.8994 206.4c2.89941 3.89941 8.7998 4.2998 12.2998 0.799805zM529.5 240.7c56.4004 -56.2998 61.2002 -143.8 15.9004 -206.4
-c-2.90039 -3.89941 -8.80078 -4.2998 -12.3008 -0.799805l-210.8 210.8c-3.5 3.5 -3.2002 9.40039 0.799805 12.2998c62.5 45.3008 150.101 40.4004 206.4 -15.8994z" />
-    <glyph glyph-name="prescription-bottle" unicode="&#xf485;" horiz-adv-x="384" 
-d="M32 256v64h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16
-c0 4.40039 -3.59961 8 -8 8h-120zM360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336z" />
-    <glyph glyph-name="prescription-bottle-alt" unicode="&#xf486;" horiz-adv-x="384" 
-d="M360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336zM32 -32v352h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32zM96 152v-48
-c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8z
-" />
-    <glyph glyph-name="procedures" unicode="&#xf487;" horiz-adv-x="640" 
-d="M528 224c61.9004 0 112 -50.0996 112 -112v-160c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48h-512v-48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v352c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-240h192
-v144c0 8.7998 7.2002 16 16 16h256zM136 352c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h140.9c3.09961 0 5.7998 -1.7002 7.19922 -4.40039l19.9004 -39.7998l49.7002 99.4004c5.89941 11.7998 22.7002 11.7998 28.5996 0l27.6006 -55.2002h102.1
-c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16h-121.9l-22.0996 44.2002l-49.7002 -99.4004c-5.89941 -11.7998 -22.7002 -11.7998 -28.5996 0l-27.6006 55.2002h-126.1zM160 96c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64
-s-28.7002 -64 -64 -64z" />
-    <glyph glyph-name="shipping-fast" unicode="&#xf48b;" horiz-adv-x="640" 
-d="M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96v128h152c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16
-c0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-272c-4.40039 0 -8 3.59961 -8 8v16
-c0 4.40039 3.59961 8 8 8h56v48c0 26.5 21.5 48 48 48h256c26.5 0 48 -21.5 48 -48v-48h44.0996c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48
-s-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z" />
-    <glyph glyph-name="smoking" unicode="&#xf48d;" horiz-adv-x="640" 
-d="M632 96c4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48zM553.3 360.9c54.2998 -36.4004 86.7002 -97.1006 86.7002 -162.601v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48
-c-4.40039 0 -8 3.59961 -8 8v30.2998c0 50.2002 -25.2002 96.7002 -67.4004 124c-18.3994 12 -28.5996 33.4004 -28.5996 55.4004v62.2998c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -6.7998 3.59961 -13 9.2998 -16.7998zM432 96
-c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-384c-26.5 0 -48 21.5 -48 48v64c0 26.5 21.5 48 48 48h384zM400 -16v64h-176v-64h176zM487.7 306.4c35.2998 -24.7002 56.2998 -64.8008 56.2998 -108.101v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48
-c-4.40039 0 -8 3.59961 -8 8v30.2998c0 27.4004 -13.2998 52.9004 -35.7002 68.6006c-35.7002 25.0996 -60.2998 63 -60.2998 106.699v66.4004c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -29 15.7998 -54.7002 39.7002 -71.2998zM536 96
-c4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48z" />
-    <glyph glyph-name="syringe" unicode="&#xf48e;" 
-d="M201.5 273.2l64.9004 65l135.699 -135.7l-181.899 -181.9c-17.5 -17.5996 -41.5 -25.5996 -65.4004 -23l-63.5996 7.10059l-66.2998 -66.2998c-3.10059 -3.10059 -8.2002 -3.10059 -11.3008 0l-11.2998 11.2998c-3.09961 3.09961 -3.09961 8.2002 0 11.2998
-l66.4004 66.4004l-7.10059 63.5996c-2.59961 24.2998 5.7002 48.0996 23 65.4004l26.4004 26.3994l55.7998 -55.8994c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-55.8008 55.7998l45.3008 45.2998
-l55.6992 -55.7998c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008zM509.7 366.5c3.09961 -3.2002 3.09961 -8.2002 0 -11.4004l-11.2998 -11.2998c-3.10059 -3.09961 -8.2002 -3.09961 -11.3008 0l-28.2998 28.2998
-l-45.2998 -45.2998l73.5 -73.5c3.09961 -3.09961 3.09961 -8.2002 0 -11.2998l-33.9004 -34c-3.09961 -3.09961 -8.19922 -3.09961 -11.2998 0l-17 17l-135.7 135.9l-17 17c-3.09961 3.09961 -3.09961 8.19922 0 11.2998l33.9004 33.8994
-c3.09961 3.10059 8.2002 3.10059 11.2998 0l17 -17l56.6006 -56.5996l45.2998 45.2998l-28.2998 28.2998c-3.10059 3.10059 -3.10059 8.2002 0 11.3008l11.2998 11.2998c3.09961 3.09961 8.2002 3.09961 11.2998 0z" />
-    <glyph glyph-name="tablets" unicode="&#xf490;" horiz-adv-x="640" 
-d="M160 256c81.0996 0 147.5 -58.5 160 -134.7c0.799805 -4.7998 -3.2998 -9.2998 -8.2998 -9.2998h-303.3c-5 0 -9.10059 4.5 -8.30078 9.2998c12.4004 76.2002 78.8008 134.7 159.9 134.7zM311.6 80c5 0 9.10059 -4.5 8.30078 -9.2998
-c-12.4004 -76.2002 -78.8008 -134.7 -159.9 -134.7s-147.5 58.5 -159.9 134.7c-0.799805 4.7998 3.30078 9.2998 8.30078 9.2998h303.199zM593.4 401.4c56.5 -56.5 61.3994 -144.2 15.8994 -206.9c-2.7998 -4 -8.7998 -4.2998 -12.2998 -0.799805l-211.3 211.399
-c-3.5 3.40039 -3.2002 9.40039 0.799805 12.3008c62.7002 45.3994 150.4 40.5 206.9 -16zM363 382.3l211.3 -211.3c3.5 -3.40039 3.2002 -9.40039 -0.799805 -12.2998c-62.7002 -45.5 -150.4 -40.6006 -206.9 15.8994c-56.3994 56.5 -61.2998 144.2 -15.8994 206.9
-c2.7998 4 8.7998 4.2998 12.2998 0.799805z" />
-    <glyph glyph-name="thermometer" unicode="&#xf491;" 
-d="M476.8 427.6c49.4004 -40.6992 42.1006 -107.3 7.2002 -142.199l-254.2 -253.301h-99.8994l-89 -89c-9.30078 -9.39941 -24.5 -9.39941 -33.9004 0c-9.40039 9.30078 -9.40039 24.5 0 33.9004l89 89v100.9l45.2998 45.6992l50.1006 -50.1992
-c3.09961 -3.10059 8.19922 -3.10059 11.2998 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-50.0996 50.2002l45.0996 45.3994l50.2998 -50.1992c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998
-l-50.3008 50.4004l45.1006 45.3994l50.3994 -50.5c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008l-50.5 50.5l45.7002 46c36.3994 36.5 94.3994 40.8994 131.899 10.1992z" />
-    <glyph glyph-name="vial" unicode="&#xf492;" horiz-adv-x="480" 
-d="M477.7 261.9c3.09961 -3.10059 3.09961 -8.2002 0 -11.2002l-34 -33.9004c-3.10059 -3.09961 -8.2002 -3.09961 -11.2998 0l-11.2002 11.1006l-246.3 -245.7c-20.1006 -20.1006 -46.5 -30.1006 -72.9004 -30.1006c-28.9004 -0.0996094 -57.7998 11.9004 -78.4004 35.9004
-c-35.6992 41.5 -29.3994 104.8 9.40039 143.5l242.4 241.9l-11.2002 11.0996c-3.10059 3.09961 -3.10059 8.2002 0 11.2998l34 33.9004c3.09961 3.09961 8.2002 3.09961 11.2998 0zM318 192l69.5 69.4004l-78.5 78.2998l-148 -147.7h157z" />
-    <glyph glyph-name="vials" unicode="&#xf493;" horiz-adv-x="640" 
-d="M72 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240c0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM144 384v-96h64v96h-64zM624 0c8.7998 0 16 -7.2002 16 -16
-v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM360 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240
-c0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM432 384v-96h64v96h-64z" />
-    <glyph glyph-name="warehouse" unicode="&#xf494;" horiz-adv-x="640" 
-d="M504 96c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.7c-4.39941 0 -8 3.59961 -8 8l0.100586 48c0 4.40039 3.59961 8 8 8h367.6zM504 0c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-368c-4.40039 0 -8 3.59961 -8 8
-l0.0996094 48c0 4.40039 3.60059 8 8 8h367.9zM504 192c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.5c-4.40039 0 -8 3.59961 -8 8l0.0996094 48c0 4.40039 3.60059 8 8 8h367.4zM610.5 331c17.7998 -7.5 29.5 -24.9004 29.5 -44.2998v-342.7
-c0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v248c0 17.5996 -14.5996 32 -32.5996 32h-382.801c-18 0 -32.5996 -14.4004 -32.5996 -32v-248c0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v342.7c0 19.3994 11.7002 36.7998 29.5 44.2998
-l272 113.3c5.6748 2.35449 11.959 3.6543 18.4814 3.6543s12.7432 -1.2998 18.4189 -3.6543z" />
-    <glyph glyph-name="weight" unicode="&#xf496;" 
-d="M448 384c35.29 0 64 -28.71 64 -64v-320c0 -35.29 -28.71 -64 -64 -64h-384c-35.29 0 -64 28.71 -64 64v320c0 35.29 28.71 64 64 64h25.9805c-16.4209 -28.2803 -25.9805 -61.0098 -25.9805 -96c0 -105.87 86.1299 -192 192 -192s192 86.1299 192 192
-c0 34.9902 -9.55957 67.7197 -25.9805 96h25.9805zM256 128c-88.3701 0 -160 71.6299 -160 160s71.6299 160 160 160s160 -71.6299 160 -160s-71.6299 -160 -160 -160zM255.7 279.94c-21.9404 -0.170898 -39.7002 -17.96 -39.7002 -39.9404c0 -22.0898 17.9102 -40 40 -40
-s40 17.9102 40 40c0 10.5498 -4.26953 20 -10.9502 27.1602l33.6699 78.5498c3.4707 8.11035 -0.290039 17.5205 -8.41016 21c-8.08984 3.50977 -17.5293 -0.240234 -21.0293 -8.41016z" />
-    <glyph glyph-name="x-ray" unicode="&#xf497;" horiz-adv-x="640" 
-d="M240 64c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM400 32c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 448c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16
-h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v352h512v-352h48zM480 200v16c0 4.40039 -3.59961 8 -8 8
-h-136v32h104c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v24c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-24h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-136c-4.40039 0 -8 -3.59961 -8 -8v-16
-c0 -4.40039 3.59961 -8 8 -8h136v-32h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-64c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48v16h64v-16c0 -26.5 21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48h-64v32h104
-c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v32h136c4.40039 0 8 3.59961 8 8z" />
-    <glyph glyph-name="box-open" unicode="&#xf49e;" horiz-adv-x="640" 
-d="M425.7 192c4.5 0 9 0.599609 13.2998 1.90039l137 39.0996v-178c0 -14.5996 -10 -27.4004 -24.2002 -31l-216.399 -54.0996c-10.1006 -2.5 -20.8008 -2.5 -31 0l-216.2 54.0996c-14.2002 3.5 -24.2002 16.2998 -24.2002 31v178l137 -39.2002
-c4.2998 -1.2998 8.7998 -1.89941 13.2998 -1.89941c16.9004 0 32.7998 9 41.5 23.5l64.2002 106.6l64.2998 -106.6c8.60059 -14.4004 24.5 -23.4004 41.4004 -23.4004zM638.3 304.2c4.5 -9.2002 -0.299805 -20.2002 -10.2002 -23.1006l-197.899 -56.5
-c-7.10059 -2 -14.7002 1 -18.5 7.30078l-91.7002 152.1l250.1 31.9004c6.90039 0.899414 13.6006 -2.7002 16.7002 -8.90039zM53.2002 407c3.09961 6.2002 9.7002 9.7002 16.5996 8.90039l250.2 -31.9004l-91.7998 -152c-3.7998 -6.2998 -11.4004 -9.2998 -18.5 -7.2998
-l-197.9 56.5c-9.7998 2.7998 -14.7002 13.7998 -10.0996 23z" />
-    <glyph glyph-name="comment-dots" unicode="&#xf4ad;" 
-d="M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002
-c0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 176c17.7002 0 32 14.2998 32 32
-s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="comment-slash" unicode="&#xf4b3;" horiz-adv-x="640" 
-d="M64 208c0 18.5996 3.2998 36.5 8.90039 53.5996l325.5 -251.6c-24.7002 -6.40039 -51 -10 -78.4004 -10c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.90039 -7.2998 4.7998
-c-1.2998 3 -0.700195 6.40039 1.5 8.7002c0.5 0.599609 42.2002 45.5 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7
-c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l105.1 -81.2998c45.2002 32.6006 104.301 52.7002 169.4 52.7002c141.4 0 256 -93.0996 256 -208c0 -49.2002 -21.4004 -94.0996 -56.5996 -129.7z" />
-    <glyph glyph-name="couch" unicode="&#xf4b8;" horiz-adv-x="640" 
-d="M160 224c0 35.2998 -28.7002 64 -64 64h-32c0 53 43 96 96 96h320c53 0 96 -43 96 -96h-32c-35.2998 0 -64 -28.7002 -64 -64v-64h-320v64zM576 256c35.2998 0 64 -28.7002 64 -64c0 -23.5996 -13 -44 -32 -55.0996v-120.9c0 -8.7998 -7.2002 -16 -16 -16h-64
-c-8.7998 0 -16 7.2002 -16 16v16h-384v-16c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v120.9c-19 11.0996 -32 31.5 -32 55.0996c0 35.2998 28.7002 64 64 64h32c17.7002 0 32 -14.2998 32 -32v-96h384v96c0 17.7002 14.2998 32 32 32h32z" />
-    <glyph glyph-name="donate" unicode="&#xf4b9;" 
-d="M256 32c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208s-93.0996 -208 -208 -208zM233.8 350.6c-32.7002 -0.899414 -59 -28.3994 -59.0996 -62.3994c0 -27.7002 18 -52.4004 43.7002 -60.1006l62.2998 -18.6992
-c7.09961 -2.10059 12.0996 -9.40039 12.0996 -17.6006c0 -10.0996 -7.2998 -18.2998 -16.2998 -18.2998h-38.9004c-6.39941 0 -12.3994 1.7002 -17.7998 5.09961c-4.5 2.80078 -10.2002 2.7002 -14 -1l-16.2998 -15.5c-5 -4.7998 -4.40039 -13 1.2002 -17.0996
-c12.5 -9.2998 27.5 -14.5996 43 -15.4004v-17c0 -9.19922 7.39941 -16.5996 16.5996 -16.5996h11.1006c9.19922 0 16.5996 7.40039 16.5996 16.5996v16.8008c32.7002 0.899414 59.0996 28.3994 59.0996 62.3994c0 27.7002 -18 52.4004 -43.6992 60.1006l-62.3008 18.6992
-c-7.09961 2.10059 -12.0996 9.40039 -12.0996 17.6006c0 10.0996 7.2998 18.2998 16.2998 18.2998h38.9004c6.39941 0 12.3994 -1.7002 17.7998 -5.09961c4.5 -2.80078 10.2002 -2.7002 14 1l16.2998 15.5c5 4.7998 4.40039 13 -1.2002 17.0996
-c-12.5 9.2998 -27.5 14.5996 -43 15.4004v17c0 9.19922 -7.39941 16.5996 -16.5996 16.5996h-11.0996c-9.2002 0 -16.6006 -7.40039 -16.6006 -16.5996v-16.8008zM480 96c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-448
-c-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h32.4004c19.6992 -26 44.5996 -47.7002 73 -64h-63.8008c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h364.7c5.2998 0 9.60059 3.59961 9.60059 8v16
-c0 4.40039 -4.30078 8 -9.60059 8h-63.7998c28.4004 16.2998 53.4004 38 73 64h32.5z" />
-    <glyph glyph-name="dove" unicode="&#xf4ba;" 
-d="M288 280.8c-50.7998 10.5 -96.5996 36.7998 -130.8 75.1006c11.2002 32.3994 27.7998 61.5996 48.8994 86.5c8.80078 10.5 25.7002 5.19922 27.8008 -8.30078c7 -45.8994 25.8994 -88.8994 54.0996 -125.199v-28.1006zM400 384h112l-32 -64v-160.1
-c0 -88.4004 -71.5996 -159.9 -160 -159.9h-76.9004l-65.1992 -56.0996c-6.10059 -5.30078 -14.1006 -8.2002 -22.1006 -7.90039c-92.7998 3.7998 -135.8 49.4004 -153.2 76.2998c-6 9.2998 -1.19922 21.7002 9.5 24.4004l143.9 36
-c-12.7998 9.59961 -25.7002 20.0996 -38.9004 32.7998c-51 49 -85.0996 115.1 -85.0996 185.9c0 41.3994 9.40039 80.5996 26 115.699c5.7998 12.3008 23.5 11.6006 29 -0.899414c40 -91.2002 128.6 -155.5 233 -161.7v59.4004c0 44.1992 35.7998 80.0996 80 80.0996z
-M400 287.9c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z" />
-    <glyph glyph-name="hand-holding" unicode="&#xf4bd;" horiz-adv-x="576" 
-d="M565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002c21 17 47.0996 26.2998 74.0996 26.2998h160
-c19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004c12.3994 10 30.7998 10.6992 42.5996 0z" />
-    <glyph glyph-name="hand-holding-heart" unicode="&#xf4be;" horiz-adv-x="576" 
-d="M275.3 197.5l-108.899 114.2c-31.6006 33.2002 -29.7002 88.2002 5.59961 118.8c30.7998 26.7002 76.7002 21.9004 104.9 -7.7998l11.0996 -11.6006l11.2002 11.7002c28.2002 29.6006 74.0996 34.4004 104.899 7.7002c35.4004 -30.5996 37.2002 -85.5996 5.60059 -118.8
-l-108.9 -114.2c-7.09961 -7.40039 -18.5 -7.40039 -25.5 0zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002
-c21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004
-c12.3994 10 30.7998 10.6992 42.5996 0z" />
-    <glyph glyph-name="hand-holding-usd" unicode="&#xf4c0;" horiz-adv-x="576" 
-d="M271.06 303.7c-24.0596 6.39941 -43.4297 24.7002 -46.5693 47.7002c-4.33984 32 20.6201 59.3994 53.5098 63v17.5996c0 8.7998 7.82031 16 17.3701 16h17.3701c9.5498 0 17.3701 -7.2002 17.3701 -16v-17.7197c12.457 -1.28516 24.2842 -5.35938 34.5195 -11.5
-c3.32227 -2.00098 5.52734 -5.64746 5.52734 -9.80469c0 -2.18945 -0.617188 -4.23633 -1.6875 -5.97559c-0.592773 -0.978516 -1.31836 -1.8457 -2.16992 -2.59961l-19 -17.5c-4.01953 -3.7002 -10.0693 -4.2002 -15.2998 -2
-c-3.46289 1.4043 -7.2666 2.19336 -11.2305 2.19922h-35.5996c-5.03027 0 -9.12012 -3.7998 -9.12012 -8.39941c0.12207 -3.94727 2.91699 -7.23145 6.62988 -8.10059l54.2705 -14.2998c24.0996 -6.39941 43.4102 -24.7002 46.5596 -47.7002
-c4.33984 -32 -20.5693 -59.3994 -53.5 -63v-17.5996c0 -8.7998 -7.83008 -16 -17.3799 -16h-17.3701c-9.54004 0 -17.3701 7.2002 -17.3701 16v17.7002c-12.4541 1.28516 -24.2773 5.35938 -34.5098 11.5c-3.33008 1.99609 -5.54199 5.64551 -5.54199 9.80762
-c0 2.17188 0.607422 4.20312 1.66211 5.93262c0.617188 1.00098 1.36914 1.88867 2.25 2.65918l19 17.5c4.01953 3.7002 10.0596 4.2002 15.2998 2c3.45117 -1.39941 7.24121 -2.18848 11.1904 -2.19922h35.5996c5.03027 0 9.12012 3.7998 9.12012 8.39941
-c-0.121094 3.94727 -2.91602 7.23145 -6.62988 8.10059zM565.27 119.9c6.5918 -5.86328 10.7656 -14.3916 10.7656 -23.8984c0 -10.1123 -4.70117 -19.1357 -12.0352 -25.002l-151.23 -121c-10.9443 -8.74512 -24.8633 -14 -39.9482 -14h-0.0517578h-356.77
-c-8.83105 0 -16 7.16895 -16 16v96c0 8.83105 7.16895 16 16 16h55.4004l46.5 37.71c20.2197 16.4053 46.0596 26.2822 74.0996 26.29h160c17.6406 0 31.9668 -14.3066 32 -31.9404c0 -0.0410156 0.000976562 -0.0507812 0.000976562 -0.0917969
-c0 -1.83008 -0.158203 -3.62402 -0.460938 -5.36816c-2.54004 -15.6992 -17.3496 -26.5996 -33.25 -26.5996h-78.29c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16h118.27c0.0605469 0 0.161133 0.0234375 0.22168 0.0234375
-c15.0459 0 28.8799 5.23242 39.7783 13.9766l92.4004 73.9004c12.4004 10 30.7998 10.6992 42.5996 0z" />
-    <glyph glyph-name="hand-holding-water" unicode="&#xf4c1;" horiz-adv-x="576" 
-d="M288 192c-53 0 -96 42.0996 -96 94c0 40 57.0996 120.7 83.2002 155.6c6.39941 8.5 19.2002 8.5 25.5996 0c26.1006 -34.8994 83.2002 -115.6 83.2002 -155.6c0 -51.9004 -43 -94 -96 -94zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121
-c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002c21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004
-c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004c12.3994 10 30.7998 10.6992 42.5996 0z" />
-    <glyph glyph-name="hands" unicode="&#xf4c2;" horiz-adv-x="640" 
-d="M204.8 217.6l57.6006 -76.7998c16.5996 -22.2002 25.5996 -49.0996 25.5996 -76.7998v-112c0 -8.7998 -7.2002 -16 -16 -16h-131.7c-7.2002 0 -13.5 4.7002 -15.2998 11.5996c-2 7.80078 -5.40039 15.2002 -10.4004 21.7002l-104.1 134.3
-c-6.7998 8.5 -10.5 19.1006 -10.5 30v218.4c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-148.4l89.7998 -107.8c6 -7.2998 16.9004 -7.7998 23.6006 -1.09961l12.7998 12.7998c5.59961 5.59961 6.2998 14.5 1.5 20.9004l-38.1006 50.7998
-c-10.5996 14.0996 -7.69922 34.2002 6.40039 44.7998s34.2002 7.7002 44.7998 -6.40039zM608 384c17.7002 0 32 -14.2998 32 -32v-218.4c0 -10.8994 -3.7002 -21.5 -10.5 -30l-104.1 -134.3c-5 -6.5 -8.40039 -13.8994 -10.4004 -21.7002
-c-1.7998 -6.89941 -8.2002 -11.5996 -15.2998 -11.5996h-131.7c-8.7998 0 -16 7.2002 -16 16v112c0 27.7002 9 54.5996 25.5996 76.7998l57.6006 76.7998c10.5996 14.1006 30.7002 17 44.7998 6.40039s17 -30.7002 6.40039 -44.7998l-38.1006 -50.7998
-c-4.7998 -6.40039 -4.09961 -15.3008 1.5 -20.9004l12.7998 -12.7998c6.60059 -6.60059 17.6006 -6.10059 23.6006 1.09961l89.7998 107.8v148.4c0 17.7002 14.2998 32 32 32z" />
-    <glyph glyph-name="hands-helping" unicode="&#xf4c4;" horiz-adv-x="640" 
-d="M488 256c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8v-64c0 -17.7002 -14.2998 -32 -32 -32h-16c0 -35.2998 -28.7002 -64 -64 -64h-136.6l-103.4 -59.7002c-15.2998 -8.7998 -34.9004 -3.59961 -43.7002 11.7002l-80 138.6
-c-8.89941 15.3008 -3.59961 34.9004 11.7002 43.7002l80 46.2002v47.2998c0 22.4004 11.7998 43.2998 31.0996 54.7998l64.9004 39v-121.6c0 -39.7002 32.2998 -72 72 -72s72 32.2998 72 72v56h152zM635.7 293.4c8.7998 -15.3008 3.59961 -34.8008 -11.7002 -43.7002
-l-80 -46.2002v28.5c0 30.9004 -25.0996 56 -56 56h-184v-88c0 -22.0996 -17.9004 -40 -40 -40s-40 17.9004 -40 40v126.3c0 11 5.59961 21.2998 15 27.1006l33.5 20.8994c10.2002 6.2998 21.9004 9.7002 33.9004 9.7002h102.199l103.4 59.7002
-c15.2998 8.7998 34.9004 3.59961 43.7002 -11.7002z" />
-    <glyph glyph-name="parachute-box" unicode="&#xf4cd;" 
-d="M511.9 273c1.09961 -9.2002 -6.80078 -17 -16.1006 -17h-8.7002l-136.8 -151.9c0.700195 -2.69922 1.60059 -5.19922 1.60059 -8.09961v-128c0 -17.7002 -14.3008 -32 -32 -32h-128c-17.7002 0 -32 14.2998 -32 32v128c0 2.90039 0.899414 5.5 1.59961 8.09961
-l-136.7 151.9h-8.7002c-9.19922 0 -17.0996 7.90039 -16 17c9.10059 75.5 78.4004 132.3 158.301 158.7c-36.4004 -39.4004 -62.4004 -100.601 -62.4004 -175.7h-28.0996l116.6 -129.5c2.5 0.599609 4.7998 1.5 7.5 1.5h48v128h-112c0 115.2 68.9004 192 128 192
-s128 -76.7998 128 -192h-112v-128h48c2.7002 0 5 -0.900391 7.5 -1.5l116.6 129.5h-28.0996c0 75.0996 -26 136.3 -62.4004 175.7c79.9004 -26.2998 149.2 -83.1006 158.301 -158.7z" />
-    <glyph glyph-name="people-carry" unicode="&#xf4ce;" horiz-adv-x="640" 
-d="M128 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM512 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM637.7 -20.0996c6.59961 -16.4004 -1.40039 -35 -17.7998 -41.6006
-c-3.90039 -1.59961 -7.90039 -2.2998 -11.9004 -2.2998c-12.7002 0 -24.7002 7.59961 -29.7002 20.0996l-27.7002 69.2002l2 18.2002l41.1006 46.4004zM603.5 189.7c4.59961 -20 -0.799805 -41.2002 -14.4004 -56.7002l-67.1992 -75.9004l-10.1006 -92.5996
-c-1.7998 -16.4004 -15.7002 -28.5 -31.7998 -28.5c-1.2002 0 -2.2998 0.0996094 -3.5 0.200195c-17.5 1.89941 -30.2002 17.7002 -28.2998 35.2998l10.0996 92.7998c1.5 13 6.90039 25.1006 15.6006 35l43.2998 49l-17.6006 70.2998l-6.7998 -20.3994
-c-4.09961 -12.6006 -11.8994 -23.4004 -24.5 -32.6006l-51.0996 -32.5c-4.60059 -2.89941 -12.1006 -4.59961 -17.2002 -5h-160c-5.09961 0.400391 -12.5996 2.10059 -17.2002 5l-51.0996 32.5c-12.6006 9.2002 -20.4004 20.1006 -24.5 32.6006l-6.7998 20.3994
-l-17.6006 -70.2998l43.2998 -49c8.7002 -9.89941 14.1006 -22 15.6006 -35l10.0996 -92.7998c1.90039 -17.5996 -10.7002 -33.4004 -28.2998 -35.2998c-1.2002 -0.100586 -2.2998 -0.200195 -3.5 -0.200195c-16.2002 0 -30 12.2002 -31.7998 28.5l-10.1006 92.5996
-l-67.1992 75.9004c-13.7002 15.5 -19 36.7002 -14.4004 56.7002l18.4004 80.2002c4.59961 20 18.5996 36.7998 37.5 44.8994c18.5 8 38.8994 6.7002 56.0996 -3.2998c22.7002 -13.4004 39.7998 -34.4004 48.0996 -59.4004l11.3008 -33.8994l16.0996 -10.2002v96
-c0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16v-96l16 10.2002l11.2998 33.8994c8.40039 24.9004 25.4004 46 48.1006 59.4004c17.0996 10 37.5996 11.2998 56.0996 3.2998c18.9004 -8.09961 32.9004 -24.8994 37.5 -44.8994zM46.2998 89.9004l41.1006 -46.4004
-l2 -18.2002l-27.7002 -69.2002c-6.5 -16.0996 -24.7998 -24.3994 -41.6006 -17.7998c-16.3994 6.60059 -24.3994 25.2002 -17.7998 41.6006z" />
-    <glyph glyph-name="piggy-bank" unicode="&#xf4d3;" horiz-adv-x="576" 
-d="M560 224c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-48.7002c-9 -11.9004 -19.5 -22.4004 -31.2998 -31.2998v-80.7002c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v48h-128v-48c0 -8.7998 -7.2002 -16 -16 -16h-64
-c-8.7998 0 -16 7.2002 -16 16v80.7002c-38.5996 29.2002 -64 75.0996 -64 127.3h-40c-33.2998 0 -59.9004 29.2002 -55.5 63.4004c3.59961 28.1992 29 48.5996 57.5 48.5996c3.2998 0 6 -2.7002 6 -6v-20c0 -3.2998 -2.7002 -6 -6 -6h-1
-c-11.5996 0 -22.2998 -7.7998 -24.5 -19.2002c-3 -15.2998 8.7002 -28.7998 23.5 -28.7998h43.2002c14.8994 73 79.3994 128 156.8 128h128c7.90039 0 15.4004 -1.2002 23 -2.2998c17.5996 20.7998 43.5996 34.2998 73 34.2998h32l-18.9004 -75.5
-c15.8008 -14.7998 28.6006 -32.5 37.4004 -52.5h29.5zM432 160c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 352c-16.4004 0 -32.2002 -2.2998 -47.4004 -6.2002c-0.0996094 2.10059 -0.599609 4.10059 -0.599609 6.2002
-c0 53 43 96 96 96s96 -43 96 -96c0 -0.299805 -0.0996094 -0.5 -0.0996094 -0.799805c-5.2002 0.399414 -10.5 0.799805 -15.9004 0.799805h-128z" />
-    <glyph glyph-name="ribbon" unicode="&#xf4d6;" horiz-adv-x="448" 
-d="M6.09961 3.7002l117.2 130l79.2002 -87.9004l-91.7998 -101.899c-8 -8.80078 -21.4004 -10.5 -31.2998 -3.80078l-68.8008 27.9004c-12 8.09961 -14.0996 24.9004 -4.5 35.7002zM441.9 3.7002c9.69922 -10.7998 7.59961 -27.6006 -4.30078 -35.6006l-68.7998 -27.8994
-c-9.89941 -6.7002 -23.2998 -5.10059 -31.2998 3.7998l-248.1 275.3c-48.6006 53.7998 -13 113.5 -11.5 116l43.5996 73.2002c4.2998 7.2002 9.90039 13.2998 16.7998 18c44 29.7002 130.7 27.5996 171.4 0c6.89941 -4.7002 12.5 -10.7998 16.7998 -18l43.7002 -73.5
-c21.8994 -36.9004 17.2998 -83.5996 -11.4004 -115.5l-34.2002 -38l-79.0996 87.7002s52.7002 59 56 64.5996c-15.4004 8.40039 -40.2002 17.9004 -77.5 17.9004s-62.0996 -9.5 -77.5 -17.9004c3.40039 -5.5 295.4 -330.1 295.4 -330.1z" />
-    <glyph glyph-name="route" unicode="&#xf4d7;" 
-d="M416 128c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96h-277.8c13.5 16.2998 31.2998 39.2002 47.2998 64h230.5c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32h-96c-52.9004 0 -96 43.0996 -96 96s43.0996 96 96 96h45.2998
-c-23.0996 32.5996 -45.2998 70.5 -45.2998 96c0 53 43 96 96 96s96 -43 96 -96s-96 -160 -96 -160h-96c-17.5996 0 -32 -14.4004 -32 -32s14.4004 -32 32 -32h96zM416 384c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM96 192
-c53 0 96 -43 96 -96s-96 -160 -96 -160s-96 107 -96 160s43 96 96 96zM96 64c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="seedling" unicode="&#xf4d8;" 
-d="M64 352c123.7 0 224 -100.3 224 -224v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v144c-123.7 0 -224 100.3 -224 224h64zM448 416h64c0 -115.9 -88 -211.1 -200.7 -222.8c-10.7998 40.7002 -31.2998 77.3994 -59 107.6
-c38.2998 68.7002 111.5 115.2 195.7 115.2z" />
-    <glyph glyph-name="sign" unicode="&#xf4d9;" 
-d="M496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-368v-368c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h32
-c8.7998 0 16 -7.2002 16 -16v-48h368zM160 64v224h320v-224h-320z" />
-    <glyph glyph-name="smile-wink" unicode="&#xf4da;" horiz-adv-x="496" 
-d="M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM358.5 223.5l9.7002 -8.5c8.39941 -7.5 21.5 -0.299805 19.7998 10.7998
-c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM157.8 122.2c-13.3994 16.2998 -38.0996 -4.10059 -24.5996 -20.4004
-c28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7002c13.5 16.2998 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.2998 -90.2002 42.2002z" />
-    <glyph glyph-name="tape" unicode="&#xf4db;" horiz-adv-x="640" 
-d="M224 256c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64zM624 32c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-400c-123.7 0 -224 100.3 -224 224s100.3 224 224 224s224 -100.3 224 -224
-c0 -62.7002 -25.9004 -119.3 -67.4004 -160h243.4zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96z" />
-    <glyph glyph-name="truck-loading" unicode="&#xf4de;" horiz-adv-x="640" 
-d="M50.2002 72.4004l-49.6006 185.5c-2.2998 8.5 2.80078 17.2998 11.3008 19.5996l77.2998 20.7002l24.7998 -92.7002l61.7998 16.5l-24.7998 92.7002l77.2002 20.7998c8.5 2.2998 17.2998 -2.7998 19.5996 -11.2998l49.7002 -185.5
-c2.2998 -8.5 -2.7998 -17.2998 -11.2998 -19.6006l-216.4 -58c-8.5 -2.2998 -17.2998 2.80078 -19.5996 11.3008zM384 448h256v-400c0 -61.9004 -50.0996 -112 -112 -112c-60.4004 0 -109.2 47.9004 -111.6 107.7l-393.7 -107.4
-c-4.2002 -1.2002 -8.60059 1.2998 -9.7998 5.60059l-12.6006 46.2998c-1.2002 4.2002 1.2998 8.59961 5.60059 9.7998l346.1 94.4004v323.6c0 17.7002 14.2998 32 32 32zM528 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z" />
-    <glyph glyph-name="truck-moving" unicode="&#xf4df;" horiz-adv-x="640" 
-d="M621.3 210.7c12 -12 18.7002 -28.2002 18.7002 -45.2002v-85.5c0 -8.7998 -7.2002 -16 -16 -16h-17.5996c1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 5.5 0.5 10.7998 1.59961 16h-163.199
-c1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80c-26.2998 0 -49.4004 12.7998 -64 32.4004c-14.5996 -19.5 -37.7002 -32.4004 -64 -32.4004c-44.2002 0 -80 35.7998 -80 80v336c0 17.7002 14.2998 32 32 32h416c17.7002 0 32 -14.2998 32 -32
-v-96.0996h37.5c17 0 33.2998 -6.7002 45.2998 -18.7002zM80 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM208 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM480 240v-48
-h92.0996l-43.2998 43.2998c-3 3 -7 4.7002 -11.2998 4.7002h-37.5zM528 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32z" />
-    <glyph glyph-name="video-slash" unicode="&#xf4e2;" horiz-adv-x="640" 
-d="M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.7998 -22.4004l-19.5996 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-178.5 138l-373.3 288.6l-36.5 28.2002c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998
-l78.4004 -60.5996h244.3c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-178l32 -24.7002v137.2l109.6 75.5996c21.3008 14.6006 50.4004 -0.299805 50.4004 -25.7998v-257c0 -17.4004 -13.7998 -29.7002 -29.2002 -31.0996zM32 47.7998v245.5l365.8 -282.8
-c-8.2002 -6.5 -18.3994 -10.5 -29.5996 -10.5h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998z" />
-    <glyph glyph-name="wine-glass" unicode="&#xf4e3;" horiz-adv-x="288" 
-d="M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48
-c8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40z" />
-    <glyph glyph-name="user-alt-slash" unicode="&#xf4fa;" horiz-adv-x="640" 
-d="M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l135.5 -104.8
-c16 62.1006 71.9004 108.2 139 108.2c79.5 0 144 -64.5 144 -144c0 -54.0996 -30.2002 -100.7 -74.4004 -125.3zM198.4 128h47.3994l248.4 -192h-382.2c-26.5 0 -48 21.5 -48 48v9.59961c0 74.2002 60.2002 134.4 134.4 134.4z" />
-    <glyph glyph-name="user-astronaut" unicode="&#xf4fb;" horiz-adv-x="448" 
-d="M64 224c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h13.5c24.7002 56.5 80.9004 96 146.5 96s121.8 -39.5 146.5 -96h13.5c8.7998 0 16 -7.2002 16 -16v-96c0 -8.7998 -7.2002 -16 -16 -16h-13.5c-24.7002 -56.5 -80.9004 -96 -146.5 -96
-s-121.8 39.5 -146.5 96h-13.5zM104 312v-24c0 -53 43 -96 96 -96h48c53 0 96 43 96 96v24c0 22.0996 -21.5 40 -48 40h-144c-26.5 0 -48 -17.9004 -48 -40zM176 240l-12 36l-36 12l36 12l12 36l12 -36l36 -12l-36 -12zM327.6 126.6c67.5 -7.09961 120.4 -63.5996 120.4 -133
-v-9.59961c0 -26.5 -21.5 -48 -48 -48h-80v64c0 17.7002 -14.2998 32 -32 32h-128c-17.7002 0 -32 -14.2998 -32 -32v-64h-80c-26.5 0 -48 21.5 -48 48v9.59961c0 69.4004 52.9004 125.9 120.4 133c29.8994 -19.2998 65.3994 -30.5996 103.6 -30.5996
-s73.7002 11.2998 103.6 30.5996zM272 0c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM176 0c8.7998 0 16 -7.2002 16 -16v-48h-32v48c0 8.7998 7.2002 16 16 16z" />
-    <glyph glyph-name="user-check" unicode="&#xf4fc;" horiz-adv-x="640" 
-d="M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996
-c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM636.6 288.4c4.60059 -4.60059 4.5 -12.1006 -0.0996094 -16.8008l-141.3 -140.199c-4.7002 -4.60059 -12.2002 -4.60059 -16.7998 0.0996094
-l-81.7002 82.2998c-4.60059 4.7002 -4.60059 12.2002 0.0996094 16.7998l28.1006 27.9004c4.69922 4.59961 12.1992 4.59961 16.7998 -0.0996094l45.5 -45.8008l104.8 104c4.7002 4.60059 12.2002 4.60059 16.7998 -0.0996094z" />
-    <glyph glyph-name="user-clock" unicode="&#xf4fd;" horiz-adv-x="640" 
-d="M496 224c79.5996 0 144 -64.4004 144 -144s-64.4004 -144 -144 -144s-144 64.4004 -144 144s64.4004 144 144 144zM560 73.7002v12.5996c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-38.2998v54.2998c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-12.5996
-c-5.2998 0 -9.7002 -4.40039 -9.7002 -9.7002v-76.5996c0 -5.2998 4.40039 -9.7002 9.7002 -9.7002h60.5996c5.2998 0 9.7002 4.40039 9.7002 9.7002zM320 80c0 -59.5 29.7998 -112.1 75.0996 -144h-347.1c-26.5 0 -48 21.5 -48 48v41.5996
-c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992c8.40039 0 16.6006 -1 24.6006 -2.5c-11.5 -23.4004 -18.2002 -49.7002 -18.2002 -77.5zM224 192c-70.7002 0 -128 57.2998 -128 128
-s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z" />
-    <glyph glyph-name="user-cog" unicode="&#xf4fe;" horiz-adv-x="640" 
-d="M610.5 74.7002l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998
-c0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039
-c-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994
-c2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998
-c13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 47.5
-c26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM425.2 -34.5v-9.2002
-c0 -4.09961 0.799805 -8 2 -11.7998c-7.7002 -5.2998 -17.1006 -8.5 -27.2002 -8.5h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992
-c3.90039 0 7.60059 -0.900391 11.4004 -1.2002c-1 -2.89941 -2.2998 -5.7998 -3.2002 -8.7002c-5.5 -17.6992 1.90039 -36.5 17.9004 -45.6992l7.89941 -4.60059c-0.0996094 -2.59961 -0.0996094 -5.2002 0 -7.7998l-7.89941 -4.59961
-c-16 -9.30078 -23.4004 -28 -17.9004 -45.7002c7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.6006c7.5 -8 18 -12.5996 28.9004 -12.5996c6.7998 0 13.5996 1.90039 19.5996 5.2998l7.90039 4.60059c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039z" />
-    <glyph glyph-name="user-edit" unicode="&#xf4ff;" horiz-adv-x="640" 
-d="M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c39.9004 0 75.4004 -17.7998 99.9004 -45.5l-77.2998 -77.2998l-7.90039 -7.90039l-1.2002 -11.0996l-6.7998 -60.9004
-c-0.799805 -7.2998 0.200195 -14.5 2.60059 -21.2998h-274.9c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM358.9 14.7002l137.899 137.8l71.7002 -71.7002
-l-137.9 -137.899l-60.8994 -6.80078c-10.1006 -1.19922 -18.7002 7.40039 -17.6006 17.6006zM633 179.1c9.2998 -9.39941 9.2998 -24.5 0 -33.8994l-41.7998 -41.7998l-71.7998 71.6992l4.09961 4.10059l37.7998 37.7998c9.2998 9.2998 24.5 9.2998 33.7998 0z" />
-    <glyph glyph-name="user-friends" unicode="&#xf500;" horiz-adv-x="640" 
-d="M192 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM268.8 160c63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998
-c0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM480 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM528 160c61.9004 0 112 -50.0996 112 -112c0 -26.5 -21.5 -48 -48 -48h-176.6
-c0.0996094 2.09961 0.599609 4.2002 0.599609 6.40039v38.3994c0 38.6006 -15.2998 73.5 -39.7002 99.7998c16.5 9.5 35.2998 15.4004 55.7002 15.4004h3.7998c13.9004 -4.7998 28.6006 -8 44.2002 -8s30.2998 3.2002 44.2002 8h3.7998z" />
-    <glyph glyph-name="user-graduate" unicode="&#xf501;" horiz-adv-x="448" 
-d="M319.4 127.4c71.5 -3.10059 128.6 -61.6006 128.6 -133.801v-9.59961c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v9.59961c0 72.2002 57.0996 130.7 128.6 133.801l95.4004 -95.4004zM13.5996 368.2c-18.0996 4.39941 -18.0996 27.2002 0 31.5996
-l190.601 45.9004c13 3.09961 26.7002 3.09961 39.7002 0l190.399 -46c18.2002 -4.40039 18.2002 -27.1006 0 -31.5l-96.2998 -23.2002c8.7002 -17.2002 14 -36.4004 14 -57c0 -70.7002 -57.2998 -128 -128 -128s-128 57.2998 -128 128c0 20.5996 5.40039 39.7998 14 57
-l-66 15.9004v-52.6006c7 -4.2002 12 -11.5 12 -20.2998c0 -8.40039 -4.59961 -15.4004 -11.0996 -19.7002l15.5996 -62.2998c1.7002 -6.90039 -2.09961 -14 -7.59961 -14h-41.8008c-5.5 0 -9.2998 7.09961 -7.59961 14l15.5996 62.2998
-c-6.5 4.2998 -11.0996 11.2998 -11.0996 19.7002c0 8.7998 5 16.0996 12 20.2998v58.4004z" />
-    <glyph glyph-name="user-lock" unicode="&#xf502;" horiz-adv-x="640" 
-d="M224 192c-70.6455 0 -128 57.3545 -128 128s57.3545 128 128 128s128 -57.3545 128 -128s-57.3545 -128 -128 -128zM320 128v-160c0.0791016 -11.6504 3.3418 -22.6367 8.90039 -32h-280.9c-26.4922 0 -48 21.5078 -48 48v41.5996
-c0.0166016 74.1699 60.2305 134.384 134.4 134.4h16.6992c22.1426 -10.2109 47.085 -15.9072 73.0498 -15.9072c25.9639 0 50.6084 5.69629 72.751 15.9072h16.6992c5 0 9.7002 -1 14.5 -1.5c-5.06641 -9.00684 -8.02539 -19.4561 -8.09961 -30.5zM608 160
-c17.6611 0 32 -14.3389 32 -32v-160c0 -17.6611 -14.3389 -32 -32 -32h-224c-17.6611 0 -32 14.3389 -32 32v160c0 17.6611 14.3389 32 32 32h32v80c0 44.1533 35.8467 80 80 80s80 -35.8467 80 -80v-80h32zM496 16c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32
-s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM528 160v80c0 17.6611 -14.3389 32 -32 32s-32 -14.3389 -32 -32v-80h64z" />
-    <glyph glyph-name="user-minus" unicode="&#xf503;" horiz-adv-x="640" 
-d="M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-192c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h192zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z
-M313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z" />
-    <glyph glyph-name="user-ninja" unicode="&#xf504;" horiz-adv-x="448" 
-d="M325.4 158.8c68.5996 -6.09961 122.6 -63 122.6 -133.2v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 70.2002 54 127.101 122.6 133.2l101.4 -101.399zM32 256c0 33.4004 17.0996 62.7998 43.0996 80
-c-26 17.2002 -43.0996 46.5996 -43.0996 80c32 0 60.0996 -15.7998 77.5 -39.7998c20.9004 42.3994 64.0996 71.7998 114.5 71.7998c70.7002 0 128 -57.2998 128 -128s-57.2998 -128 -128 -128c-58.7998 0 -107.7 39.7998 -122.8 93.7002
-c-17.4004 -18.2002 -41.9004 -29.7002 -69.2002 -29.7002zM176 352c-17.7002 0 -32 -14.2998 -32 -32h160c0 17.7002 -14.2998 32 -32 32h-96z" />
-    <glyph glyph-name="user-shield" unicode="&#xf505;" horiz-adv-x="640" 
-d="M622.3 176.9c10.7002 -4.2002 17.7002 -14 17.7002 -24.9004c0 -124.5 -81.5996 -193.9 -132.9 -213.9c-4.19922 -1.59961 -12.5996 -3.69922 -22.1992 0c-64.2002 25.1006 -132.9 102.301 -132.9 213.9c0 10.9004 7 20.7002 17.7002 24.9004l115.2 45
-c9.59961 3.69922 18.0996 1.59961 22.1992 0zM496 -14.4004c34.5996 16.4004 89.9004 64.7002 95.5 151.801l-95.5 37.2998v-189.101zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM320 152
-c0 -95.2998 45.2002 -169.1 99.2002 -212c-5.90039 -2.5 -12.4004 -4 -19.2002 -4h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992
-c2.60059 0 5 -0.700195 7.5 -0.799805c-0.299805 -2.40039 -1.09961 -4.7002 -1.09961 -7.2002z" />
-    <glyph glyph-name="user-slash" unicode="&#xf506;" horiz-adv-x="640" 
-d="M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l147.6 -114
-c5.40039 65.6006 59.8008 117.4 126.9 117.4c70.7002 0 128 -57.2998 128 -128c0 -55.7998 -35.9004 -102.7 -85.7002 -120.3zM96 25.5996c0 66.4004 48.2002 121.101 111.4 132.101l286.8 -221.7h-350.2c-26.5 0 -48 21.5 -48 48v41.5996z" />
-    <glyph glyph-name="user-tag" unicode="&#xf507;" horiz-adv-x="640" 
-d="M630.6 83.0996c12.5 -12.5 12.5 -32.6992 -0.0996094 -45.1992l-92.5 -92.5c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-90.2998 90.1992c-12 12 -18.7002 28.2002 -18.7002 45.2002v79.2002c0 17.7002 14.2998 32 32 32h79.2998c17 0 33.2998 -6.7002 45.2998 -18.7002z
-M447.8 104.1c13.2998 0 24 10.8008 24 24c0 13.3008 -10.7002 24 -24 24s-24 -10.6992 -24 -24c0 -13.2998 10.7002 -24 24 -24zM224 192.1c-70.7002 0 -128 57.3008 -128 127.9c0 70.7002 57.2998 128 128 128s128 -57.2998 128 -127.9c0 -70.6992 -57.2998 -128 -128 -128
-zM351.8 80.9004c0 -25.7002 10 -49.8008 28.1006 -67.9004l58 -58c-8.80078 -11.4004 -22.4004 -18.9004 -37.9004 -18.9004h-352c-26.5 0 -48 21.5 -48 48v41.6006c0 74.2002 60.2002 134.399 134.4 134.5h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16
-s50.7002 5.7998 72.9004 16h16.6992c13.3008 0 26 -2.60059 38.2002 -6.2002v-73.0996z" />
-    <glyph glyph-name="user-tie" unicode="&#xf508;" horiz-adv-x="448" 
-d="M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM319.8 159.4c71.2998 -3.40039 128.2 -61.7002 128.2 -133.801v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996
-c0 72.1006 56.9004 130.4 128.2 133.801l47.7998 -191.4l32 136l-32 56h96l-32 -56l32 -136z" />
-    <glyph glyph-name="users-cog" unicode="&#xf509;" horiz-adv-x="640" 
-d="M610.5 106.7l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998
-c0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039
-c-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994
-c2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998
-c13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 79.5
-c26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM320 192c-61.9004 0 -112 50.0996 -112 112
-s50 111.9 111.9 111.9c61.8994 0 112 -50.1006 112 -112c0 -17.2002 -4.2002 -33.4004 -11.2002 -48c-0.799805 -0.5 -1.60059 -0.900391 -2.40039 -1.40039l-7.89941 4.59961c-5.90039 3.5 -12.7002 5.30078 -19.6006 5.30078c-11 0 -21.5 -4.60059 -28.8994 -12.6006
-c-15.8008 -17.0996 -28 -37.5 -36.3008 -59.2002c-1.89941 -0.0996094 -3.69922 -0.599609 -5.59961 -0.599609zM425.2 -2.5v-9.2002c0 -7.5 2.5 -14.2998 6.2002 -20.2998h-255.4c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.3 115.2h8.2998
-c20.9004 -10 43.9004 -16 68.5 -16c3.30078 0 6.5 0.400391 9.80078 0.599609c2.7998 -3.09961 6 -5.89941 9.7998 -8.09961l7.89941 -4.59961c-0.0996094 -2.60059 -0.0996094 -5.2002 0 -7.80078c-0.899414 -0.599609 -36.5 -15.7998 -25.7998 -50.2998
-c7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.5996c7.5 -8 18 -12.6006 28.9004 -12.6006c12.1992 0 19.2998 5 27.5 9.80078c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039zM173.1 173.4c-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004
-c-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z" />
-    <glyph glyph-name="balance-scale-left" unicode="&#xf515;" horiz-adv-x="640" 
-d="M528 0c8.83984 0 16 -7.16016 16.0098 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v342.75c-4.55957 2 -8.91992 4.34961 -12.9902 7.12012l-142.05 -47.6299c-8.37988 -2.81055 -17.4502 1.7002 -20.2598 10.0801l-10.1699 30.3398
-c-2.80957 8.37988 1.7002 17.4502 10.0801 20.2598l128.39 43.0498c-0.419922 3.32031 -1.00977 6.60059 -1.00977 10.0303c0 44.1797 35.8203 80 80 80c29.6904 0 55.2998 -16.3604 69.1104 -40.3701l117.92 39.5303c8.37988 2.80957 17.4502 -1.7002 20.2598 -10.0801
-l10.1699 -30.3398c2.80957 -8.37988 -1.7002 -17.4502 -10.0801 -20.2598l-132 -44.2607c-7.28027 -21.25 -22.96 -38.5293 -43.3799 -47.4697v-294.75h176zM639.98 144c0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312
-c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 160h144l-72 144zM170.93 197.51c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80
-s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0zM56 32h144l-72 144z" />
-    <glyph glyph-name="balance-scale-right" unicode="&#xf516;" horiz-adv-x="640" 
-d="M96 -16c0 8.83984 7.16016 16 16 16h175.99v294.76c-20.4199 8.93066 -36.1006 26.2207 -43.3799 47.4707l-132 44.2598c-8.37012 2.80957 -12.8906 11.8799 -10.0801 20.2598l10.1699 30.3398c2.80957 8.37012 11.8799 12.8906 20.2598 10.0801l117.93 -39.54
-c13.8105 24.0098 39.4199 40.3701 69.1104 40.3701c44.1797 0 80 -35.8203 80 -80c0 -3.42969 -0.589844 -6.70996 -1.00977 -10.0303l128.399 -43.0498c8.37012 -2.80957 12.8906 -11.8799 10.0801 -20.2598l-10.1699 -30.3398
-c-2.80957 -8.37012 -11.8799 -12.8906 -20.2598 -10.0801l-142.05 47.6299c-4.07031 -2.77051 -8.43066 -5.12012 -12.9902 -7.12012v-342.75c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v32zM0 144c0 16.1797 -1.32031 8.73047 85.0596 181.51
-c17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80zM56 160h144l-72 144zM384.02 16c0 16.1797 -1.33984 8.73047 85.04 181.51
-c17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312zM440 32h144l-72 144z" />
-    <glyph glyph-name="blender" unicode="&#xf517;" 
-d="M416 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h256zM288 -32c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM328 384
-c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46l-17.46 -64
-h-256l-8.73047 96h-103.27c-26.5098 0 -48 21.4902 -48 48v160c0 26.5098 21.4902 48 48 48h464l-17.46 -64h-166.54zM64 256h81.46l-11.6396 128h-69.8203v-128z" />
-    <glyph glyph-name="book-open" unicode="&#xf518;" horiz-adv-x="576" 
-d="M542.22 415.95c18.4199 1.04004 33.7803 -12.9902 33.7705 -30.7002v-337.84c0 -16.2305 -13.1299 -29.7705 -30.0205 -30.6602c-49.4697 -2.59961 -149.52 -12.0996 -218.7 -46.9199c-10.6494 -5.36035 -23.2793 1.93945 -23.2793 13.4902v363.87
-c0 5.2793 2.62988 10.3291 7.26953 13.1699c67.2402 41.1592 176.16 52.4795 230.96 55.5898zM264.73 360.36c4.64941 -2.85059 7.26953 -7.7002 7.26953 -12.9902v-364.12c0 -11.5195 -12.5898 -18.8096 -23.21 -13.46c-69.1797 34.8398 -169.28 44.3496 -218.771 46.9502
-c-16.8896 0.879883 -30.0195 14.4199 -30.0195 30.6602v337.85c0 17.71 15.3604 31.7402 33.7803 30.7002c54.7998 -3.12012 163.72 -14.4307 230.95 -55.5898z" />
-    <glyph glyph-name="broadcast-tower" unicode="&#xf519;" horiz-adv-x="640" 
-d="M150.94 256c-7.01074 0 -13.46 4.5 -15.4004 11.2402c-4.90039 16.9697 -7.54004 34.6396 -7.54004 52.7598s2.63965 35.79 7.53027 52.7695c1.9502 6.74023 8.39941 11.2305 15.4102 11.2305h33.7295c11.0098 0 18.6201 -10.8301 14.8604 -21.1797
-c-4.93066 -13.5801 -7.5498 -27.9805 -7.5498 -42.8203s2.61914 -29.2402 7.5498 -42.8203c3.75 -10.3496 -3.85059 -21.1797 -14.8604 -21.1797h-33.7295zM89.9199 424.66c-16.54 -31.1406 -49.6104 -115.97 0.169922 -209.29
-c5.66016 -10.6299 -1.92969 -23.3701 -13.9502 -23.3701h-34.8398c-6.18945 0 -11.9902 3.50977 -14.6094 9.13965c-23.5703 50.5303 -26.6904 94.1104 -26.6904 118.86c0 42.3496 9.40039 82.46 25.8896 118.69c2.60059 5.71973 8.4707 9.30957 14.7402 9.30957h35.3301
-c12.0098 0 19.5996 -12.7197 13.96 -23.3398zM614.06 438.71c16.5205 -36.2295 25.9404 -76.3496 25.9404 -118.71s-9.42969 -82.4805 -25.96 -118.71c-2.59961 -5.70996 -8.45996 -9.29004 -14.7305 -9.29004h-35.2295c-12.1104 0 -19.6299 12.8398 -13.9102 23.5195
-c48.1396 89.8105 17.9902 174.94 -0.280273 209.23c-5.63965 10.5898 2.04004 23.25 14.0205 23.25h35.4199c6.26953 0 12.1299 -3.58008 14.7295 -9.29004zM489.06 384c7.01074 0 13.46 -4.49023 15.4004 -11.2402c4.90039 -16.9697 7.54004 -34.6396 7.54004 -52.7598
-s-2.62988 -35.79 -7.53027 -52.7598c-1.9502 -6.75 -8.38965 -11.2402 -15.4102 -11.2402h-33.7295c-11.0098 0 -18.6201 10.8301 -14.8604 21.1797c4.93066 13.5801 7.5498 27.9805 7.5498 42.8203s-2.61914 29.2402 -7.5498 42.8203
-c-3.75 10.3496 3.85059 21.1797 14.8604 21.1797h33.7295zM372.76 283.88l130.5 -313.41c3.39062 -8.14941 -0.459961 -17.5195 -8.60938 -20.9199l-29.5107 -12.3096c-8.14941 -3.40039 -17.5098 0.450195 -20.9092 8.60938l-49.2002 118.15h-150.07l-49.1904 -118.15
-c-3.38965 -8.14941 -12.7598 -12.0098 -20.9092 -8.60938l-29.5107 12.3096c-8.14941 3.40039 -12.0098 12.7705 -8.60938 20.9199l130.5 313.41c-7.0498 10.29 -11.2002 22.71 -11.2002 36.1201c0 35.3496 28.6396 64 63.96 64c35.3301 0 63.96 -28.6504 63.96 -64
-c0 -13.4102 -4.15039 -25.8301 -11.2002 -36.1201zM271.62 128h96.7598l-48.3799 116.19z" />
-    <glyph glyph-name="broom" unicode="&#xf51a;" horiz-adv-x="640" 
-d="M256.47 231.23l86.7305 -109.181s-16.6006 -102.359 -76.5703 -150.12c-59.9697 -47.7793 -266.63 -34.1201 -266.63 -34.1201s3.7998 23.1406 11 55.4307l94.6201 112.17c3.96973 4.7002 -0.870117 11.6201 -6.65039 9.5l-60.3994 -22.0898
-c14.4395 41.6602 32.7197 80.04 54.5996 97.4697c59.9697 47.7598 163.3 40.9404 163.3 40.9404zM636.53 416.97c5.48926 -6.91016 4.33984 -16.96 -2.5498 -22.4395l-232.48 -177.8l34.0898 -42.9209c5.08008 -6.39941 1.66016 -15.9092 -6.33984 -17.5996
-l-58.7998 -12.4502l-86.7305 109.181l25.3301 54.5498c3.4502 7.41992 13.5 8.62012 18.5898 2.20996l34.1406 -42.9697l232.479 177.8c6.89062 5.48926 16.9199 4.33984 22.4102 -2.56055z" />
-    <glyph glyph-name="chalkboard" unicode="&#xf51b;" horiz-adv-x="640" 
-d="M96 384v-352h-64v376c0 22.0596 17.9404 40 40 40h496c22.0596 0 40 -17.9404 40 -40v-376h-64v352h-448zM624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h272v64h192v-64
-h144z" />
-    <glyph glyph-name="chalkboard-teacher" unicode="&#xf51c;" horiz-adv-x="640" 
-d="M208 96c62.0596 0 112.33 -50.4805 112 -112.62c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.330078 62.1396 49.9404 112.62 112 112.62c2.38965 0 4.76953 -0.349609 7.0498 -1.08984
-c12.9697 -4.20996 26.6006 -6.91016 40.9502 -6.91016s27.9805 2.7002 40.9404 6.91016c2.2793 0.740234 4.66992 1.08984 7.05957 1.08984zM160 128c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96s-42.9805 -96 -96 -96zM592 448
-c26.4697 0 48 -22.25 48 -49.5898v-316.82c0 -27.3398 -21.5303 -49.5898 -48 -49.5898h-244.55c-6.57031 25.2695 -20.5898 47.3096 -39.6904 64h76.2402v64h128v-64h64v288h-352v-49.7998c-18.9004 11.0195 -40.5801 17.7998 -64 17.7998v46.4102
-c0 27.3398 21.5303 49.5898 48 49.5898h384z" />
-    <glyph glyph-name="church" unicode="&#xf51d;" horiz-adv-x="640" 
-d="M464.46 201.32c9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6504 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 11.6572 6.21387 21.8467 15.54 27.4404l112.46 67.4795v51.2002h-48c-8.83984 0 -16 7.16016 -16 16v32
-c0 8.83984 7.16016 16 16 16h48v48c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-48h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-51.2002zM0 52.04c0.00292969 13.1953 7.97949 24.5215 19.3896 29.4199l108.61 46.54
-v-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM620.61 81.46c11.7598 -5.0498 19.3896 -16.6201 19.3896 -29.4199v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192z" />
-    <glyph glyph-name="coins" unicode="&#xf51e;" 
-d="M0 42.7002c41.2998 -29.1006 116.8 -42.7002 192 -42.7002s150.7 13.5996 192 42.7002v-42.7002c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v42.7002zM320 320c-106 0 -192 28.7002 -192 64s86 64 192 64s192 -28.7002 192 -64s-86 -64 -192 -64zM0 147.6
-c41.2998 -34 116.9 -51.5996 192 -51.5996s150.7 17.5996 192 51.5996v-51.5996c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v51.5996zM416 136.6v63.6006c38.7002 6.89941 72.7998 18.0996 96 34.5v-42.7002c0 -23.7002 -38.7002 -44.2998 -96 -55.4004zM192 288
-c106 0 192 -35.7998 192 -80s-86 -80 -192 -80s-192 35.7998 -192 80s86 80 192 80zM411.3 231.7c-8.7998 23.7002 -30.5 42.8994 -60 57.2002c64.2002 3.19922 125.2 16.6992 160.7 41.7998v-42.7002c0 -24.2998 -40.7002 -45.5 -100.7 -56.2998z" />
-    <glyph glyph-name="compact-disc" unicode="&#xf51f;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 192c0 88.2002 71.7998 160 160 160v32c-105.9 0 -192 -86.0996 -192 -192h32zM248 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM248 224
-c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z" />
-    <glyph glyph-name="crow" unicode="&#xf520;" horiz-adv-x="640" 
-d="M544 416c53.0195 0 96 -28.6504 96 -64l-96 -16v-80c0 -87.2598 -58.2598 -160.8 -137.97 -184.14l41.2393 -111.53c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.5098 120.38
-c-1.90039 -0.0595703 -3.75 -0.290039 -5.66016 -0.290039h-39.0596l38.3291 -103.68c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.4102 120.1h-96.4902l-121.539 -60.7695
-c-20.0908 -10.04 -43.7305 4.56934 -43.7305 27.0293c0.00195312 9.8877 4.7373 18.6572 12.0898 24.1699l371.91 292.59v20.9805c0 44.1797 35.8203 80 80 80c26.0898 0 49.04 -12.6797 63.6396 -32h16.3604zM464 344c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24
-s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z" />
-    <glyph glyph-name="crown" unicode="&#xf521;" horiz-adv-x="640" 
-d="M528 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-416c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h416zM592 320c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48c-2.59961 0 -5.2002 0.400391 -7.7002 0.799805l-72.2998 -192.8h-384
-l-72.2998 192.8c-2.5 -0.399414 -5.10059 -0.799805 -7.7002 -0.799805c-26.5 0 -48 21.5 -48 48s21.5996 48 48.0996 48s48 -21.5 48 -48c0 -7.09961 -1.69922 -13.7998 -4.39941 -19.7998l72.2998 -43.4004c15.2998 -9.2002 35.2998 -4 44.2002 11.6006l81.5 142.6
-c-10.7002 8.7998 -17.7002 22 -17.7002 37c0 26.5 21.5 48 48 48s48 -21.5 48 -48c0 -15 -7 -28.2002 -17.7002 -37l81.5 -142.6c8.90039 -15.6006 28.7998 -20.8008 44.2002 -11.6006l72.4004 43.4004c-2.80078 6.09961 -4.40039 12.7002 -4.40039 19.7998
-c0 26.5 21.5 48 48 48z" />
-    <glyph glyph-name="dice" unicode="&#xf522;" horiz-adv-x="640" 
-d="M592 256c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v46.4199l136.26 136.26c24.1201 24.1201 29.6904 59.7305 17 89.3203h118.74zM480 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24
-s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM433.63 258.7c19.1602 -19.1602 19.1602 -50.2305 0 -69.4004l-174.939 -174.93c-19.1602 -19.1602 -50.2305 -19.1602 -69.3906 0l-174.93 174.939c-19.1602 19.1602 -19.1602 50.2305 0 69.3906l174.939 174.93
-c19.1602 19.1602 50.2305 19.1602 69.3906 0zM96 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z
-M224 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 328c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM352 200c13.25 0 24 10.75 24 24
-c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z" />
-    <glyph glyph-name="dice-five" unicode="&#xf523;" horiz-adv-x="448" 
-d="M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256
-c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32
-s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="dice-four" unicode="&#xf524;" horiz-adv-x="448" 
-d="M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256
-c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32
-s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="dice-one" unicode="&#xf525;" horiz-adv-x="448" 
-d="M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="dice-six" unicode="&#xf526;" horiz-adv-x="448" 
-d="M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160
-c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32
-s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="dice-three" unicode="&#xf527;" horiz-adv-x="448" 
-d="M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160
-c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="dice-two" unicode="&#xf528;" horiz-adv-x="448" 
-d="M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64
-c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="divide" unicode="&#xf529;" horiz-adv-x="448" 
-d="M224 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM224 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM416 240c17.6699 0 32 -14.3301 32 -32v-32
-c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z" />
-    <glyph glyph-name="door-closed" unicode="&#xf52a;" horiz-adv-x="640" 
-d="M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h111.99v397.2c0 28.0195 21.5293 50.7998 48 50.7998h288.01c26.4697 0 48 -22.7803 48 -50.7998v-397.2h112zM415.99 160
-c17.6797 0 32.0098 14.3301 32 32c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="door-open" unicode="&#xf52b;" horiz-adv-x="640" 
-d="M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-144v384h-96v64h112c26.4697 0 48 -22.1904 48 -49.4502v-334.55h80zM312.24 446.99c20.2002 5.24023 39.7598 -10.5898 39.7598 -32.1699v-478.82h-336c-8.83984 0 -16 7.16016 -16 16v32
-c0 8.83984 7.16016 16 16 16h80v365.08c0 15.2197 9.99023 28.4795 24.2402 32.1699zM264 160c13.25 0 24 14.3301 24 32s-10.75 32 -24 32s-24 -14.3301 -24 -32s10.75 -32 24 -32z" />
-    <glyph glyph-name="equals" unicode="&#xf52c;" horiz-adv-x="448" 
-d="M416 144c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384zM416 336c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32
-v32c0 17.6699 14.3301 32 32 32h384z" />
-    <glyph glyph-name="feather" unicode="&#xf52d;" 
-d="M467.14 403.16c50.5703 -50.5205 61.7002 -124.9 16.2607 -199.36l-131.54 -43.7998h97.7793c-9.92969 -10.6797 3.68066 3.07031 -46.3096 -46.8604l-147.57 -49.1396h98.1904c-74.9502 -73.1104 -194.53 -70.6504 -246.83 -54.9404l-66.1006 -66.0293
-c-9.37988 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.52 259.25c6.25 6.25 6.25 16.3799 0 22.6299s-16.3896 6.25 -22.6494 0l-178.44 -178.25c-6.75 60.3408 3.18066 150.78 63.6406 211.17c24.7695 24.7402 7.13965 7.14062 85.75 85.6602
-c90.6094 90.5107 189.729 88.21 252.279 25.7305z" />
-    <glyph glyph-name="frog" unicode="&#xf52e;" horiz-adv-x="576" 
-d="M446.53 350.57c0 0 58.4297 -19.0605 98.9893 -41.2803c18.7607 -10.2803 30.4805 -29.8301 30.4805 -51.2305c0 -21.793 -11.9512 -40.7695 -29.71 -50.7295l-154.44 -86.6504l98.5205 -104.68h53.6299c17.6699 0 32 -14.3301 32 -32c0 -8.83984 -7.16016 -16 -16 -16
-h-90.3799l-118.53 125.94c5.07031 54.1494 -29.9297 85.0596 -40.7998 93.21c-36.8496 27.6191 -88.29 27.6592 -125.13 0l-34.7803 -26.0908c-7.07031 -5.2998 -8.49023 -15.3291 -3.18945 -22.4092c5.31934 -7.10059 15.3496 -8.5 22.4092 -3.19043l32.7607 24.5898
-c20.6895 15.5303 48.3496 20.8105 72.2393 10.8799c44.0605 -18.3193 57.8506 -70.3701 33.71 -106.6l-35.7998 -48.3301h79.4902c17.6699 0 32 -14.3301 32 -32c0 -8.83984 -7.16016 -16 -16 -16h-304c-34.9199 0 -63.8896 28.0996 -64 63.0195
-c-0.5 166.86 126.75 304.021 289.46 319.44c6.82031 37.25 39.3096 65.54 78.54 65.54c39.1904 0 71.6699 -28.2305 78.5303 -65.4297zM368 312c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24c-13.2598 0 -24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z" />
-    <glyph glyph-name="gas-pump" unicode="&#xf52f;" 
-d="M336 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h320zM493.2 340.7c12 -12 18.7998 -28.2998 18.7998 -45.2998v-223.4c0 -42.2002 -36.5 -76 -79.5 -71.7002
-c-37.5 3.90039 -64.5 38.2002 -64.5 75.9004v27.7998c0 22.0996 -17.9004 40 -40 40h-8v-112h-288v352c0 35.2998 28.7002 64 64 64h160c35.2998 0 64 -28.7002 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-32c0 -13.2002 10.7998 -24 24 -24s24 10.7998 24 24v160.8
-c-27.0996 3.90039 -48 27.1006 -48 55.2002v62.0996l-37.7002 37.7002c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l11.2998 11.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0zM256 256v128h-160v-128h160z" />
-    <glyph glyph-name="glasses" unicode="&#xf530;" horiz-adv-x="576" 
-d="M574.1 167.63c1.26074 -5.07031 1.90039 -10.2695 1.90039 -15.5v-70.25c0 -62.8896 -51.5801 -113.88 -115.2 -113.88h-37.1201c-60.2793 0 -110.37 45.9404 -114.87 105.37l-2.92969 38.6299h-35.75l-2.92969 -38.6299
-c-4.50977 -59.4297 -54.6006 -105.37 -114.88 -105.37h-37.1201c-63.6201 0 -115.2 50.9902 -115.2 113.89v70.25c0.000976562 5.35059 0.663086 10.5205 1.90039 15.4902l45.3398 181.73c5.91016 23.6895 21.5898 44.0293 43 55.7998
-c21.4395 11.7402 46.9697 14.1094 70.1895 6.33008l15.25 -5.08008c8.39062 -2.79004 12.9199 -11.8604 10.1201 -20.2402l-5.05957 -15.1797c-2.79004 -8.37988 -11.8506 -12.9102 -20.2305 -10.1201l-13.1699 4.38965
-c-10.8701 3.62012 -22.9902 3.57031 -33.1494 -1.72949c-10.29 -5.36035 -17.5908 -14.5605 -20.3809 -25.8105l-38.46 -153.83c22.1904 6.81055 49.79 12.46 81.21 12.46c34.7803 0 73.9902 -7.00977 114.86 -26.75h73.1797
-c40.8701 19.7207 80.0801 26.7402 114.851 26.7402c31.4102 0 59.0098 -5.64941 81.2002 -12.46l-38.46 153.82c-2.80078 11.2598 -10.0801 20.4502 -20.3701 25.8193c-10.1602 5.30078 -22.29 5.35059 -33.1602 1.73047l-13.1797 -4.38965
-c-8.38086 -2.79004 -17.4404 1.73926 -20.2305 10.1201l-5.05957 15.1797c-2.80078 8.37988 1.72949 17.4502 10.1191 20.2402l15.25 5.08008c23.2207 7.7793 48.75 5.39941 70.1904 -6.33008c21.4102 -11.7607 37.0898 -32.1104 43 -55.8105zM203.38 78.21l3.12988 41.2197
-c-22.6699 8.58984 -46.0693 12.9199 -69.9297 12.9199c-29.1602 0 -54.46 -6.42969 -72.5801 -12.9199v-37.54c0 -27.5098 22.9697 -49.8896 51.2002 -49.8896h37.1201c26.6602 0 49.0898 20.2998 51.0596 46.21zM512 81.8799l-0.00976562 37.54
-c-18.1201 6.49023 -43.4307 12.9297 -72.5498 12.9297c-23.8701 0 -47.2803 -4.33008 -69.9502 -12.9199l3.12988 -41.2197c1.95996 -25.9102 24.3896 -46.21 51.0596 -46.21h37.1201c28.2305 0 51.2002 22.3701 51.2002 49.8799z" />
-    <glyph glyph-name="greater-than" unicode="&#xf531;" horiz-adv-x="384" 
-d="M365.52 238.15c11.2803 -5.25 18.4805 -16.5605 18.4902 -29.0107v-34.2295c-0.00195312 -12.8398 -7.55469 -23.9062 -18.4795 -29l-306.471 -142.91c-16.0195 -7.46973 -35.0596 -0.540039 -42.5293 15.4805l-13.5205 29
-c-7.46973 16.0195 -0.540039 35.0596 15.4805 42.5293l218.47 101.891l-218.43 101.85c-16.0605 7.49023 -23.0107 26.5801 -15.5205 42.6396l13.5703 29.0801c7.49023 16.0605 26.5801 23.0107 42.6396 15.5205z" />
-    <glyph glyph-name="greater-than-equal" unicode="&#xf532;" horiz-adv-x="448" 
-d="M55.2197 340.31c-18.29 6 -27.7393 24.2607 -21.0996 40.79l12.0303 29.9199c6.63965 16.5303 26.8594 25.0605 45.1494 19.0605l301.72 -119.98c13.7705 -4.51953 22.9805 -16.6094 22.9805 -30.1699v-15.96c0 -13.5596 -9.20996 -25.6494 -22.9805 -30.1699
-l-301.409 -119.859c-18.3906 -6.04004 -38.7002 2.54004 -45.3799 19.1494l-12.0908 30.0801c-6.67969 16.6104 2.81055 34.9697 21.2002 41l175.44 68.0498zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48
-c0 13.2598 10.75 24 24 24h400z" />
-    <glyph glyph-name="helicopter" unicode="&#xf533;" horiz-adv-x="640" 
-d="M304 64c-10.4707 0 -19.7627 5.01465 -25.5996 12.7998l-86.4004 115.2l-160 64l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039l43.2002 -57.5996h208v64h-176c-8.83984 0 -16 7.16016 -16 16
-v32c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-176v-64c123.71 0 224 -100.29 224 -224c0 -17.6699 -14.3301 -32 -32 -32h-272zM416 252.49v-124.49h124.79c-12.7598 62.5596 -62.2402 111.7 -124.79 124.49z
-M635.37 -10.8096c6.58984 -6.61035 6.04004 -17.5205 -0.980469 -23.6602c-33.1494 -29.0498 -53.5693 -29.5205 -68.4492 -29.5205h-325.94c-8.83984 0 -16 7.18066 -16 16.0303v32.0596c0 8.85059 7.16016 16.0303 16 16.0303h325.94
-c10.7998 0 17.5498 4.48047 24.6396 11.25c6.40039 6.11035 16.3896 6.27051 22.6396 0.00976562z" />
-    <glyph glyph-name="infinity" unicode="&#xf534;" horiz-adv-x="640" 
-d="M471.1 352c93.1006 0 168.9 -71.7998 168.9 -160s-75.7998 -160 -168.9 -160c-66.0996 0 -117.8 41.2998 -151.1 78.5996c-33.2998 -37.2998 -85 -78.5996 -151.1 -78.5996c-93.1006 0 -168.9 71.7998 -168.9 160s75.7998 160 168.9 160
-c66.0996 0 117.8 -41.2998 151.1 -78.5996c33.2998 37.2998 85 78.5996 151.1 78.5996zM168.9 128c38.0996 0 73.5996 36.4004 94 64c-20.6006 27.9004 -55.8008 64 -94 64c-40.2002 0 -72.9004 -28.7002 -72.9004 -64s32.7002 -64 72.9004 -64zM471.1 128
-c40.2002 0 72.9004 28.7002 72.9004 64s-32.7002 64 -72.9004 64c-38.0996 0 -73.5996 -36.4004 -94 -64c20.6006 -27.9004 55.8008 -64 94 -64z" />
-    <glyph glyph-name="kiwi-bird" unicode="&#xf535;" horiz-adv-x="576" 
-d="M575.81 230.02c0.300781 -5.7793 0.160156 -246.02 0.160156 -246.02c0 -7.30957 -4.95996 -13.7002 -12.0498 -15.5c-1.30957 -0.339844 -2.63965 -0.5 -3.9502 -0.5c-5.75 0 -11.1895 3.11035 -14.0498 8.33984l-74.4102 136.44
-c-7.04004 -0.470703 2.43066 -0.780273 -23.0498 -0.780273c-54.5996 0 -106.39 -19.25 -152.13 -49.0596c-12.46 -8.12012 -26.0996 -14.4502 -40.3398 -19.5107v-59.4297c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v49.1797
-c-5.32031 -0.449219 -10.5605 -1.17969 -16 -1.17969c-16.6006 0 -32.6406 2.2998 -48 6.25977v-54.2598c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.9902c-57.3105 33.21 -95.9502 95.0596 -95.9902 166.01
-c-0.0800781 145.76 129.3 182.88 147.31 186.94c57.1709 12.9199 111.221 0.259766 153.21 -28.7002c43.4902 -29.9902 94.9209 -46.2402 147.74 -46.2402h9.37012c60.6504 0 115.01 -45.4102 118.18 -105.98zM463.97 200c13.25 0 24 10.75 24 24
-c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM543.97 46.75v99.0596c-11.1299 -11.3799 -24.7393 -20.1494 -39.8594 -25.9795z" />
-    <glyph glyph-name="less-than" unicode="&#xf536;" horiz-adv-x="384" 
-d="M365.46 90.2598c16.0703 -7.49023 23.0205 -26.5801 15.5303 -42.6396l-13.5605 -29.0801c-7.48926 -16.0596 -26.5801 -23.0098 -42.6396 -15.5205l-306.31 142.83c-11.2705 5.25 -18.4805 16.5605 -18.4805 29v34.2402c0.00488281 12.8389 7.55664 23.9043 18.4805 29
-l306.46 142.91c16.0195 7.46973 35.0596 0.540039 42.5293 -15.4805l13.5205 -29c7.46973 -16.0195 0.540039 -35.0596 -15.4805 -42.5293l-218.47 -101.88z" />
-    <glyph glyph-name="less-than-equal" unicode="&#xf537;" horiz-adv-x="448" 
-d="M54.9805 233.8c-13.7705 4.52051 -22.9805 16.6104 -22.9805 30.1699v15.96c0 13.5703 9.20996 25.6602 22.9805 30.1807l301.71 119.96c18.29 6 38.5098 -2.53027 45.1494 -19.0605l12.0303 -29.9199c6.63965 -16.5195 -2.81055 -34.79 -21.1006 -40.79
-l-175.56 -68.0898l175.44 -68.0498c18.3896 -6.03027 27.8896 -24.3906 21.21 -41l-12.0908 -30.0801c-6.66992 -16.6104 -26.9893 -25.1797 -45.3799 -19.1504zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48
-c0 13.2598 10.75 24 24 24h400z" />
-    <glyph glyph-name="memory" unicode="&#xf538;" horiz-adv-x="640" 
-d="M640 317.06c-18.5996 -6.60938 -32 -24.1895 -32 -45.0596s13.4004 -38.4502 32 -45.0596v-98.9404h-640v98.9404c18.5996 6.60938 32 24.1895 32 45.0596s-13.4004 38.4502 -32 45.0596v34.9404c0 17.6699 14.3301 32 32 32h576c17.6699 0 32 -14.3301 32 -32v-34.9404z
-M224 192v128h-64v-128h64zM352 192v128h-64v-128h64zM480 192v128h-64v-128h64zM0 0v96h640v-96h-64v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699
-c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-64z" />
-    <glyph glyph-name="microphone-alt-slash" unicode="&#xf539;" horiz-adv-x="640" 
-d="M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705
-c5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.53 -138v45.3604c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301
-c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.0596l41.3994 -32h43.6699c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48
-c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -28.9805 -7.25977 -56.21 -19.7402 -80.3301zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56
-v34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2207c12.4395 -53.2197 55.3301 -96.3994 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.200195l50.4004 -38.96c-10.8604 -3.80078 -22.25 -6.45996 -33.96 -8.08008v-33.7803
-h56z" />
-    <glyph glyph-name="money-bill-wave" unicode="&#xf53a;" horiz-adv-x="640" 
-d="M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197
-c-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012
-c30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM48 315.78v-60.4707c31 0 56.8398 22.1504 62.7197 51.54c-21.5996 1.36035 -42.5996 3.89062 -62.7197 8.93066zM48 30.7803
-c20.1201 -7.31055 41.1797 -11.8105 63.71 -13.6201c-1.53027 34.1299 -29.3398 61.3994 -63.71 61.3994v-47.7793zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 68.2197v57.7207
-c-26.8203 -3.40039 -48.4502 -23.2002 -54.3203 -49.2803c18.6104 -1.58984 36.8008 -4.0498 54.3203 -8.44043zM592 304.33v48.8896c-17.7197 6.43066 -36.2695 10.4902 -55.8096 12.6602c0.949219 -31.8496 24.9199 -57.6396 55.8096 -61.5498z" />
-    <glyph glyph-name="money-bill-wave-alt" unicode="&#xf53b;" horiz-adv-x="640" 
-d="M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197
-c-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012
-c30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96z" />
-    <glyph glyph-name="money-check" unicode="&#xf53c;" horiz-adv-x="640" 
-d="M0 0v320h640v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32zM448 208v-32c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16zM448 88v-16
-c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8zM64 184v-16c0 -4.41992 3.58008 -8 8 -8h304c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-304c-4.41992 0 -8 -3.58008 -8 -8z
-M64 88v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM624 416c8.83984 0 16 -7.16016 16 -16v-48h-640v48c0 8.83984 7.16016 16 16 16h608z" />
-    <glyph glyph-name="money-check-alt" unicode="&#xf53d;" horiz-adv-x="640" 
-d="M608 416c17.6699 0 32 -14.3301 32 -32v-384c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v384c0 17.6699 14.3301 32 32 32h576zM176 120.12c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896
-l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21
-c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703
-c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104c-4.55957 0 -8.9502 1.2998 -12.8193 3.71973
-c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16.1201zM416 136v16
-c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM576 136v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8z
-M576 232v16c0 4.41992 -3.58008 8 -8 8h-272c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h272c4.41992 0 8 3.58008 8 8z" />
-    <glyph glyph-name="not-equal" unicode="&#xf53e;" horiz-adv-x="448" 
-d="M416 240h-98.4199l-74.5303 -96h172.95c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-247.48l-82.0898 -105.73c-5.37012 -7.00977 -15.4102 -8.34961 -22.4297 -2.96973l-25.4102 19.46c-7.00977 5.37988 -8.33984 15.4199 -2.96973 22.4307
-l51.8701 66.8096h-55.4902c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h130.03l74.5293 96h-204.56c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h279.09l82.0801 105.73c5.37988 7.00977 15.4199 8.34961 22.4404 2.96973
-l25.4092 -19.46c7.01074 -5.37012 8.34082 -15.4102 2.9707 -22.4307l-51.8701 -66.8096h23.8799c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32z" />
-    <glyph glyph-name="palette" unicode="&#xf53f;" 
-d="M204.3 443c163.8 31.9004 307.2 -92.0996 307.7 -249.7c-0.0996094 -35.7002 -29.0996 -65.2998 -64.9004 -65.2998h-79.6992c-51 0 -84 -53 -60.9004 -98.4004c18.9004 -37.0996 -1.2998 -85.2998 -42.5 -91.6992c-127.1 -19.7002 -295.8 119.699 -258.8 306.699
-c19.5996 99.1006 99.7002 179 199.1 198.4zM96 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM128 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 320
-c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="parking" unicode="&#xf540;" horiz-adv-x="448" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM240 128c52.9004 0 96 43.0996 96 96s-43.0996 96 -96 96h-96c-8.7998 0 -16 -7.2002 -16 -16v-224c0 -8.7998 7.2002 -16 16 -16h32
-c8.7998 0 16 7.2002 16 16v48h48zM240 256c17.5996 0 32 -14.4004 32 -32s-14.4004 -32 -32 -32h-48v64h48z" />
-    <glyph glyph-name="percentage" unicode="&#xf541;" horiz-adv-x="384" 
-d="M109.25 274.75c-24.9902 -25 -65.5098 -25 -90.5098 0c-24.9902 24.9902 -24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0s24.9902 -65.5195 0 -90.5098zM365.25 109.26c25 -25 25 -65.5195 0 -90.5098c-24.9902 -24.9902 -65.5195 -24.9902 -90.5098 0
-s-24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0zM363.31 340.69c12.5 -12.5 12.5 -32.7607 0 -45.25l-274.75 -274.75c-12.4893 -12.5 -32.75 -12.5 -45.25 0l-22.6191 22.6191c-12.5 12.4902 -12.5 32.75 0 45.25l274.75 274.75c12.4893 12.5 32.75 12.5 45.25 0z
-" />
-    <glyph glyph-name="project-diagram" unicode="&#xf542;" horiz-adv-x="640" 
-d="M384 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128zM192 416v-32h224v-64h-224v-47.5098l64.2803 -112.49h-0.280273c-23.5996 0 -44.0195 -12.9805 -55.1201 -32.04
-l-73.1602 128.04h-95.7197c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32zM608 448c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128
-c0 17.6699 14.3301 32 32 32h128z" />
-    <glyph glyph-name="receipt" unicode="&#xf543;" horiz-adv-x="384" 
-d="M358.4 444.8c10.5996 7.90039 25.5996 0.400391 25.5996 -12.7998v-480c0 -13.2002 -15.0996 -20.7002 -25.5996 -12.7998l-38.4004 44.7998l-54.4004 -44.7998c-2.66602 -2.01953 -6.01367 -3.21777 -9.6123 -3.21777c-3.59961 0 -6.9209 1.19824 -9.58691 3.21777
-l-54.4004 44.7998l-54.4004 -44.7998c-2.66602 -2.01953 -6.01367 -3.21777 -9.6123 -3.21777c-3.59961 0 -6.9209 1.19824 -9.58691 3.21777l-54.4004 44.7998l-38.4004 -44.7998c-10.5996 -7.90039 -25.5996 -0.400391 -25.5996 12.7998v480
-c0 13.2002 15 20.7002 25.5996 12.7998l38.4004 -44.7998l54.4004 44.7998c2.66602 2.01953 6.01367 3.21777 9.6123 3.21777c3.59961 0 6.9209 -1.19824 9.58691 -3.21777l54.4004 -44.7998l54.4004 44.7998c2.66602 2.01953 6.01367 3.21777 9.6123 3.21777
-c3.59961 0 6.9209 -1.19824 9.58691 -3.21777l54.4004 -44.7998zM320 88v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 184v16c0 4.40039 -3.59961 8 -8 8h-240
-c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 280v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8z" />
-    <glyph glyph-name="robot" unicode="&#xf544;" horiz-adv-x="640" 
-d="M32 224h32v-192h-32h-0.0390625c-17.6406 0 -31.9619 14.3213 -31.9619 31.9619c0 0.0126953 0.000976562 0.0253906 0.000976562 0.0380859v128v0.0390625c0 17.6406 14.3213 31.9619 31.9619 31.9619c0.0126953 0 0.0253906 -0.000976562 0.0380859 -0.000976562z
-M544 272v-272c-0.0351562 -35.3066 -28.6934 -63.9648 -64 -64h-320c-35.3066 0.0351562 -63.9648 28.6934 -64 64v272v0.0263672c0 44.1387 35.835 79.9746 79.9736 79.9746c0.00878906 0 0.0175781 -0.000976562 0.0263672 -0.000976562h112v64
-c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32v-64h112h0.0263672c44.1387 0 79.9746 -35.835 79.9746 -79.9736c0 -0.00878906 -0.000976562 -0.0175781 -0.000976562 -0.0263672zM264 192c0 22.0762 -17.9238 40 -40 40s-40 -17.9238 -40 -40s17.9238 -40 40 -40
-c22.0752 0 40 17.9248 40 40zM256 64h-64v-32h64v32zM352 64h-64v-32h64v32zM456 192c0 22.0762 -17.9238 40 -40 40s-40 -17.9238 -40 -40s17.9238 -40 40 -40c22.0752 0 40 17.9248 40 40zM448 64h-64v-32h64v32zM640 192v-128v-0.0390625
-c0 -17.6406 -14.3213 -31.9619 -31.9619 -31.9619c-0.0126953 0 -0.0253906 0.000976562 -0.0380859 0.000976562h-32v192h32h0.0390625c17.6406 0 31.9619 -14.3213 31.9619 -31.9619c0 -0.0126953 -0.000976562 -0.0253906 -0.000976562 -0.0380859z" />
-    <glyph glyph-name="ruler" unicode="&#xf545;" horiz-adv-x="640" 
-d="M635.7 280.8c8.7998 -15 3.59961 -34.2002 -11.6006 -42.7998l-496.8 -281.9c-15.2002 -8.59961 -34.7002 -3.5 -43.5 11.5l-79.5996 135.601c-8.7998 15 -3.5 34.0996 11.7002 42.7998l69 39.0996l59.6992 -101.399c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039
-l13.7998 7.7998c3.7998 2.2002 5.10059 7 2.90039 10.7002l-59.7002 101.7l55.2002 31.2998l27.8994 -47.5c2.2002 -3.7998 7.10059 -5.09961 10.9004 -2.89941l13.7998 7.7998c3.7998 2.2002 5.10059 6.89941 2.90039 10.7002l-27.9004 47.3994l55.2002 31.2998
-l59.7002 -101.699c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 7 2.89941 10.7002l-59.7998 101.7l55.2002 31.2998l27.8994 -47.2998c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039l13.7998 7.7998
-c3.7998 2.2002 5.10059 6.90039 2.90039 10.7002l-27.9004 47.4004l55.2002 31.2998l59.7002 -101.6c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 6.90039 2.89941 10.7002l-59.7002 101.7l69 39.0996
-c15.2002 8.60059 34.7002 3.5 43.5 -11.5z" />
-    <glyph glyph-name="ruler-combined" unicode="&#xf546;" 
-d="M160 160v-41.3799l-158.43 -158.42c-0.660156 2.55957 -1.57031 5.03027 -1.57031 7.7998v448c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-32h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56
-c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56zM480 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-448
-c-2.75977 0 -5.24023 0.910156 -7.7998 1.57031l158.43 158.43h41.3701v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8
-v56h32z" />
-    <glyph glyph-name="ruler-horizontal" unicode="&#xf547;" horiz-adv-x="576" 
-d="M544 320c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-512c-17.6699 0 -32 14.3301 -32 32v192c0 17.6699 14.3301 32 32 32h48v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16
-c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h48z" />
-    <glyph glyph-name="ruler-vertical" unicode="&#xf548;" horiz-adv-x="256" 
-d="M168 32h88v-64c0 -17.6699 -14.3301 -32 -32 -32h-192c-17.6699 0 -32 14.3301 -32 32v448c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88
-c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8z" />
-    <glyph glyph-name="school" unicode="&#xf549;" horiz-adv-x="640" 
-d="M0 224c0 17.6699 14.3301 32 32 32h64v-320h-80c-8.83984 0 -16 7.16016 -16 16v272zM360 272c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v64c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8v-40h24z
-M497.75 335.96c8.90039 -5.92969 14.25 -15.9297 14.25 -26.6299v-373.33h-128v144c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16v-144h-128v373.34c0.00195312 11.1084 5.64453 20.8828 14.25 26.6201l160 106.67
-c5.0752 3.38086 11.2324 5.35156 17.7822 5.35156s12.6426 -1.9707 17.7178 -5.35156zM320 192c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM608 256c17.6699 0 32 -14.3301 32 -32v-272c0 -8.83984 -7.16016 -16 -16 -16h-80
-v320h64z" />
-    <glyph glyph-name="screwdriver" unicode="&#xf54a;" 
-d="M448 448l64 -64l-96 -128h-62.0596l-83.0303 -83.0303c-4.25 6.79004 -9.07031 13.2705 -14.8701 19.0703c-5.7998 5.80957 -12.2803 10.6201 -19.0703 14.8701l83.0303 83.0303v62.0596zM128 169.41c29.1104 29.1094 76.2998 29.1094 105.41 0
-c29.1094 -29.1104 29.1094 -76.2998 0 -105.41l-117.08 -117.08c-14.5605 -14.5596 -38.1504 -14.5596 -52.71 0l-52.7002 52.7002c-14.5498 14.5596 -14.5498 38.1602 0 52.71z" />
-    <glyph glyph-name="shoe-prints" unicode="&#xf54b;" horiz-adv-x="640" 
-d="M192 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64h32v-128h-32zM0 32c0 35.3496 28.6504 64 64 64h32v-128h-32c-35.3496 0 -64 28.6504 -64 64zM337.46 160c90.3604 0 174.54 -32 174.54 -96c0 -45.2197 -39.0996 -97.2998 -148.58 -120.82
-c-31.9795 -6.87012 -64.8896 -8.50977 -97.5801 -6.19922c-27.2998 1.92969 -54.0996 7.76953 -80.3096 15.0498l-57.5303 15.9697v128c60.21 0 79.9404 15.6201 104.73 32c28.5693 18.8799 69.8193 32 104.729 32zM491.42 440.81
-c109.48 -23.5098 148.58 -75.5898 148.58 -120.81c0 -64 -84.1797 -96 -174.54 -96c-34.9102 0 -76.1602 13.1201 -104.729 32c-24.79 16.3799 -44.5303 32 -104.73 32v128l57.5303 15.9697c26.21 7.27051 53.0098 13.1104 80.3096 15.04
-c32.6904 2.32031 65.6006 0.669922 97.5801 -6.2002z" />
-    <glyph glyph-name="skull" unicode="&#xf54c;" 
-d="M256 448c141.4 0 256 -100.3 256 -224c0 -70.0996 -36.9004 -132.6 -94.5 -173.7c-9.7002 -6.89941 -15.2002 -18.2002 -13.5 -29.8994l9.40039 -66.2002c1.39941 -9.60059 -6 -18.2002 -15.7002 -18.2002h-77.7002v56c0 4.40039 -3.59961 8 -8 8h-16
-c-4.40039 0 -8 -3.59961 -8 -8v-56h-64v56c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-56h-77.7002c-9.7002 0 -17.0996 8.59961 -15.7002 18.2002l9.40039 66.2002c1.7002 11.7998 -3.90039 23 -13.5 29.8994
-c-57.5996 41.1006 -94.5 103.601 -94.5 173.7c0 123.7 114.6 224 256 224zM160 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM352 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64
-s28.7002 -64 64 -64z" />
-    <glyph glyph-name="smoking-ban" unicode="&#xf54d;" 
-d="M96 144v64c0 8.7998 7.2002 16 16 16h21.5l96 -96h-117.5c-8.7998 0 -16 7.2002 -16 16zM256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM256 0c41.4004 0 79.7002 13.2998 111.1 35.7002l-267.399 267.399
-c-22.4004 -31.3994 -35.7002 -69.6992 -35.7002 -111.1c0 -105.9 86.0996 -192 192 -192zM301.2 192l32 -32h50.7998v32h-82.7998zM412.3 80.9004c22.4004 31.3994 35.7002 69.6992 35.7002 111.1c0 105.9 -86.0996 192 -192 192
-c-41.4004 0 -79.7002 -13.2998 -111.1 -35.7002l124.3 -124.3h130.8c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-34.7998zM320.6 320c32.1006 0 58.7002 -23.7002 63.3008 -54.5996c0.699219 -4.90039 -3 -9.40039 -8 -9.40039h-16.2002
-c-3.7002 0 -7 2.5 -7.7002 6.09961c-2.7998 14.7002 -15.7998 25.9004 -31.4004 25.9004c-32.0996 0 -58.6992 23.7002 -63.2998 54.5996c-0.700195 4.90039 3 9.40039 8 9.40039h16.2002c3.7002 0 7 -2.5 7.7002 -6.09961
-c2.7998 -14.7002 15.7998 -25.9004 31.3994 -25.9004z" />
-    <glyph glyph-name="store" unicode="&#xf54e;" horiz-adv-x="616" 
-d="M602 329.4c33.5996 -53.6006 3.7998 -128 -59 -136.4c-4.5 -0.599609 -9 -0.900391 -13.7002 -0.900391c-29.5 0 -55.7002 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006
-c-18 -20.1006 -44.2002 -33.1006 -73.8008 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-4.59961 0 -9.2002 0.300781 -13.7002 0.900391c-62.5996 8.5 -92.2998 82.9004 -58.7998 136.4l64.9004 103.6
-c5.7998 9.2998 16.0996 15 27.0996 15h404c11 0 21.2998 -5.7002 27.0996 -15zM529.5 160c6.09961 0 12.0996 0.400391 18.2002 1.2002c5.59961 0.700195 11 2 16.3994 3.59961v-196.8c0 -17.7002 -14.2998 -32 -32 -32h-448c-17.6992 0 -32 14.2998 -32 32v196.8
-c5.30078 -1.5 10.8008 -2.7998 16.4004 -3.59961c5.90039 -0.799805 12 -1.2002 18 -1.2002c10 0 19.9004 1.59961 29.5 3.7998v-99.7998h384v99.7998c9.59961 -2.2998 19.5 -3.7998 29.5 -3.7998z" />
-    <glyph glyph-name="store-alt" unicode="&#xf54f;" horiz-adv-x="640" 
-d="M320 64v160h64v-256c0 -17.7002 -14.2998 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32v256h64v-160h192zM634.6 305.8c14.1006 -21.2998 -1.09961 -49.7998 -26.5996 -49.7998h-575.9c-25.5996 0 -40.7998 28.5 -26.5996 49.7998l85.2998 128
-c5.90039 8.90039 15.9004 14.2002 26.6006 14.2002h405.199c10.7002 0 20.7002 -5.2998 26.7002 -14.2002zM512 -48v272h64v-272c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16z" />
-    <glyph glyph-name="stream" unicode="&#xf550;" 
-d="M16 320c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416zM496 240c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16
-v64c0 8.83984 7.16016 16 16 16h416zM432 64c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416z" />
-    <glyph glyph-name="stroopwafel" unicode="&#xf551;" 
-d="M188.12 237.26l45.25 -45.2598l-45.2598 -45.25l-45.25 45.25zM301.25 259.88l-45.25 -45.25l-45.25 45.2598l45.25 45.25zM210.75 124.12l45.25 45.25l45.2598 -45.25l-45.2598 -45.2598zM256 448c141.38 0 256 -114.62 256 -256s-114.62 -256 -256 -256
-s-256 114.62 -256 256s114.62 256 256 256zM442.68 152.4c1.44629 1.4502 2.3418 3.45312 2.3418 5.66113s-0.895508 4.20801 -2.3418 5.6582l-28.29 28.2803l28.2705 28.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096
-c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-45.25 45.2607l33.9404 33.9395l16.9697 -16.9697c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9707 16.9697l16.9707 16.9697
-c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-16.9697 -16.9697l-16.9707 16.9697c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-11.3105 -11.3096c-3.11914 -3.12012 -3.11914 -8.19043 0 -11.3105
-l16.9707 -16.9697l-33.9404 -33.9404l-45.2598 45.25l28.29 28.29c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-28.3096 28.2705c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0
-l-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-45.2607 -45.25l-33.9395 33.9404l16.9697 16.9697c3.12012 3.12012 3.12012 8.18945 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9707
-l-16.9697 16.9707c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l16.9697 -16.9697l-16.9697 -16.9707c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3105
-c3.12012 -3.11914 8.19043 -3.11914 11.3105 0l16.9697 16.9707l33.9404 -33.9404l-45.25 -45.2598l-28.29 28.29c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-28.29 -28.29
-c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3096l11.3398 -11.3301c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l45.25 -45.25l-33.9395 -33.9404l-16.9707 16.9697c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-11.3096 -11.3096
-c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l16.9697 -16.9697l-16.9697 -16.9697c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3096 0l16.9707 16.9697l16.9697 -16.9697
-c3.12012 -3.12012 8.19043 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9697 16.9697l33.9395 33.9404l45.25 -45.2598l-28.29 -28.29c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3105 -11.3096
-c3.11914 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l28.3096 -28.2705c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3105c3.12012 3.11914 3.12012 8.18945 0 11.3096l-28.29 28.29l45.2607 45.2598l33.9395 -33.9395l-16.9697 -16.9707
-c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l16.9697 16.9697l16.9697 -16.9697c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3096
-l-16.9697 16.9707l16.9697 16.9697c3.12012 3.12012 3.12012 8.19043 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9697l-33.9404 33.9395l45.25 45.25l28.29 -28.29c3.12012 -3.12012 8.19043 -3.12012 11.3105 0zM278.63 192
-l45.2598 45.2598l45.25 -45.2598l-45.25 -45.25z" />
-    <glyph glyph-name="toolbox" unicode="&#xf552;" 
-d="M502.63 233.37c6 -6 9.37012 -14.1396 9.37012 -22.6201v-82.75h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v82.7402
-c0 8.49023 3.37012 16.6299 9.37012 22.6299l45.25 45.2598c6.00977 6 14.1396 9.37012 22.6299 9.37012h50.75v80c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-80.0098h50.75c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM320 288v64h-128v-64h128z
-M384 80v16h128v-96c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v96h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v16h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z" />
-    <glyph glyph-name="tshirt" unicode="&#xf553;" horiz-adv-x="640" 
-d="M631.2 351.5c7.89941 -3.90039 11.0996 -13.5996 7.09961 -21.5l-57.2998 -114.4c-4 -8 -13.5996 -11.1992 -21.5 -7.19922l-56.5996 27.6992c-10.6006 5.2002 -23 -2.59961 -23 -14.3994v-253.7c0 -17.7002 -14.3008 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32
-v253.6c0 11.9004 -12.4004 19.6006 -23 14.4004l-56.6006 -27.7002c-7.89941 -3.89941 -17.5 -0.700195 -21.5 7.2002l-57.2002 114.5c-3.89941 7.90039 -0.699219 17.5 7.2002 21.5l194.7 96.5c20.0996 -27.7998 64.5996 -47.2002 116.5 -47.2002
-s96.4004 19.4004 116.5 47.2002z" />
-    <glyph glyph-name="walking" unicode="&#xf554;" horiz-adv-x="320" 
-d="M208 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM302.5 202.9c15.7002 -7.90039 22 -27.3008 14.2998 -43c-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008l-23.2998 11.8008c-15 7.59961 -26.4004 20.8994 -31.7002 37
-l-5.5 16.5l-17.2002 -68.7002l45.5 -49.7002c7.2002 -7.7998 12.3008 -17.4004 14.9004 -27.7002l22.2002 -89c4.2998 -17.0996 -6.2002 -34.5 -23.2998 -38.7998c-17.1006 -4.2998 -34.5 6.2002 -38.8008 23.2998l-18.2998 73.2998
-c-2.59961 10.3008 -7.7002 19.8008 -14.8994 27.7002l-59.9004 65.4004c-14.5 15.8994 -20.0996 38 -14.9004 58.7998l15.2002 60.7002l-26.7998 -10.7998c-7.2002 -2.90039 -13 -8.40039 -16.5 -15.4004l-6.7002 -13.5996
-c-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008c-15.7002 7.90039 -22 27.1006 -14.2002 42.9004l6.7002 13.5996c10.4004 21 28.1006 37.5 49.7002 46.2002c37.4004 15.1006 57.2998 25.2998 93.2998 25.2002c46.5 -0.0996094 87.5 -31.2998 102.2 -75.9004
-l9.7002 -29.3994zM73.5996 62.2002l20.7002 51.5c8.7002 -11.9004 -7.89941 6.59961 47.4004 -53.7002l-13.5 -33.7998c-3.2998 -8.10059 -8.10059 -15.4004 -14.2002 -21.5l-59.4004 -59.4004c-12.5 -12.5 -32.6992 -12.5 -45.1992 0s-12.5 32.7998 0 45.2998l50 50.1006
-c6.19922 6.09961 11 13.3994 14.1992 21.5z" />
-    <glyph glyph-name="wallet" unicode="&#xf555;" 
-d="M461.2 320c28.0195 0 50.7998 -21.5303 50.7998 -48v-256c0 -26.4697 -22.7803 -48 -50.7998 -48h-397.2c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h368c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-384
-c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h381.2zM416 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="angry" unicode="&#xf556;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 208c0 -17.7002 14.4004 -32 32.0996 -32c17.7002 0 32 14.2998 32 32c0 2.90039 -1 5.5 -1.69922 8.2002c0.599609 0 1.19922 -0.200195 1.69922 -0.200195
-c6.90039 0 13.2002 4.5 15.3008 11.4004c2.59961 8.39941 -2.2002 17.3994 -10.7002 19.8994l-80 24c-8.5 2.5 -17.4004 -2.2002 -19.9004 -10.7002c-2.59961 -8.39941 2.2002 -17.3994 10.7002 -19.8994l31 -9.2998c-6.40039 -5.90039 -10.5 -14.1006 -10.5 -23.4004z
-M304 53.7998c13.4004 -16.0996 38.2998 4 24.5 20.5c-20 24 -49.4004 37.7998 -80.5996 37.7998c-31.2002 0 -60.6006 -13.7998 -80.6006 -37.7998c-13.5996 -16.2998 11.1006 -36.7998 24.6006 -20.5c27.8994 33.4004 84.2998 33.4004 112.1 0zM380.6 240.7
-c8.5 2.5 13.3008 11.3994 10.8008 19.8994c-2.5 8.40039 -11.5 13.2002 -19.9004 10.7002l-80 -24c-8.40039 -2.5 -13.2002 -11.3994 -10.7002 -19.8994c2.10059 -6.90039 8.40039 -11.4004 15.2998 -11.4004c0.600586 0 1.10059 0.0996094 1.7002 0.200195
-c-0.799805 -2.60059 -1.7002 -5.2998 -1.7002 -8.2002c0 -17.7002 14.3008 -32 32 -32c17.7002 0 32 14.2998 32 32c0 9.2998 -4.19922 17.5996 -10.5 23.4004z" />
-    <glyph glyph-name="archway" unicode="&#xf557;" horiz-adv-x="576" 
-d="M560 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-159.98c-8.83984 0 -16 7.16016 -16 16v16l-0.0195312 160c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96v-176c0 -8.83984 -7.16016 -16 -16 -16h-159.98
-c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v352h512v-352h16zM560 448c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-544c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544z" />
-    <glyph glyph-name="atlas" unicode="&#xf558;" horiz-adv-x="448" 
-d="M318.38 240c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102c7.66992 19.0605 12.7197 43.3799 14.21 70.4102h39.0898zM318.38 272h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102c27.71 -13.2402 48.0098 -39.1904 53.2998 -70.4102zM224 350.69
-c7.69043 -7.4502 20.7695 -34.4307 23.4404 -78.6904h-46.8701c2.66016 44.2695 15.7393 71.2402 23.4297 78.6904zM182.92 342.41c-7.67969 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102zM182.92 169.59
-c-27.71 13.2402 -48.0195 39.1904 -53.2998 70.4102h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102zM247.43 240c-2.66016 -44.2598 -15.7393 -71.2402 -23.4395 -78.6904c-7.69043 7.4502 -20.7705 34.4307 -23.4307 78.6904h46.8701zM448 89.5996
-c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96
-h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM224 384c-70.6904 0 -128 -57.3096 -128 -128s57.3096 -128 128 -128s128 57.3096 128 128s-57.3096 128 -128 128zM384 0v64h-288c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h288z" />
-    <glyph glyph-name="award" unicode="&#xf559;" horiz-adv-x="384" 
-d="M97.1201 85.3701c13.79 -13.7803 32.1104 -21.3701 51.6104 -21.3701c12.4395 0 24.4697 3.54004 35.3096 9.58008l-52.0498 -127.62c-4.39062 -10.7695 -18.4307 -13.4004 -26.4307 -4.95996l-36.2393 38.2803l-52.6904 -2.01074
-c-11.6201 -0.439453 -19.8203 11.2607 -15.4297 22.0303l45.3701 111.24c7.55957 -5.87012 15.9199 -10.7705 25.4297 -13.3203c20.96 -5.60938 16.4297 -3.16016 25.1201 -11.8496zM382.8 -0.700195c4.39062 -10.7598 -3.80957 -22.4697 -15.4297 -22.0303
-l-52.6904 2.01074l-36.25 -38.2803c-7.98926 -8.44043 -22.04 -5.80957 -26.4297 4.95996l-52.0498 127.62c10.8398 -6.03027 22.8701 -9.58008 35.3096 -9.58008c19.5 0 37.8301 7.58984 51.6201 21.3701c8.66992 8.66992 4.0498 6.20996 25.1201 11.8496
-c9.50977 2.5498 17.8701 7.44043 25.4297 13.3203zM263 108c-13.2305 -13.4697 -33.8398 -15.8799 -49.7305 -5.82031c-6.13867 3.89746 -13.5029 6.15527 -21.3066 6.15527s-15.084 -2.25781 -21.2227 -6.15527c-15.9004 -10.0596 -36.5098 -7.64941 -49.7402 5.82031
-c-14.7305 15 -16.4004 14.04 -38.7803 20.1396c-13.8896 3.79004 -24.75 14.8408 -28.4697 28.9805c-7.48047 28.3994 -5.54004 24.9697 -25.9502 45.75c-10.1699 10.3604 -14.1396 25.4502 -10.4199 39.5898c7.48047 28.4199 7.46973 24.46 0 52.8203
-c-3.72949 14.1396 0.25 29.2295 10.4199 39.5801c20.4102 20.7793 18.4805 17.3594 25.9502 45.75c3.71973 14.1396 14.5801 25.1895 28.4697 28.9795c27.8906 7.61035 24.5303 5.62988 44.9404 26.4102c10.1699 10.3604 25 14.4004 38.8896 10.6104
-c27.9199 -7.61035 24.0303 -7.60059 51.9004 0c13.8896 3.79004 28.7197 -0.260742 38.8896 -10.6104c20.4297 -20.79 17.0703 -18.7998 44.9502 -26.4102c13.8896 -3.79004 24.75 -14.8398 28.4697 -28.9795c7.48047 -28.3906 5.54004 -24.9707 25.9502 -45.75
-c10.1699 -10.3506 14.1396 -25.4404 10.4199 -39.5801c-7.47949 -28.4102 -7.46973 -24.4502 0 -52.8301c3.71973 -14.1406 -0.25 -29.2305 -10.4199 -39.5801c-20.4102 -20.7803 -18.4697 -17.3506 -25.9502 -45.75c-3.71973 -14.1396 -14.5801 -25.1904 -28.4697 -28.9805
-c-21.7598 -5.92969 -23.5098 -4.58984 -38.79 -20.1396zM97.6602 272.04c0 -53.0303 42.2402 -96.0205 94.3398 -96.0205s94.3398 42.9902 94.3398 96.0205s-42.2402 96.0195 -94.3398 96.0195s-94.3398 -42.9893 -94.3398 -96.0195z" />
-    <glyph glyph-name="backspace" unicode="&#xf55a;" horiz-adv-x="640" 
-d="M576 384c35.3496 0 64 -28.6504 64 -64v-256c0 -35.3496 -28.6504 -64 -64 -64h-370.75c-16.9697 0 -33.25 6.75 -45.25 18.75l-150.63 150.63c-12.5 12.4902 -12.5 32.75 0 45.25l150.63 150.62c11.5801 11.5869 27.5869 18.75 45.2471 18.75h0.0126953h370.74z
-M491.31 129.94l-62.0596 62.0596l62.0596 62.0596c6.25 6.25 6.25 16.3809 0 22.6309l-22.6191 22.6191c-6.25 6.25 -16.3809 6.25 -22.6309 0l-62.0596 -62.0596l-62.0596 62.0596c-6.25 6.25 -16.3809 6.25 -22.6309 0l-22.6191 -22.6191
-c-6.25 -6.25 -6.25 -16.3809 0 -22.6309l62.0596 -62.0596l-62.0596 -62.0596c-6.25 -6.25 -6.25 -16.3809 0 -22.6309l22.6191 -22.6191c6.25 -6.25 16.3809 -6.25 22.6309 0l62.0596 62.0596l62.0596 -62.0596c6.25 -6.25 16.3809 -6.25 22.6309 0l22.6191 22.6191
-c6.25 6.25 6.25 16.3809 0 22.6309z" />
-    <glyph glyph-name="bezier-curve" unicode="&#xf55b;" horiz-adv-x="640" 
-d="M368 416c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM208 360v-72c0 -9.4502 2.17969 -18.3604 5.87988 -26.4404c-34.2695 -24.3496 -59.7402 -59.9492 -71.04 -101.56
-h-49.3994c13.6797 64.6797 54.1699 119.48 109.54 152h-79.7305c-9.5 -23.4404 -32.4102 -40 -59.25 -40c-35.3398 0 -64 28.6504 -64 64s28.6602 64 64 64c26.8398 0 49.75 -16.5596 59.25 -40h84.75zM160 128c17.6699 0 32 -14.3301 32 -32v-96
-c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM576 400c35.3398 0 64 -28.6504 64 -64s-28.6602 -64 -64 -64c-26.8398 0 -49.75 16.5596 -59.25 40h-79.7305c55.3701 -32.5195 95.8604 -87.3203 109.54 -152
-h-49.3994c-11.2998 41.6104 -36.7705 77.21 -71.04 101.56c3.68945 8.08008 5.87988 16.9902 5.87988 26.4404v72h84.75c9.5 23.4404 32.4102 40 59.25 40zM576 128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32
-v96c0 17.6699 14.3301 32 32 32h96z" />
-    <glyph glyph-name="bong" unicode="&#xf55c;" horiz-adv-x="448" 
-d="M302.5 -64h-221c-23.1699 0 -44.4199 12.5801 -56 32.6602c-16.1904 28.0703 -25.5 60.5898 -25.5 95.3398c0 71.0303 38.6699 132.9 96 166.11v153.93l-15.9697 -0.0205078c-8.85059 -0.00976562 -16.0303 7.16016 -16.0205 16.0107l0.0400391 31.7295
-c0.00976562 8.82031 7.16016 15.9707 15.9805 15.9805l223.939 0.259766c8.85059 0.00976562 16.0303 -7.16992 16.0205 -16.0195l-0.0400391 -31.7207c-0.00976562 -8.81934 -7.16016 -15.9697 -15.9805 -15.9795l-15.9697 -0.0205078v-154.16
-c14.1201 -8.17969 27.0898 -18.1396 38.6504 -29.5098l39.4092 39.4102l-9.37988 9.37988c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3105 11.3105c6.25 6.25 16.3799 6.25 22.6299 0l52.6895 -52.6904c6.25 -6.25 6.25 -16.3799 0 -22.6299l-11.2998 -11.3203
-c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-9.37988 9.37988l-43.4404 -43.4395c17.3604 -28.8105 27.4404 -62.5 27.4404 -98.6201c0 -34.75 -9.30957 -67.2598 -25.5 -95.3398c-11.5703 -20.0801 -32.8203 -32.6602 -56 -32.6602zM120.06 188.57
-c-24.8096 -14.3701 -44.1094 -35.7305 -56.5596 -60.5703h257c-12.4404 24.8398 -31.75 46.2002 -56.5596 60.5703l-23.9404 13.8701v181.76l-96 -0.110352v-181.649z" />
-    <glyph glyph-name="brush" unicode="&#xf55d;" horiz-adv-x="384" 
-d="M352 448c17.6699 0 32 -14.3301 32 -32v-224h-384v224c0 17.6699 14.3301 32 32 32h320zM0 128v32h384v-32c0 -35.3496 -28.6602 -64 -64 -64h-64v-64c0 -35.3496 -28.6602 -64 -64 -64s-64 28.6504 -64 64v64h-64c-35.3398 0 -64 28.6504 -64 64zM192 24
-c-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24s24 10.75 24 24c0 13.2598 -10.75 24 -24 24z" />
-    <glyph glyph-name="bus-alt" unicode="&#xf55e;" 
-d="M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32
-c-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM160 376v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8
-v16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM240 160v160h-112c-17.6699 0 -32 -14.3301 -32 -32v-96c0 -17.6699 14.3301 -32 32 -32h112zM272 160
-h112c17.6699 0 32 14.3301 32 32v96c0 17.6699 -14.3301 32 -32 32h-112v-160zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="cannabis" unicode="&#xf55f;" 
-d="M503.47 87.75c5.24023 -2.75977 8.52051 -8.20996 8.53027 -14.1504c0.00976562 -5.92969 -3.26953 -11.3691 -8.50977 -14.1494c-2.4502 -1.29004 -60.7705 -31.7197 -133.49 -31.7197c-6.12988 0 -11.96 0.0996094 -17.5 0.30957
-c11.3604 -22.2305 16.5195 -38.3096 16.8096 -39.2197c1.80078 -5.68066 0.290039 -11.8906 -3.90918 -16.1104c-2.90137 -2.91113 -6.91699 -4.70801 -11.3477 -4.70801c-1.6543 0 -3.25098 0.250977 -4.75293 0.717773c-1.83008 0.580078 -37.7197 11.9902 -77.2998 39.29
-v-64.0098c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v64.0195c-39.5801 -27.2998 -75.4697 -38.7197 -77.2998 -39.2891c-1.50195 -0.466797 -3.10059 -0.724609 -4.75586 -0.724609c-4.43066 0 -8.44336 1.80273 -11.3447 4.71387
-c-4.19922 4.2207 -5.70996 10.4307 -3.90918 16.1104c0.290039 0.910156 5.43945 16.9902 16.8096 39.2197c-5.54004 -0.209961 -11.3604 -0.30957 -17.5 -0.30957c-72.7305 0 -131.04 30.4297 -133.49 31.7197c-5.06836 2.68652 -8.52441 7.99805 -8.52441 14.1299
-c0 6.13965 3.46484 11.4766 8.54492 14.1602c1.56934 0.820312 32.3896 16.8896 76.7793 25.8096c-64.25 75.1201 -84.0498 161.671 -84.9297 165.641c-0.25 1.12207 -0.384766 2.28125 -0.384766 3.47754c0 4.40723 1.78711 8.39941 4.6748 11.292
-c3.03027 3.04004 7.12012 4.7002 11.3203 4.7002c1.14941 0 2.2998 -0.129883 3.43945 -0.379883c3.89062 -0.860352 86.5508 -19.5996 160.58 -79.7598c0 1.45996 -0.00976562 2.92969 -0.00976562 4.39941c0 118.79 59.9805 213.721 62.5303 217.7
-c2.93945 4.58984 8.01953 7.37012 13.4697 7.37012c5.65625 0 10.6211 -2.92969 13.46 -7.37012c2.5498 -3.97949 62.5303 -98.9102 62.5303 -217.7c0 -1.46973 0 -2.93945 -0.00976562 -4.39941c74.0391 60.1699 156.699 78.9102 160.579 79.7598
-c1.15039 0.259766 2.30078 0.379883 3.44043 0.379883c4.2002 0 8.29004 -1.66016 11.3203 -4.7002c3.85938 -3.87012 5.47949 -9.43945 4.2998 -14.7695c-0.879883 -3.96973 -20.6797 -90.5205 -84.9297 -165.641c44.3896 -8.91992 75.2197 -24.9893 76.7793 -25.8096z" />
-    <glyph glyph-name="check-double" unicode="&#xf560;" 
-d="M505 273.2c9.2998 -9.2998 9.2998 -24.5 -0.0996094 -34l-296 -296.2c-9.30078 -9.40039 -24.5 -9.40039 -33.9004 0l-168 168.1c-9.40039 9.40039 -9.40039 24.6006 0 34l39.7002 39.7002c9.2998 9.40039 24.5 9.40039 33.8994 0l111.4 -111.5l239.5 239.5
-c9.2998 9.40039 24.5 9.40039 33.9004 0zM180.7 167.2l-112 112.2c-6.2002 6.19922 -6.2002 16.2998 0 22.5996l45.2998 45.2998c6.2002 6.2998 16.4004 6.2998 22.5996 0l55.4004 -55.5l151.5 151.5c6.2002 6.2998 16.4004 6.2998 22.5996 0l45.2002 -45.2998
-c6.2002 -6.2002 6.2002 -16.2998 0 -22.5996l-208 -208.2c-6.2002 -6.2998 -16.3994 -6.2998 -22.5996 0z" />
-    <glyph glyph-name="cocktail" unicode="&#xf561;" horiz-adv-x="576" 
-d="M296 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v125.22l-168.74 168.73c-15.5195 15.5195 -4.5293 42.0498 17.4199 42.0498h366.641c21.9492 0 32.9395 -26.5303 17.4199 -42.0498
-l-168.74 -168.73v-125.22h56zM432 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144c-27.4102 0 -52.7695 8.08008 -74.5801 21.3799l35.2598 35.2598c12.0303 -5.43945 25.2803 -8.63965 39.3203 -8.63965c52.9297 0 96 43.0596 96 96s-43.0703 96 -96 96
-c-35.3701 0 -65.9902 -19.4502 -82.6396 -48h-52.54c19.8301 55.7998 72.5693 96 135.18 96z" />
-    <glyph glyph-name="concierge-bell" unicode="&#xf562;" 
-d="M288 317.46c108.51 -15.5703 192 -108.64 192 -221.46h-448c0 112.82 83.4902 205.89 192 221.46v18.54h-16c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-16v-18.54zM496 64
-c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z" />
-    <glyph glyph-name="cookie" unicode="&#xf563;" 
-d="M510.37 193.21c4.37988 -27.6602 -0.110352 -56 -12.8203 -80.96l-35.0996 -68.8701c-12.7021 -24.9268 -32.8652 -45.0938 -57.79 -57.7998l-69.1201 -35.21c-24.8301 -12.6396 -53.0098 -17.1104 -80.5205 -12.75l-76.6992 12.1396
-c-28.1211 4.45801 -53.4463 17.7891 -72.71 37.0498l-54.7607 54.75c-19.3213 19.3281 -32.6924 44.7373 -37.1592 72.9502l-12.0801 76.2705c-1.07715 6.79883 -1.55371 13.7725 -1.55371 20.8721c0 21.6162 5.18359 42.0303 14.373 60.0674l35.1006 68.8799
-c12.6992 24.9297 32.8633 45.0967 57.79 57.8008l69.1201 35.21c24.8291 12.6494 53.0098 17.1201 80.5195 12.7598l76.7002 -12.1504c27.5303 -4.34961 52.9795 -17.3301 72.71 -37.0498l54.7598 -54.75c19.3213 -19.3281 32.6924 -44.7363 37.1602 -72.9502zM176 80
-c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32
-s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="cookie-bite" unicode="&#xf564;" 
-d="M510.52 192.18c4.10059 -27.3301 -0.349609 -55.2695 -12.9092 -79.9102l-35.1006 -68.8799c-12.6992 -24.9316 -32.8623 -45.1025 -57.79 -57.8096l-69.1299 -35.21c-24.8301 -12.6504 -53.0195 -17.1201 -80.5303 -12.7598l-76.71 12.1494
-c-28.123 4.45801 -53.4482 17.793 -72.71 37.0605l-54.7695 54.7598c-19.3223 19.332 -32.6934 44.7441 -37.1602 72.96l-12.0801 76.2695c-1.07617 6.7998 -1.55273 13.7734 -1.55273 20.874c0 21.6182 5.18262 42.0361 14.373 60.0762l35.0996 68.8799
-c12.6963 24.9346 32.8613 45.1055 57.79 57.8105l69.1299 35.2197c24.5898 12.5205 52.46 16.96 79.7207 12.8203c0.859375 -69.96 57.6895 -126.45 127.859 -126.45c0 -70.1699 56.5 -127.01 126.47 -127.86zM176 80c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32
-s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="crop-alt" unicode="&#xf565;" 
-d="M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v328h-160v96h224c17.6699 0 32 -14.3301 32 -32v-256h40zM160 424v-328h160v-96h-224c-17.6699 0 -32 14.3301 -32 32v256h-40
-c-13.25 0 -24 10.75 -24 24v48c0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24z" />
-    <glyph glyph-name="digital-tachograph" unicode="&#xf566;" horiz-adv-x="640" 
-d="M608 352c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h576zM304 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8c0 -4.41992 3.58008 -8 8 -8h224
-c4.41992 0 8 3.58008 8 8zM72 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM136 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16
-c-4.41992 0 -8 -3.58008 -8 -8v-16zM200 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM264 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8
-h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM304 224v48c0 8.83984 -7.16016 16 -16 16h-208c-8.83984 0 -16 -7.16016 -16 -16v-48c0 -8.83984 7.16016 -16 16 -16h208c8.83984 0 16 7.16016 16 16zM576 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8
-c0 -4.41992 3.58008 -8 8 -8h224c4.41992 0 8 3.58008 8 8z" />
-    <glyph glyph-name="dizzy" unicode="&#xf567;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM152 233.4l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996
-l-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002c-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64
-s28.7002 -64 64 -64zM395.3 227.3l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996l-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002
-c-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996l28.7002 28.7002l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996z" />
-    <glyph glyph-name="drafting-compass" unicode="&#xf568;" 
-d="M457.01 103.58l54.9805 -95.2305l-7.02051 -58.25c-1.2793 -10.5898 -12.3594 -16.9893 -22.1699 -12.7998l-53.9502 23.04l-54.3799 94.1904c29.9102 11.8701 57.4902 28.7197 82.54 49.0498zM499.5 198.14c-52.6201 -83.1299 -144.45 -134.14 -243.5 -134.14
-c-35.3799 0 -69.8701 6.71973 -102.06 18.96l-70.8008 -122.63l-53.9492 -23.04c-9.81055 -4.19043 -20.8906 2.20996 -22.1709 12.7998l-7.01953 58.25l71.2803 123.46c-21.29 17.8105 -40.4102 38.3799 -55.9805 62.0205
-c-4.99023 7.56934 -2.20996 17.9297 5.64062 22.4697l27.75 16.0703c7.40918 4.29004 16.5898 1.76953 21.3799 -5.33008c9.71973 -14.4102 21.1299 -27.3906 33.6797 -39l68.2998 118.31c-7.43945 13.6299 -12.0498 29.0303 -12.0498 45.6602c0 53.0195 42.9805 96 96 96
-s96 -42.9805 96 -96c0 -16.6299 -4.61035 -32.0303 -12.0596 -45.6602l51.79 -89.71c-23.0508 -23.1699 -51.3809 -39.96 -82.6104 -48.9199l-51.0898 88.5c-0.69043 -0.0195312 -1.33984 -0.209961 -2.04004 -0.209961s-1.33984 0.19043 -2.04004 0.209961
-l-67.3604 -116.68c22.1797 -7.28027 45.4805 -11.5303 69.4102 -11.5303c76.25 0 147.01 38.8496 188.12 102.38c4.64941 7.17969 13.7803 9.87012 21.2598 5.71973l28.0703 -15.5693c7.93945 -4.40039 10.9102 -14.7207 6.0498 -22.3906zM256 384
-c-17.6699 0 -32 -14.3301 -32 -32s14.3301 -32 32 -32s32 14.3301 32 32s-14.3301 32 -32 32z" />
-    <glyph glyph-name="drum" unicode="&#xf569;" 
-d="M431.34 325.95c44.9004 -16.3398 80.6602 -42.7803 80.6602 -86.1006v-160.229c0 -30.2705 -27.5 -57.6797 -72 -77.8604v101.9c0 13.2461 -10.7539 24 -24 24s-24 -10.7539 -24 -24v-118.93c-33.0498 -9.11035 -71.0703 -15.0605 -112 -16.7305v103.61
-c0 13.2461 -10.7539 24 -24 24s-24 -10.7539 -24 -24v-103.61c-40.9297 1.66992 -78.9502 7.62012 -112 16.7305v118.93c0 13.2461 -10.7539 24 -24 24s-24 -10.7539 -24 -24v-101.9c-44.5 20.1807 -72 47.5898 -72 77.8604v160.229c0 107.601 219.55 112.15 256 112.15
-c15.2197 0 62.4297 -0.910156 112.19 -9.69043l110.06 71c2.53711 1.69238 5.59082 2.7041 8.86621 2.7041c5.55664 0 10.4551 -2.83887 13.3242 -7.14355l8.86914 -13.3105c1.69238 -2.53711 2.7041 -5.58984 2.7041 -8.86523
-c0 -5.55664 -2.83887 -10.4561 -7.14355 -13.3242zM256 175.76c114.87 0 208 28.6904 208 64.0898c0 21.3105 -33.9102 40.1504 -85.8604 51.75l-118.64 -76.5195c-2.53711 -1.69141 -5.59082 -2.7041 -8.86621 -2.7041c-5.55664 0 -10.4551 2.83887 -13.3242 7.14355
-l-8.86914 13.3105c-1.69434 2.53809 -2.70703 5.59277 -2.70703 8.87012c0 5.55371 2.83594 10.4502 7.13672 13.3193l72.8096 47c-15.9492 1.2002 -32.5293 1.91016 -49.6797 1.91016c-114.88 0 -208 -28.6797 -208 -64.0801c0 -35.3994 93.1201 -64.0898 208 -64.0898z
-" />
-    <glyph glyph-name="drum-steelpan" unicode="&#xf56a;" horiz-adv-x="576" 
-d="M288 416c159.06 0 288 -57.3096 288 -128v-192c0 -70.6904 -128.94 -128 -288 -128s-288 57.3096 -288 128v192c0 70.6904 128.94 128 288 128zM205.01 257.64c5.11035 19.0605 2.49023 38.96 -7.37012 56.0508l-25.5996 44.3398
-c-73.9297 -13.6406 -124.04 -39.8701 -124.04 -70.0303c0 -30.7803 52.2305 -57.46 128.7 -70.8398c13.7695 9.91016 23.8594 23.8701 28.3096 40.4795zM288 208c21.0801 0 41.4102 1 60.8896 2.7002c-8.05957 26.1299 -32.1494 45.2998 -60.8896 45.2998
-s-52.8301 -19.1699 -60.8896 -45.2998c19.4795 -1.7002 39.8096 -2.7002 60.8896 -2.7002zM352 352v13.04c-20.4004 1.87988 -41.7998 2.95996 -64 2.95996s-43.5996 -1.08008 -64 -2.95996v-13.04c0 -35.29 28.71 -64 64 -64s64 28.71 64 64zM398.93 217.1
-c76.6699 13.3604 129.07 40.0703 129.07 70.9004c0 30.21 -50.2803 56.5 -124.44 70.0996l-25.6494 -44.4199c-9.87012 -17.0801 -12.4902 -36.9795 -7.37988 -56.04c4.45996 -16.6396 14.5898 -30.6299 28.3994 -40.54z" />
-    <glyph glyph-name="feather-alt" unicode="&#xf56b;" 
-d="M512 448c-1.80957 -26.2598 -11.71 -132.86 -53.6201 -234.79l-106.54 -53.21h81.1406c-9.08008 -16.4102 -19.2002 -32.2305 -30.4502 -47.1201l-146.79 -48.8799h100.95c-35.5605 -30.0703 -79.1006 -51.0996 -132.58 -56.54
-c-41.8105 -4.83008 -83.8701 -7.21973 -125.96 -7.36035l-57.1309 -57.0693c-9.38965 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.5 259.24c6.25 6.25 6.25 16.3799 0 22.6299s-16.4004 6.25 -22.6504 0l-178.87 -178.689
-c1.15039 26.7998 2.90039 53.5801 5.99023 80.2393c25.4307 249.41 389.21 284.051 440.99 287.61z" />
-    <glyph glyph-name="file-contract" unicode="&#xf56c;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8
-h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM256.81 64c-4.19922 0 -8.13965 2.44043 -10.1592 6.5
-c-11.9502 23.8604 -46.2305 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396c-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896
-c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.46c2.03027 -6.14062 7.58008 -10.4404 14.0303 -10.8906c0.389648 -0.0292969 0.759766 -0.0498047 1.13965 -0.0498047
-c0.00390625 0 -0.00292969 -0.015625 0.000976562 -0.015625c6.26074 0 11.6865 3.60742 14.3086 8.85547l7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953c7.37012 -14.7207 22.1904 -23.8604 38.6396 -23.8604
-h47.1904c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16h-47.1904zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z" />
-    <glyph glyph-name="file-download" unicode="&#xf56d;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM300.45 100.64c10.1299 10.0703 3.00977 27.3604 -11.2705 27.3604h-65.1797v80
-c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-80h-65.1797c-14.2803 0 -21.4004 -17.29 -11.25 -27.3604l96.4199 -95.6992c6.64941 -6.61035 17.3896 -6.61035 24.04 0zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961
-c6.40039 0 12.5 -2.5 17 -7z" />
-    <glyph glyph-name="file-export" unicode="&#xf56e;" horiz-adv-x="576" 
-d="M384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM571 140c6.59961 -6.59961 6.59961 -17.4004 0 -24l-95.7002 -96.5c-10.0996 -10.0996 -27.3994 -3 -27.3994 11.2998v65.2002h-64v64h64v65.0996
-c0 14.3008 17.2998 21.4004 27.3994 11.3008zM192 112c0 -8.7998 7.2002 -16 16 -16h176v-136c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136v-128h-176
-c-8.7998 0 -16 -7.2002 -16 -16v-32z" />
-    <glyph glyph-name="file-import" unicode="&#xf56f;" 
-d="M16 160h112v-64h-112c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16zM505 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM352 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24
-h-336c-13.2998 0 -24 10.7002 -24 24v136h127.9v-65.0996c0 -14.3008 17.2998 -21.4004 27.3994 -11.3008l95.7002 96.4004c6.59961 6.59961 6.59961 17.2998 0 24l-95.5996 96.5c-10.1006 10.0996 -27.4004 3 -27.4004 -11.2998v-65.2002h-128v264
-c0 13.2998 10.7002 24 24 24h200v-136z" />
-    <glyph glyph-name="file-invoice" unicode="&#xf570;" horiz-adv-x="384" 
-d="M288 192v-64h-192v64h192zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464
-c0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16
-c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM320 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8zM320 208c0 8.83984 -7.16016 16 -16 16h-224
-c-8.83984 0 -16 -7.16016 -16 -16v-96c0 -8.83984 7.16016 -16 16 -16h224c8.83984 0 16 7.16016 16 16v96z" />
-    <glyph glyph-name="file-invoice-dollar" unicode="&#xf571;" horiz-adv-x="384" 
-d="M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z
-M64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 296c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8
-v-16zM208 32.1201c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104
-c4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v24.29c0 4.41992 -3.58008 8 -8 8h-16
-c-4.41992 0 -8 -3.58008 -8 -8v-24.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104
-c-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-24.29c0 -4.41992 3.58008 -8 8 -8h16
-c4.41992 0 8 3.58008 8 8v24.1201z" />
-    <glyph glyph-name="file-prescription" unicode="&#xf572;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM292.53 132.52c-6.25 6.25 -16.3799 6.25 -22.6299 0l-29.9004 -29.8994l-33.46 33.46
-c19.8398 10.8701 33.46 31.7002 33.46 55.9199c0 35.3496 -28.6504 64 -64 64h-80c-8.83984 0 -16 -7.16016 -16 -16v-160c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v48h18.7402l59.3193 -59.3096l-30.0596 -30.0605
-c-6.25 -6.25 -6.25 -16.3799 0 -22.6299l11.3096 -11.3096c6.25 -6.25 16.3809 -6.25 22.6309 0l30.0596 30.0596l30.0596 -30.0703c6.25 -6.25 16.3809 -6.25 22.6309 0l11.3096 11.3105c6.25 6.25 6.25 16.3799 0 22.6299l-30.0596 30.0596l29.8994 29.9004
-c6.25 6.25 6.25 16.3799 0 22.6299zM176 176h-48v32h48c8.82031 0 16 -7.17969 16 -16s-7.17969 -16 -16 -16zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z" />
-    <glyph glyph-name="file-signature" unicode="&#xf573;" horiz-adv-x="576" 
-d="M218.17 23.8604c7.25 -14.4707 21.71 -23.4404 37.8301 -23.75l128 -0.110352v-40c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136.01v-46.5498l-128 -127.09
-v-82.1201c-3.87012 0.30957 -7.46973 2.47949 -9.35938 6.25977c-11.9404 23.8604 -46.25 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396
-c-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.4697c4.4502 -13.46 23.1104 -14.8701 29.4795 -2.09082
-l7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM288 101.04l162.79 161.62l67.8799 -67.8799
-l-161.68 -162.78h-68.9902v69.04zM568.54 280.67c9.9502 -9.93945 9.9502 -26.0703 0 -36.0098l-27.25 -27.25l-67.8799 67.8799l27.25 27.25c9.93945 9.94043 26.0703 9.94043 36.0098 0z" />
-    <glyph glyph-name="file-upload" unicode="&#xf574;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM289.18 95.9902c14.2803 0 21.4004 17.29 11.25 27.3594l-96.4199 95.7002
-c-6.64941 6.61035 -17.3896 6.61035 -24.04 0l-96.4199 -95.7002c-10.1396 -10.0693 -3.00977 -27.3594 11.2705 -27.3594h65.1797v-80c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v80h65.1797zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128
-v128h6.09961c6.40039 0 12.5 -2.5 17 -7z" />
-    <glyph glyph-name="fill" unicode="&#xf575;" 
-d="M502.63 230.94c12.4902 -12.5 12.4902 -32.7607 0 -45.2607l-221.57 -221.569c-18.75 -18.75 -43.3096 -28.1201 -67.8799 -28.1201c-24.5596 0 -49.1201 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2598 0 135.75l94.7598 94.7598
-l-86.1895 86.1807c-6.24023 6.25 -6.24023 16.3799 0 22.6299l22.6191 22.6104c6.24023 6.25 16.3809 6.25 22.6201 0l86.1807 -86.1807l81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97
-l48.3496 48.3398l-162.45 162.44l-58.9492 -58.9502l58.6094 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402c-12.4893 -12.4902 -32.75 -12.4902 -45.2393 0l-58.6104 58.5996l-81.6104 -81.6094l-13.1494 -13.1504
-c-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z" />
-    <glyph glyph-name="fill-drip" unicode="&#xf576;" horiz-adv-x="576" 
-d="M512 128c0 0 64 -92.6504 64 -128s-28.6602 -64 -64 -64s-64 28.6504 -64 64s64 128 64 128zM502.63 230.94c12.4902 -12.5 12.4902 -32.75 -0.00976562 -45.25l-221.57 -221.57c-18.7402 -18.75 -43.2998 -28.1201 -67.8701 -28.1201
-c-24.5596 0 -49.1299 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2705 0 135.75l94.7598 94.7607l-86.1895 86.1797c-6.24023 6.24023 -6.24023 16.3701 0 22.6201l22.6191 22.6201c6.24023 6.25 16.3701 6.25 22.6201 0l86.1807 -86.1904
-l81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97l48.3398 48.3398l-162.44 162.44l-58.9492 -58.9502l58.5996 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402
-s-32.75 -12.4902 -45.2402 0l-58.5996 58.5996l-81.6104 -81.6094l-13.1494 -13.1504c-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z" />
-    <glyph glyph-name="fingerprint" unicode="&#xf577;" 
-d="M256.12 202.04c13.2598 0 24 -10.75 23.9902 -24c1.55957 -99.1104 -15.9502 -176.61 -29.4805 -224.521c-2.97949 -10.5996 -12.6104 -17.5195 -23.0898 -17.5195c-20.9697 0 -25.8496 20.7695 -23.1201 30.4902c19.5605 69.6494 28.8398 139.3 27.7002 211.55
-c0 13.2598 10.75 24 24 24zM255.26 283.77c56.9707 -0.839844 104.03 -46.9199 104.91 -102.72c0.790039 -50.8994 -2.99023 -102.08 -11.2695 -152.109c-0.770508 -4.6709 -7.61035 -23.1006 -27.5801 -19.7705c-13.0703 2.16016 -21.9307 14.5205 -19.7607 27.5801
-c7.80078 47.2197 11.3809 95.5 10.6104 143.55c-0.469727 30.1299 -26.3096 55 -57.6201 55.4697c-34.5303 0.150391 -54.8594 -26.3896 -54.4502 -52.3398c0.800781 -51.4395 -4.0293 -102.93 -14.3691 -153.02c-2.69043 -12.9805 -15.3105 -21.3105 -28.3604 -18.6406
-c-12.9697 2.6709 -21.3301 15.3809 -18.6396 28.3604c9.61914 46.6396 14.1191 94.6104 13.3691 142.55c-0.849609 54.0205 41.9004 101.16 103.16 101.09zM144.57 303.55c10.2793 -8.37012 11.8398 -23.4795 3.48926 -33.7598
-c-18.7998 -23.0898 -28.4697 -51.0898 -28 -80.9697c0.640625 -40.6699 -2.66992 -81.4902 -9.85938 -121.33c-0.820312 -4.5498 -7.78027 -22.8604 -27.8906 -19.3604c-13.0498 2.36035 -21.6992 14.8398 -19.3594 27.8896c6.63965 36.7803 9.7002 74.4707 9.10938 112.051
-c-0.639648 40.7197 13.1309 80.5 38.75 112c8.39062 10.2793 23.46 11.8193 33.7607 3.47949zM254.04 365.88c101.09 -1.5 184.6 -83.0801 186.16 -181.83c0.0751953 -4.88281 0.147461 -8.55371 0.147461 -13.4551c0 -35.9766 -2.0498 -71.4785 -6.03809 -106.395
-c-1.06934 -9.23047 -9.85938 -23.0605 -26.5791 -21.1104c-13.1602 1.5 -22.6104 13.4102 -21.1104 26.5801c4.2998 37.5205 6.16992 75.75 5.58008 113.63c-1.15039 73.0801 -63.4502 133.45 -138.88 134.58c-11.5303 0.0800781 -22.9502 -1.08008 -34 -3.68945
-c-12.8906 -3 -25.8301 4.93945 -28.8906 17.8291c-3.04004 12.9102 4.94043 25.8301 17.8301 28.8906c14.9102 3.53027 30.3701 5.37988 45.7803 4.96973zM506.11 244.43c6.22949 -28.2295 6.00977 -50.1602 5.83008 -72.3398
-c-0.110352 -13.1895 -10.8301 -23.7998 -24 -23.7998h-0.200195c-13.25 0.110352 -23.9102 10.9297 -23.7998 24.2002c0.209961 24.1895 0.00976562 40.1895 -4.7002 61.5996c-2.86035 12.9502 5.31934 25.75 18.2598 28.6104
-c13.0996 2.92969 25.75 -5.35059 28.6104 -18.2705zM465.99 335.15c7.62012 -10.8408 5 -25.8105 -5.83984 -33.4307c-10.8604 -7.58984 -25.8105 -5 -33.4199 5.86035c-39.8906 56.8301 -105.171 91.3604 -174.62 92.3896
-c-56.3408 0.810547 -108.92 -20.0596 -147.681 -58.8594c-37.1201 -37.1406 -57.1094 -86.5 -56.2793 -139l-0.160156 -23.6406c-0.379883 -13 -11.0498 -23.2998 -23.9707 -23.2998c-0.239258 0 -0.489258 0 -0.719727 0.0205078
-c-13.25 0.379883 -23.6699 11.4395 -23.2803 24.6895l0.120117 21.4697c-1.04004 65.6104 23.9502 127.28 70.3203 173.71c48.0098 48.0303 112.56 73.7607 182.35 72.9209c84.79 -1.27051 164.48 -43.4404 213.181 -112.83z" />
-    <glyph glyph-name="fish" unicode="&#xf578;" horiz-adv-x="576" 
-d="M327.1 352c137.46 0 248.9 -128 248.9 -160s-111.44 -160 -248.9 -160c-89.9697 0 -168.55 54.7695 -212.279 101.62l-87.3301 -66.0498c-12.1299 -9.16992 -30.2402 0.599609 -27.1406 14.6602l24.1904 109.77l-24.1797 109.76
-c-3.10059 14.0605 15.0098 23.8398 27.1396 14.6602l87.3301 -66.0498c43.7295 46.8604 122.3 101.63 212.27 101.63zM414.53 168c13.25 0 24 10.75 24 24c0 13.2598 -10.7402 24 -24 24c-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z" />
-    <glyph glyph-name="flushed" unicode="&#xf579;" horiz-adv-x="496" 
-d="M344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248
-s-248 111 -248 248s111 248 248 248zM80 224c0 -39.7998 32.2002 -72 72 -72s72 32.2002 72 72s-32.2002 72 -72 72s-72 -32.2002 -72 -72zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 152c39.7998 0 72 32.2002 72 72
-s-32.2002 72 -72 72s-72 -32.2002 -72 -72s32.2002 -72 72 -72z" />
-    <glyph glyph-name="frown-open" unicode="&#xf57a;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM323.3 56.7002c11.4004 -3.5 22.5 6.2002 20.5 18.0996
-c-7 39.9004 -60.0996 61.2002 -95.7998 61.2002s-88.7998 -21.2002 -95.7998 -61.2002c-2 -11.7998 9 -21.5996 20.5 -18.0996c31.2002 9.59961 59.3994 15.2998 75.2998 15.2998s44.0996 -5.7002 75.2998 -15.2998zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32
-s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="glass-martini-alt" unicode="&#xf57b;" 
-d="M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4
-c30.0498 0 45.0996 -36.3398 23.8496 -57.5996zM443.77 400h-375.529l48 -48h279.529z" />
-    <glyph glyph-name="globe-africa" unicode="&#xf57c;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM408 224.5c0 8.55957 6.94043 15.5 15.5 15.5h18.4297c-19.0693 76.9805 -82.6992 136.37 -161.92 149.21v-21.7002c0 -8.55957 -6.93945 -15.5 -15.5 -15.5
-h-24.21c-5.17969 0 -10.0195 -2.58984 -12.8896 -6.89941l-8.08008 -12.1104c-2.13965 -3.20996 -5.40039 -5.5 -9.13965 -6.44043l-14.4502 -3.60938c-6.90039 -1.73047 -11.7402 -7.93066 -11.7402 -15.04v-4.40039c0 -8.55957 6.94043 -15.5 15.5 -15.5h90.0498
-l0.00488281 0.00195312c4.27637 0 8.15039 -1.73633 10.9551 -4.54199l6.91992 -6.91992c2.91016 -2.91016 6.85059 -4.54004 10.96 -4.54004h10.0908c8.55957 0 15.5 -6.93945 15.5 -15.5c0 -6.66992 -4.27051 -12.5898 -10.6006 -14.7002l-47.3096 -15.7695
-c-3.90039 -1.2998 -8.15039 -1 -11.8301 0.839844l-14.7207 7.36035c-7.5791 3.7998 -15.9492 5.76953 -24.4297 5.76953h-0.889648c-12.2734 -0.00292969 -23.6533 -4.08594 -32.7803 -10.9297l-27.5801 -20.6904c-13.75 -10.3193 -21.8496 -26.5098 -21.8496 -43.6992
-v-14.0605c0.00292969 -15.0742 6.11328 -28.7393 16 -38.6299c10.25 -10.2402 24.1396 -16 38.6299 -16h25.8799c8.55957 0 15.5 -6.94043 15.5 -15.5v-29.8896c0 -12.6504 3.0293 -24.6885 8.33008 -35.29c4.7002 -9.40039 14.3096 -15.3398 24.8203 -15.3398
-c9.63477 0.000976562 18.1133 4.89551 23.0898 12.3594l13.0293 19.5498c7.18359 10.7715 15.4854 20.4473 25 29.1602c2.4707 2.27051 4.14062 5.27051 4.76074 8.56055l4.2998 22.8301c0.439453 2.3291 1.41016 4.5293 2.83008 6.42969l18.7402 24.9795
-c2.00977 2.68066 3.09961 5.9502 3.09961 9.30078v11.3398c0 8.55957 -6.94043 15.5 -15.5 15.5h-8.20996c-5.17969 0 -10.0205 2.58984 -12.8896 6.89941l-13.2402 19.8604c-5.66992 8.50977 -1.70996 20.0703 7.99023 23.2998l2.64941 0.879883
-c1.53906 0.511719 3.20312 0.78418 4.91309 0.78418c3.17383 0 6.12695 -0.955078 8.58691 -2.59375l18.21 -12.1396c2.45801 -1.6416 5.44043 -2.59863 8.61523 -2.59863c2.48438 0 4.83301 0.585938 6.91504 1.62793l15.3896 7.7002
-c5.25 2.62012 8.57031 7.99023 8.57031 13.8604v6.92969z" />
-    <glyph glyph-name="globe-americas" unicode="&#xf57d;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM330.29 82.4004c8.47363 8.42676 13.7158 20.0977 13.7197 32.9795l0.00488281 0.00976562c0 8.41504 -3.41602 16.0391 -8.93457 21.5605l-13.6904 13.6895
-c-6.00977 6 -14.1396 9.37012 -22.6299 9.37012h-66.75c-9.41016 4.70996 -21.4795 32 -32 32c-10.5195 0 -20.8994 2.4502 -30.3096 7.16016l-11.0801 5.54004c-4.0498 2.03027 -6.61035 6.16016 -6.61035 10.6904h-0.00195312c0 5.27539 3.42578 9.75684 8.17188 11.3398
-l31.1699 10.3896c1.58887 0.52832 3.29785 0.81543 5.0625 0.81543c4.00977 0 7.67676 -1.47656 10.4883 -3.91504l9.2793 -8.06055c1.4502 -1.25977 3.31055 -1.95996 5.24023 -1.95996h5.63965c5.94043 0 9.81055 6.25977 7.15039 11.5801l-15.5898 31.1904
-c-0.535156 1.07324 -0.842773 2.29297 -0.842773 3.57324c0 2.24805 0.928711 4.28125 2.42285 5.73633l9.91992 9.65039c1.5 1.45996 3.5 2.26953 5.58008 2.26953h8.99023l0.00390625 -0.000976562c2.20703 0 4.20703 0.894531 5.65527 2.34082l8 8
-c3.12012 3.12012 3.12012 8.19043 0 11.3105l-4.68945 4.68945c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l10.3398 10.3398l4.69043 4.67969c6.25 6.25 6.25 16.3799 0 22.6299l-28.3008 28.3008c-8.26953 -0.310547 -16.3994 -1.12988 -24.3896 -2.41992v-11.3008
-c0 -11.8994 -12.5195 -19.6299 -23.1602 -14.3096l-24.0098 12.0098c-45.8398 -19.8496 -82.7305 -56.3896 -103.2 -101.89c9.92969 -14.7197 25.21 -37.3701 34.5898 -51.1406c5.20605 -7.66895 11.2012 -14.5479 18.0605 -20.7393l0.799805 -0.720703
-c9.5498 -8.60938 20.1699 -15.9697 31.6504 -21.75c14 -7.0498 34.4395 -18.1592 48.8096 -26.1094c10.1904 -5.62988 16.46 -16.3301 16.46 -27.9707v-32.0098c0 -8.49023 3.37012 -16.6299 9.37012 -22.6299c14.9902 -14.9902 24.3203 -38.6299 22.6299 -51.25v-27.3799
-c14.6504 0 28.8896 1.69043 42.6504 4.69043l17.3896 46.8496c2.04004 5.49023 3.25977 11.21 4.76953 16.8701c1.07031 4.00977 3.18066 7.70996 6.1709 10.71c3.31934 3.33008 7.40918 7.39941 11.3096 11.2803zM417 173.75l29.1797 -7.29004
-c1.08008 8.37988 1.82031 16.8701 1.82031 25.54c0 32.1299 -7.7998 62.4102 -21.3203 89.3301l-12.9795 -6.49023c-3.74023 -1.85938 -6.91992 -4.67969 -9.24023 -8.14941l-19.5898 -29.3809c-2.54004 -3.80371 -4.02051 -8.4209 -4.02051 -13.334
-c0 -4.91211 1.48047 -9.48145 4.02051 -13.2852l17.9795 -26.9707c3.31055 -4.96973 8.36035 -8.51953 14.1504 -9.96973z" />
-    <glyph glyph-name="globe-asia" unicode="&#xf57e;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM236.66 199.77l17.3701 28.9502c1.7998 2.99023 6.2002 2.82031 7.75977 -0.299805c1.34961 -2.70996 4.12012 -4.41992 7.15039 -4.41992h3.05957
-c4.41992 0 8 3.58008 8 8v78.1201c0 6.05957 -3.41992 11.5996 -8.83984 14.3096l-10.8301 5.41016c-5.49023 2.75 -5.96973 10.4004 -0.860352 13.8105l50.1602 38.5293c-19.4297 6.31055 -40.1201 9.82031 -61.6299 9.82031c-110.28 0 -200 -89.7197 -200 -200
-c0 -10.9199 1.12012 -21.5498 2.80957 -31.9902h62.5703c4.24023 0 8.31055 1.69043 11.3105 4.69043l19.4697 19.46c3.85938 3.85938 10.3701 2.7998 12.8096 -2.08008l22.6201 -45.2305c2.70996 -5.42969 8.25 -8.84961 14.3105 -8.84961h6.10938
-c8.83984 0 16 7.16016 16 16v9.37012c0 4.24023 -1.68945 8.30957 -4.68945 11.3096l-5.66016 5.66016c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l5.66016 5.65918c3 3 7.06934 4.69043 11.3096 4.69043h0.310547c5.61914 0 10.8291 2.9502 13.7197 7.76953z
-M408 89.5703l-0.00976562 24.5996c0 4.24023 -1.69043 8.31055 -4.69043 11.3105l-11.9102 11.9092c-1.5 1.5 -2.33984 3.54004 -2.33984 5.66016v12.9307c0 2.20996 -1.79004 4 -4 4h-6.05957c-1.78027 0 -3.33984 -1.1709 -3.83984 -2.88086l-4.2002 -14.4697
-c-0.490234 -1.7002 -2.06055 -2.87988 -3.83984 -2.87988h-3.80078c-1.66211 0.000976562 -3.08691 1.01465 -3.68945 2.45996l-5.35059 12.8496c-1.23926 2.99023 -4.15918 4.93066 -7.38965 4.93066h-12.0898
-c-0.00390625 0 -0.0146484 -0.00488281 -0.0185547 -0.00488281c-1.72168 0 -3.31738 -0.545898 -4.62109 -1.47559l-23.71 -16.8896c-1.73047 -1.23047 -3.61035 -2.25977 -5.59082 -3.0498l-39.3398 -15.7402c-3.04004 -1.21973 -5.0293 -4.16016 -5.0293 -7.42969
-v-10.2002l-0.00195312 -0.00390625c0 -2.20703 0.895508 -4.20703 2.3418 -5.65625l11.9102 -11.9102c3 -3 7.06934 -4.68945 11.3096 -4.68945h10.3398c1.31055 0 2.61035 0.15918 3.87988 0.479492l21.2705 5.32031c2.08203 0.520508 4.25391 0.802734 6.49707 0.802734
-c7.38574 0 14.0771 -2.99805 18.9229 -7.84277l13.0098 -13.0098c3 -3 7.07031 -4.69043 11.3096 -4.69043h15.1602c4.24023 0 8.31055 1.69043 11.3105 4.69043l9.56934 9.56934c3 3 4.69043 7.07031 4.69043 11.3105z" />
-    <glyph glyph-name="grimace" unicode="&#xf57f;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM144 48v40h-40v-8c0 -17.7002 14.2998 -32 32 -32h8zM144 104v40h-8c-17.7002 0 -32 -14.2998 -32 -32v-8h40zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32
-s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM208 48v40h-48v-40h48zM208 104v40h-48v-40h48zM272 48v40h-48v-40h48zM272 104v40h-48v-40h48zM336 48v40h-48v-40h48zM336 104v40h-48v-40h48zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32
-s14.2998 -32 32 -32zM392 80v8h-40v-40h8c17.7002 0 32 14.2998 32 32zM392 104v8c0 17.7002 -14.2998 32 -32 32h-8v-40h40z" />
-    <glyph glyph-name="grin" unicode="&#xf580;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32
-s32 14.2998 32 32s-14.2998 32 -32 32zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002
-c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z" />
-    <glyph glyph-name="grin-alt" unicode="&#xf581;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM311.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998c0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0
-c12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM151.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998
-c0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0c12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM248 16
-c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004
-c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z" />
-    <glyph glyph-name="grin-beam" unicode="&#xf582;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.7998 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006
-c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17
-c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998
-c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z" />
-    <glyph glyph-name="grin-beam-sweat" unicode="&#xf583;" horiz-adv-x="504" 
-d="M456 320c-26.5 0 -48 21 -48 47c0 20 28.5 60.4004 41.5996 77.7998c3.2002 4.2998 9.60059 4.2998 12.8008 0c13.0996 -17.3994 41.5996 -57.7998 41.5996 -77.7998c0 -26 -21.5 -47 -48 -47zM456 288c6.7998 0 13.2002 1.09961 19.5 2.59961
-c13.0996 -30.1992 20.5 -63.5 20.5 -98.5996c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248c50.2998 0 97 -15.0996 136.1 -40.7998c-7.7998 -18 -8.09961 -27.7998 -8.09961 -32.2002c0 -43.5996 35.9004 -79 80 -79zM328 296
-c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5
-c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17
-c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002
-s-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z" />
-    <glyph glyph-name="grin-hearts" unicode="&#xf584;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM90.4004 264.4c-7.7002 -20.2002 3.7998 -41.8008 24.1992 -47.2002l70.2002 -18.2002c4.60059 -1.2002 9.2998 1.5 10.5 6l19.4004 69.9004
-c5.59961 20.2998 -7.40039 41.0996 -28.7998 44.5c-18.7002 3 -36.5 -9.80078 -41.5 -27.9004l-2 -7.09961l-7.10059 1.89941c-18.2002 4.7998 -38.2002 -4.2998 -44.8994 -21.8994zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998
-c1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM381.4 217.3
-c20.3994 5.2998 31.8994 26.9004 24.1992 47.2002c-6.69922 17.5996 -26.6992 26.5996 -44.8994 21.9004l-7.10059 -1.90039l-2 7.09961c-5.09961 18.1006 -22.8994 30.9004 -41.5 27.9004c-21.3994 -3.40039 -34.3994 -24.2002 -28.7998 -44.5l19.4004 -69.9004
-c1.2998 -4.5 6 -7.19922 10.5 -6z" />
-    <glyph glyph-name="grin-squint" unicode="&#xf585;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998
-c8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 16
-c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004
-c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z" />
-    <glyph glyph-name="grin-squint-tears" unicode="&#xf586;" 
-d="M409.6 336.1c-5.59961 -0.799805 -10.2998 3.90039 -9.5 9.40039c3.30078 22.5996 12 73.5 26.8008 88.2998c19.0996 19.2002 50.6992 18.9004 70.2998 -0.700195c19.5996 -19.5996 19.8994 -51 0.700195 -70.1992
-c-14.8008 -14.8008 -65.7002 -23.6006 -88.3008 -26.8008zM102.4 47.9004c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195
-c-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992c14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM414.1 304.4c24 3.5 42.1006 7.39941 56.5 11.5c54.8008 -94.9004 42 -218.2 -39.1992 -299.301c-81.2002 -81.0996 -204.5 -94 -299.301 -39.1992
-c4.10059 14.3994 8.10059 32.5 11.5 56.5c2.90039 20.5 -12.5 49.5996 -45.6992 45.6992c-24.1006 -3.5 -42.1006 -7.39941 -56.5 -11.5c-54.8008 94.9004 -41.9004 218.2 39.1992 299.301c81.2002 81.0996 204.5 94 299.301 39.1992
-c-4.10059 -14.3994 -8.10059 -32.5 -11.5 -56.5c-2.90039 -20.5996 12.6992 -49.5996 45.6992 -45.6992zM255.7 342l-22.5 -90.5996c-2.2002 -8.60059 5.59961 -16.7002 14.5 -14.5l90.5 22.5996c13.0996 3.2998 11.5996 22.4004 -1.7998 23.5996l-52.3008 4.80078
-l-4.7998 52.2998c-1.2002 13.2998 -20.2998 15 -23.5996 1.7998zM164.8 111.7c1.2998 -13.4004 20.4004 -14.9004 23.5 -1.7002l22.6006 90.5c2.19922 8.7002 -5.7002 16.7002 -14.5 14.5l-90.5 -22.5996c-13.1006 -3.30078 -11.6006 -22.4004 1.7998 -23.6006
-l52.2998 -4.7998zM380.5 67.5c42.7998 42.9004 68 122.3 35.7002 167.6c-7.10059 9.90039 -21.9004 8.5 -27.2998 -2c-14.6006 -28.1992 -42.4004 -63.8994 -76.3008 -97.7998c-33.8994 -33.8994 -69.5 -61.7002 -97.7998 -76.2998
-c-10.7002 -5.40039 -11.7998 -20.2998 -2 -27.2002c14.4004 -10.2002 32.1006 -14.7002 51 -14.7002c41 0 87.4004 21.1006 116.7 50.4004z" />
-    <glyph glyph-name="grin-stars" unicode="&#xf587;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM94.5996 279.1c-6.19922 -1 -8.89941 -8.59961 -4.2998 -13.2998l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941l31.2998 16.2998l31.2002 -16.2002
-c5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994l25.3994 24.6006c4.60059 4.59961 1.90039 12.1992 -4.2998 13.1992l-34.8994 5l-15.5 31.6006c-2.90039 5.7998 -11 5.7998 -13.9004 0l-15.5 -31.6006zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998
-c1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM405.7 265.9
-c4.59961 4.59961 1.89941 12.1992 -4.40039 13.0996l-34.8994 5l-15.5 31.5996c-2.90039 5.80078 -11 5.80078 -13.9004 0l-15.5 -31.5996l-34.9004 -5c-6.19922 -1 -8.7998 -8.59961 -4.2998 -13.2002l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941
-l31.2998 16.2998l31.2998 -16.2002c5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994z" />
-    <glyph glyph-name="grin-tears" unicode="&#xf588;" horiz-adv-x="640" 
-d="M102.4 191.9c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195c-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992
-c14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM625.8 165.1c19.2002 -19.0996 18.7998 -50.6992 -0.799805 -70.2998c-19.5996 -19.5996 -51 -19.8994 -70.2002 -0.700195c-14.7998 14.8008 -23.5996 65.7002 -26.7998 88.3008c-0.799805 5.59961 4 10.2998 9.5 9.5
-c22.5996 -3.30078 73.5 -12 88.2998 -26.8008zM496.4 177.9c11.7998 -82.3008 29.8994 -100.4 35.7998 -106.301c0.899414 -1 2 -1.59961 3 -2.5c-42.7002 -74.6992 -123 -125.1 -215.2 -125.1s-172.5 50.4004 -215.2 125c1 0.900391 2.10059 1.59961 3 2.5
-c5.90039 6 24 24.0996 35.7998 106.4c2.90039 20.3994 -12.5 49.5996 -45.6992 45.6992c-8.90039 -1.2998 -16.8008 -2.69922 -24.3008 -4.09961c13.7002 124 118.7 220.5 246.4 220.5s232.7 -96.5 246.4 -220.5c-7.5 1.40039 -15.4004 2.7998 -24.3008 4.09961
-c-26.5996 3.80078 -49.5 -19.0996 -45.6992 -45.6992zM400 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17
-c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM240 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006
-c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM320 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004
-c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.7002 -22.7002 -6.2002 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z" />
-    <glyph glyph-name="grin-tongue" unicode="&#xf589;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002
-s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM168 208
-c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64
-c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998
-c3.5 15.4004 20.2002 24.1006 34.5996 17.6006z" />
-    <glyph glyph-name="grin-tongue-squint" unicode="&#xf58a;" horiz-adv-x="496" 
-d="M293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006
-l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998c3.5 15.4004 20.2002 24.1006 34.5996 17.6006zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5
-c24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004
-c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM214.2 229.7c7.7002 4.7002 7.7002 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18
-l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18zM377.2 199.7l-33.6006 40.2998l33.6006 40.2998c8.5 10.2998 -3.7002 24.9004 -15.4004 18l-80 -48c-7.7998 -4.7002 -7.7998 -15.8994 0 -20.5996l80 -48
-c11.5 -6.7998 24.1006 7.59961 15.4004 18z" />
-    <glyph glyph-name="grin-tongue-wink" unicode="&#xf58b;" horiz-adv-x="496" 
-d="M344 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998
-c1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5
-c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM192 215c8.40039 -7.40039 21.5996 -0.299805 20 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006
-c-1.7998 -11.0996 11.2998 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM344 176c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078
-v-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998
-c3.5 15.4004 20.2002 24.1006 34.5996 17.6006z" />
-    <glyph glyph-name="grin-wink" unicode="&#xf58c;" horiz-adv-x="496" 
-d="M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM368 215c8.5 -7.40039 21.5996 -0.200195 20 10.7998
-c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM124.9 127.2c-11.4004 3.7002 -22.7002 -6 -20.7002 -17.9004
-c9.2998 -55 83.2002 -93.2998 143.8 -93.2998s134.6 38.2998 143.8 93.2998c1.90039 11.9004 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002z" />
-    <glyph glyph-name="grip-horizontal" unicode="&#xf58d;" horiz-adv-x="448" 
-d="M96 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64
-c0 17.6699 14.3301 32 32 32h64zM416 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64
-c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM416 352c17.6699 0 32 -14.3301 32 -32v-64
-c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z" />
-    <glyph glyph-name="grip-vertical" unicode="&#xf58e;" horiz-adv-x="320" 
-d="M96 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64
-c0 17.6699 14.3301 32 32 32h64zM96 96c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64
-c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 96c17.6699 0 32 -14.3301 32 -32v-64
-c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z" />
-    <glyph glyph-name="headphones-alt" unicode="&#xf58f;" 
-d="M160 160c17.6699 0 32 -14.3496 32 -32.0596v-127.881c0 -17.6992 -14.3301 -32.0596 -32 -32.0596h-16c-35.3496 0 -64 28.71 -64 64.1201v63.7598c0 35.4199 28.6504 64.1201 64 64.1201h16zM368 160c35.3496 0 64 -28.71 64 -64.1201v-63.7598
-c0 -35.4102 -28.6504 -64.1201 -64 -64.1201h-16c-17.6699 0 -32 14.3604 -32 32.0596v127.881c0 17.71 14.3301 32.0596 32 32.0596h16zM256 416c143.09 0 251.43 -119.13 256 -256v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112
-c0 114.67 -93.3301 207.8 -208 207.82c-114.67 -0.0205078 -208 -93.1504 -208 -207.82v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112c4.57031 136.87 112.91 256 256 256z" />
-    <glyph glyph-name="headset" unicode="&#xf590;" 
-d="M192 240v-112c0 -17.6699 -14.3301 -32 -32 -32h-16c-35.3496 0 -64 28.6504 -64 64v48c0 35.3496 28.6504 64 64 64h16c17.6699 0 32 -14.3301 32 -32zM368 96h-16c-17.6699 0 -32 14.3301 -32 32v112c0 17.6699 14.3301 32 32 32h16c35.3496 0 64 -28.6504 64 -64v-48
-c0 -35.3496 -28.6504 -64 -64 -64zM256 448c142.82 0 251.42 -118.83 256 -256v-165.72c0 -49.8604 -40.4199 -90.2803 -90.2803 -90.2803h-181.72c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h32c26.5098 0 48 -21.4902 48 -48h101.72
-c23.3506 0 42.2803 18.9297 42.2803 42.2803c0 0 -0.0400391 163.29 -0.120117 165.72h0.120117c0 114.69 -93.3096 208 -208 208s-208 -93.3096 -208 -208v-16c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v16c4.58008 137.17 113.18 256 256 256z
-" />
-    <glyph glyph-name="highlighter" unicode="&#xf591;" horiz-adv-x="544" 
-d="M0 -31.9805l68.3301 70.4707l67.04 -67.04l-35.4502 -35.4502zM124.61 208.03l41.5195 35.4395l173.34 -173.34l-35.5498 -41.6396c-9.5 -10.7705 -24.4199 -14.9805 -38.1504 -10.7803l-42.7393 13.0801l-50.8604 -50.8604l-96.2295 96.2305l50.9297 50.9395
-l-13.0498 42.8301c-1.02832 3.37598 -1.60645 6.94922 -1.60645 10.6592c0 10.9229 4.79688 20.7344 12.3965 27.4414zM527.92 368.73c20.5 -20.5 21.5303 -53.3906 2.34961 -75.1309l-169.949 -199.06l-169.771 169.78l199.05 169.96
-c21.7402 19.1699 54.6309 18.1396 75.1201 -2.35059z" />
-    <glyph glyph-name="hot-tub" unicode="&#xf593;" 
-d="M414.21 270.35c-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398
-c3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504c27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM306.21 270.35
-c-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398c3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504
-c27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM480 192c17.6699 0 32 -14.3301 32 -32v-160c0 -35.3496 -28.6504 -64 -64 -64h-384c-35.3496 0 -64 28.6504 -64 64
-v224c0 35.3496 28.6504 64 64 64h42.6699c14.3779 0 27.7109 -4.78223 38.4004 -12.7998l110.93 -83.2002h224zM128 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM224 8v112
-c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM320 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM416 8
-v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM64 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64z" />
-    <glyph glyph-name="hotel" unicode="&#xf594;" horiz-adv-x="576" 
-d="M560 384h-16v-384h16c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-240v80c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-80h-240c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v384h-15.9805
-c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16zM256 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004
-c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM256 243.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004
-c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM128 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004
-c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM179.2 192c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004zM192 64h192c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96zM448 204.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM448 300.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004
-c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z" />
-    <glyph glyph-name="joint" unicode="&#xf595;" horiz-adv-x="640" 
-d="M444.34 266.9c-35.7803 25.0693 -60.3398 63.0098 -60.3398 106.699v66.4004c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -29.0303 15.8496 -54.71 39.6602 -71.3203c35.3301 -24.6504 56.3398 -64.8203 56.3398 -108.061v-30.3096
-c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 27.4307 -13.2803 52.9102 -35.6602 68.5908zM194.97 89.0195c22.3701 3.60059 45.0801 -4.30957 59.8203 -21.5098l112.72 -131.51h-88.5693c-98.6406 0 -195.29 27.7197 -278.94 80
-c59.6904 37.3096 126.03 61.9297 194.97 73.0195zM553.28 360.91c54.3096 -36.4102 86.7197 -97.1602 86.7197 -162.601v-30.3096c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 50.1504 -25.21 96.6504 -67.3604 123.99
-c-18.4697 11.9805 -28.6396 33.3701 -28.6396 55.3906v62.3096c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -6.82031 3.61035 -12.9805 9.28027 -16.7803zM360.89 95.9502c0.0371094 0 0.0556641 0.0351562 0.0927734 0.0351562
-c19.4336 0 36.8535 -8.68652 48.5879 -22.3857l117.949 -137.6h-88.4492c-19.4385 0 -36.8506 8.65137 -48.5898 22.3496l-117.801 137.431c1.40039 0.0195312 53.8105 0.109375 88.21 0.169922zM616 96c13.25 0 24 -10.7402 24 -24v-112c0 -13.25 -10.75 -24 -24 -24
-h-17.4199c-19.4375 0 -36.8506 8.65137 -48.5898 22.3496l-117.99 137.65h184z" />
-    <glyph glyph-name="kiss" unicode="&#xf596;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004
-c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998
-l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32
-s14.2998 -32 32 -32z" />
-    <glyph glyph-name="kiss-beam" unicode="&#xf597;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM209 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004
-c-0.699219 -8.5 10.7002 -11.8994 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44
-c-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5
-l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM369 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004
-c-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z" />
-    <glyph glyph-name="kiss-wink-heart" unicode="&#xf598;" horiz-adv-x="504" 
-d="M501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941l8.40039 2.2002
-c21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM323.5 49.5c0 0 23.5996 -83.9004 23.9004 -84.5996c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248c0 -31.7998 -6.2002 -62.0996 -17.0996 -90
-c-6 1.5 -12.2002 2.7998 -18.6006 2.90039c-29.0996 49.7998 -98.0996 50.5996 -127.8 4.2998c-11.2998 -17.7002 -14.5996 -39.4004 -9 -59.7002zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM288 52
-c0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.2002 1.19922 -12.4004 -11.7002 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002
-c-5.7002 -2.5 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM304 231l9.7002 8.5
-c14.7998 13.2002 46.2002 13.2002 61 0l9.5 -8.5c8.5 -7.5 21.5 -0.299805 19.7998 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998z" />
-    <glyph glyph-name="laugh" unicode="&#xf599;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32
-s32 14.2998 32 32s-14.2998 32 -32 32zM256 16c73.4004 0 134 55 142.9 126c1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16z" />
-    <glyph glyph-name="laugh-beam" unicode="&#xf59a;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM272 240.6c-0.700195 -8.59961 10.9004 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17
-c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM112 240.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006
-c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM398.9 142c1.19922 9.59961 -6.30078 18 -15.9004 18h-270
-c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z" />
-    <glyph glyph-name="laugh-squint" unicode="&#xf59b;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 278.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998
-c8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 308.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM398.9 142
-c1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z" />
-    <glyph glyph-name="laugh-wink" unicode="&#xf59c;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM268.1 241.9c-1.69922 -11.2002 11.5 -18.3008 19.9004 -10.9004l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5
-c8.40039 -7.5 21.5 -0.299805 19.8008 10.8008c-4 25.1992 -34.2002 42.0996 -59.9004 42.0996s-55.9004 -16.9004 -59.9004 -42.0996zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM398.9 142
-c1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z" />
-    <glyph glyph-name="luggage-cart" unicode="&#xf59d;" horiz-adv-x="640" 
-d="M224 128c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h32v-224h-32zM576 160c0 -17.6699 -14.3301 -32 -32 -32h-32v224h32c17.6699 0 32 -14.3301 32 -32v-160zM624 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-82.9404
-c1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48c0 5.63965 1.15039 10.9697 2.94043 16h-197.881c1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48
-c0 5.63965 1.15039 10.9697 2.94043 16h-82.9404c-8.83984 0 -16 7.16016 -16 16v368h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-368h496zM480 352v-224h-192v272c0 26.5098 21.4902 48 48 48h96
-c26.5098 0 48 -21.4902 48 -48v-48zM432 352v48h-96v-48h96z" />
-    <glyph glyph-name="map-marked" unicode="&#xf59f;" horiz-adv-x="576" 
-d="M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM20.1201 232.05l118.63 47.4502
-c5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32c0.00292969 13.4697 8.32617 24.9932 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502
-c19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197c9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32
-c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-139.88 -55.9502v288z" />
-    <glyph glyph-name="map-marked-alt" unicode="&#xf5a0;" horiz-adv-x="576" 
-d="M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM288 280c23.2002 0 42 18.7998 42 42
-s-18.7998 42 -42 42s-42 -18.7998 -42 -42s18.7998 -42 42 -42zM20.1201 232.05l118.63 47.4502c5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32
-c0.00292969 13.4697 8.32617 24.9932 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502c19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197
-c9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-139.88 -55.9502v288z" />
-    <glyph glyph-name="marker" unicode="&#xf5a1;" 
-d="M93.9502 157.97l75.3994 75.4004l128.021 -128.021l-75.4004 -75.3994c-51.1611 -51.1592 -119.559 -85.4326 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c8.42188 75.6777 42.6777 143.978 93.7803 195.08z
-M485.49 421.49c35.3496 -35.3604 35.3496 -92.6699 0 -128.021l-165.49 -165.489l-128.02 128.02l98.4795 98.4697l-19.5898 19.5898l-87.1504 -87.1494c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6201 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l104.12 104.12
-c15.6104 15.6201 40.9404 15.6201 56.5605 0l36.5596 -36.5498l21.7598 21.7598c35.3506 35.3496 92.6699 35.3496 128.021 0z" />
-    <glyph glyph-name="medal" unicode="&#xf5a2;" 
-d="M223.75 317.25c-42.04 -6.55957 -79.8398 -25.6201 -109.56 -53.3896l-111.271 158.96c-7.41992 10.6094 0.160156 25.1797 13.1104 25.1797h111.149c11.6572 0 21.8467 -6.21387 27.4404 -15.54zM495.97 448c12.9502 0 20.5303 -14.5703 13.1104 -25.1797
-l-111.271 -158.95c-29.7197 27.7598 -67.5195 46.8203 -109.56 53.3799l69.1299 115.21c5.78027 9.63965 16.2002 15.54 27.4404 15.54h111.149zM256 288c97.2002 0 176 -78.7998 176 -176s-78.7998 -176 -176 -176s-176 78.7998 -176 176s78.7998 176 176 176z
-M348.52 130.74c6.82031 6.63965 3.05078 18.2295 -6.34961 19.5898l-52.4297 7.63965l-23.4307 47.5205c-2.10938 4.25 -6.21973 6.38965 -10.3291 6.38965c-4.09082 0 -8.1709 -2.11035 -10.2803 -6.38965l-23.4307 -47.5205l-52.4297 -7.63965
-c-9.39941 -1.36035 -13.1699 -12.9502 -6.34961 -19.5898l37.9297 -36.96l-8.96973 -52.2207c-1.60059 -9.34961 8.25 -16.54 16.6494 -12.0898l46.9004 24.6504l46.9102 -24.6504c8.38965 -4.41992 18.25 2.73047 16.6494 12.0898l-8.96973 52.2207z" />
-    <glyph glyph-name="meh-blank" unicode="&#xf5a4;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32
-s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="meh-rolling-eyes" unicode="&#xf5a5;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 224c0 -35.2998 28.7002 -64 64 -64s64 28.7002 64 64c0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8
-c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 160c35.2998 0 64 28.7002 64 64
-c0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56c0 -35.2998 28.7002 -64 64 -64z
-" />
-    <glyph glyph-name="monument" unicode="&#xf5a6;" horiz-adv-x="384" 
-d="M368 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-352c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h352zM289.14 347.26l30.8604 -315.26h-256l30.8701 315.26c0.751953 7.54688 4.12988 14.3613 9.20996 19.4404
-l76.5996 76.6094c6.25 6.25 16.3799 6.25 22.6299 0l76.6201 -76.6094c5.08008 -5.0791 8.45801 -11.8936 9.20996 -19.4404zM240 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-70.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004
-c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h70.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z" />
-    <glyph glyph-name="mortar-pestle" unicode="&#xf5a7;" 
-d="M501.54 387.09l-99.0801 -99.0898h-151.37l203.811 152.86c5.96094 4.46875 13.4297 7.11426 21.4473 7.11426c5.71973 0 11.1279 -1.34863 15.9219 -3.74414c21.7803 -10.8906 26.4902 -39.9209 9.27051 -57.1406zM496 256c8.83984 0 16 -7.16016 16 -16v-32
-c0 -8.83984 -7.16016 -16 -16 -16h-16c0 -80.9805 -50.2002 -150.11 -121.13 -178.32c12.7695 -16.8701 21.7295 -36.7998 24.9502 -58.6895c1.45996 -9.91992 -6.04004 -18.9805 -16.0703 -18.9805h-223.5c-10.0303 0 -17.5303 9.06055 -16.0703 18.9805
-c3.23047 21.8896 12.1904 41.8193 24.9502 58.6895c-70.9297 28.21 -121.13 97.3398 -121.13 178.32h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z" />
-    <glyph glyph-name="paint-roller" unicode="&#xf5aa;" 
-d="M416 320c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h352c17.6699 0 32 -14.3301 32 -32v-96zM448 384c35.3496 0 64 -28.6504 64 -64v-64c0 -53.0195 -42.9805 -96 -96 -96h-160v-32
-c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32v32c0 35.3496 28.6504 64 64 64h160c17.6699 0 32 14.3301 32 32v128z" />
-    <glyph glyph-name="passport" unicode="&#xf5ab;" horiz-adv-x="448" 
-d="M129.62 272c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102c-7.66992 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898zM129.62 240h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102c-27.71 13.2402 -48.0098 39.1904 -53.2998 70.4102zM224 161.31
-c-7.69043 7.4502 -20.7695 34.4307 -23.4404 78.6904h46.8701c-2.66016 -44.2695 -15.7393 -71.2402 -23.4297 -78.6904zM200.57 272c2.66016 44.2598 15.7393 71.2402 23.4395 78.6904c7.69043 -7.4502 20.7705 -34.4307 23.4307 -78.6904h-46.8701zM265.08 169.59
-c7.67969 19.0605 12.7197 43.3799 14.21 70.4102h39.0898c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102zM416 448c17.6699 0 32 -14.3301 32 -32v-448c0 -17.6699 -14.3301 -32 -32 -32h-352c-35.3496 0 -64 28.6504 -64 64v384c0 35.3496 28.6504 64 64 64h352z
-M336 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-224c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h224zM224 128c70.6904 0 128 57.3096 128 128s-57.3096 128 -128 128s-128 -57.3096 -128 -128s57.3096 -128 128 -128zM265.08 342.41
-c27.71 -13.2402 48.0195 -39.1904 53.2998 -70.4102h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102z" />
-    <glyph glyph-name="pen-fancy" unicode="&#xf5ac;" 
-d="M79.1797 165.06l84.0703 33.0703l98.8799 -98.8799l-33.0703 -84.0703c-3.1748 -9.5332 -10.7061 -17.0645 -20.2393 -20.2393l-176.82 -58.9404l-4.67969 4.67969l92.8896 92.8906c2.55957 -0.660156 5.03027 -1.57031 7.7998 -1.57031c17.6699 0 32 14.3301 32 32
-s-14.3301 32 -32 32s-32 -14.3301 -32 -32c0 -2.76953 0.910156 -5.24023 1.57031 -7.7998l-92.8896 -92.8906l-4.69043 4.69043l58.9404 176.82c3.17773 9.53223 10.707 17.0615 20.2393 20.2393zM369.25 419.68c74.4805 84.2607 199.15 -39.1602 114.23 -114.229
-l-199.49 -183.11l-97.8506 97.8506z" />
-    <glyph glyph-name="pen-nib" unicode="&#xf5ad;" 
-d="M136.6 309.21l151.4 42.79l128 -128l-42.79 -151.4c-5.76172 -20.3838 -21.3594 -36.6455 -41.3496 -43.3096l-279.86 -93.29l-14.6904 14.6904l150.11 150.109c6.25977 -2.99023 13.1797 -4.7998 20.5801 -4.7998c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48
-s-48 -21.4902 -48 -48c0 -7.40039 1.80957 -14.3203 4.7998 -20.5801l-150.109 -150.11l-14.6904 14.6904l93.29 279.86c6.66406 19.9902 22.9258 35.5879 43.3096 41.3496zM497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02
-l56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0z" />
-    <glyph glyph-name="pencil-ruler" unicode="&#xf5ae;" 
-d="M109.46 203.96l-100.17 100.18c-12.3896 12.3906 -12.3799 32.4707 0 44.8604l89.71 89.71c12.3896 12.3896 32.4697 12.3896 44.8604 0l33.6396 -33.6504l-61.6797 -61.6797c-3.10059 -3.08984 -3.10059 -8.11035 0 -11.21l11.21 -11.21
-c1.43359 -1.43652 3.41797 -2.32617 5.60547 -2.32617c2.18848 0 4.16992 0.889648 5.60449 2.32617l61.6797 61.6797l44.1201 -44.1201zM497.93 320.76l-46.0195 -46.0293l-113.2 113.199l46.0205 46.0107c18.7695 18.7598 49.1895 18.7598 67.9492 0l45.25 -45.25
-c18.75 -18.7607 18.7607 -49.1709 0 -67.9307zM316.08 365.29l113.2 -113.19l-296.92 -296.93l-107.45 -18.8398c-14.5 -2.5498 -27.1201 10.0703 -24.5898 24.5596l18.7598 107.44zM502.71 79.8604c12.3896 -12.3906 12.3896 -32.4707 0 -44.8604l-89.71 -89.7002
-c-12.3896 -12.3896 -32.4697 -12.3896 -44.8604 0l-100.21 100.2l134.58 134.56l44.1406 -44.1396l-61.6807 -61.6797c-3.08984 -3.08984 -3.08984 -8.11035 0 -11.21l11.21 -11.21c3.08984 -3.10059 8.11035 -3.10059 11.21 0l61.6807 61.6797z" />
-    <glyph glyph-name="plane-arrival" unicode="&#xf5af;" horiz-adv-x="640" 
-d="M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM44.8096 242.34c-6.5498 5.91016 -12.3896 14.3398 -12.5791 23.25l-0.230469 101.78
-c0.19043 10.8799 10.3799 18.7002 20.7197 15.8799l39.7305 -10.8301c5.00977 -1.36035 9.08984 -5.04004 11.0195 -9.92969l27.5898 -67.8799l102.2 -27.8408l-47.9199 164.211c-0.189453 11.1191 10.1504 19.3193 20.71 16.4395l65.0898 -17.7295
-c5.70996 -1.56055 10.1504 -6.10059 11.6602 -11.9102l100.36 -191.851l97.5098 -26.5596c26.4805 -7.20996 51.5498 -20.1797 70.8301 -40c21.6396 -22.25 27.2002 -40.46 23.3701 -54.96c-3.81055 -14.5 -17.5801 -27.4404 -47.25 -35.71
-c-26.4404 -7.36035 -54.5205 -5.85059 -81 1.35938l-287.601 78.3506c-9.58496 2.61621 -18.2998 7.45605 -25.4697 13.9297z" />
-    <glyph glyph-name="plane-departure" unicode="&#xf5b0;" horiz-adv-x="640" 
-d="M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM80.5498 106.73l-76.21 82.9697c-7.62012 8.95996 -4.87012 22.7803 5.57031 28.0801l40.1299 20.3701
-c2.41504 1.22461 5.18066 1.91504 8.07227 1.91504c2.875 0 5.59277 -0.682617 7.99805 -1.89551l72.3496 -36.4697l103.21 52.3799l-156.22 98.0996c-8.08008 8.87988 -5.5 23.1201 5.16992 28.5303l65.75 33.3701c2.41504 1.22559 5.18164 1.91699 8.07324 1.91699
-c3.67383 0 7.08984 -1.11621 9.92676 -3.02734l218.7 -82.0596l98.5098 49.9902c26.7402 13.5596 56.4297 21.4199 86.2803 19.4795c33.5098 -2.17969 51.04 -12.8799 58.25 -27.4502c7.22949 -14.5596 5.23926 -35.1699 -13.0703 -63.6494
-c-16.3096 -25.3701 -40.2803 -44.7402 -67.0205 -58.3105l-290.96 -147.649c-8.88574 -4.51562 -19.001 -7.10645 -29.6396 -7.12012l-130.54 -0.180664c-9.22949 -0.00976562 -18.0498 3.87012 -24.3301 10.7109z" />
-    <glyph glyph-name="prescription" unicode="&#xf5b1;" horiz-adv-x="384" 
-d="M301.26 96l78.0605 -78.0498c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-78.0596 78.0596l-78.0498 -78.0703c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309
-l78.0596 78.0596l-128 128h-18.75v-80c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v256c0 8.83984 7.16016 16 16 16h144c53.0195 0 96 -42.9805 96 -96c0 -48.8896 -36.6904 -88.7998 -83.96 -94.7803l83.96 -83.96l78.0596 78.0605
-c6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309zM64 352v-64h96c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32h-96z" />
-    <glyph glyph-name="sad-cry" unicode="&#xf5b3;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248c0 -90 -48.2002 -168.7 -120 -212.1v180.1c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16v-196.7c-29.5 -12.3994 -62 -19.2998 -96 -19.2998s-66.5 6.90039 -96 19.2998v196.7c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16
-v-180.1c-71.7998 43.3994 -120 122 -120 212.1c0 137 111 248 248 248zM182.5 223.5l9.7002 -8.5c2.5 -2.2998 7.89941 -4.7002 13.7002 -1.59961c4.39941 2.39941 6.89941 7.39941 6.09961 12.3994c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006
-c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994c4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM248 32c26.5 0 48 28.7002 48 64s-21.5 64 -48 64s-48 -28.7002 -48 -64
-s21.5 -64 48 -64zM397.8 213.5c4.40039 2.40039 6.7998 7.40039 6.2002 12.2998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994
-c4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5c2.5 -2.2998 7.90039 -4.69922 13.7002 -1.59961z" />
-    <glyph glyph-name="sad-tear" unicode="&#xf5b4;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM152 32c26.5 0 48 21 48 47c0 20 -28.5 60.4004 -41.5996 77.7998
-c-3.2002 4.2998 -9.60059 4.2998 -12.8008 0c-13.0996 -17.3994 -41.5996 -57.7998 -41.5996 -77.7998c0 -26 21.5 -47 48 -47zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM338.2 53.7998
-c13.2998 -16.0996 38.2998 4 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998c-21.2002 0 -21.2002 -32 0 -32c34.9004 0 67.7998 -15.4004 90.2002 -42.2002z" />
-    <glyph glyph-name="shuttle-van" unicode="&#xf5b6;" horiz-adv-x="640" 
-d="M628.88 237.35c7.17969 -8.62988 11.1201 -19.5 11.1201 -30.7295v-110.62c0 -17.6699 -14.3301 -32 -32 -32h-32c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-32c-17.6699 0 -32 14.3301 -32 32v288
-c0 17.6699 14.3301 32 32 32h425.52c14.8184 -0.00292969 28.0625 -6.70312 36.8701 -17.2695zM64 256h96v96h-96v-96zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM320 256v96h-96v-96h96zM480 16
-c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM384 256h146.02l-80 96h-66.0195v-96z" />
-    <glyph glyph-name="signature" unicode="&#xf5b7;" horiz-adv-x="640" 
-d="M623.2 256c9.09961 0.599609 16.7998 -7.09961 16.5996 -16.2002v-32.0996c0 -8.5 -6.7002 -15.1006 -15.2002 -15.7998c-39.3994 -3.2002 -105.399 -51 -138.399 -65.8008c-34.2998 -15.3994 -66.7002 -30 -102.3 -30c-28.2002 0 -50.2002 8.5 -65.5 25.3008
-c-22.7002 24.8994 -22.8008 55.2998 -20.6006 83.7998c-56.5 -45.1006 -169 -153.601 -211.2 -195.8c-6.09961 -6.2002 -14.2998 -9.40039 -22.5996 -9.40039c-27 0 -36.5 27 -29.7002 43.9004l98.2002 245.6c8 19.9004 -14.2998 38.7998 -32.7002 27.0996l-58 -38.8994
-c-7.5 -4.7998 -17.3994 -2.60059 -22.0996 4.89941l-17.2002 27c-4.7002 7.5 -2.5 17.4004 4.90039 22.1006l54.8994 36.8994c76.5 48.7002 160.101 -26.8994 129.7 -102.8l-41.5 -103.7c105.2 101.2 144.4 124.5 169.5 126
-c54.4004 3.10059 43.7998 -68.0996 42.7002 -76.0996c-4.7002 -35.7002 -1.2998 -51.9004 21.2998 -51.9004c21.9004 0 47 11.3008 76.0996 24.4004c37.4004 16.7998 111.301 68 163.101 71.5z" />
-    <glyph glyph-name="smile-beam" unicode="&#xf5b8;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM112 224.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17
-c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM362.8 101.8c13.5 16.2002 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002
-s-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.0996 -4.2002 -24.5996 -20.5c28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998zM369 220.1c4.09961 -7.39941 15.7002 -4.09961 15.0996 4.5
-c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004c-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z" />
-    <glyph glyph-name="solar-panel" unicode="&#xf5ba;" horiz-adv-x="640" 
-d="M431.98 -0.00976562c8.84961 0.00976562 16.0293 -7.16992 16.0195 -16.0205l-0.0400391 -31.7295c-0.00976562 -8.82031 -7.16016 -15.9707 -15.9795 -15.9805l-223.961 -0.259766c-8.84961 -0.00976562 -16.0293 7.16992 -16.0195 16.0195l0.0498047 31.7305
-c0.00976562 8.83008 7.16016 15.9805 15.9805 15.9902l47.9795 0.0498047v32.21h128v-32.0596zM585.2 421.26c58.1094 -342.42 54.7803 -321.39 54.7598 -325.47c-0.0800781 -17.2305 -14.3604 -31.79 -32.5898 -31.79h-574.74c-18.3096 0 -32.6299 14.6797 -32.5996 32
-c0.00976562 3.91992 -3.35059 -17.1602 54.7598 325.26c2.62012 15.4307 16.21 26.7402 32.1396 26.7402h466.13c15.9307 0 29.5205 -11.3096 32.1406 -26.7402zM259.83 384l-9.77051 -96h139.87l-9.76953 96h-120.33zM184.66 128l11.4102 112h-105.971l-19.0098 -112
-h113.57zM200.95 288l9.76953 96h-96.1895l-16.29 -96h102.71zM233.77 128h172.45l-11.3994 112h-149.65zM429.27 384l9.77051 -96h102.71l-16.29 96h-96.1904zM455.33 128h113.58l-19.0098 112h-105.971z" />
-    <glyph glyph-name="spa" unicode="&#xf5bb;" horiz-adv-x="576" 
-d="M568.25 256c4.41016 0.0195312 7.79004 -3.40039 7.75 -7.82031c-0.230469 -27.9199 -7.12988 -126.13 -88.7695 -199.3c-84.04 -81.8301 -167.23 -80.8799 -199.23 -80.8799s-115.21 -0.94043 -199.23 80.8799c-81.6299 73.1602 -88.5391 171.38 -88.7695 199.3
-c-0.0400391 4.41992 3.33984 7.83984 7.75 7.82031c29.04 -0.129883 135.01 -6.16016 213.84 -83c33.1201 -29.6299 53.3604 -63.2998 66.4102 -94.8604c13.0498 31.5605 33.29 65.2305 66.4102 94.8604c78.8301 76.8398 184.8 82.8701 213.84 83zM287.98 145.4
-c-12.9727 19.0527 -27.9248 36.124 -45.04 51.46c-18.7207 18.25 -38.8506 32.6895 -59.2207 44.3896c16.4707 70.4404 51.75 132.93 96.7402 172.07c4.12012 3.58008 11.0303 3.58008 15.1396 0c45.0107 -39.1699 80.29 -101.721 96.7305 -172.221
-c-20.6797 -11.8799 -41.1699 -26.5693 -60.2598 -45.1797c-16.4902 -14.7402 -31.2705 -31.6699 -44.0898 -50.5195z" />
-    <glyph glyph-name="splotch" unicode="&#xf5bc;" 
-d="M472.29 252.11c48.54 -16.6201 53.8301 -73.8301 8.9502 -96.79l-62 -31.7402c-17.8301 -9.12988 -29.2803 -25.2002 -30.6299 -42.9902l-4.7002 -61.8594c-3.41016 -44.79 -65.1299 -66.7803 -104.45 -37.2207l-54.3203 40.8301
-c-15.6201 11.7305 -36.96 16.1201 -57.0693 11.7305l-69.96 -15.2803c-50.6504 -11.0596 -94.0801 32.5596 -73.4902 73.8096l28.4297 56.9805c8.18066 16.3799 6.44043 35.1699 -4.63965 50.2402l-38.54 52.4199c-27.9004 37.9502 6.97949 86.8994 59.0303 82.8301
-l71.8799 -5.62012c20.6602 -1.62012 40.9395 5.59961 54.2002 19.3096l46.1396 47.6699c33.4102 34.5107 98.3994 21.1504 109.979 -22.6201l15.9902 -60.4492c4.60059 -17.3799 18.8604 -31.7002 38.1406 -38.3008z" />
-    <glyph glyph-name="spray-can" unicode="&#xf5bd;" 
-d="M224 416v-96h-128v96c0 17.6699 14.3301 32 32 32h64c17.6699 0 32 -14.3301 32 -32zM480 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM224 288c53.0195 0 96 -42.9805 96 -96v-224c0 -17.6699 -14.3301 -32 -32 -32
-h-256c-17.6699 0 -32 14.3301 -32 32v224c0 53.0195 42.9805 96 96 96h128zM160 32c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM480 352c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32
-s-14.3301 -32 -32 -32zM384 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM288 416c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM384 416c17.6699 0 32 -14.3301 32 -32
-s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM480 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z" />
-    <glyph glyph-name="stamp" unicode="&#xf5bf;" 
-d="M32 -64v64h448v-64h-448zM416 192c53.0195 0 96 -42.9805 96 -96v-32c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v32c0 53.0195 42.9805 96 96 96h66.5596c16.2607 0 29.4404 13.1797 29.4404 29.4404v0.0693359
-c0 31.79 -9.98047 62.0605 -23.3096 90.9102c-5.57031 12.04 -8.69043 25.4199 -8.69043 39.5801c0 58.6699 52.6201 105.04 113.25 94.4902c38.79 -6.75 70.4902 -38.6699 77.2598 -77.4502c3.85059 -22.0303 0.0605469 -42.8096 -9.0498 -60.4199
-c-12.5801 -24.3105 -21.46 -50.3506 -21.46 -77.7197v-9.45996c0 -16.2607 13.1797 -29.4404 29.4404 -29.4404h66.5596z" />
-    <glyph glyph-name="star-half-alt" unicode="&#xf5c0;" horiz-adv-x="536" 
-d="M508.55 276.49c26.25 -3.7998 36.7705 -36.1006 17.7305 -54.6006l-105.91 -102.979l25.0303 -145.49c3.55957 -20.79 -13.0605 -37.4004 -31.6602 -37.4004c-4.91016 0 -9.9707 1.16016 -14.8301 3.71094l-130.94 68.6992l-130.95 -68.6797
-c-4.86914 -2.58008 -9.93945 -3.75 -14.8691 -3.75c-18.5801 0 -35.1699 16.6699 -31.6104 37.4502l25.0596 145.479l-105.89 103c-19.0303 18.5 -8.50977 50.79 17.7402 54.5898l146.38 21.29l65.4297 132.381c5.90039 11.9092 17.29 17.8096 28.6904 17.8096
-c11.4697 0 22.9395 -5.98047 28.8193 -17.8096l65.4102 -132.391zM386.81 153.29l82.6504 80.3799l-114.229 16.6299l-25.0107 3.64062l-11.1797 22.6299l-51.0303 103.29l-0.0292969 -317.19l22.3799 -11.7402l102.13 -53.5898l-19.5205 113.45l-4.2793 24.8799z" />
-    <glyph glyph-name="suitcase-rolling" unicode="&#xf5c1;" horiz-adv-x="384" 
-d="M336 288c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-16v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-128v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-16
-c-26.5098 0 -48 21.4902 -48 48v224c0 26.5098 21.4902 48 48 48h288zM320 72v16c0 4.41992 -3.58008 8 -8 8h-240c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM320 168v16c0 4.41992 -3.58008 8 -8 8h-240
-c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM144 400v-80h-48v80c0 26.5098 21.4902 48 48 48h96c26.5098 0 48 -21.4902 48 -48v-80h-48v80h-96z" />
-    <glyph glyph-name="surprise" unicode="&#xf5c2;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64
-s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
-    <glyph glyph-name="swatchbook" unicode="&#xf5c3;" 
-d="M434.66 280.29c5.77344 -5.79004 9.34473 -13.7861 9.34473 -22.5996c0 -8.81445 -3.57129 -16.8008 -9.34473 -22.5908l-210.66 -211.1v271.12l75.4297 75.5195l0.0703125 0.0703125v0c5.75781 5.73633 13.707 9.28516 22.4688 9.28516
-c8.79883 0 16.7676 -3.57715 22.5312 -9.35547l90.1602 -90.3496v0zM480 128c17.6611 0 32 -14.3389 32 -32v-128c0 -17.6611 -14.3389 -32 -32 -32h-300c2.17969 1.91016 4.62012 3.41992 6.67969 5.49023l186.41 186.51h106.91zM192 416v-384
-c0 -52.9834 -43.0166 -96 -96 -96s-96 43.0166 -96 96v384c0 17.6611 14.3389 32 32 32h128c17.6611 0 32 -14.3389 32 -32zM96 8c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24s-24 -10.7539 -24 -24s10.7539 -24 24 -24zM128 192v64h-64v-64h64zM128 320v64h-64v-64h64z
-" />
-    <glyph glyph-name="swimmer" unicode="&#xf5c4;" horiz-adv-x="640" 
-d="M189.61 137.42c-5.04004 4.65039 -10.3906 8.34961 -15.8604 11.5801l68.6299 98.04c7.36035 10.5 16.3398 19.5498 26.7197 26.9404l80.0205 57.1699c25.54 18.2598 57.8301 24.96 88.5596 18.3799l100.351 -21.5303c25.9297 -5.55957 42.4297 -31.0801 36.8799 -57
-c-5.56055 -25.9102 -31.0898 -42.4102 -57 -36.8799l-100.351 21.5303c-4.33984 0.90918 -8.97949 -0.0302734 -12.6191 -2.61035l-18 -12.8604l112.84 -80.5996c-17.5107 -1.04004 -34.5303 -8.4502 -49.3906 -22.1602
-c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992s-30.8496 6.16016 -34.3896 9.41992c-16.0107 14.7705 -34.5 22.5801 -53.46 22.5801h-16.3008c-18.96 0 -37.4395 -7.80957 -53.46 -22.5801c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992
-s-30.8496 6.16016 -34.3896 9.41992zM624 96c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398
-c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004
-c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998
-c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996
-c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM112 192c-44.1797 0 -80 35.8203 -80 80s35.8203 80 80 80s80 -35.8203 80 -80s-35.8203 -80 -80 -80z" />
-    <glyph glyph-name="swimming-pool" unicode="&#xf5c5;" horiz-adv-x="640" 
-d="M624 32c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398
-s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998
-c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996
-c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM224 64
-c-19.1201 0 -30.8604 6.16016 -34.3896 9.42969c-9.16992 8.4502 -19.2002 14.3398 -29.6104 18.0703v228.5c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32
-s-32 -14.3604 -32 -32v-96h192v96c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32s-32 -14.3604 -32 -32v-228.51
-c-10.4102 -3.73047 -20.4404 -9.61035 -29.6104 -18.0703c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992v96h-192v-96z" />
-    <glyph glyph-name="tint-slash" unicode="&#xf5c7;" horiz-adv-x="640" 
-d="M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705
-c5.41992 6.97949 15.4805 8.22949 22.46 2.80957l186.82 -144.399c21.6201 33.7197 42.9697 73.3398 58.4902 125.68c9 30.1201 50.5 28.7803 58.4395 0c46.9902 -158.48 146.78 -200.061 146.78 -311.82c0 -5.70996 -0.509766 -11.2998 -1.03027 -16.8701zM144 114.09
-c0 29.7803 7.30957 54.6299 18.7197 78.1299l273.681 -211.52c-31.0303 -27.7402 -71.6904 -44.7002 -116.4 -44.7002c-97.2803 0 -176 79.6504 -176 178.09z" />
-    <glyph glyph-name="tired" unicode="&#xf5c8;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998
-c8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 160
-c-51.9004 0 -115.3 -43.7998 -123.2 -106.7c-1.7002 -13.3994 7.90039 -24.5996 17.7002 -20.3994c25.9004 11.0996 64.4004 17.3994 105.5 17.3994s79.5996 -6.2998 105.5 -17.3994c9.7002 -4.2002 19.4004 6.7998 17.7002 20.3994
-c-7.90039 62.9004 -71.2998 106.7 -123.2 106.7z" />
-    <glyph glyph-name="tooth" unicode="&#xf5c9;" horiz-adv-x="448" 
-d="M443.98 351.75c10.1299 -41.6299 0.419922 -80.8203 -21.5303 -110.43c-23.3604 -31.5703 -32.6807 -68.6504 -36.29 -107.351c-4.41016 -47.1602 -10.3301 -94.1699 -20.9404 -140.319l-7.7998 -33.9502c-3.18945 -13.8701 -15.4902 -23.7002 -29.6699 -23.7002
-c-13.9697 0 -26.1504 9.5498 -29.54 23.1602l-34.4697 138.42c-4.56055 18.3096 -20.96 31.1602 -39.7598 31.1602c-18.8008 0 -35.2002 -12.8398 -39.7607 -31.1602l-34.4697 -138.42c-3.38965 -13.6104 -15.5703 -23.1602 -29.54 -23.1602
-c-14.1797 0 -26.4795 9.83008 -29.6699 23.7002l-7.7998 33.9502c-10.6104 46.1592 -16.54 93.1592 -20.9404 140.319c-3.60938 38.6904 -12.9297 75.7803 -36.29 107.351c-21.9199 29.6201 -31.6299 68.8096 -21.5 110.43c11.0098 45.2197 47.1104 82.0498 92.0098 93.7197
-c23.4307 6.08984 46.1104 0.540039 66.8105 -10.3096l100.51 -64.6201c7.83984 -5.05957 17.6504 -2.15039 22.1104 4.7998c4.78027 7.44043 2.62012 17.3398 -4.7998 22.1104l-28.3203 18.21c3.54004 1.75 7.25 3.08984 10.5 5.47949
-c26.1396 19.2305 56.9502 32.6904 89.1396 24.3301c44.9004 -11.6602 81 -48.5 92.0107 -93.7197z" />
-    <glyph glyph-name="umbrella-beach" unicode="&#xf5ca;" horiz-adv-x="640" 
-d="M115.38 311.1c-10.0801 3.66992 -14.1104 16.3203 -7.41992 24.7207c59.75 74.8398 152.65 116.689 248.53 111.8c-52.79 -29.4102 -103.811 -92.1602 -139 -173.7zM247.63 262.94c44.4902 101.979 114.74 171.14 172.76 171.149c7.95996 0 15.6904 -1.2998 23.0908 -4
-c61.3291 -22.3203 78.3896 -132.6 42.6299 -253.979zM521.48 387.5c76.5293 -57.9199 120.76 -149.67 118.439 -245.36c-0.259766 -10.7393 -11.4795 -17.8398 -21.5703 -14.1699l-102.619 37.3604c17.5293 58.75 24.6895 117.09 18.9492 166.979
-c-2.37012 20.5908 -6.97949 38.8906 -13.1992 55.1904zM560 0.0195312c8.83984 0 16 -7.15918 16 -16v-32.0098c0 -8.83984 -7.16016 -16.0098 -16 -16.0098h-544c-8.83984 0 -16 7.16992 -16 16.0098v32.0098c0 8.85059 7.16016 16.0107 16 16.0107h236.96l72.9004 200.37
-l60.1396 -21.9004l-64.9404 -178.48h238.94z" />
-    <glyph glyph-name="vector-square" unicode="&#xf5cb;" 
-d="M512 320c0 -17.6699 -14.3301 -32 -32 -32v-192c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32h-192c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32v192
-c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32h192c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-96zM416 384v-32h32v32h-32zM64 384v-32h32v32h-32zM96 0v32h-32v-32h32zM448 0v32h-32v-32h32zM416 96
-v192h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32v-192h32c17.6699 0 32 -14.3301 32 -32v-32h192v32c0 17.6699 14.3301 32 32 32h32z" />
-    <glyph glyph-name="weight-hanging" unicode="&#xf5cd;" 
-d="M510.28 2.13965c8.33008 -33.3096 -14.6602 -66.1396 -46.2998 -66.1396h-415.95c-31.6504 0 -54.6406 32.8301 -46.3105 66.1396l73.0498 292.13c3.79004 15.1807 16.4404 25.7207 30.8701 25.7207h60.25c-3.58008 10.0498 -5.87988 20.7197 -5.87988 32
-c0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h60.25c14.4297 0 27.0703 -10.5303 30.8701 -25.7207zM256 320c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z" />
-    <glyph glyph-name="wine-glass-alt" unicode="&#xf5ce;" horiz-adv-x="288" 
-d="M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48
-c8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40zM61.75 400l-7.16992 -80h178.84l-7.16992 80h-164.5z" />
-    <glyph glyph-name="air-freshener" unicode="&#xf5d0;" horiz-adv-x="384" 
-d="M378.94 126.59c11.75 -12.1494 1.71973 -30.5898 -16.6406 -30.5898h-138.3v-32h112c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-288c-8.83984 0 -16 7.16016 -16 16v96c0 8.83984 7.16016 16 16 16h112v32h-138.3
-c-18.3604 0 -28.3906 18.4404 -16.6406 30.5898l94.2402 97.4102h-49.2197c-15.2998 0 -23.6602 16.5996 -13.8604 27.5303l113.33 126.51c-3.42969 6.61035 -5.5498 14 -5.5498 21.96c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48
-c0 -7.95996 -2.12012 -15.3496 -5.5498 -21.96l113.33 -126.51c9.7998 -10.9307 1.43945 -27.5303 -13.8604 -27.5303h-49.2197zM192 416.02c-8.84961 0 -16.0195 -7.16992 -16.0195 -16.0195c0 -8.83984 7.16992 -16.0195 16.0195 -16.0195
-s16.0195 7.17969 16.0195 16.0195c0 8.84961 -7.16992 16.0195 -16.0195 16.0195zM304 16h-224v-32h224v32z" />
-    <glyph glyph-name="apple-alt" unicode="&#xf5d1;" horiz-adv-x="448" 
-d="M350.85 319c25.9707 -4.66992 47.2705 -18.6699 63.9199 -42c14.6504 -20.6699 24.6406 -46.6699 29.9609 -78c4.66992 -28.6699 4.31934 -57.3301 -1 -86c-7.99023 -47.3301 -23.9707 -87 -47.9404 -119c-28.6396 -38.6699 -64.5898 -58 -107.87 -58
-c-10.6602 0 -22.2998 3.33008 -34.96 10c-8.66016 5.33008 -18.3096 8 -28.9697 8s-20.2998 -2.66992 -28.9707 -8c-12.6592 -6.66992 -24.2998 -10 -34.96 -10c-43.2793 0 -79.2295 19.3301 -107.869 58c-23.9707 32 -39.9502 71.6699 -47.9404 119
-c-5.32031 28.6699 -5.66992 57.3301 -1 86c5.32031 31.3301 15.3096 57.3301 29.96 78c16.6504 23.3301 37.9502 37.3301 63.9199 42c15.9805 2.66992 37.9502 0.330078 65.9199 -7c23.9697 -6.66992 44.2803 -14.6699 60.9307 -24
-c16.6494 9.33008 36.96 17.3301 60.9297 24c27.9795 7.33008 49.96 9.66992 65.9395 7zM295.91 360c-9.32031 -8.66992 -21.6504 -15 -36.96 -19c-10.6602 -3.33008 -22.2998 -5 -34.96 -5l-14.9805 1c-1.33008 9.33008 -1.33008 20 0 32
-c2.66992 24 10.3203 42.3301 22.9707 55c9.31934 8.66992 21.6494 15 36.96 19c10.6592 3.33008 22.2998 5 34.96 5l14.9795 -1l1 -15c0 -12.6699 -1.66992 -24.3301 -4.99023 -35c-3.98926 -15.3301 -10.3096 -27.6699 -18.9795 -37z" />
-    <glyph glyph-name="atom" unicode="&#xf5d2;" horiz-adv-x="448" 
-d="M223.999 224c17.6484 -0.03125 31.9727 -14.3525 32.0078 -32c0 -17.6611 -14.3389 -32 -32 -32s-32 14.3389 -32 32c0 17.6582 14.335 31.9961 31.9922 32zM438.171 320c16.3789 -29.375 15.0039 -73.125 -25.1309 -128c40.1348 -54.875 41.5098 -98.625 25.1309 -128
-c-29.1309 -52.375 -101.646 -43.625 -116.275 -41.875c-21.5039 -51.25 -54.2617 -86.125 -97.8965 -86.125s-76.3906 34.875 -97.8965 86.125c-14.627 -1.75 -87.1426 -10.5 -116.273 41.875c-16.3789 29.375 -15.0039 73.125 25.1289 128
-c-40.1328 54.875 -41.5078 98.625 -25.1289 128c10.877 19.5 40.5078 50.625 116.273 41.875c21.5059 51.25 54.2617 86.125 97.8965 86.125s76.3926 -34.875 97.8965 -86.125c75.7656 8.875 105.398 -22.375 116.275 -41.875zM63.3389 96
-c3.75195 -6.625 19.0059 -11.875 43.6348 -11c-2.75 13 -5.125 26.375 -6.75 40.125c-7.75195 6.25 -15.0039 12.625 -21.8809 19.125c-15.1289 -23.5 -19.0039 -41 -15.0039 -48.25zM100.224 258.875c1.625 13.5 3.875 26.875 6.75 40.25c-1.875 0 -4 0.375 -5.75 0.375
-c-21.5059 0 -34.5078 -5.375 -37.8848 -11.5c-4 -7.25 -0.125 -24.75 15.0039 -48.25c6.87695 6.5 14.1289 12.875 21.8809 19.125zM223.999 384c-9.50195 0 -22.2539 -13.5 -33.8828 -37.25c11.2539 -3.75 22.5059 -8 33.8828 -12.875
-c11.3789 4.875 22.6309 9.125 33.8828 12.875c-11.627 23.75 -24.3809 37.25 -33.8828 37.25zM223.999 0c9.50195 0 22.2559 13.5 33.8828 37.25c-11.252 3.75 -22.5039 8 -33.8828 12.875c-11.377 -4.875 -22.6289 -9.125 -33.8828 -12.875
-c11.6289 -23.75 24.3809 -37.25 33.8828 -37.25zM223.999 112c44.1533 0 80 35.8467 80 80s-35.8467 80 -80 80s-80 -35.8467 -80 -80s35.8467 -80 80 -80zM384.659 96c4 7.25 0.125 24.75 -15.0039 48.25c-6.875 -6.5 -14.127 -12.875 -21.8789 -19.125
-c-1.625 -13.75 -4 -27.125 -6.75195 -40.125c24.6309 -0.875 40.0098 4.375 43.6348 11zM369.655 239.75c15.1289 23.5 19.0039 41 15.0039 48.25c-3.375 6.125 -16.3789 11.5 -37.8828 11.5c-1.75 0 -3.87695 -0.375 -5.75195 -0.375
-c2.87695 -13.375 5.12695 -26.75 6.75195 -40.25c7.75195 -6.25 15.0039 -12.625 21.8789 -19.125z" />
-    <glyph glyph-name="bone" unicode="&#xf5d7;" horiz-adv-x="640" 
-d="M598.88 203.44c-9.42969 -4.70996 -9.42969 -18.1709 -0.00976562 -22.8809c25.2002 -12.5996 41.1201 -38.3496 41.1201 -66.5293v-7.64062c0 -41.0898 -33.2998 -74.3896 -74.3799 -74.3896c-32.0107 0 -60.4404 20.4902 -70.5703 50.8604
-c-6.53027 19.5996 -10.7305 45.1396 -38.1104 45.1396h-273.87c-26.5098 0 -30.4297 -22.1104 -38.1094 -45.1396c-10.1299 -30.3701 -38.5498 -50.8604 -70.5703 -50.8604c-41.0801 0 -74.3799 33.2998 -74.3799 74.3896v7.64062
-c0 28.1699 15.9199 53.9297 41.1201 66.5293c9.42969 4.70996 9.42969 18.1709 0 22.8809c-25.2002 12.5996 -41.1201 38.3594 -41.1201 66.5293v7.64062c0 41.0898 33.2998 74.3896 74.3896 74.3896c32.0107 0 60.4404 -20.4902 70.5605 -50.8604
-c6.53027 -19.5996 10.7295 -45.1396 38.1094 -45.1396h273.87c26.5107 0 30.4307 22.1104 38.1104 45.1396c10.1299 30.3701 38.5498 50.8604 70.5703 50.8604c41.0898 0 74.3896 -33.2998 74.3896 -74.3896v-7.64062c0 -28.1699 -15.9199 -53.9297 -41.1201 -66.5293z" />
-    <glyph glyph-name="book-reader" unicode="&#xf5da;" 
-d="M352 352c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96zM233.59 206.9c4.10059 -2.51074 6.41016 -6.79004 6.41992 -11.46v-245.99c0 -10.1602 -11.1094 -16.5898 -20.4795 -11.8701
-c-61.0498 30.75 -149.38 39.1396 -193.04 41.4297c-14.9004 0.770508 -26.4902 12.7207 -26.4902 27.0498v222.801c0 15.6299 13.5498 28.0098 29.7998 27.0898c48.3604 -2.75 144.46 -12.7305 203.79 -49.0498zM482.2 255.95
-c16.25 0.919922 29.7998 -11.46 29.8096 -27.0898v-222.82c0 -14.3301 -11.5898 -26.2803 -26.4902 -27.0596c-43.6494 -2.29004 -131.93 -10.6807 -192.97 -41.4004c-9.39941 -4.73047 -20.54 1.70996 -20.54 11.9004v245.789c0 4.6709 2.31055 9.12012 6.41016 11.6309
-c59.3203 36.3193 155.43 46.3096 203.78 49.0498z" />
-    <glyph glyph-name="brain" unicode="&#xf5dc;" horiz-adv-x="576" 
-d="M208 448c35.2998 0 64 -28.7002 64 -64v-376c0 -39.7998 -32.2002 -72 -72 -72c-31.7998 0 -58.4004 20.7002 -68 49.2002c-3.90039 -0.700195 -7.90039 -1.2002 -12 -1.2002c-39.7998 0 -72 32.2002 -72 72c0 4.7998 0.5 9.5 1.40039 14.0996
-c-29 12 -49.4004 40.6006 -49.4004 73.9004c0 29.7002 16.2998 55.2998 40.2998 69.0996c-5.09961 10.6006 -8.2998 22.3008 -8.2998 34.9004c0 33.4004 20.5 62 49.7002 74c-1.10059 4.5 -1.7002 9.2002 -1.7002 14c0 35.2998 28.7002 64 64 64
-c0.799805 0 1.40039 -0.200195 2.2002 -0.200195c7.09961 27.7002 31.8994 48.2002 61.7998 48.2002zM576 144c0 -33.2998 -20.4004 -61.9004 -49.4004 -73.9004c0.900391 -4.59961 1.40039 -9.2998 1.40039 -14.0996c0 -39.7998 -32.2002 -72 -72 -72
-c-4.09961 0 -8.09961 0.5 -12 1.2002c-9.59961 -28.5 -36.2002 -49.2002 -68 -49.2002c-39.7998 0 -72 32.2002 -72 72v376c0 35.4004 28.7002 64 64 64c29.9004 0 54.7002 -20.5 61.7998 -48.2002c0.700195 0 1.40039 0.200195 2.2002 0.200195
-c35.2998 0 64 -28.7002 64 -64c0 -4.7998 -0.700195 -9.5 -1.7002 -14c29.2002 -12 49.7002 -40.5996 49.7002 -74c0 -12.5996 -3.09961 -24.2998 -8.2998 -34.9004c24 -13.7998 40.2998 -39.3994 40.2998 -69.0996z" />
-    <glyph glyph-name="car-alt" unicode="&#xf5de;" horiz-adv-x="480" 
-d="M438.66 235.67c24.1201 -9.16992 41.3398 -32.3301 41.3398 -59.6699v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32
-c-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 27.3398 17.2197 50.5 41.3398 59.6699l11.2402 28.0996l19.9297 49.8301c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.99 -70.4004
-l19.9297 -49.8301zM131.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM80 128.2c19.2002 0 48 -3.19043 48 15.9502
-c0 19.1396 -28.7998 47.8496 -48 47.8496s-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM400 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z
-" />
-    <glyph glyph-name="car-battery" unicode="&#xf5df;" 
-d="M480 320c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h32v48c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-48h128v48c0 8.83984 7.16016 16 16 16h96
-c8.83984 0 16 -7.16016 16 -16v-48h32zM192 184v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM448 184v16c0 4.41992 -3.58008 8 -8 8h-40v40c0 4.41992 -3.58008 8 -8 8h-16
-c-4.41992 0 -8 -3.58008 -8 -8v-40h-40c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h40v-40c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v40h40c4.41992 0 8 3.58008 8 8z" />
-    <glyph glyph-name="car-crash" unicode="&#xf5e1;" horiz-adv-x="640" 
-d="M143.25 227.19l-12.4199 -46.3701c-3.00977 -11.25 -3.62988 -22.8906 -2.41016 -34.3906l-35.2002 -28.9795c-6.56934 -5.41016 -16.3096 0.429688 -14.6201 8.76953l15.4404 76.6807c1.05957 5.25977 -2.66016 10.2793 -8 10.79l-77.8604 7.5498
-c-8.46973 0.819336 -11.2295 11.8301 -4.13965 16.54l65.1504 43.2998c4.45996 2.96973 5.37988 9.15039 1.97949 13.29l-49.71 60.4102c-5.41016 6.56934 0.429688 16.2998 8.78027 14.6201l76.6797 -15.4404c5.25977 -1.05957 10.2803 2.66016 10.7998 8l7.5498 77.8604
-c0.820312 8.47949 11.8301 11.2295 16.5508 4.13965l43.2998 -65.1396c2.96973 -4.45996 9.14941 -5.37988 13.29 -1.98047l60.3994 49.71c6.57031 5.41016 16.3008 -0.429688 14.6201 -8.76953l-11.3301 -56.1602c-2.70996 -3.0498 -5.42969 -6.08984 -7.90918 -9.40039
-l-32.1504 -42.9697l-10.71 -14.3203c-32.7305 -8.75977 -59.1797 -34.5293 -68.0801 -67.7393zM637.82 94.6797l-12.4199 -46.3594c-3.13086 -11.6807 -9.38086 -21.6104 -17.5508 -29.3604c-2.72852 -2.58398 -5.62695 -4.90137 -8.75977 -7l-13.9902 -52.2295
-c-1.13965 -4.27051 -3.09961 -8.10059 -5.64941 -11.3809c-7.66992 -9.83984 -20.7402 -14.6797 -33.54 -11.25l-30.9102 8.28027c-17.0703 4.57031 -27.2002 22.1201 -22.6299 39.1904l8.28027 30.9102l-247.28 66.2598l-8.28027 -30.9102
-c-4.57031 -17.0703 -22.1201 -27.2002 -39.1895 -22.6299l-30.9102 8.28027c-12.7998 3.42969 -21.7002 14.1592 -23.4199 26.5098c-0.570312 4.12012 -0.350586 8.41992 0.790039 12.6797l13.9893 52.2305c-1.63086 3.31445 -3.02148 6.85352 -4.08984 10.4492
-c-3.2002 10.79 -3.64941 22.5205 -0.519531 34.2002l12.4199 46.3701c5.30957 19.7998 19.3594 34.8301 36.8896 42.21c5.75 2.42285 12.0352 4.06543 18.4902 4.71973l18.1299 24.2305l32.1504 42.9697c3.44922 4.61035 7.18945 8.90039 11.1992 12.8398
-c8 7.89062 17.0303 14.4404 26.7402 19.5107c4.86035 2.54004 9.89062 4.70996 15.0498 6.48926c10.3301 3.58008 21.1904 5.62988 32.2402 6.04004s22.3105 -0.819336 33.4307 -3.7998l122.68 -32.8701c11.1201 -2.97949 21.4795 -7.54004 30.8496 -13.4297
-c14.0459 -8.81934 25.7959 -20.5068 34.6904 -34.5c8.81934 -13.8799 14.6396 -29.8398 16.6797 -46.9902l6.36035 -53.29l3.58984 -30.0498c10.3115 -7.44531 18.2578 -17.8018 22.7402 -29.9297c4.38965 -11.8799 5.29004 -25.1904 1.75 -38.3906zM255.58 213.66
-c-18.5498 4.96973 -34.21 -4.04004 -39.1699 -22.5303s4.10938 -34.1201 22.6494 -39.0898c18.5508 -4.96973 45.54 -15.5098 50.4902 2.97949c4.95996 18.4902 -15.4297 53.6709 -33.9697 58.6406zM546.19 185.49l-6.36035 53.29
-c-0.580078 4.87012 -1.88965 9.5293 -3.82031 13.8594c-5.7998 12.9902 -17.2002 23.0107 -31.4199 26.8203l-122.68 32.8701c-3.96777 1.0625 -8.13672 1.62891 -12.4375 1.62891c-15.7295 0 -29.6641 -7.53418 -38.4229 -19.2393l-32.1494 -42.9697l172 -46.0801z
-M564.68 130.84c-18.5498 4.96973 -53.7998 -15.3096 -58.75 -33.79c-4.94922 -18.4902 23.6904 -22.8594 42.2402 -27.8301c18.5498 -4.96973 34.21 4.04004 39.1699 22.5303c4.9502 18.4805 -4.10938 34.1201 -22.6602 39.0898z" />
-    <glyph glyph-name="car-side" unicode="&#xf5e4;" horiz-adv-x="640" 
-d="M544 256c53.0195 0 96 -42.9805 96 -96v-80c0 -8.83984 -7.16016 -16 -16 -16h-48c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-48c-8.83984 0 -16 7.16016 -16 16v112
-c0 29.79 20.4404 54.5996 48 61.7402l47.9102 122.029c9.71973 24.3008 33.25 40.2305 59.4199 40.2305h213.91c20.2227 -0.00292969 38.2441 -9.35645 49.9795 -24.0195l108.78 -135.98h16zM160 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48
-s21.5303 -48 48 -48zM232 256v96h-76.6699l-38.4004 -96h115.07zM280 256h166.04l-76.7998 96h-89.2402v-96zM480 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z" />
-    <glyph glyph-name="charging-station" unicode="&#xf5e7;" horiz-adv-x="576" 
-d="M336 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-320c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h320zM544 320h16c8.83984 0 16 -7.16016 16 -16v-32c0 -35.7598 -23.6201 -65.6904 -56 -75.9297v-120.07
-c0 -44.4102 -38.29 -80.0498 -83.5898 -75.6201c-39.4902 3.85059 -68.4102 39.3398 -68.4102 79.0098v24.6104c0 22.0898 -17.9102 40 -40 40h-8v-112h-288v352c0 35.3496 28.6504 64 64 64h160c35.3496 0 64 -28.6504 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-28
-c0 -16.9902 15.2197 -30.5 32.7402 -27.6104c13.7598 2.27051 23.2598 15.2402 23.2598 29.1904v118.49c-32.3799 10.2393 -56 40.1699 -56 75.9297v32c0 8.83984 7.16016 16 16 16h16v48c0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48h32v48
-c0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48zM260.09 272.24c4.62012 6.97949 -1.14941 15.7598 -10.3896 15.7598h-57.7002l11.5996 50.79c2.02051 6.66992 -3.71973 13.21 -11.5996 13.21h-68c-6.01953 0 -11.0996 -3.90039 -11.8896 -9.11035l-16 -107
-c-0.959961 -6.2998 4.63965 -11.8896 11.8896 -11.8896h59.3496l-23.0195 -83.0801c-1.7998 -6.63965 4 -12.9199 11.6699 -12.9199c4.17969 0 8.19043 1.91016 10.3896 5.24023z" />
-    <glyph glyph-name="directions" unicode="&#xf5eb;" 
-d="M502.61 214.68c12.5195 -12.5293 12.5195 -32.8301 0 -45.3594l-223.931 -223.931c-12.5293 -12.5293 -32.8398 -12.5293 -45.3594 0l-223.931 223.931c-12.5195 12.5293 -12.5195 32.8301 0 45.3594l223.931 223.931c12.5293 12.5195 32.8398 12.5195 45.3594 0z
-M401.63 202.12c3.42969 3.16992 3.42969 8.58984 0 11.7598l-84.21 77.7305c-5.12988 4.72949 -13.4297 1.08984 -13.4297 -5.87988v-53.7305h-112c-17.6699 0 -32 -14.3301 -32 -32v-80c0 -4.41992 3.58008 -8 8 -8h32c4.41992 0 8 3.58008 8 8v64h96v-53.7305
-c0 -6.97949 8.30957 -10.6094 13.4297 -5.87988z" />
-    <glyph glyph-name="draw-polygon" unicode="&#xf5ee;" horiz-adv-x="448" 
-d="M384 96c35.3496 0 64 -28.6504 63.9902 -64c0 -35.3496 -28.6504 -64 -64 -64c-23.6299 0 -44.0303 12.9502 -55.1201 32h-209.75c-11.0801 -19.0498 -31.4902 -32 -55.1201 -32c-35.3496 0 -64 28.6504 -64 64c0 23.6299 12.9502 44.04 32 55.1299v209.75
-c-19.0498 11.0801 -32 31.4902 -32 55.1201c0 35.3496 28.6504 64 64 64c23.6299 0 44.04 -12.9502 55.1201 -32h209.76c11.0801 19.0498 31.4902 32 55.1201 32c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64c-0.349609 0 -0.669922 0.0898438 -1.01953 0.0996094
-l-39.2002 -65.3193c5.08008 -9.16992 8.21973 -19.5605 8.21973 -30.7803s-3.15039 -21.6104 -8.21973 -30.7803l39.2002 -65.3193c0.349609 0 0.669922 0.0996094 1.01953 0.0996094zM96 87.1201c9.61816 -5.58398 17.5361 -13.502 23.1201 -23.1201h208.36
-l-38.4609 64.0996c-0.349609 0 -0.669922 -0.0996094 -1.01953 -0.0996094c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64c0.349609 0 0.669922 -0.0898438 1.01953 -0.0996094l38.4609 64.0996h-208.36c-5.58691 -9.61523 -13.5049 -17.5332 -23.1201 -23.1201v-209.76z
-M272 192c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM400 352c0 8.82031 -7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16zM64 368c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16
-s16 7.17969 16 16s-7.17969 16 -16 16zM48 32c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM384 16c8.82031 0 16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16z" />
-    <glyph glyph-name="laptop-code" unicode="&#xf5fc;" horiz-adv-x="640" 
-d="M255.03 186.35l-58.3506 58.3408c-6.25 6.25 -6.25 16.3799 0 22.6299l58.3398 58.3398c6.25 6.25 16.3809 6.25 22.6309 0l11.3096 -11.3105c6.25 -6.25 6.25 -16.3799 0 -22.6299l-35.71 -35.7197l35.7197 -35.71c6.25 -6.25 6.25 -16.3799 0 -22.6299
-l-11.3096 -11.3105c-6.25 -6.25 -16.3799 -6.25 -22.6299 0zM351.04 197.65c-6.25 6.25 -6.25 16.3799 0 22.6299l35.71 35.7197l-35.71 35.71c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3096 11.3105c6.25 6.25 16.3809 6.25 22.6309 0l58.3398 -58.3408
-c6.25 -6.25 6.25 -16.3799 0 -22.6299l-58.3398 -58.3398c-6.25 -6.25 -16.3809 -6.25 -22.6309 0zM624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23
-c-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336c0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z" />
-    <glyph glyph-name="layer-group" unicode="&#xf5fd;" 
-d="M12.4102 299.98c-16.5498 7.50977 -16.5498 32.5293 0 40.0391l232.95 105.671c3.23633 1.47949 6.87695 2.30371 10.666 2.30371s7.38672 -0.824219 10.624 -2.30371l232.93 -105.681c16.5498 -7.50977 16.5498 -32.5195 0 -40.0293l-232.94 -105.671
-c-6.7998 -3.08984 -14.4893 -3.08984 -21.29 0zM499.59 211.7c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.59c-6.7998 -3.08008 -14.4893 -3.08008 -21.29 0l-232.939 105.59c-16.5498 7.5 -16.5498 32.5 0 40l58.0996 26.3301l161.63 -73.2705
-c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.64 73.2705zM499.59 83.9004c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.591c-6.7998 -3.0791 -14.4893 -3.0791 -21.29 0l-232.939 105.591
-c-16.5498 7.5 -16.5498 32.5 0 40l57.8799 26.2295l161.85 -73.3701c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.859 73.3701z" />
-    <glyph glyph-name="lungs" unicode="&#xf604;" horiz-adv-x="640" 
-d="M636.11 57.8496c2.58984 -9.68945 3.88965 -19.6396 3.88965 -29.6299c0 -61.2295 -62.4805 -105.439 -125.24 -88.6201l-59.5 15.9502c-42.1797 11.3105 -71.2598 47.4697 -71.2598 88.6201v87.4902l85.8398 -57.2305
-c1.26855 -0.845703 2.79395 -1.35156 4.43164 -1.35156c2.77734 0 5.22559 1.41992 6.6582 3.57227l8.87988 13.3096c0.845703 1.26758 1.35254 2.79395 1.35254 4.43164c0 2.77734 -1.41992 5.22559 -3.57227 6.6582l-167.59 111.72l-167.59 -111.72
-c-2.15332 -1.43262 -3.55957 -3.88379 -3.55957 -6.66113c0 -1.6377 0.493164 -3.16113 1.33984 -4.42871l8.87988 -13.3096c1.43262 -2.15332 3.88379 -3.56055 6.66113 -3.56055c1.6377 0 3.16016 0.494141 4.42871 1.33984l85.8398 57.2305v-87.4902
-c0 -41.1504 -29.0801 -77.3203 -71.2598 -88.6201l-59.5 -15.9502c-62.7598 -16.8193 -125.24 27.3906 -125.24 88.6201c0 9.99023 1.2998 19.9404 3.88965 29.6299c21.6699 81.3008 56.04 159.15 102.011 231.021c22.1191 34.5703 36.0693 63.1299 80.0498 63.1299
-c38.6895 0 70.0498 -29.4199 70.0498 -65.71v-60.1104l32.8799 21.9199c4.4502 2.9707 7.12012 7.95996 7.12012 13.3105v170.59c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-170.59c0 -5.55273 2.81934 -10.4414 7.12012 -13.3105l32.8799 -21.9199
-v60.1104c0 36.29 31.3604 65.71 70.0498 65.71c43.9805 0 57.9307 -28.5596 80.0498 -63.1299c45.9707 -71.8701 80.3408 -149.72 102.011 -231.021z" />
-    <glyph glyph-name="microscope" unicode="&#xf610;" 
-d="M160 128c-17.6699 0 -32 14.3301 -32 32v224c0 17.6699 14.3301 32 32 32v16c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-16c17.6699 0 32 -14.3301 32 -32v-224c0 -17.6699 -14.3301 -32 -32 -32h-12v-16c0 -8.83984 -7.16016 -16 -16 -16h-40
-c-8.83984 0 -16 7.16016 -16 16v16h-12zM464 0c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16c0 26.5098 21.4902 48 48 48h272c70.5801 0 128 57.4199 128 128s-57.4199 128 -128 128v64
-c105.88 0 192 -86.1201 192 -192c0 -49.2002 -18.7598 -93.9902 -49.29 -128h1.29004zM104 32c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h208c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-208z" />
-    <glyph glyph-name="oil-can" unicode="&#xf613;" horiz-adv-x="640" 
-d="M629.8 287.69c5.11035 1.45996 10.2002 -2.38086 10.1904 -7.69043v-18.0801c0 -2.12012 -0.839844 -4.16016 -2.33984 -5.66016l-212.261 -214.75c-6.00977 -6.08984 -14.21 -9.50977 -22.7598 -9.50977h-274.63c-17.6699 0 -32 14.3301 -32 32v46.54l-69.7197 12.6904
-c-15.2207 2.75977 -26.2803 16.0195 -26.2803 31.4795v94.9502c0 17.9795 14.6699 32.0098 31.9297 32.0098c1.9873 0 3.9043 -0.181641 5.79004 -0.530273l138.28 -25.1396h56v48h-56c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160
-c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-56v-48h56.8896c10.2598 -0.00390625 20.0205 -2.46191 28.6201 -6.75977l50.4902 -25.2402zM96 159.33v62.4297l-48 8.73047v-62.4307zM549.33 74.6699c0 23.5605 42.6699 85.3301 42.6699 85.3301
-s42.6699 -61.7598 42.6699 -85.3301s-19.0996 -42.6699 -42.6699 -42.6699s-42.6699 19.1104 -42.6699 42.6699z" />
-    <glyph glyph-name="poop" unicode="&#xf619;" 
-d="M451.36 78.8604c34.3301 -5.48047 60.6396 -34.9805 60.6396 -70.8604c0 -39.7598 -32.2402 -72 -72 -72h-368c-39.7598 0 -72 32.2402 -72 72c0 35.8799 26.3096 65.3799 60.6396 70.8604c-17.2998 13.1494 -28.6396 33.7295 -28.6396 57.1396
-c0 39.7695 32.2402 72 72 72h14.0703c-13.4199 11.7305 -22.0703 28.7803 -22.0703 48c0 35.3496 28.6504 64 64 64h16c44.1797 0 80 35.8203 80 80c0 17.3799 -5.69043 33.3604 -15.1104 46.4805c4.95996 0.779297 9.94043 1.51953 15.1104 1.51953
-c53.0195 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h5.87988c35.3496 0 64 -28.6504 64 -64c0 -19.2197 -8.65039 -36.2695 -22.0703 -48h14.0703c39.7598 0 72 -32.2305 72 -72c0 -23.4102 -11.3398 -43.9902 -28.6396 -57.1396z" />
-    <glyph glyph-name="shapes" unicode="&#xf61f;" 
-d="M128 192c70.6455 0 128 -57.3545 128 -128s-57.3545 -128 -128 -128s-128 57.3545 -128 128s57.3545 128 128 128zM507 246.86c14.2402 -24.3799 -3.58008 -54.8604 -32.0898 -54.8604h-213.82c-28.5098 0 -46.3301 30.4805 -32.0898 54.8604l106.93 182.85
-c6.48828 10.9688 18.3906 18.3311 32.0469 18.3311c13.6553 0 25.6055 -7.3623 32.0938 -18.3311zM480 160c17.6611 0 32 -14.3389 32 -32v-160c0 -17.6611 -14.3389 -32 -32 -32h-160c-17.6611 0 -32 14.3389 -32 32v160c0 17.6611 14.3389 32 32 32h160z" />
-    <glyph glyph-name="star-of-life" unicode="&#xf621;" horiz-adv-x="480" 
-d="M471.99 113.57c7.66016 -4.41992 10.2793 -14.2002 5.85938 -21.8506l-32.0195 -55.4297c-4.41992 -7.66016 -14.21 -10.2803 -21.8701 -5.86035l-135.93 78.4307v-156.86c0 -8.83984 -7.16992 -16 -16.0107 -16h-64.0391c-8.84082 0 -16.0107 7.16016 -16.0107 16
-v156.85l-135.93 -78.4297c-7.66016 -4.41016 -17.4502 -1.79004 -21.8701 5.86035l-32.0195 55.4297c-4.41992 7.65039 -1.80078 17.4404 5.85938 21.8604l135.931 78.4297l-135.931 78.4297c-7.66016 4.41992 -10.2793 14.21 -5.85938 21.8604l32.0195 55.4199
-c4.41992 7.65039 14.21 10.2803 21.8701 5.86035l135.93 -78.4307v156.86c0 8.83984 7.16992 16 16.0107 16h64.0391c8.84082 0 16.0107 -7.16016 16.0107 -16v-156.85l135.93 78.4297c7.66016 4.41992 17.4502 1.79004 21.8701 -5.86035l32.0195 -55.4297
-c4.41992 -7.66016 1.80078 -17.4404 -5.85938 -21.8604l-135.931 -78.4297z" />
-    <glyph glyph-name="teeth" unicode="&#xf62e;" horiz-adv-x="640" 
-d="M544 448c53.0195 0 96 -42.9805 96 -96v-320c0 -53.0195 -42.9805 -96 -96 -96h-448c-53.0195 0 -96 42.9805 -96 96v320c0 53.0195 42.9805 96 96 96h448zM160 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64
-c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM160 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM304 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56
-c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM304 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56
-c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM576 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64
-c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM576 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16z" />
-    <glyph glyph-name="teeth-open" unicode="&#xf62f;" horiz-adv-x="640" 
-d="M544 448c53.0195 0 96 -42.9805 96 -96v-64c0 -35.3496 -28.6602 -64 -64 -64h-512c-35.3398 0 -64 28.6504 -64 64v64c0 53.0195 42.9805 96 96 96h448zM160 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64
-c8.83984 0 16 7.16016 16 16zM304 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80
-c8.83984 0 16 7.16016 16 16zM576 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM576 128c35.3398 0 64 -28.6504 64 -64v-32c0 -53.0195 -42.9805 -96 -96 -96h-448
-c-53.0195 0 -96 42.9805 -96 96v32c0 35.3496 28.6602 64 64 64h512zM160 48v32c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM304 56v24c0 8.83984 -7.16016 16 -16 16h-80
-c-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 56v24c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM576 48v32c0 8.83984 -7.16016 16 -16 16h-64
-c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48z" />
-    <glyph glyph-name="theater-masks" unicode="&#xf630;" horiz-adv-x="640" 
-d="M206.86 202.85l-7.62988 -43.1797c-21.0908 -7.21973 -38.5 -18.2002 -49.9004 -30.9199c-2.41992 32.9004 21.6504 63.6504 57.5303 74.0996zM95.8096 153c5.87012 -33.1699 64.3203 -71.8096 111.931 -84.79c10.5596 -27.0996 25.9795 -50.5 39.5 -67.5801
-c-3.25977 -0.339844 -6.41992 -0.799805 -10.0098 -0.799805c-68.1201 0 -190.221 61.5596 -204.45 142.08l-31.7305 179.51c-4.96973 28.0996 7.98047 56.0996 32.1504 69.5205c67.8193 37.6396 143.46 57.0596 220.12 57.0596c23.9199 0 47.9492 -1.88965 71.8594 -5.7002
-c17.29 -2.76953 31.7803 -13.0498 41.7705 -27c-19.1299 -0.769531 -38.29 -2.2998 -57.1807 -5.31934c-19.8594 -3.1709 -37.6396 -12.5303 -51.5898 -26c-1.62012 0.0195312 -3.23926 0.189453 -4.84961 0.189453c-65.8896 0 -131.25 -16.9502 -189.01 -49.0098
-c0.0400391 -0.0302734 -0.530273 -1.03027 -0.240234 -2.65039zM193.36 290.46c3.83984 -21.7002 -10.6904 -42.4004 -32.4404 -46.2197c-21.7598 -3.82031 -42.5 10.6699 -46.3398 32.3701c-0.730469 4.12012 -0.610352 8.15918 -0.0898438 12.0996
-c10.8096 -5.57031 24.8301 -7.75 39.4795 -5.16992c14.6504 2.57031 27.0703 9.41016 35.3203 18.3203c1.83984 -3.53027 3.33984 -7.28027 4.07031 -11.4004zM606.8 327.1c24.1699 -13.4092 37.1201 -41.4092 32.1504 -69.5195l-31.7305 -179.51
-c-15.3896 -87.0508 -156.83 -151.931 -219.859 -140.84c-63.0303 11.0791 -173.7 120.3 -158.311 207.35l31.7305 179.51c4.95996 28.1006 26.7295 50 54.04 54.3604c100.55 16.0596 203 -1.96973 291.979 -51.3506zM333.56 230.3
-c-0.729492 -4.12012 -0.609375 -8.16016 -0.0791016 -12.1094c10.8096 5.56934 24.8291 7.75 39.4795 5.16992c14.6504 -2.57031 27.0703 -9.41016 35.3203 -18.3203c1.83984 3.53027 3.33984 7.28027 4.06934 11.4004c3.83008 21.6992 -10.6895 42.3896 -32.4492 46.2197
-c-21.7607 3.83008 -42.5 -10.6602 -46.3408 -32.3604zM404.03 31.54c55.6699 -9.79004 108.2 23.7803 122.38 75.7197c-28.1104 -16.9697 -68.6504 -24.21 -111.93 -16.5996c-43.2803 7.60938 -78.8906 28.2402 -99.4902 53.7803
-c-4.48047 -53.6309 33.3594 -103.11 89.04 -112.9zM534.33 182.88c1.83984 3.52051 3.33984 7.27051 4.07031 11.4004c3.83008 21.7002 -10.7002 42.3896 -32.4502 46.2197c-21.7598 3.82031 -42.5 -10.6699 -46.3398 -32.3701
-c-0.730469 -4.12012 -0.610352 -8.16016 -0.0908203 -12.0996c10.8105 5.56934 24.8301 7.75 39.4805 5.16992c14.6504 -2.57031 27.0801 -9.41016 35.3301 -18.3203z" />
-    <glyph glyph-name="traffic-light" unicode="&#xf637;" horiz-adv-x="384" 
-d="M384 256c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64c0 -42.8398 -28.25 -78.6904 -66.9902 -91.0498c-12.4297 -57.6699 -63.6094 -100.95 -125.01 -100.95s-112.58 43.2803 -125.01 100.95c-38.7402 12.3594 -66.9902 48.21 -66.9902 91.0498h64v37.8799
-c-37.2002 13.2197 -64 48.3799 -64 90.1201h64v37.8799c-37.2002 13.2197 -64 48.3799 -64 90.1201h64v32c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-32h64c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64zM192 32
-c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 160c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48
-s-48 -21.4902 -48 -48s21.4902 -48 48 -48z" />
-    <glyph glyph-name="truck-monster" unicode="&#xf63b;" horiz-adv-x="640" 
-d="M624 224c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16.71c-29.21 38.6504 -75.0996 64 -127.28 64c-52.1797 0 -98.0693 -25.3496 -127.279 -64h-65.4502c-29.21 38.6504 -75.1006 64 -127.28 64s-98.0703 -25.3496 -127.28 -64h-16.7197
-c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v80c0 8.83984 7.16016 16 16 16h176v96c0 17.6699 14.3301 32 32 32h113.24c20.2227 -0.00292969 38.2441 -9.35645 49.9795 -24.0195l83.1807 -103.98h73.5996c17.6699 0 32 -14.3301 32 -32v-64h16z
-M288 320h132.44l-51.2002 64h-81.2402v-64zM592 96c8.83984 0 16 -7.16016 16.0195 -16v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922c-2.1709 -7.26172 -5.11426 -14.3359 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6299 -22.6299
-c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.44922 -20.9004 -8.64941v-5.2002c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.64941
-l-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l3.66992 3.66992c-3.58008 6.60938 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002
-c2.16992 7.26172 5.11426 14.3359 8.64941 20.8896l-3.66992 3.66992c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6299 22.6299c6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32
-c8.83984 0 16 -7.16016 16 -16v-5.2002c7.26172 -2.16992 14.3359 -5.11426 20.8896 -8.64941l3.66992 3.66992c6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992
-c3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM480 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM272 96c8.83984 0 16 -7.16016 16.0195 -15.9902v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922
-c-2.1709 -7.26074 -5.11426 -14.3359 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.4502 -20.9004 -8.65039v-5.2002
-c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.65039l-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3799 0 22.6299l3.66992 3.66992
-c-3.58008 6.61035 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002c2.16992 7.26172 5.11426 14.3359 8.64941 20.8906l-3.66992 3.66992c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6201
-c6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-5.2002c7.26172 -2.16992 14.3359 -5.11426 20.8896 -8.64941l3.66992 3.66992
-c6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992c3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48
-s21.4902 -48 48 -48z" />
-    <glyph glyph-name="truck-pickup" unicode="&#xf63c;" horiz-adv-x="640" 
-d="M624 160c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-49.5996c0.759766 -5.26953 1.60938 -10.5195 1.60938 -16c0 -61.8604 -50.1396 -112 -112 -112c-61.8594 0 -112 50.1396 -112 112c0 5.48047 0.850586 10.7305 1.61035 16h-67.2305
-c0.760742 -5.26953 1.61035 -10.5195 1.61035 -16c0 -61.8604 -50.1396 -112 -112 -112s-112 50.1396 -112 112c0 5.48047 0.849609 10.7305 1.61035 16h-49.6104c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v64c0 17.6699 14.3301 32 32 32h160v128
-c0 17.6699 14.3301 32 32 32h113.24c20.2227 -0.00292969 38.2441 -9.35645 49.9795 -24.0195l108.78 -135.98h48c17.6699 0 32 -14.3301 32 -32v-64h16zM288 352v-96h158.04l-76.7998 96h-81.2402zM176 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48
-s-48 -21.5303 -48 -48s21.5303 -48 48 -48zM464 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z" />
-    <glyph glyph-name="ad" unicode="&#xf641;" 
-d="M157.52 176l18.4805 53.2197l18.4805 -53.2197h-36.9609zM352 192c13.2305 0 24 -10.7695 24 -24s-10.7695 -24 -24 -24s-24 10.7695 -24 24s10.7695 24 24 24zM464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288
-c0 26.5 21.5 48 48 48h416zM250.58 96c11 0 18.7197 10.8496 15.1104 21.25l-53.6904 154.62c-3.25586 9.3877 -12.1758 16.1299 -22.666 16.1299h-0.00390625h-26.6602l0.00292969 0.00585938c-10.4873 0 -19.4131 -6.74219 -22.6729 -16.126l-53.7002 -154.63
-c-3.60938 -10.4004 4.11035 -21.25 15.1201 -21.25h16.9404c0.00195312 0 -0.000976562 -0.00390625 0.000976562 -0.00390625c6.99316 0 12.9453 4.49609 15.1191 10.7539l7.37988 21.25h70.29l7.36914 -21.25c2.24023 -6.42969 8.31055 -10.75 15.1201 -10.75h16.9404z
-M424 112v160c0 8.83984 -7.16016 16 -16 16h-16c-8.83984 0 -16 -7.16016 -16 -16v-36.4199c-7.54004 2.68945 -15.54 4.41992 -24 4.41992c-39.7002 0 -72 -32.2998 -72 -72s32.2998 -72 72 -72c9.92969 0 19.4004 2.01953 28.0195 5.67969
-c2.94043 -3.41016 7.13086 -5.67969 11.9805 -5.67969h16c8.83984 0 16 7.16016 16 16z" />
-    <glyph glyph-name="ankh" unicode="&#xf644;" horiz-adv-x="320" 
-d="M296 192c13.25 0 24 -10.7402 24 -24v-32c0 -13.25 -10.75 -24 -24 -24h-96v-152c0 -13.25 -10.75 -24 -24 -24h-32c-13.25 0 -24 10.75 -24 24v152h-96c-13.25 0 -24 10.75 -24 24v32c0 13.2598 10.75 24 24 24h44.6201c-21.0801 33.9902 -36.6201 74.3496 -36.6201 112
-c0 88.3701 57.3096 144 128 144s128 -55.6299 128 -144c0 -37.6504 -15.54 -78.0098 -36.6201 -112h44.6201zM160 368c-29.6104 0 -48 -24.5195 -48 -64c0 -34.6602 27.1396 -78.1504 48 -100.87c20.8604 22.7305 48 66.21 48 100.87c0 39.4805 -18.3896 64 -48 64z" />
-    <glyph glyph-name="bible" unicode="&#xf647;" horiz-adv-x="448" 
-d="M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320
-c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 304v-32c0 -8.83984 7.16016 -16 16 -16h48v-112c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v112h48c8.83984 0 16 7.16016 16 16v32
-c0 8.83984 -7.16016 16 -16 16h-48v48c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-48h-48c-8.83984 0 -16 -7.16016 -16 -16zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z" />
-    <glyph glyph-name="business-time" unicode="&#xf64a;" horiz-adv-x="640" 
-d="M496 224c79.5898 0 144 -64.4102 144 -144s-64.4102 -144 -144 -144s-144 64.4102 -144 144s64.4102 144 144 144zM560 73.71v12.5801c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-38.29v54.2803c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-12.5703
-c-5.33984 0 -9.70996 -4.37012 -9.70996 -9.70996v-76.5703c0 -5.33984 4.37012 -9.70996 9.70996 -9.70996h60.5703c5.33984 0 9.70996 4.37012 9.70996 9.70996zM496 256c-37.5303 0 -72.2803 -11.9102 -100.88 -32h-395.12v80c0 25.5996 22.4004 48 48 48h80v48
-c0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80c25.5996 0 48 -22.4004 48 -48v-48.8096c-5.28027 0.479492 -10.5996 0.80957 -16 0.80957zM320 352v32h-128v-32h128zM326.82 128c-4.33984 -15.2803 -6.82031 -31.3398 -6.82031 -48
-c0 -28.8203 7.09961 -55.96 19.4297 -80h-291.43c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h118.82z" />
-    <glyph glyph-name="city" unicode="&#xf64f;" horiz-adv-x="640" 
-d="M616 256c13.25 0 24 -10.7402 24 -24v-264c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v360c0 13.2598 10.7402 24 24 24h40v80c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-80h64v80c0 8.83984 7.16016 16 16 16h16
-c8.83984 0 16 -7.16016 16 -16v-80h64v72c0 13.2598 10.7402 24 24 24h144c13.2598 0 24 -10.7402 24 -24v-168h136zM128 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z
-M128 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM128 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40
-c6.62988 0 12 5.37012 12 12zM256 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40
-c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 140v40c0 6.62988 -5.37012 12 -12 12h-40
-c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 332v40
-c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM576 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40
-c6.62988 0 12 5.37012 12 12zM576 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z" />
-    <glyph glyph-name="comment-dollar" unicode="&#xf651;" 
-d="M256 416c141.38 0 256 -93.1201 256 -208s-114.62 -208 -256 -208c-38.4102 0 -74.71 7.07031 -107.4 19.3799c-24.6094 -19.6299 -74.3398 -51.3799 -140.6 -51.3799l-0.00195312 0.00195312c-4.41309 0 -7.99512 3.58301 -7.99512 7.99512
-c0 2.13184 0.835938 4.06934 2.19727 5.50293c0.5 0.530273 42.2598 45.4502 54.8193 95.7598c-35.6094 35.7305 -57.0195 81.1807 -57.0195 130.74c0 114.88 114.62 208 256 208zM280 113.56c30.29 3.62012 53.3701 30.9805 49.3203 63.04
-c-2.90039 22.96 -20.6602 41.3105 -42.9102 47.6699l-50.0703 14.3008c-3.59961 1.0293 -6.12012 4.35938 -6.12012 8.10938c0 4.64062 3.78027 8.41992 8.44043 8.41992h32.7803c0.0214844 0 0.0634766 -0.0126953 0.0859375 -0.0126953
-c3.62891 0 7.07422 -0.790039 10.1738 -2.20703c4.7998 -2.20996 10.3701 -1.70996 14.1094 2.03027l17.5205 17.5195c5.26953 5.27051 4.66992 14.2705 -1.5498 18.3799c-9.5 6.27051 -20.3604 10.1104 -31.7803 11.46v17.7305c0 8.83984 -7.16016 16 -16 16h-16
-c-8.83984 0 -16 -7.16016 -16 -16v-17.5498c-30.29 -3.62012 -53.3701 -30.9805 -49.3203 -63.0498c2.90039 -22.96 20.6602 -41.3203 42.9102 -47.6699l50.0703 -14.3008c3.59961 -1.0293 6.12012 -4.35938 6.12012 -8.10938
-c0 -4.64062 -3.78027 -8.41992 -8.44043 -8.41992h-32.7803c-3.59961 0 -7.0791 0.759766 -10.2598 2.21973c-4.7998 2.20996 -10.3701 1.70996 -14.1094 -2.03027l-17.5205 -17.5195c-5.26953 -5.27051 -4.66992 -14.2705 1.5498 -18.3799
-c9.5 -6.27051 20.3604 -10.1104 31.7803 -11.46v-17.7305c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v17.5596z" />
-    <glyph glyph-name="comments-dollar" unicode="&#xf653;" horiz-adv-x="576" 
-d="M416 256c0 -88.3701 -93.1201 -160 -208 -160c-40.9805 0 -79.0703 9.24023 -111.27 24.9805c-21.8008 -12.7305 -52.1504 -24.9805 -88.7305 -24.9805l-0.00195312 0.00195312c-4.41309 0 -7.99512 3.58301 -7.99512 7.99512
-c0 2.13184 0.835938 4.06934 2.19727 5.50293c0.319336 0.339844 22.4102 24.2803 35.7695 54.5195c-23.8398 26.0303 -37.9697 57.7109 -37.9697 91.9805c0 88.3701 93.1201 160 208 160s208 -71.6299 208 -160zM192 160c0 -4.41992 3.58008 -8 8 -8h16
-c4.41992 0 8 3.58008 8 8v16.1201c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104
-c4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16
-c-4.41992 0 -8 -3.58008 -8 -8v-16.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104
-c-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29zM538.01 36.0098
-c13.3604 -30.2598 35.4707 -54.1699 35.7803 -54.5c2.20996 -2.33008 2.82031 -5.72949 1.5498 -8.66992c-1.25 -2.92969 -4.13965 -4.83984 -7.33984 -4.83984c-36.5801 0 -66.9297 12.25 -88.7305 24.9805c-32.1992 -15.7402 -70.2891 -24.9805 -111.27 -24.9805
-c-86.2305 0 -160.2 40.3701 -191.73 97.8799c10.4102 -1.11035 20.9502 -1.87988 31.7305 -1.87988c132.34 0 240 86.1299 240 192c0 6.78027 -0.469727 13.4697 -1.33008 20.0703c75.8398 -23.8701 129.33 -81.1299 129.33 -148.07
-c0 -34.2695 -14.1299 -65.96 -37.9902 -91.9902z" />
-    <glyph glyph-name="cross" unicode="&#xf654;" horiz-adv-x="384" 
-d="M352 320c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-96v-224c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v224h-96c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h96v96c0 17.6699 14.3301 32 32 32
-h64c17.6699 0 32 -14.3301 32 -32v-96h96z" />
-    <glyph glyph-name="dharmachakra" unicode="&#xf655;" 
-d="M495 222.94c9.20996 0.569336 17 -6.74023 17.0098 -15.9707v-29.9395c0 -9.23047 -7.79004 -16.5498 -17 -15.9707l-17.2197 1.08008c-5.28027 -39.4795 -20.7998 -75.6299 -43.8604 -105.83l12.9502 -11.4297c6.91992 -6.09961 7.25977 -16.7803 0.730469 -23.3096
-l-21.1699 -21.1699c-6.52051 -6.52051 -17.2002 -6.19043 -23.3105 0.729492l-11.4297 12.9502c-30.2002 -23.0703 -66.3506 -38.5898 -105.84 -43.8604l1.08008 -17.2197c0.569336 -9.20996 -6.74023 -17 -15.9707 -17h-29.9395c-9.23047 0 -16.5498 7.79004 -15.9707 17
-l1.09082 17.2197c-39.4902 5.28027 -75.6406 20.7998 -105.841 43.8604l-11.4297 -12.9502c-6.09961 -6.91992 -16.7803 -7.25977 -23.3096 -0.729492l-21.1699 21.1699c-6.52051 6.51953 -6.19043 17.1992 0.729492 23.3096l12.9502 11.4297
-c-23.0703 30.1904 -38.5898 66.3408 -43.8604 105.83l-17.2197 -1.08008c-9.20996 -0.569336 -17 6.74023 -17 15.9707v29.9395c0 9.23047 7.79004 16.5498 17 15.9707l17.2197 -1.08008c5.28027 39.4893 20.7998 75.6396 43.8604 105.84l-12.9502 11.4297
-c-6.91992 6.10059 -7.25977 16.7803 -0.729492 23.3105l21.1699 21.1592c6.51953 6.52051 17.1992 6.19043 23.3096 -0.729492l11.4297 -12.9502c30.1904 23.0703 66.3408 38.5898 105.83 43.8604l-1.08008 17.2197c-0.569336 9.20996 6.74023 17 15.9707 17h29.9395
-c9.23047 0 16.5498 -7.79004 15.9707 -17l-1.07031 -17.21c39.4795 -5.28027 75.6299 -20.7998 105.83 -43.8604l11.4297 12.9404c6.10059 6.91992 16.7803 7.25977 23.3105 0.729492l21.1592 -21.1592c6.52051 -6.52051 6.19043 -17.2002 -0.729492 -23.3105
-l-12.9502 -11.4297c23.0703 -30.2002 38.5898 -66.3506 43.8604 -105.84zM281.84 349.39l-4.00977 -64.1201c10.2998 -2.40918 19.8896 -6.50977 28.6201 -11.9492l42.6201 48.29c-19.6006 14.1201 -42.4199 23.71 -67.2305 27.7793zM230.16 349.39
-c-24.8105 -4.06934 -47.6299 -13.6592 -67.2305 -27.7793l42.6201 -48.29c8.73047 5.42969 18.3301 9.54004 28.6201 11.9492zM126.39 285.06c-14.1201 -19.5996 -23.71 -42.4092 -27.7793 -67.2197l64.1201 -4.00977c2.41992 10.29 6.51953 19.8896 11.96 28.6201z
-M98.6104 166.16c4.06934 -24.8105 13.6592 -47.6299 27.7793 -67.2305l48.29 42.6201c-5.42969 8.73047 -9.54004 18.3301 -11.9492 28.6201zM230.16 34.6104l4 64.1201c-10.29 2.41992 -19.8906 6.51953 -28.6201 11.96l-42.6104 -48.3008
-c19.6006 -14.1201 42.4199 -23.71 67.2305 -27.7793zM256 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM281.84 34.6104c24.8105 4.06934 47.6201 13.6592 67.2197 27.7793l-42.6094 48.3008
-c-8.73047 -5.44043 -18.3301 -9.55078 -28.6201 -11.96zM385.61 98.9404c14.1201 19.5898 23.71 42.4092 27.7793 67.2295l-64.1201 4.00977c-2.40918 -10.2998 -6.50977 -19.8896 -11.9492 -28.6201zM349.27 213.83l64.1201 4
-c-4.06934 24.8096 -13.6592 47.6299 -27.7793 67.2295l-48.3008 -42.6094c5.44043 -8.73047 9.55078 -18.3301 11.96 -28.6201z" />
-    <glyph glyph-name="envelope-open-text" unicode="&#xf658;" 
-d="M176 232c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160zM160 152v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16
-h-160c-8.83984 0 -16 7.16016 -16 16zM256 30.8701c16.4199 0 32.8398 5.07031 46.8604 15.1895l209.14 151.08v-213.14c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v213.14l209.14 -151.08c14.0205 -10.1299 30.4404 -15.1895 46.8604 -15.1895z
-M493.61 285.05c11.6094 -9.09961 18.3896 -23.0303 18.3896 -37.7695v-10.6504l-96 -69.3496v184.72h-320v-184.72l-96 69.3496v10.6504c0.00195312 15.3359 7.17676 28.9824 18.3896 37.7695c8.85059 6.94043 17.2402 13.4805 29.6104 22.8105v44.1396
-c0 26.5098 21.4902 48 48 48h77.5498c3.04004 2.2002 5.87012 4.25977 9.04004 6.55957c16.8203 12.2705 50.21 41.79 73.4102 41.4404c23.2002 0.349609 56.5996 -29.1699 73.4102 -41.4404c3.16992 -2.2998 6 -4.35938 9.04004 -6.55957h77.5498
-c26.5098 0 48 -21.4902 48 -48v-44.1396c12.3701 -9.34082 20.7598 -15.8701 29.6104 -22.8105z" />
-    <glyph glyph-name="folder-minus" unicode="&#xf65d;" 
-d="M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-192c-8.83984 0 -16 -7.16016 -16 -16v-16
-c0 -8.83984 7.16016 -16 16 -16h192c8.83984 0 16 7.16016 16 16z" />
-    <glyph glyph-name="folder-plus" unicode="&#xf65e;" 
-d="M464 320c26.4922 0 48 -21.5078 48 -48v-224c0 -26.4922 -21.5078 -48 -48 -48h-416c-26.4922 0 -48 21.5078 -48 48v288c0 26.4922 21.5078 48 48 48h160l64 -64h192zM359.5 152v16c0 8.83105 -7.16895 16 -16 16h-64v64c0 8.83105 -7.16895 16 -16 16h-16
-c-8.83105 0 -16 -7.16895 -16 -16v-64h-64c-8.83105 0 -16 -7.16895 -16 -16v-16c0 -8.83105 7.16895 -16 16 -16h64v-64c0 -8.83105 7.16895 -16 16 -16h16c8.83105 0 16 7.16895 16 16v64h64c8.83105 0 16 7.16895 16 16z" />
-    <glyph glyph-name="funnel-dollar" unicode="&#xf662;" horiz-adv-x="640" 
-d="M433.46 282.06c-83.4102 -20.8896 -145.46 -96.2695 -145.46 -186.06c0 -54.3496 22.7998 -103.38 59.21 -138.35c-10.75 -20.54 -38.3604 -29.21 -59.2197 -13.5703l-79.9902 60c-10.0703 7.55957 -16 19.4102 -16 32v155.92l-182.66 201.93
-c-19.9502 19.9502 -5.82031 54.0703 22.4004 54.0703h480.52c28.2207 0 42.3506 -34.1201 22.4004 -54.0703zM480 256c88.3701 0 160 -71.6299 160 -160s-71.6299 -160 -160 -160s-160 71.6299 -160 160s71.6299 160 160 160zM496 16.1201
-c23.6299 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973
-c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201
-c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104
-c-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16
-c4.41992 0 8 3.58008 8 8v16.1201z" />
-    <glyph glyph-name="gopuram" unicode="&#xf664;" 
-d="M496 96c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-80v160h-32v128h-32v96h-32v-96h32v-128h32v-160h-80v80c0 8.7998 -7.2002 16 -16 16h-64c-8.7998 0 -16 -7.2002 -16 -16v-80h-80v160h32v128h32v96h-32v-96h-32v-128h-32v-160h-80
-c-8.7998 0 -16 7.2002 -16 16v128c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16h16v80c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16
-c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-112h16c8.7998 0 16 -7.2002 16 -16v-80h16c8.7998 0 16 -7.2002 16 -16v-112h16zM232 272v-48h48v48c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16z
-M288 96v64c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-64h64z" />
-    <glyph glyph-name="hamsa" unicode="&#xf665;" 
-d="M509.34 140.75c1.70117 -3.9043 2.65918 -8.24805 2.65918 -12.7764c0 -8.42383 -3.26562 -16.0908 -8.59863 -21.8037l-102.681 -110.03c-35.6895 -38.2197 -88.4102 -60.1396 -144.72 -60.1396s-109.03 21.9199 -144.71 60.1396l-102.69 110.03
-c-5.33301 5.71289 -8.58398 13.4141 -8.58398 21.8379c0 4.52832 0.943359 8.83789 2.64453 12.7422c5.05957 11.6904 16.5898 19.25 29.3398 19.25h64v208c0 22 18 40 40 40s40 -18 40 -40v-134c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v174
-c0 22 18 40 40 40s40 -18 40 -40v-174c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v134c0 22 18 40 40 40s40 -18 40 -40v-208h64c12.75 0 24.2803 -7.55957 29.3398 -19.25zM256 32c53.0195 0 96 64 96 64s-42.9805 64 -96 64s-96 -64 -96 -64
-s42.9805 -64 96 -64zM256 128c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z" />
-    <glyph glyph-name="bahai" unicode="&#xf666;" 
-d="M496.25 245.48c17.54 -2.46094 21.6797 -26.2705 6.04004 -34.6602l-98.1602 -52.6602l74.4805 -83.54c11.8594 -13.29 0.00976562 -34.25 -17.3506 -30.4902l-108.569 23.6504l4.10938 -112.55c0.430664 -11.6504 -8.87012 -19.2207 -18.4102 -19.2207
-c-5.15918 0 -10.3896 2.20996 -14.1992 7.18066l-68.1807 88.8994l-68.1797 -88.8994c-3.81055 -4.9707 -9.0498 -7.18066 -14.2002 -7.18066c-9.54004 0 -18.8398 7.57031 -18.4102 19.2207l4.11035 112.55l-108.57 -23.6504
-c-1.39941 -0.30957 -2.75977 -0.450195 -4.06934 -0.450195c-15.0107 0 -24.21 18.6807 -13.29 30.9307l74.4795 83.54l-98.1602 52.6592c-15.6494 8.40039 -11.5098 32.21 6.03027 34.6709l110 15.4297l-41.8203 104.34c-6.66016 16.6396 11.6006 32.1797 26.5898 22.6299
-l94.04 -59.8896l34.0908 107.189c2.70996 8.55078 10.0293 12.8203 17.3496 12.8203s14.6396 -4.26953 17.3496 -12.8203l34.0908 -107.18l94.04 59.8896c14.9893 9.55078 33.2598 -5.98926 26.5898 -22.6299l-41.8203 -104.34zM338.51 136.32l-35.6094 39.9297
-l46.9199 25.1699l-52.5703 7.37988l19.9902 49.8701l-44.9502 -28.6201l-16.29 51.2305l-16.3096 -51.2305l-44.9502 28.6201l19.9902 -49.8701l-52.5703 -7.37988l46.9199 -25.1699l-35.5996 -39.9297l51.8896 11.2998l-1.95996 -53.79l32.5898 42.4902l32.5898 -42.4902
-l-1.96973 53.79z" />
-    <glyph glyph-name="jedi" unicode="&#xf669;" horiz-adv-x="576" 
-d="M535.953 96c-42.6406 -94.1719 -137.641 -160 -247.984 -160c-4.26562 0 -8.54688 0.0986328 -12.8447 0.296875c-103.969 4.76562 -193.859 69.4688 -235.109 159.703h39.9219l-58.6094 58.5938c-2.65332 12.8242 -4.38672 25.9951 -5.10938 39.4219
-c-0.133789 3.5166 -0.202148 7.05078 -0.202148 10.5996c0 6.65527 0.234375 12.8477 0.702148 19.3848h47.2188l-41.3906 41.375c14.7842 66.6123 53.959 124.015 107.969 162.078c2.61426 1.87109 5.82812 2.98535 9.28125 3
-c5.62793 -0.03125 10.5791 -2.89355 13.5 -7.25c1.76367 -2.57422 2.7959 -5.68848 2.7959 -9.04199c0 -2.13086 -0.414062 -4.19141 -1.1709 -6.05176c-6.31445 -15.834 -9.84375 -33.1904 -9.84375 -51.2656c0 -45.1094 21.0469 -86.5781 57.7188 -113.734
-c4.07324 -2.96484 6.72266 -7.76855 6.72266 -13.1865c0 -4.86133 -2.13965 -9.2168 -5.51953 -12.2041c-26.5469 -23.9844 -41.1719 -56.5 -41.1719 -91.5781c0 -60.0312 42.9531 -110.281 99.8906 -121.922l2.5 65.2656l-27.1562 -18.4844
-c-1.29688 -0.832031 -2.83887 -1.31445 -4.49219 -1.31445c-2.10352 0 -4.04004 0.777344 -5.50781 2.06445c-1.55078 1.46387 -2.51953 3.53809 -2.51953 5.83691c0 1.49414 0.416992 2.90234 1.12891 4.10059l20.125 33.7656l-42.0625 8.73438
-c-3.64062 0.744141 -6.38379 3.96777 -6.38379 7.82812s2.74316 7.08398 6.38379 7.82812l42.0625 8.71875l-20.1094 33.7344c-0.724609 1.20312 -1.1416 2.61133 -1.1416 4.11719c0 4.41016 3.58105 7.99121 7.99121 7.99121c1.67188 0 3.22656 -0.510742 4.50977 -1.38965
-l30.3906 -20.6562l11.5166 287.969c0.15918 4.25879 3.66797 7.66699 7.96484 7.66699c0.0117188 0 0.0234375 0.00488281 0.0351562 0.00488281h0.046875c4.29004 -0.0332031 7.78418 -3.44629 7.95312 -7.70312l11.5312 -287.922l30.3906 20.6719
-c1.28223 0.855469 2.82227 1.35449 4.47852 1.35449c2.12793 0 4.07715 -0.820312 5.52148 -2.16699c1.54785 -1.45898 2.51465 -3.52832 2.51465 -5.82129c0 -1.48828 -0.415039 -2.89062 -1.12402 -4.08496l-20.1406 -33.7656l42.0781 -8.73438
-c3.63379 -0.750977 6.36914 -3.97266 6.36914 -7.82812s-2.73535 -7.07715 -6.36914 -7.82812l-42.0781 -8.71875l20.1094 -33.7344c0.730469 -1.20508 1.15039 -2.61719 1.15039 -4.12793c0 -2.27637 -0.947266 -4.33984 -2.47852 -5.79395
-c-1.46484 -1.32227 -3.4043 -2.12793 -5.53125 -2.12793c-1.6543 0 -3.20801 0.492188 -4.5 1.33105l-27.1719 18.4688l2.5 -65.3438c48.4844 9.40625 87.5781 48.1562 97.3125 96.5c1.68066 8.11816 2.56445 16.5254 2.56445 25.1387
-c0 36.5547 -15.8574 69.3145 -41.127 91.9395c-3.38867 2.98926 -5.52734 7.3623 -5.52734 12.2314c0 5.42578 2.64844 10.2256 6.73047 13.1904c36.6562 27.1719 57.6875 68.6094 57.6875 113.734v0.0859375c0 18.0664 -3.53613 35.4062 -9.85938 51.2266
-c-0.763672 1.86523 -1.18555 3.90625 -1.18555 6.0459c0 3.34668 1.0332 6.47949 2.79492 9.04785c2.9248 4.35059 7.875 7.20605 13.5 7.23438c3.44043 -0.0136719 6.64355 -1.12305 9.25 -2.98438c53.9287 -38.2227 93.0518 -95.6611 107.906 -162.281l-41.25 -41.2344
-h46.9531c0.359375 -5.76562 1.04688 -11.4531 1.04688 -17.2656c-0.0332031 -17.8086 -1.7959 -35.0137 -5.125 -51.8594l-58.8906 -58.875h39.9688z" />
-    <glyph glyph-name="journal-whills" unicode="&#xf66a;" horiz-adv-x="448" 
-d="M438.406 70.4062c-3.20312 -12.8125 -3.20312 -57.6094 0 -73.6094c6.39062 -6.39062 9.58887 -12.792 9.59375 -19.2031v-16c0 -16 -12.7969 -25.5938 -25.5938 -25.5938h-326.406c-54.4062 0 -96 41.5938 -96 96v320c0 54.4062 41.5938 96 96 96h326.406
-c16 0 25.5938 -9.59375 25.5938 -25.5938v-332.812c0 -9.59375 -3.19824 -15.9893 -9.59375 -19.1875zM380.797 64h-284.797c-16 0 -32 -12.7969 -32 -32s12.7969 -32 32 -32h284.797v64zM128.016 271.984c0 -0.515625 0.140625 -0.984375 0.140625 -1.5l37.1094 -32.4688
-c1.67383 -1.4668 2.73047 -3.62012 2.73047 -6.01758c0 -4.41309 -3.58398 -7.99414 -7.99609 -7.99805h-0.015625c-1.97363 0.0996094 -3.79785 0.828125 -5.25 1.98438l-23.5938 20.6406c11.5469 -49.5781 55.7656 -86.625 108.859 -86.625
-s97.3125 37.0469 108.875 86.625l-23.5938 -20.6406c-1.40918 -1.22461 -3.25391 -1.96875 -5.26562 -1.96875h-0.015625c-2.34766 0.129883 -4.46777 1.14551 -6.01562 2.71875c-1.1543 1.45996 -1.88184 3.28809 -1.98438 5.26562
-c0.128906 2.35059 1.15137 4.47266 2.73438 6.01562l37.1094 32.4688c0.015625 0.53125 0.15625 1 0.15625 1.51562c0 11.0469 -2.09375 21.5156 -5.0625 31.5938l-21.2656 -21.25c-1.44922 -1.4502 -3.45117 -2.34863 -5.66211 -2.34863
-c-4.41797 0 -8.00488 3.58691 -8.00488 8.00488c0 2.20605 0.892578 4.20801 2.33887 5.65625l26.4219 26.4062c-10.0342 20.8945 -26.1904 38.0244 -46.3594 49.2656c6.05371 -9.67676 9.55469 -21.1123 9.55469 -33.3584c0 -19.916 -9.17383 -37.7295 -23.6172 -49.2822
-c9.69336 -10.0459 15.6592 -23.7119 15.6592 -38.7598c0 -26.875 -19.0703 -49.3535 -44.3779 -54.6621l-1.42188 34.2812l12.6719 -8.625c0.635742 -0.432617 1.40234 -0.685547 2.22852 -0.685547c0.00585938 0 0.015625 -0.00195312 0.0214844 -0.00195312h0.0263672
-c2.19727 0 3.98047 1.7832 3.98047 3.98047c0 0.748047 -0.209961 1.45215 -0.569336 2.05078l-8.53125 14.3125l17.9062 3.71875c1.81738 0.379883 3.18457 1.99219 3.18457 3.92188s-1.36719 3.54199 -3.18457 3.92188l-17.9062 3.71875l8.53125 14.3125
-c0.359375 0.598633 0.566406 1.29883 0.566406 2.04688c0 2.19629 -1.7832 3.98047 -3.98047 3.98047c-0.00878906 0 -0.0146484 0.00390625 -0.0234375 0.00390625c-0.817383 -0.0322266 -1.58984 -0.275391 -2.25 -0.671875l-14.1875 -9.65625l-4.6875 112.297
-c-0.09375 2.12695 -1.84961 3.8252 -4 3.8252s-3.90625 -1.69824 -4 -3.8252l-4.625 -110.812l-12 8.15625c-0.639648 0.43457 -1.41211 0.688477 -2.24316 0.688477c-2.20996 0 -4.00293 -1.79395 -4.00293 -4.00391c0 -0.745117 0.203125 -1.44629 0.558594 -2.04395
-l8.53125 -14.3125l-17.9062 -3.71875c-1.81738 -0.375977 -3.18457 -1.98633 -3.18457 -3.91406s1.36719 -3.53809 3.18457 -3.91406l17.9062 -3.73438l-8.53125 -14.2969c-0.330078 -0.611328 -0.532227 -1.31152 -0.5625 -2.04688
-c0.0615234 -1.12109 0.525391 -2.14062 1.25 -2.90625c0.717773 -0.677734 1.68652 -1.09277 2.75 -1.09375c0.830078 0.00390625 1.60645 0.257812 2.25 0.6875l10.3594 7.04688l-1.35938 -32.7188c-25.3086 5.31836 -44.335 27.79 -44.335 54.6709
-c0 15.0518 5.92285 28.7324 15.6162 38.7822c-14.4434 11.5508 -23.7012 29.3193 -23.7012 49.2334c0 12.2559 3.59082 23.7412 9.6543 33.4229c-20.1709 -11.2451 -36.3311 -28.374 -46.375 -49.2656l26.4219 -26.4219c1.43945 -1.44727 2.33008 -3.44043 2.33008 -5.64062
-c0 -4.41504 -3.58496 -8 -7.99902 -8c-2.2002 0 -4.19629 0.888672 -5.64355 2.32812l-21.2656 21.2656c-2.98438 -10.0938 -5.07812 -20.5625 -5.0625 -31.625z" />
-    <glyph glyph-name="kaaba" unicode="&#xf66b;" horiz-adv-x="576" 
-d="M554.12 364.49c13.0703 -4.36035 21.8799 -16.5898 21.8799 -30.3604v-49.0098l-265 79.5098c-15.0596 4.5 -30.9502 4.5 -45.9805 0l-265.02 -79.5098v49.0098c0.000976562 14.1279 9.16992 26.1211 21.8799 30.3604l235.771 78.5801
-c9.53711 3.17969 19.7705 4.90234 30.3711 4.90234c10.5996 0 20.8008 -1.72266 30.3389 -4.90234zM274.22 333.97c9 2.7207 18.5498 2.7207 27.5898 0l274.2 -82.2598v-228.39c0 -15 -10.4199 -27.9902 -25.0596 -31.2402l-242.12 -53.7998
-c-6.72461 -1.49512 -13.5928 -2.28418 -20.7646 -2.28418s-14.1611 0.789062 -20.8857 2.28418l-242.12 53.7998c-14.6396 3.25977 -25.0596 16.2402 -25.0596 31.2402v228.38zM128 217.89v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.7207l-80 -21.8203
-c-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.27051 5.01953 -9.10059 10.1104 -7.7207l80 21.8203c3.47949 0.950195 5.88965 4.11035 5.88965 7.71973zM272 257.17v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.71973l-96 -26.1797
-c-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.28027 5.01953 -9.11035 10.1104 -7.7207l96 26.1807c3.47949 0.950195 5.88965 4.10938 5.88965 7.71973zM448 234.47v-16.5801c0 -0.00195312 0.00195312 -0.00195312 0.00195312 -0.00390625
-c0 -3.68359 2.49609 -6.78906 5.8877 -7.71582l80 -21.8203c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5801c0 3.60938 -2.41016 6.76953 -5.88965 7.71973l-80 21.8203c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.7207zM304 273.74v-16.5801
-c0 -0.00195312 0.00195312 -0.00292969 0.00195312 -0.00488281c0 -3.68359 2.49609 -6.78906 5.8877 -7.71484l96 -26.1807c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5791c0 3.61035 -2.41016 6.77051 -5.88965 7.7207l-96 26.1797
-c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.71973z" />
-    <glyph glyph-name="khanda" unicode="&#xf66d;" 
-d="M415.81 382c73.71 -40.2402 111.78 -123.85 90.1602 -207.51c-7.25 -28.0898 -22.3799 -53.5703 -41.25 -75.5898l-52.5098 -61.3105c-4.87012 -5.67969 -13.04 -7.22949 -19.6504 -3.70996l-79.3496 42.2305l-29.21 -20.3408l47.0801 -32.7793
-c1.66992 0.370117 3.22949 1.00977 5.00977 1.00977c13.25 0 23.9902 -10.7402 23.9902 -24c0 -13.25 -10.7402 -24 -23.9902 -24c-12.0898 0 -21.6797 9.11035 -23.3301 20.7598l-40.9102 28.4805v-30.1504c9.38086 -5.58008 15.9902 -15.3896 15.9902 -27.0996
-c0 -17.6699 -14.3203 -32 -31.9795 -32c-17.6602 0 -31.9805 14.3301 -31.9805 32c0 11.7197 6.60059 21.5293 15.9902 27.0996v29.9502l-40.6299 -28.2803c-1.64062 -11.6494 -11.2305 -20.7598 -23.3301 -20.7598c-13.25 0 -23.9902 10.75 -23.9902 24
-c0 13.2598 10.7402 24 23.9902 24c1.78027 0 3.33984 -0.639648 5.00977 -1.00977l47.0801 32.7793l-29.21 20.3301l-79.3496 -42.2295c-6.61035 -3.52051 -14.7803 -1.96973 -19.6504 3.71973l-55.9697 65.3604c-12.5703 14.6797 -23.3906 31.0693 -30.46 49.0596
-c-35.6602 90.6904 2.95996 186.391 81.4893 229.24c6.34082 3.5 15.0205 2.63965 20.0205 -2.7002c4.99023 -5.30957 6.45996 -12.9199 2.58984 -19.0801c-16.4902 -26.1602 -25.2002 -56.3896 -25.2002 -87.4697c0.180664 -53.1904 26.7598 -102.62 71.0303 -132.18
-l76.5898 -53.3301v19.8994l-44.0498 36.0908c-3.91016 4.20996 -5 10.0996 -2.81055 15.2793l7.85059 17.2402c-33.8506 19.2598 -56.9404 55.2402 -56.9404 96.9902c0 40.79 22.0205 76.1396 54.5898 95.7197l-5.21973 11.4404
-c-2.33008 5.5293 -0.929688 11.8301 3.57031 16.04l58.9902 52.8096l58.9893 -52.8203c4.5 -4.20996 5.91016 -10.5098 3.57031 -16.04l-5.21973 -11.4395c32.5693 -19.5801 54.5898 -54.9199 54.5898 -95.71c0 -41.7402 -23.0996 -77.7305 -56.9404 -96.9902
-l7.85059 -17.2402c2.18945 -5.18945 1.10938 -11.0801 -2.81055 -15.2793l-44.0498 -36.0908v-20.0996l76.6299 53.3496c44.5 29.7207 71.0801 79.1602 71.2705 132.41c0 31.0205 -8.70996 61.25 -25.2002 87.4102c-1.55762 2.46582 -2.46973 5.40723 -2.46973 8.53613
-c0 4.25293 1.66602 8.12012 4.37988 10.9844c4.99023 5.34961 12.9902 6.51953 19.3594 3.01953zM319.82 272c0 21.3203 -10.5801 40.1201 -26.6504 51.7695l-7.83008 -17.1797c-8.75 -24.5195 -8.75 -51.04 0 -75.5596l5.65039 -12.4102
-c17.3398 11.46 28.8301 31.0801 28.8301 53.3799zM191.89 272c0 -22.2998 11.5 -41.9297 28.8408 -53.3896l5.64941 12.4092c8.75 24.5303 8.75 51.04 0 75.5605l-7.83008 17.1797c-16.0801 -11.6396 -26.6602 -30.4395 -26.6602 -51.7598z" />
-    <glyph glyph-name="landmark" unicode="&#xf66f;" 
-d="M501.62 355.89c6.24023 -2.33984 10.3799 -8.30957 10.3799 -14.9795v-36.9102c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v36.9102c0.000976562 6.85547 4.31445 12.7041 10.3799 14.9795l234.39 90.0703
-c3.49219 1.31152 7.30176 2.02832 11.25 2.02832c3.94727 0 7.72852 -0.716797 11.2207 -2.02832zM64 256h64v-160h96v160h64v-160h96v160h64v-160h16c8.83984 0 16 -7.16016 16 -16v-48h-448v48c0 8.83984 7.16016 16 16 16h16v160zM496 0c8.83984 0 16 -7.16016 16 -16
-v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z" />
-    <glyph glyph-name="mail-bulk" unicode="&#xf674;" horiz-adv-x="576" 
-d="M160 0c25.5996 0 51.2002 22.4004 64 32c64 44.7998 83.2002 60.7998 96 70.4004v-134.4c0 -17.6699 -14.3301 -32 -32 -32h-256c-17.6699 0 -32 14.3301 -32 32v134.4c12.7998 -9.60059 32 -25.6006 96 -70.4004c12.7998 -9.59961 38.4004 -32 64 -32zM288 192
-c17.6699 0 32 -14.3301 32 -32v-19.2002c-25.5996 -19.2002 -22.4004 -19.2002 -115.2 -86.3994c-9.59961 -3.2002 -28.7998 -22.4004 -44.7998 -22.4004s-35.2002 19.2002 -44.7998 25.5996c-92.7998 67.2002 -89.6006 67.2002 -115.2 86.4004v16
-c0 17.6699 14.3301 32 32 32h256zM544 288c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-192v134.4l-0.290039 -0.220703c-3.12012 32.4004 -30.5 57.8203 -63.71 57.8203h-96v32c0 17.6699 14.3301 32 32 32h320zM512 160v64h-64v-64h64zM160 256
-v-32h-96v192c0 17.6699 14.3301 32 32 32h320c17.6699 0 32 -14.3301 32 -32v-96h-224c-35.29 0 -64 -28.71 -64 -64z" />
-    <glyph glyph-name="menorah" unicode="&#xf676;" horiz-adv-x="640" 
-d="M144 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM240 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM432 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM528 320
-c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM608 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM512 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32
-zM416 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM320 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM224 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64
-s-14.3301 -32 -32 -32zM128 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM32 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM576 160v144c0 8.83984 7.16016 16 16 16h32
-c8.83984 0 16 -7.16016 16 -16v-144c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96
-v144c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144c0 -17.6699 14.3301 -32 32 -32h192v176c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-176h192c17.6699 0 32 14.3301 32 32z" />
-    <glyph glyph-name="mosque" unicode="&#xf678;" horiz-adv-x="640" 
-d="M0 -32v320h128v-320c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32zM579.16 160h-358.32c-17.8594 17.3896 -28.8398 37.3398 -28.8398 58.9102c0 52.8594 41.79 93.79 87.9199 122.899c41.9502 26.46 80.6299 57.7705 111.96 96.2207
-l8.12012 9.96973l8.12012 -9.96973c31.3301 -38.4502 70.0195 -69.75 111.96 -96.2207c46.1299 -29.1094 87.9199 -70.04 87.9199 -122.899c0 -21.5703 -10.9805 -41.5205 -28.8398 -58.9102zM608 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32
-h-32v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-64v72c0 48 -48 72 -48 72s-48 -24 -48 -72v-72h-64v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-32c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h416zM64 448
-c0 0 64 -32 64 -96v-32h-128v32c0 64 64 96 64 96z" />
-    <glyph glyph-name="om" unicode="&#xf679;" 
-d="M360.6 387.06l-21.5801 21.5605c-1.89062 1.88867 -3.06055 4.50098 -3.06055 7.38086c0 2.88086 1.16992 5.49023 3.06055 7.37891l21.5703 21.5605c4.08008 4.06934 10.6797 4.06934 14.7598 0l21.5801 -21.5605c1.8916 -1.88867 3.06152 -4.50098 3.06152 -7.38086
-c0 -2.88086 -1.16992 -5.49023 -3.06152 -7.37891l-21.5693 -21.5605c-1.88867 -1.89062 -4.50098 -3.06055 -7.38184 -3.06055s-5.49023 1.16992 -7.37891 3.06055zM412.11 256c55.0898 0 99.8896 -44.7998 99.8896 -99.8799v-100.12c0 -48.5303 -47.4805 -88 -96.0195 -88
-c-96.0205 0 -96.0205 64 -96.0205 64v37.8701c0 7.55957 9.42969 10.8896 14.2002 5.01953c15.1494 -18.6494 42.4199 -42.8896 81.8203 -42.8896c13.2393 0 32.0098 10.7695 32.0098 24v100.12c0 19.79 -16.1006 35.8799 -35.8799 35.8799
-c-9.60059 0 -18.6006 -3.73047 -25.3799 -10.5l-24.25 -24.25c-18.8701 -18.8604 -43.9502 -29.25 -70.6406 -29.25h-21.6895c11.0293 -18.9004 17.8096 -40.5801 17.8096 -64c0 -70.5801 -57.4297 -128 -128.02 -128c-118.811 0 -160.03 96 -159.94 150.81
-c0.0195312 8.80078 10.2598 12.7705 14.79 5.2207c22.7998 -38.0107 49.1299 -92.0303 145.15 -92.0303c35.2998 0 64.0098 28.7002 64.0098 64s-28.71 64 -64.0098 64h-33.0303c-5.57031 0.450195 -10.6406 3.49023 -13.1699 8.5498l-16.0898 32.1699
-c-5.35059 10.7002 2.42969 23.2803 14.3896 23.2803h31.9004c26.4697 0 48.0098 21.5303 48.0098 48s-21.54 48 -48.0098 48c-11.25 0 -21.8203 -3.80957 -30.2705 -10.71c-5.54004 -4.53027 -13.4795 -4.50977 -19.2002 -0.209961l-26.1494 19.6299
-c-8.08984 6.08008 -8.48047 17.9697 -1.12012 24.9297c25.1094 23.7402 59.8594 34.71 96.0098 28.7803c43.1602 -7.08008 79.4199 -40.6396 89.5205 -83.1895c6.43945 -27.1201 2.80957 -53.1309 -7.73047 -75.2305h46.8398c9.60059 0 18.6006 3.73047 25.3799 10.5
-l24.25 24.25c18.8701 18.8604 43.9502 29.25 70.6406 29.25zM454.29 380.73c10.5596 7.95996 25.7002 0.489258 25.7002 -12.7305v-35.5195c0 -2.36035 -0.509766 -4.71094 -1.53027 -6.83008c-2.96973 -6.30078 -21.8301 -37.6602 -101.75 -37.6602
-c-78.4297 0 -117.19 69.3896 -118.8 72.3398c-3.61035 6.62988 -2.08008 14.8799 3.66016 19.7998c5.69922 4.92969 14.1201 5.16992 20.1396 0.549805c3.53027 -2.69922 87.0303 -65.0693 172.58 0.0507812z" />
-    <glyph glyph-name="pastafarianism" unicode="&#xf67b;" horiz-adv-x="640" 
-d="M624.54 100.33c12.4004 -4.71973 18.5996 -18.5801 13.8896 -30.9805c-4.69922 -12.4092 -18.5801 -18.6299 -30.9697 -13.8799c-8.11035 3.08984 -14.3398 0.19043 -31.3896 -11.3594c-13.5508 -9.15039 -30.8301 -20.8408 -52.4199 -20.8408
-c-7.16992 0 -14.8301 1.28027 -22.9707 4.39062c-32.6602 12.4395 -39.9893 41.3301 -45.3301 62.4395c-2.20996 8.7207 -3.98926 14.4902 -5.94922 18.8701c-16.6201 -13.5996 -36.9307 -25.8701 -61.6201 -34.1602c10.0098 -37 32.2793 -90.8096 60.2197 -90.8096
-c13.25 0 24 -10.75 24 -24s-10.75 -24 -24 -24c-66.7402 0 -97.0498 88.6299 -107.42 129.14c-6.69043 -0.599609 -13.4199 -1.13965 -20.5801 -1.13965s-13.8896 0.540039 -20.5801 1.13965c-10.3701 -40.5098 -40.6797 -129.14 -107.42 -129.14c-13.25 0 -24 10.75 -24 24
-s10.75 24 24 24c28.0801 0 50.2998 53.7998 60.2598 90.7998c-24.6895 8.29004 -45.0195 20.5605 -61.6396 34.1699c-1.95996 -4.37988 -3.74023 -10.1494 -5.9502 -18.8701c-5.34961 -21.1094 -12.6699 -50 -45.3301 -62.4395
-c-8.13965 -3.11035 -15.7998 -4.39062 -22.9697 -4.39062c-21.5898 -0.0195312 -38.8701 11.6807 -52.4199 20.8408c-17.0498 11.5498 -23.2305 14.4492 -31.3906 11.3594c-12.3594 -4.72949 -26.25 1.4707 -30.9697 13.8799
-c-4.71973 12.3906 1.48047 26.25 13.8701 30.9707c32.6504 12.4697 57.3398 -4.25 75.3701 -16.4502c17.0801 -11.5303 23.2998 -14.4199 31.4102 -11.3604c8.12012 3.10059 10.8301 9.37988 15.8896 29.3799c3.33008 13.1504 7.44043 29.3203 17.9502 42.6504
-c-2.24023 2.91016 -4.42969 5.78027 -6.37988 8.57031c-10.1699 -9.56055 -23.4102 -17.1104 -41.7002 -17.1104c-33.9502 0 -50.8701 25.7803 -62.0596 42.8301c-10.6006 16.1396 -15 21.1699 -21.9404 21.1699c-13.25 0 -24 10.75 -24 24s10.75 24 24 24
-c33.96 0 50.8799 -25.7803 62.0596 -42.8301c10.6006 -16.1396 15 -21.1699 21.9404 -21.1699c17.1504 0 37.6797 61.5596 97.2695 101.9l-17.25 34.5c-33.46 2.09961 -60.0195 29.6191 -60.0195 63.5996c0 35.3496 28.6504 64 64 64s64 -28.6504 64 -64
-c0 -13.0195 -3.94043 -25.0996 -10.5996 -35.21l18.1494 -36.2998c16.9697 4.59961 35.6006 7.50977 56.46 7.50977c20.8604 0 39.4805 -2.91016 56.46 -7.50977l18.1504 36.2998c-6.67969 10.1104 -10.6201 22.1904 -10.6201 35.21c0 35.3496 28.6504 64 64 64
-s64 -28.6504 64 -64c0 -33.9805 -26.5703 -61.5 -60.0098 -63.5898l-17.25 -34.5c59.7793 -40.4805 79.9502 -101.91 97.2598 -101.91c6.94043 0 11.3398 5.03027 21.9404 21.1699c11.1895 17.0498 28.1094 42.8301 62.0596 42.8301c13.25 0 24 -10.75 24 -24
-s-10.75 -24 -24 -24c-6.94043 0 -11.3496 -5.03027 -21.9404 -21.1699c-11.1895 -17.0498 -28.1094 -42.8301 -62.0596 -42.8301c-18.29 0 -31.5303 7.5498 -41.7002 17.1201c-1.9502 -2.78027 -4.13965 -5.66016 -6.37988 -8.57031
-c10.5098 -13.3301 14.6201 -29.5 17.9502 -42.6494c5.05957 -20 7.76953 -26.29 15.8896 -29.3809c8.16016 -3.05957 14.3506 -0.169922 31.4102 11.3604c18.0098 12.2002 42.6699 28.9697 75.3701 16.4502zM448 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16
-s16 7.17969 16 16s-7.17969 16 -16 16zM192 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16z" />
-    <glyph glyph-name="peace" unicode="&#xf67c;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM432 192c0 90.5303 -65.7695 165.82 -152 181.03v-165.66l129.43 -103.54c14.3701 26.2002 22.5703 56.2402 22.5703 88.1699zM216 10.9697v114.46
-l-89.29 -71.4395c24.7998 -21.8203 55.4297 -37.0498 89.29 -43.0205zM280 125.43v-114.449c33.8604 5.96973 64.4902 21.1992 89.29 43.0195zM216 373.03c-86.2305 -15.21 -152 -90.5 -152 -181.03c0 -31.9297 8.2002 -61.9697 22.5703 -88.1699l129.43 103.54v165.66z" />
-    <glyph glyph-name="place-of-worship" unicode="&#xf67f;" horiz-adv-x="640" 
-d="M620.61 81.4502c11.4111 -4.89258 19.3896 -16.2168 19.3896 -29.4102v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192zM0 52.04c0 13.1934 7.97852 24.5176 19.3896 29.4102l108.61 46.5498v-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM464.46 201.32
-c9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6602 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 11.6572 6.21387 21.8467 15.54 27.4404l48.46 29.0801v114.97c0 8.49023 3.37988 16.6299 9.37988 22.6299l75.3105 75.3096
-c6.23926 6.25 16.3691 6.25 22.6191 0l75.3105 -75.3096c6.00977 -6.00977 9.37988 -14.1396 9.37988 -22.6299v-114.97z" />
-    <glyph glyph-name="poll" unicode="&#xf681;" horiz-adv-x="448" 
-d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM160 80v128c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-128c0 -8.83984 7.16016 -16 16 -16h32
-c8.83984 0 16 7.16016 16 16zM256 80v224c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-224c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM352 80v64c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-64
-c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z" />
-    <glyph glyph-name="poll-h" unicode="&#xf682;" horiz-adv-x="448" 
-d="M448 16c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352zM112 256h128c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-128c-8.83984 0 -16 -7.16016 -16 -16v-32
-c0 -8.83984 7.16016 -16 16 -16zM112 160h224c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-224c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16zM112 64h64c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-64
-c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16z" />
-    <glyph glyph-name="pray" unicode="&#xf683;" horiz-adv-x="384" 
-d="M256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM225.37 150.25l-24.1504 28.7598l-34.7998 -64.8701l109.86 -109.859c25.4893 -25.4902 5.7998 -68.2803 -28.2803 -68.2803h-208c-22.0898 0 -40 17.9102 -40 40
-s17.9102 40 40 40h91.5596l-44.8096 34.8896c-42.8799 27.3799 -57.5898 80.1104 -34.1904 123.75l49.3701 92.0303c11.1201 20.6504 32.1807 34.4404 56.3701 36.9199c24.7803 2.58984 48.5605 -6.93945 64 -25.3301l38.9102 -46.3096l57.4404 47
-c17.1191 13.9697 42.3398 11.4902 56.3096 -5.62012c13.9697 -17.0898 11.4697 -42.2998 -5.62012 -56.2803l-88 -72.0195c-16.9697 -13.8701 -41.9102 -11.5 -55.9697 5.21973z" />
-    <glyph glyph-name="praying-hands" unicode="&#xf684;" horiz-adv-x="640" 
-d="M272 256.09c17.5996 0 32 -14.3994 32 -32v-128c0 -51.8896 -34.8398 -98.0801 -84.75 -112.35l-179.19 -46.6201c-2.64941 -0.69043 -5.36914 -1.03027 -8.05957 -1.03027c-23.4805 0 -32 21.1797 -32 32v96
-c0 0.00390625 -0.00488281 -0.000976562 -0.00488281 0.00292969c0 14.1221 9.1748 26.1182 21.8848 30.3477l90.1201 30.04v80.2295c0 18.9805 5.55957 37.3896 16.1201 53.2305l117.26 175.899c0.169922 0.270508 0.589844 0.25 0.790039 0.480469
-c9.58008 13.5098 27.8496 17.8799 42.2998 9.20996c15.1602 -9.10059 20.0605 -28.75 10.9707 -43.9102l-77.75 -129.59c-8.9707 -14.9199 -13.6904 -32 -13.6904 -49.3906v-76.5498c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v80c0 17.6006 14.4004 32 32 32z
-M618.12 94.3604c13.0703 -4.36035 21.8799 -16.5801 21.8799 -30.3506v-96c0 -10.8193 -8.51953 -32 -32 -32c-2.67969 0 -5.40039 0.339844 -8.05957 1.03027l-179.19 46.6201c-49.9102 14.2598 -84.75 60.4502 -84.75 112.34v128c0 17.5996 14.4004 32 32 32
-s32 -14.4004 32 -32v-80c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v76.5498c0 17.3906 -4.71973 34.4697 -13.6904 49.3906l-77.75 129.59c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102c14.4502 8.66992 32.7197 4.2998 42.2998 -9.20996
-c0.200195 -0.240234 0.610352 -0.210938 0.790039 -0.480469l117.26 -175.89c10.5605 -15.8408 16.1201 -34.25 16.1201 -53.2305v-80.2295z" />
-    <glyph glyph-name="quran" unicode="&#xf687;" horiz-adv-x="448" 
-d="M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320
-c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM301.08 302.18l-11.1904 -22.6494l-24.9893 -3.62988c-2.68066 -0.390625 -3.75 -3.66992 -1.81055 -5.56055l18.0898 -17.6299l-4.26953 -24.8896
-c-0.360352 -2.11035 1.30957 -3.82031 3.20996 -3.82031c0.5 0 1.01953 0.120117 1.51953 0.379883l22.3604 11.75l22.3604 -11.75c0.5 -0.259766 1.01953 -0.379883 1.51953 -0.379883c1.90039 0 3.57031 1.70996 3.20996 3.82031l-4.26953 24.8896l18.0898 17.6299
-c1.92969 1.89062 0.859375 5.16992 -1.81055 5.56055l-25 3.62988l-11.1797 22.6494c-0.599609 1.20996 -1.75977 1.82031 -2.91992 1.82031s-2.32031 -0.610352 -2.91992 -1.82031zM243.19 371.19c-63.5205 0 -115.19 -51.6709 -115.19 -115.19
-c0 -63.5098 51.6699 -115.19 115.18 -115.18c13.6006 0 27.1201 2.46973 40.1904 7.33984c2.67969 0.910156 4.62012 3.43945 4.62012 6.41992c0 3.63965 -2.87012 6.78027 -6.7998 6.78027c-0.650391 0 -3.10059 -0.209961 -4.13086 -0.209961
-c-52.3096 0 -94.8594 42.5596 -94.8594 94.8594c0 52.3105 42.5498 94.8604 94.8594 94.8604c1.04004 0 3.45996 -0.209961 4.13086 -0.209961c0.738281 -0.276367 1.54004 -0.429688 2.375 -0.429688c3.73926 0 6.77441 3.03516 6.77441 6.77441
-c0 3.7373 -3.0332 6.77246 -6.76953 6.77539c-13.1201 4.91992 -26.71 7.41016 -40.3799 7.41016zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z" />
-    <glyph glyph-name="search-dollar" unicode="&#xf688;" 
-d="M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44
-c-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979
-c0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM235.13 248.58c18.6006 -5.58008 31.5898 -23.4199 31.5898 -43.3896c0 -24.5303 -19.0498 -44.4404 -42.6797 -45.0703v-16.1201
-c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v16.29c-11.29 0.580078 -22.2705 4.51953 -31.3701 11.3496c-3.90039 2.93066 -4.09961 8.77051 -0.570312 12.1406l11.75 11.21c2.77051 2.63965 6.89062 2.75977 10.1309 0.729492
-c3.85938 -2.42969 8.25977 -3.71973 12.8193 -3.71973h28.1006c6.5 0 11.7998 5.91992 11.7998 13.1904c0 5.94922 -3.61035 11.1797 -8.77051 12.7295l-45.0098 13.5c-18.5898 5.58008 -31.5801 23.4199 -31.5801 43.3896c0 24.5205 19.0498 44.4404 42.6797 45.0703
-v16.1201c0 4.41992 3.58008 8 8 8h16c4.4209 0 8 -3.58008 8 -8v-16.29c11.29 -0.580078 22.2705 -4.51953 31.3701 -11.3496c3.90039 -2.93066 4.10059 -8.77051 0.570312 -12.1406l-11.75 -11.21c-2.76953 -2.63965 -6.88965 -2.75977 -10.1299 -0.729492
-c-3.86035 2.42969 -8.25977 3.71973 -12.8203 3.71973h-28.1094c-6.5 0 -11.8008 -5.91992 -11.8008 -13.1904c0 -5.94922 3.61035 -11.1797 8.77051 -12.7295z" />
-    <glyph glyph-name="search-location" unicode="&#xf689;" 
-d="M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44
-c-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979
-c0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM208.04 336c40.7803 0 73.8398 -33.0498 73.8398 -73.8301c0 -32.9697 -48.2598 -93.0498 -66.75 -114.86
-c-1.69531 -2.02832 -4.23926 -3.32031 -7.08691 -3.32031c-2.84863 0 -5.39746 1.29199 -7.09277 3.32031c-18.4902 21.8105 -66.75 81.9004 -66.75 114.86c0 40.7803 33.0596 73.8301 73.8398 73.8301zM208.04 240c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24
-s-24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z" />
-    <glyph glyph-name="socks" unicode="&#xf696;" 
-d="M214.66 136.99c-52.7402 -39.5605 -69.0498 -110.021 -39.2002 -165.4l-21.8604 -16.3896c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.6904 16.75 -83.9404 48.3301c-24.6494 42.6396 -10.1895 97.5 29.21 127.06l86.6504 64.6104v176h160
-v-160zM288 416v-32h-160v32c0 17.6699 14.3301 32 32 32h128c2.84961 0 5.40039 -0.919922 8.01953 -1.62012c-4.94922 -9.08008 -8.01953 -19.3301 -8.01953 -30.3799zM480 448c17.6699 0 32 -14.3301 32 -32v-32h-192v32c0 17.6699 14.3301 32 32 32h128zM320 176v176h192
-v-208c0 -41.8877 -20.0566 -79.043 -51.2002 -102.4l-115.2 -86.3994c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.1699 16.75 -83.4199 48.3301c-24.6504 42.6396 -10.1904 97.5 29.21 127.06z" />
-    <glyph glyph-name="square-root-alt" unicode="&#xf698;" horiz-adv-x="576" 
-d="M571.31 196.69c6.25 -6.25 6.25 -16.3809 0 -22.6309l-46.0596 -46.0596l46.0596 -46.0596c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6191 -22.6191c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-46.0596 46.0596l-46.0596 -46.0596c-6.25 -6.25 -16.3809 -6.25 -22.6309 0
-l-22.6191 22.6191c-6.25 6.25 -6.25 16.3809 0 22.6309l46.0596 46.0596l-46.0596 46.0596c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6191 22.6191c6.25 6.25 16.3809 6.25 22.6309 0l46.0596 -46.0596l46.0596 46.0596c6.25 6.25 16.3809 6.25 22.6309 0zM552 448
-c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-194.97l-97.8105 -374.52c-9.83984 -32.4805 -37.0098 -41.4805 -54.2793 -41.4805c-18.6406 0 -35.9502 8.5 -48.4404 28.2695l-88.8799 163.73h-43.6201c-13.25 0 -24 10.75 -24 24v48
-c0 13.2598 10.75 24 24 24h81.4697c12.0801 -0.00292969 22.584 -6.67871 28.0303 -16.5703l58.4102 -106.1l84.79 322.8c3.68945 14.0703 16.4102 23.8701 30.9502 23.8701h244.35z" />
-    <glyph glyph-name="star-and-crescent" unicode="&#xf699;" 
-d="M340.47 -18.3604c8.74023 0 15.1299 -6.96973 15.1299 -15.0596c0 -6.62012 -4.31934 -12.2402 -10.2793 -14.2598c-29.04 -10.8301 -59.0898 -16.3203 -89.3203 -16.3203c-141.16 0 -256 114.84 -256 256s114.84 256 256 256c30.3896 0 60.5801 -5.54004 89.75 -16.4805
-c6.91992 -2.59961 10.9297 -9.83984 9.46973 -17.0898c-1.41992 -7.04004 -7.62012 -12.0693 -14.75 -12.0693c-1.47949 0 -6.85938 0.459961 -9.17969 0.459961c-116.25 0 -210.82 -94.5703 -210.82 -210.82s94.5703 -210.82 210.82 -210.82
-c2.29004 0 7.72949 0.459961 9.17969 0.459961zM503.46 234.14c8.16992 -1.17969 11.4297 -11.2197 5.52051 -16.9893l-55.2705 -53.8701l13.0498 -76.0703c1.11035 -6.42969 -4.00977 -11.6602 -9.80957 -11.6602c-1.53027 0 -3.11035 0.370117 -4.64062 1.16992
-l-68.3096 35.9102l-68.3301 -35.9102c-1.53027 -0.80957 -3.11035 -1.16992 -4.63965 -1.16992c-5.7998 0 -10.9199 5.21973 -9.81055 11.6602l13.0498 76.0703l-55.2695 53.8701c-5.91016 5.76953 -2.65039 15.8096 5.51953 16.9893l76.3809 11.1006l34.1592 69.21
-c1.83008 3.7002 5.38086 5.5498 8.93066 5.5498s7.09961 -1.84961 8.92969 -5.5498l34.1602 -69.21z" />
-    <glyph glyph-name="star-of-david" unicode="&#xf69a;" horiz-adv-x="464" 
-d="M405.68 192l53.2207 -89.3896c14.4092 -24.21 -3.41016 -54.6104 -32.0107 -54.6104h-106.93l-55.9502 -93.9805c-7.14941 -12.0098 -19.5801 -18.0195 -32.0098 -18.0195s-24.8604 6.00977 -32.0098 18.0195l-55.9502 93.9805h-106.93
-c-28.6006 0 -46.4199 30.4004 -32.0107 54.6104l53.2207 89.3896l-53.2207 89.3896c-14.4092 24.21 3.41016 54.6104 32.0107 54.6104h106.93l55.9502 93.9805c7.14941 12.0098 19.5801 18.0195 32.0098 18.0195s24.8604 -6.00977 32.0098 -18.0195l55.9502 -93.9805h106.92
-c28.6006 0 46.4199 -30.4004 32.0098 -54.6104zM392.9 280h-39.6006l19.7998 -33.2598zM340.51 192l-52.3896 88h-112.25l-52.3799 -88l52.3896 -88h112.24zM232 374.28l-22.7803 -38.2803h45.5703zM71.0996 280l19.8008 -33.2598l19.7998 33.2598h-39.6006zM71.0996 104
-h39.6006l-19.7998 33.2598zM232 9.71973l22.7803 38.2803h-45.5703zM353.29 104h39.6104l-19.8105 33.2598z" />
-    <glyph glyph-name="synagogue" unicode="&#xf69b;" horiz-adv-x="640" 
-d="M70 251.49c5.30957 6.00977 14.6904 6.00977 20 0l38 -43.0703v-272.42h-128v226.07l0.00488281 0.0185547c0 6.75391 2.51758 12.9229 6.66504 17.6211zM633.33 179.71c4.2998 -4.87012 6.66992 -11.1396 6.66992 -17.6396v-226.07h-128v272.42l38 43.0703
-c5.30957 6.01953 14.6904 6.01953 20 0zM339.99 440.99l128 -102.4c7.58984 -6.07031 12.0098 -15.2695 12.0098 -24.9902v-377.6h-96v96c0 38.8701 -34.6602 69.6504 -74.75 63.1201c-31.4697 -5.12012 -53.25 -34.6699 -53.25 -66.5498v-92.5703h-96v377.6
-c0 10.1123 4.67773 19.123 12.0098 24.9902l128 102.4c11.6904 9.34961 28.29 9.34961 39.9805 0zM392.06 225.44l-19.1895 30.5596l19.2002 30.5703c1.97949 3.14941 -0.290039 7.23926 -4 7.23926h-38.9502l-25.1201 39.9805c-1.84961 2.9502 -6.15039 2.9502 -8 0
-l-25.1201 -40h-38.9395c-3.70996 0 -5.98047 -4.08984 -4 -7.24023l19.1992 -30.5596l-19.1992 -30.5605c-1.98047 -3.14941 0.279297 -7.23926 4 -7.23926h38.9395l25.1201 -39.9805c1.84961 -2.9502 6.15039 -2.9502 8 0l25.1201 39.9902h38.9395
-c3.70996 0 5.98047 4.08984 4 7.24023z" />
-    <glyph glyph-name="torah" unicode="&#xf6a0;" horiz-adv-x="640" 
-d="M320.05 81.5195l-17.7402 29.6406h35.46zM419.26 247.52l-18.3994 -30.8193l-18.46 30.8193h36.8594zM48 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM220.74 136.5l18.3896 30.8203
-l18.46 -30.8203h-36.8496zM382.45 136.5l18.4102 30.7998l18.4492 -30.7998h-36.8594zM128 -16v416h384v-416h-384zM194.77 262.13c-1.7627 -3.04492 -2.77148 -6.62402 -2.77148 -10.3936c0 -3.92969 1.09668 -7.60547 3.00195 -10.7363l29.3604 -49l-29.21 -48.8398
-c-1.91211 -3.17578 -3.02637 -6.91699 -3.02637 -10.8906c0 -11.6504 9.45898 -21.1094 21.1104 -21.1094h0.015625h59.5l29.25 -48.8799c3.61816 -6.12793 10.2754 -10.2207 17.9004 -10.2207h0.0996094c7.7373 0.0166016 14.4912 4.17676 18.1602 10.4004l29.1299 48.7002
-h59.4697c0.0078125 0 0.00195312 -0.0224609 0.00878906 -0.0224609c7.90723 0 14.8115 4.32812 18.4717 10.7422c1.75879 3.04199 2.76562 6.61621 2.76562 10.3799c0 3.93164 -1.09863 7.6084 -3.00586 10.7402l-29.3701 49l29.2402 48.8496
-c1.90723 3.17383 3.01758 6.91113 3.01758 10.8809c0 11.6553 -9.46191 21.1182 -21.1182 21.1191h-59.5195l-29.25 48.8604c-3.6123 6.12207 -10.2617 10.21 -17.8779 10.21h-0.0722656c-0.0117188 0 -0.00976562 0.0224609 -0.0214844 0.0224609
-c-7.74316 0 -14.5186 -4.17383 -18.1982 -10.3926l-29.1299 -48.71h-59.4502c-0.015625 0 -0.0166016 0.0224609 -0.0322266 0.0224609c-7.89844 0 -14.7939 -4.32422 -18.4482 -10.7324zM592 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32
-s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM320 302.47l17.6797 -29.6201h-35.46zM257.55 247.47l-18.3701 -30.7998l-18.4395 30.7998h36.8096zM287.13 136.47l-33.2295 55.5303l33.1699 55.5195h65.79l33.2295 -55.5195l-33.1699 -55.5303h-65.79z" />
-    <glyph glyph-name="torii-gate" unicode="&#xf6a1;" 
-d="M376.45 416c48.5918 0.00292969 94.8242 11.6396 135.55 32v-96c0 -17.6699 -14.3301 -32 -32 -32h-32v-64h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240
-h-256v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h48v64h-32c-17.6699 0 -32 14.3301 -32 32v96c40.7256 -20.3604 86.958 -31.9971 135.55 -32h240.9zM128 320v-64h96
-v64h-96zM384 256v64h-96v-64h96z" />
-    <glyph glyph-name="vihara" unicode="&#xf6a7;" horiz-adv-x="640" 
-d="M632.88 47.29c5.41992 -3.61035 7.7002 -9.62012 6.99023 -15.29c-0.620117 -5.00977 -3.56055 -9.75 -8.71973 -12.3301l-55.1504 -19.6699v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32
-c-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48l-55.1602 19.6699c-5.14941 2.58008 -8.09961 7.32031 -8.71973 12.3301c-0.700195 5.66016 1.58008 11.6699 7 15.29l88.8799 48.71v64
-l-55.1602 17.6904c-11.79 5.89941 -11.79 22.7197 0 28.6191l119.16 49.6904v64l-27.3096 16.3096c-7.7207 7.7207 -5.61035 20.7402 4.15918 25.6201l183.15 86.0703l183.15 -86.0801c9.76953 -4.87988 11.8799 -17.9004 4.15918 -25.6201l-27.3096 -16.2998v-64
-l119.16 -49.6904c11.79 -5.89941 11.79 -22.7197 0 -28.6191l-55.1602 -17.6904v-64zM224 320v-64h192v64h-192zM160 96h320v64h-320v-64z" />
-    <glyph glyph-name="volume-mute" unicode="&#xf6a9;" 
-d="M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM461.64 192l45.6406 -45.6396
-c6.2998 -6.30078 6.2998 -16.5205 0 -22.8203l-22.8203 -22.8203c-6.2998 -6.2998 -16.5195 -6.2998 -22.8203 0l-45.6396 45.6406l-45.6299 -45.6299c-6.2998 -6.30078 -16.5205 -6.30078 -22.8203 0l-22.8193 22.8193c-6.30078 6.2998 -6.30078 16.5205 0 22.8203
-l45.6299 45.6299l-45.6406 45.6396c-6.2998 6.30078 -6.2998 16.5205 0 22.8203l22.8203 22.8203c6.2998 6.2998 16.5195 6.2998 22.8203 0l45.6396 -45.6406l45.6396 45.6406c6.30078 6.2998 16.5205 6.2998 22.8203 0l22.8203 -22.8203
-c6.2998 -6.2998 6.2998 -16.5195 0 -22.8203z" />
-    <glyph glyph-name="yin-yang" unicode="&#xf6ad;" horiz-adv-x="496" 
-d="M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM248 192c53.0195 0 96 42.9805 96 96s-42.9805 96 -96 96
-c-106.04 0 -192 -85.96 -192 -192s85.96 -192 192 -192c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96zM248 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z" />
-    <glyph glyph-name="blender-phone" unicode="&#xf6b6;" horiz-adv-x="576" 
-d="M392 384c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46
-l-17.46 -64h-288v352h384l-17.46 -64h-166.54zM158.8 112.99c3.00977 -7.40039 0.200195 -15.8506 -6.68945 -20.0703l-39.4102 -24.1797c-12.5303 -7.68066 -31.7803 -6 -41.6504 4.7998c-94.0996 102.94 -94.6699 258.89 -2.09961 362.49
-c11.1396 12.4697 29.5596 15.8398 43.8896 7.0498l39.2803 -24.0996c6.87988 -4.2207 9.7002 -12.6807 6.67969 -20.0703l-25.7803 -63.2598c-2.7793 -6.80078 -9.80957 -10.9902 -17.2393 -10.2607l-45.0303 4.41992c-17.6504 -47.9395 -17.2803 -100.779 0 -147.72
-l45.0303 4.41992c7.43945 0.730469 14.46 -3.4502 17.2393 -10.2598zM480 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h288zM336 -32c17.6699 0 32 14.3301 32 32
-s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="book-dead" unicode="&#xf6b7;" horiz-adv-x="448" 
-d="M272 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16
-c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM240 392c-44.2002 0 -80 -28.7002 -80 -64c0 -20.9004 12.7002 -39.2002 32 -50.9004v-13.0996
-c0 -8.7998 7.2002 -16 16 -16h64c8.7998 0 16 7.2002 16 16v13.0996c19.2998 11.7002 32 30 32 50.9004c0 35.2998 -35.7998 64 -80 64zM124.8 224.7c-1.7002 -4.10059 0.100586 -8.7998 4.2002 -10.5l70.5 -30.2998l-70.4004 -30.1006
-c-4.09961 -1.7002 -5.89941 -6.39941 -4.19922 -10.5l6.2998 -14.7002c1.7002 -4.09961 6.39941 -5.89941 10.5 -4.19922l98.2998 42.1992l98.2998 -42.0996c4.10059 -1.7002 8.7998 0.0996094 10.5 4.2002l6.2998 14.7002c1.7002 4.09961 -0.0996094 8.7998 -4.19922 10.5
-l-70.3008 30.0996l70.3008 30.2002c4.09961 1.7002 5.89941 6.39941 4.19922 10.5l-6.2998 14.7002c-1.7002 4.09961 -6.39941 5.89941 -10.5 4.19922l-98.3994 -42.0996l-98.3008 42.0996c-4.09961 1.7002 -8.7998 -0.0996094 -10.5 -4.19922zM380.8 0v64h-284.8
-c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8zM208 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16z" />
-    <glyph glyph-name="campground" unicode="&#xf6bb;" horiz-adv-x="640" 
-d="M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h24.6797l239.79 330.25l-53.4102 73.5498c-5.19922 7.15039 -3.60938 17.1602 3.54004 22.3506l25.8809 18.7998
-c7.14941 5.18945 17.1592 3.59961 22.3496 -3.5498l41.1699 -56.7002l41.1602 56.6895c5.2002 7.16016 15.2002 8.74023 22.3496 3.55078l25.9004 -18.79c7.14941 -5.19043 8.72949 -15.2002 3.54004 -22.3506l-53.4102 -73.5498l239.78 -330.25h24.6797zM320 160
-l-116.36 -160h232.721z" />
-    <glyph glyph-name="cat" unicode="&#xf6be;" 
-d="M290.59 256c11.8906 -58.3496 63.6006 -102.4 125.41 -102.4c11.1104 0 21.71 1.87012 32 4.54004v-206.14c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v144l-128 -96h32c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16
-h-176c-35.2998 0 -64 28.7002 -64 64v256c0 17.6396 -14.3604 32 -32 32c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32c52.9404 0 96 -43.0596 96 -96v-85.9502c55.7695 83.9697 142.41 85.9502 162.59 85.9502zM448 352l64 64v-134.4c0 -53.0195 -42.9805 -96 -96 -96
-s-96 42.9805 -96 96v134.4l64 -64h64zM376 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM456 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z" />
-    <glyph glyph-name="chair" unicode="&#xf6c0;" horiz-adv-x="448" 
-d="M112 320v-128h-48v128c0 70.7002 57.2998 128 128 128h64c70.7002 0 128 -57.2998 128 -128v-128h-48v128c0 29.5 -16.2002 55 -40 68.9004v-196.9h-48v208h-48v-208h-48v196.9c-23.7998 -13.9004 -40 -39.4004 -40 -68.9004zM446.3 106.1
-c6.90039 -20.6992 -8.5 -42.0996 -30.2998 -42.0996v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112h-256v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112c-21.7998 0 -37.2002 21.4004 -30.4004 42.0996l10.7002 32
-c4.40039 13.1006 16.6006 21.9004 30.4004 21.9004h362.5c13.7998 0 26 -8.7998 30.3994 -21.9004z" />
-    <glyph glyph-name="cloud-moon" unicode="&#xf6c3;" horiz-adv-x="576" 
-d="M342.8 95.2998c40.9004 -3.5 73.2002 -37.3994 73.2002 -79.2998c0 -44.2002 -35.7998 -80 -80 -80h-240c-53 0 -96 43 -96 96c0 41.9004 27.0996 77.2002 64.5996 90.2998c-0.0996094 1.90039 -0.599609 3.7002 -0.599609 5.7002c0 53 43 96 96 96
-c36.2002 0 67.4004 -20.2998 83.7002 -49.9004c11.5 11 27.0996 17.9004 44.2998 17.9004c35.2998 0 64 -28.7002 64 -64c0 -12 -3.5 -23.0996 -9.2002 -32.7002zM565.3 149.6c8.2002 1.60059 14 -8 8.7002 -14.5c-33.4004 -41.0996 -82.7002 -67 -137.1 -70.3994
-c-11.1006 23.0996 -29.9004 41.7998 -53.5 52.5996c0.399414 3.5 0.599609 7.10059 0.599609 10.7002c0 52.9004 -43.0996 96 -96 96c-12.7002 0 -25 -2.5 -36.4004 -7.2002c-5.09961 5.2998 -10.7998 9.90039 -16.6992 14.2002c-1.10059 8.2002 -1.80078 16.5 -1.80078 25
-c0 106.1 86 192 191.9 192c11.7002 0 23.4004 -1.09961 35.0996 -3.2002c8.2002 -1.59961 10.1006 -12.5996 2.80078 -16.7002c-47.1006 -26.7998 -76.1006 -76.5996 -76.1006 -130.8c0 -94 85.4004 -165.399 178.5 -147.7z" />
-    <glyph glyph-name="cloud-sun" unicode="&#xf6c4;" horiz-adv-x="640" 
-d="M575.2 122.3c37.5996 -13 64.7998 -48.2998 64.7998 -90.3994c0 -53 -43 -96 -96 -96h-272c-53 0 -96 43 -96 96c0 50.5996 39.2998 91.5996 88.9004 95.2998c-0.200195 2.89941 -0.900391 5.7002 -0.900391 8.7002c0 61.8994 50.2002 112 112 112
-c45.4004 0 84.2998 -27.2002 101.9 -66c9.89941 6.19922 21.5 10 34.0996 10c35.2998 0 64 -28.7002 64 -64c0 -1.90039 -0.599609 -3.7002 -0.799805 -5.60059zM144.8 144.9c10.6006 -10.6006 22.9004 -18.6006 36 -24c-9.59961 -9.80078 -17.5 -21.1006 -23.5996 -33.5
-l-76.1006 -25.3008c-11.8994 -3.89941 -23.1992 7.30078 -19.1992 19.2002l29.2998 87.7998l-82.7998 41.4004c-11.2002 5.59961 -11.2002 21.5 0 27.0996l82.7998 41.5l-29.2998 87.8008c-3.90039 11.7998 7.39941 23.0996 19.1992 19.1992l87.9004 -29.2998
-l41.4004 82.7998c5.59961 11.2002 21.5996 11.2002 27.0996 0l41.5 -82.7998l87.7998 29.2998c11.9004 3.90039 23.2002 -7.2998 19.2002 -19.1992l-29.7998 -88.9004c-10.6006 -1.5 -20.9004 -3.7998 -30.7002 -7.5c-5.40039 11.7998 -12.5996 23 -22.2998 32.7002
-c-43.7002 43.7002 -114.7 43.7002 -158.4 0c-43.7002 -43.6006 -43.7002 -114.601 0 -158.3zM140 224.1c0 46.3008 37.7002 83.9004 84 83.9004c34 0 63.2998 -20.4004 76.5 -49.5c-36.4004 -22.5 -62 -60.7002 -67.4004 -105
-c-8.89941 -2.90039 -17.1992 -7 -25.1992 -11.7002c-38.6006 7.5 -67.9004 41.5 -67.9004 82.2998z" />
-    <glyph glyph-name="dice-d20" unicode="&#xf6cf;" horiz-adv-x="480" 
-d="M106.75 232.94l108.64 -190.101l-208.26 22.0703c-5.83008 0.639648 -9.00977 7.13965 -5.92969 12.1396zM7.41016 132.57c-2.12012 -3.44043 -7.41016 -1.94043 -7.41016 2.08984v162.81c0 3.11035 3.38965 5.03027 6.05957 3.43066l76.6406 -45.9805zM18.25 24.4004
-c-4.03027 1.97949 -2.25 8.06934 2.2002 7.56934l203.55 -22.2998v-65.6699c0 -5.83008 -6.0498 -9.70996 -11.3496 -7.25977zM99.4697 282.18l-81.5293 48.6904c-2.52051 1.51953 -2.60059 5.16016 -0.130859 6.78027l150.811 98.6094
-c7.18945 4.11035 15.1201 -4.08008 10.7803 -11.1396zM240 272h-109.21l95.5801 168.38c3.12988 5.08008 8.37988 7.62012 13.6299 7.62012s10.5 -2.54004 13.6299 -7.62012l95.5801 -168.38h-109.21zM473.94 300.9c2.66992 1.59961 6.05957 -0.320312 6.05957 -3.43066
-v-162.81c0 -4.04004 -5.2998 -5.54004 -7.41016 -2.10059l-75.29 122.351zM380.53 282.18l-79.9307 142.94c-4.33984 7.05957 3.59082 15.25 10.7803 11.1396l150.811 -98.5996c2.46973 -1.62012 2.39941 -5.25977 -0.130859 -6.78027zM459.55 31.9697
-c4.4502 0.5 6.23047 -5.58984 2.2002 -7.55957l-194.4 -87.6602c-5.2998 -2.4502 -11.3496 1.41992 -11.3496 7.25977v65.6699zM373.25 232.94l105.56 -155.891c3.08008 -5 -0.0996094 -11.4902 -5.92969 -12.1396l-208.26 -22.0703zM240 240h100.43l-100.43 -175.75
-l-100.43 175.75h100.43z" />
-    <glyph glyph-name="dice-d6" unicode="&#xf6d1;" horiz-adv-x="448" 
-d="M422.19 338.05c5.3291 -3.24023 5.2998 -11.2695 -0.0507812 -14.46l-198.14 -118.14l-198.13 118.14c-5.35059 3.19043 -5.37988 11.2305 -0.0605469 14.46l165.971 100.88c19.9102 12.1006 44.5195 12.1006 64.4297 0zM436.03 293.42
-c5.33008 3.17969 11.9697 -0.839844 11.9697 -7.25v-197.7c0 -23.7598 -12.1104 -45.7393 -31.79 -57.7002l-152.16 -92.4795c-10.6602 -6.48047 -24.0498 1.5498 -24.0498 14.4297v223.82zM0 286.17c0 6.41016 6.63965 10.4297 11.9697 7.25l196.03 -116.88v-223.81
-c0 -12.8906 -13.3799 -20.9102 -24.0498 -14.4307l-152.16 92.4697c-19.6797 11.9609 -31.79 33.9307 -31.79 57.7002v197.7z" />
-    <glyph glyph-name="dog" unicode="&#xf6d3;" horiz-adv-x="576" 
-d="M298.06 224l149.94 -53.5498v-218.45c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v112h-160v-112c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v213.91c-37.1602 13.25 -64 48.4297 -64 90.0898
-c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32c0.0332031 -17.6455 14.3545 -31.9668 32 -32h170.06zM544 336v-32c0 -35.3223 -28.6777 -64 -64 -64h-32v-35.5801l-128 45.71v149.87c0 14.25 17.2197 21.3896 27.3096 11.3096l27.2803 -27.3096h53.6299
-c10.9102 0 23.75 -7.91992 28.6201 -17.6904l7.16016 -14.3096h64c8.83105 0 16 -7.16895 16 -16zM432 336c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16s7.16895 -16 16 -16s16 7.16895 16 16z" />
-    <glyph glyph-name="dragon" unicode="&#xf6d5;" horiz-adv-x="640" 
-d="M18.3203 192.22c-15.96 -2.2793 -24.8906 17.8105 -12.5107 28.1406l117.4 116.34c21.7705 18.5996 53.2402 20.4697 77.0596 4.58984l119.73 -87.5996v-42.2705c0 -28.9102 5.29004 -56.9795 14.7305 -83.3799h-222.7c-14.25 0 -21.3906 17.2295 -11.3105 27.3096
-l91.2803 68.6904zM575.19 158.12c41.9092 -20.96 67.1592 -64.0801 64.6396 -111.36c-3.37988 -63.2002 -59.7002 -110.77 -122.99 -110.76h-499.08c-9.80957 0 -17.7598 8 -17.7598 17.7998c0 8.32031 5.78027 15.5303 13.9004 17.3301
-c89.54 19.9004 238.51 54.1006 434.1 60.9102c-59.9697 39.9902 -96 107.3 -96 179.38v108.62l-59.5801 24.8496c-5.90039 2.9502 -5.90039 11.3604 0 14.3105l59.5801 24.8398l-61.6396 50.3496c-5.04004 5.04004 -1.4707 13.6104 5.65918 13.6104h237.45
-c10.0703 0 19.5498 -4.7002 25.6006 -12.7598l74.5293 -99.3799c4.00781 -5.3457 6.37988 -12.042 6.37988 -19.2305c0 -5.12988 -1.20996 -9.98047 -3.35938 -14.2803l-14.3105 -28.6191c-5.25 -10.502 -16.0889 -17.6895 -28.6191 -17.6904h-30.9707
-c-8.48926 0 -16.6299 3.37012 -22.6299 9.37012l-28.0898 22.6299h-64v-36.6904c0.00195312 -18.791 10.7812 -35.0459 26.5303 -42.9199zM489.18 381.75c-4.33008 -17.1396 8.56055 -28.96 21.5205 -29.6699c11.6602 -0.629883 21.3799 7.34961 24.1299 18.2598z" />
-    <glyph glyph-name="drumstick-bite" unicode="&#xf6d7;" 
-d="M462.8 398.43c34.3203 -34.2793 50.4307 -79.5996 49.1299 -124.56c-41.9795 22.6602 -94.3594 17.5596 -128.739 -16.7998c-40.8809 -40.8398 -40.6904 -107.181 -1.05078 -151.07c-18.9736 -6.45312 -39.3203 -10.0049 -60.4648 -10.0049
-c-0.475586 0 -0.950195 0.000976562 -1.4248 0.00488281h-85.8896l-40.6104 -40.5596c-9.71973 -9.75 -11.0898 -24.0205 -6 -36.75c2.77051 -6.92383 4.3125 -14.5234 4.3125 -22.4316c0 -33.3086 -27.042 -60.3506 -60.3496 -60.3506
-c-16.7041 0 -31.8311 6.80078 -42.7627 17.7822c-15.2803 15.2695 -19.6006 36.5 -15.1006 56.0996c-19.6094 -4.49023 -40.8496 -0.179688 -56.1191 15.0703c-10.9395 10.9229 -17.668 26.002 -17.668 42.666c0 33.2979 27.0332 60.3301 60.3301 60.3301
-c7.88965 0 15.4277 -1.51758 22.3379 -4.27637c12.7793 -5.07031 27.0791 -3.69043 36.7793 6l40.6201 40.5898v85.8301c0 64 27.6904 107 63.1699 142.43c30.666 30.6338 73.0479 49.5889 119.774 49.5889s89.0605 -18.9551 119.726 -49.5889z" />
-    <glyph glyph-name="dungeon" unicode="&#xf6d9;" 
-d="M128.73 252.68c6.58984 -4.12012 8.89941 -12.2393 6.33984 -19.5801c-3 -8.60938 -5.15039 -17.6094 -6.24023 -26.9395c-0.929688 -7.91016 -7.0498 -14.1602 -15.0098 -14.1602h-97.1299c-9.10059 0 -16.7402 7.62988 -16.1504 16.7197
-c2.0293 31.5166 9.95215 61.9062 22.4502 89.2705c3.93945 8.62012 14.8896 11.4697 22.9297 6.4502zM319.03 440c9.16992 -2.36035 13.9102 -12.5996 10.3896 -21.3896l-37.4697 -104.03c-2.28027 -6.34961 -8.2998 -10.5801 -15.0498 -10.5801h-41.8008
-c-6.92773 0.00292969 -12.8281 4.41211 -15.0498 10.5801l-37.4697 104.03c-3.52051 8.79004 1.21973 19.04 10.3896 21.3896c20.1699 5.17969 41.2607 8 63.0303 8s42.8604 -2.82031 63.0303 -8zM112 160c8.83984 0 16 -7.16016 16 -16v-64
-c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM112 32c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM189.31 315.67
-c2.85059 -7.12012 -0.0195312 -14.8799 -6.2998 -19.29c-6 -4.2002 -11.6094 -8.89941 -16.79 -14.0498c-5.4502 -5.41016 -13.5996 -6.86035 -20.1094 -2.79004l-82.9307 51.8301c-8.06934 5.04004 -10.2793 16.2002 -4.21973 23.5195
-c20.0459 24.1963 44.0801 44.3428 71.6104 59.8906c8.29004 4.67969 18.8896 0.519531 22.4199 -8.31055zM398.18 192c-7.95996 0 -14.0801 6.25 -15.0098 14.1602c-1.08984 9.32031 -3.22949 18.3301 -6.24023 26.9395c-2.55957 7.34082 -0.25 15.46 6.33984 19.5801
-l82.8105 51.7607c8.04004 5.01953 18.9902 2.16992 22.9297 -6.4502c12.499 -27.3633 20.4219 -57.7529 22.4502 -89.2705c0.589844 -9.08984 -7.0498 -16.7197 -16.1504 -16.7197h-97.1299zM453.03 354.89c6.06934 -7.31934 3.84961 -18.4795 -4.2207 -23.5098
-l-82.9297 -51.8301c-6.50977 -4.06934 -14.6699 -2.62012 -20.1104 2.79004c-5.17969 5.15039 -10.7891 9.85059 -16.7891 14.0498c-6.28027 4.40039 -9.15039 12.1602 -6.30078 19.2803l36.3203 90.7998c3.54004 8.83008 14.1396 12.9902 22.4199 8.31055
-c27.5303 -15.5479 51.5645 -35.6943 71.6104 -59.8906zM496 160c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM496 32c8.83984 0 16 -7.16016 16 -16v-64
-c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM240 270.38c5.23047 0.889648 10.5195 1.62012 16 1.62012s10.7695 -0.730469 16 -1.62012v-294.38c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8
-v294.38zM176 228.87c8.16016 12.2998 19.2197 22.3203 32 29.7695v-282.64c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v252.87zM304 258.64c12.7803 -7.44922 23.8398 -17.4697 32 -29.7695v-252.87c0 -4.41992 -3.58008 -8 -8 -8h-16
-c-4.41992 0 -8 3.58008 -8 8v282.64z" />
-    <glyph glyph-name="file-csv" unicode="&#xf6dd;" horiz-adv-x="384" 
-d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM128 168v16c0 4.41992 -3.58008 8 -8 8h-8c-26.5098 0 -48 -21.4902 -48 -48v-32
-c0 -26.5098 21.4902 -48 48 -48h8c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-8c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h8c4.41992 0 8 3.58008 8 8zM172.27 64c23.3906 0 42.4004 17.3301 42.3906 38.6201
-c0 10.6602 -4.86035 20.9199 -13.3301 28.1396l-21.8896 18.7705c-1.37012 1.17969 -2.12012 2.54004 -2.12012 3.83984c0 3.12012 4.45996 6.62012 10.4102 6.62012h12.2695c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-12.25
-c-23.3896 0 -42.4102 -17.3203 -42.4102 -38.6201c0 -10.6602 4.86035 -20.9199 13.3301 -28.1396l21.8896 -18.7705c1.37012 -1.17969 2.12012 -2.54004 2.12012 -3.83984c0 -3.12012 -4.45996 -6.62012 -10.4102 -6.62012h-12.2695c-4.41992 0 -8 -3.58008 -8 -8v-16
-c0 -4.41992 3.58008 -8 8 -8h12.2695zM256 184c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -35.4805 12.8799 -68.8906 36.2803 -94.0898c3.01953 -3.25 7.26953 -5.11035 11.7197 -5.11035s8.7002 1.86035 11.7197 5.11035
-c23.4004 25.1992 36.2803 58.6094 36.2803 94.0898v20.7998c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -20.2705 -5.7002 -40.1807 -16 -56.8799c-10.2998 16.71 -16 36.6094 -16 56.8799v20.7998zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004
-v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z" />
-    <glyph glyph-name="fist-raised" unicode="&#xf6de;" horiz-adv-x="384" 
-d="M255.98 288h-48.0303c-5.62988 0 -10.9502 -1.15039 -15.9697 -2.92969v146.93c0 8.83984 7.15918 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144zM383.98 192.01l0.0195312 -88.2197c0 -26.4971 -10.7412 -50.5273 -28.1201 -67.9102l-35.9102 -35.9199v-63.96
-h-255.979v64l-26.5 26.5098c-24.0098 24.0098 -37.4902 56.5605 -37.4902 90.5098v77.9307c5.03027 -1.7998 10.3604 -2.9502 16 -2.9502h32c12.3301 0 23.4805 4.80957 32 12.4902c8.50977 -7.66992 19.6602 -12.4805 32 -12.4805h32
-c7.91016 0 15.2803 2.11035 21.8701 5.52051c7.46973 -16.3301 21.5996 -28.9404 38.8701 -34.4502c-17.1104 -14.8203 -31.5801 -34.4805 -47.3105 -58.0801l-6.30957 -9.46973c-0.845703 -1.26855 -1.35156 -2.79395 -1.35156 -4.43164
-c0 -2.77734 1.41895 -5.22559 3.57129 -6.6582l13.3105 -8.88086c1.26758 -0.845703 2.79395 -1.35156 4.43066 -1.35156c2.77734 0 5.22559 1.41992 6.65918 3.57227l6.30957 9.46973c31.8906 47.8398 51.5303 70.2695 96.0498 72.5498
-c4.29004 0.219727 7.88086 3.70996 7.88086 8v16.2002c0 4.41992 -3.52051 8 -13.2002 8h-35.2607c-26.2695 0 -47.5693 21.3203 -47.5693 47.5898v0.560547c0 8.7793 7.12012 15.8496 15.8994 15.8496h112.141c35.3301 0 63.9795 -28.6504 63.9902 -63.9902zM351.97 282.1
-c-10.0596 3.59082 -20.7197 5.90039 -32 5.90039h-32v112c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-117.9zM16 224c-8.83984 0 -16 7.16016 -16 16v128c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-128
-c0 -8.83984 -7.16016 -16 -16 -16h-32zM111.99 224c-8.83984 0 -16 7.16016 -16 16v160c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-160c0 -8.83984 -7.16016 -16 -16 -16h-32z" />
-    <glyph glyph-name="ghost" unicode="&#xf6e2;" horiz-adv-x="384" 
-d="M186.1 447.91c108.73 3.25977 197.9 -83.9102 197.9 -191.91v-271.97c0 -14.25 -17.2305 -21.3906 -27.3096 -11.3105l-24.9209 18.5303c-6.65918 4.95996 -16 3.99023 -21.5098 -2.20996l-42.9502 -48.3496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-40.7197 45.8496
-c-6.36035 7.16992 -17.5498 7.16992 -23.9199 0l-40.7197 -45.8496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-42.9502 48.3496c-5.50977 6.2002 -14.8506 7.16016 -21.5098 2.20996l-24.9209 -18.5303c-10.0791 -10.0801 -27.3096 -2.9502 -27.3096 11.3105v263.92
-c0 105.13 81.0098 196.81 186.1 199.96zM128 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM256 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" />
-    <glyph glyph-name="hammer" unicode="&#xf6e3;" horiz-adv-x="576" 
-d="M571.31 254.06c6.25 -6.25 6.25 -16.3799 0.0205078 -22.6191l-90.5098 -90.5107c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6309 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l11.3105 11.3096l-28.9004 28.9004
-c-21.3096 -5.63086 -44.8994 -0.360352 -61.6094 16.3496l-49.1406 49.1396c-12.0098 12 -18.75 28.2803 -18.75 45.25v18.75l-90.5098 45.25c62.4902 62.4805 163.8 62.4805 226.28 0l45.25 -45.25c16.71 -16.71 21.9795 -40.2998 16.3496 -61.6094l28.9004 -28.9004
-l11.3096 11.3105c6.25 6.25 16.3799 6.25 22.6299 0zM284.59 269.26l49.1406 -49.1396c3.53906 -3.54004 7.47949 -6.5 11.4395 -9.41016l-238.13 -255.07c-23.8799 -25.5801 -64.2002 -26.2695 -88.9297 -1.5293c-24.7305 24.7393 -24.04 65.0498 1.5293 88.9297
-l255.101 238.17c3.00977 -4.16016 6.14941 -8.25 9.84961 -11.9502z" />
-    <glyph glyph-name="hanukiah" unicode="&#xf6e6;" horiz-adv-x="640" 
-d="M232 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM168 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM392 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM456 288h16
-c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM544 280v-120h-32v120c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8zM104 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM624 288c8.83984 0 16 -7.16016 16 -16
-v-112c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96v112c0 8.83984 7.16016 16 16 16
-h32c8.83984 0 16 -7.16016 16 -16v-112c0 -17.6699 14.3301 -32 32 -32h192v192c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-192h192c17.6699 0 32 14.3301 32 32v112c0 8.83984 7.16016 16 16 16h32zM608 320c-13.25 0 -24 11.9502 -24 26.6699
-s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM32 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM320 368
-c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM112 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z
-M176 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM240 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301
-c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM400 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM464 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301
-s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM528 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z" />
-    <glyph glyph-name="hat-wizard" unicode="&#xf6e8;" 
-d="M496 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480zM192 64l16 -32h-144l110.96 249.66c11.1211 25.0264 29.8379 45.6514 53.46 59.1494l187.58 107.19l-56.2998 -168.92
-c-2.12207 -6.35938 -3.25781 -13.2188 -3.25781 -20.2881c0 -8.93164 1.83496 -17.4375 5.14746 -25.1621l86.4102 -201.63h-208l16 32l64 32l-64 32l-32 64l-32 -64l-64 -32zM256 288l-32 -16l32 -16l16 -32l16 32l32 16l-32 16l-16 32z" />
-    <glyph glyph-name="hiking" unicode="&#xf6ec;" horiz-adv-x="384" 
-d="M80.9502 -24.2305l34.5596 138.221l52.7803 -52.7803l-25.2402 -100.97c-3.64941 -14.5303 -16.6895 -24.2305 -31.0195 -24.2305c-2.58008 0 -5.19043 0.290039 -7.7998 0.950195c-17.1406 4.28027 -27.5605 21.6504 -23.2803 38.8096zM95.8398 171.89
-c-2.18945 -8.41992 -11.0801 -13.54 -19.8701 -11.4395l-63.5596 15.25c-8.78027 2.10938 -14.1104 10.6396 -11.9199 19.0596l25.2695 98.1299c10.9707 42.1006 55.4404 67.6904 99.3203 57.1699c8.78027 -2.10938 14.1104 -10.6396 11.9199 -19.0596zM368 288
-c8.83984 0 16 -7.16016 15.9902 -16v-320.01c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.48047 0 -16.6201 3.37988 -22.6201 9.37988l-22.4297 22.4297l-19.8906 -79.5693
-c-0.129883 -0.520508 -0.469727 -0.910156 -0.620117 -1.41016l46.8203 -46.8203c12.0898 -12.0898 18.75 -28.1602 18.75 -45.25v-82.75c0 -17.6699 -14.3301 -32 -32 -32s-32 14.3301 -32 32v82.75l-86.6201 86.6201c-5.79297 5.79395 -9.37109 13.7861 -9.37109 22.6191
-c0 2.67969 0.330078 5.28223 0.951172 7.77051l26.9199 107.721c6.56055 26.2197 30.0098 44.5195 57.0303 44.5195c15.7002 0 30.4697 -6.11035 41.5596 -17.2197l46.7803 -46.7803h34.75v16c0 8.83984 7.16016 16 16 16h16zM240 352c-26.5098 0 -48 21.4902 -48 48
-s21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48z" />
-    <glyph glyph-name="hippo" unicode="&#xf6ed;" horiz-adv-x="640" 
-d="M581.12 351.8c34.0898 -0.189453 58.8799 -33.6895 58.8799 -67.7803v-92.0195c0 -17.6699 -14.3301 -32 -32 -32v-32c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v32h-128v-176c0 -8.83984 -7.16016 -16 -16 -16h-64
-c-8.83984 0 -16 7.16016 -16 16v70.79c-32.3496 -14.3604 -70.7197 -22.79 -112 -22.79s-79.6504 8.42969 -112 22.79v-70.79c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v240c0 88.3604 85.96 160 192 160
-c49.2402 0 94.0098 -15.5801 128 -40.9805v48.9805c0 13.2598 10.75 24 24 24h16c13.25 0 24 -10.7402 24 -24v-13.8799c10.0498 3.58008 20.7197 5.87988 32 5.87988c39.8301 0 73.9805 -24.2695 88.5195 -58.8203c24.1006 9.04004 48.9307 26.7705 76.6006 26.6201z
-M448 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z" />
-    <glyph glyph-name="horse" unicode="&#xf6f0;" horiz-adv-x="576" 
-d="M575.92 371.4l0.0605469 -77.71c0 -0.0107422 0.0185547 -0.00683594 0.0185547 -0.0166016c0 -13.4707 -8.34277 -25.0088 -20.1387 -29.7236l-32.5508 -13.0205c-15.4395 -6.17969 -33.04 0.5 -40.4893 15.3701l-18.9004 37.7002l-16 7.11035v-102.471
-c0.00976562 -0.219727 0.0800781 -0.419922 0.0800781 -0.639648c0 -30.4697 -12.2598 -58.0303 -32 -78.2197v-177.78c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v150.4l-133.97 22.3301l-23.8398 -63.5908l26.3096 -105.26
-c2.53027 -10.0996 -5.11035 -19.8799 -15.5195 -19.8799h-65.9609c-7.48633 0 -13.7783 5.16602 -15.5098 12.1201l-24.8496 99.4102c-1.24707 4.98047 -1.8916 10.1924 -1.8916 15.5576c0 7.8916 1.43262 15.4502 4.05176 22.4316l25.7197 68.6006
-c-18.7002 17.5195 -30.54 42.2402 -30.54 69.8799c0 2.62988 0.570312 5.09961 0.780273 7.67969c-9.91016 -7.29004 -16.7803 -18.46 -16.7803 -31.6797v-56c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v56c0 48.5303 39.4697 88 88 88v-1.11035
-c17.5996 20.1299 43.1602 33.1104 72 33.1104h159.92c0 70.6904 57.3105 128 128 128h119.98c5.05957 0 8.94922 -4.67969 7.92969 -9.63965c-2.67969 -13.1699 -11.1201 -23.8203 -22.1797 -30.6602c5.10938 -5.37988 9.90918 -10.4697 13.6895 -14.5
-c5.56055 -5.93066 8.57031 -13.6699 8.58008 -21.7998zM511.92 352c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z" />
-    <glyph glyph-name="house-damage" unicode="&#xf6f1;" horiz-adv-x="576" 
-d="M288 333.04l218.74 -192.94c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83984 -7.16016 -16 -16 -16h-176.19l-39.9199 55.25l104.11 64l-148.05 136.78l60.1602 -119.221l-104.11 -64l37.2305 -72.8096h-149.23c-8.83984 0 -16 7.16016 -16 16
-v184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM570.69 211.72c6.5791 -5.89941 7.11914 -16.0195 1.21973 -22.5898l-21.4004 -23.8203c-5.91016 -6.56934 -16.0293 -7.10938 -22.5996 -1.20996l-229.32 202.271c-6.0498 5.33008 -15.1201 5.33008 -21.1699 0
-l-229.32 -202.28c-6.58008 -5.91016 -16.6992 -5.35938 -22.5996 1.20996l-21.4004 23.8203c-5.90918 6.58008 -5.35938 16.6895 1.20996 22.5996l255.99 226.011c7.60059 6.85938 17.1406 10.2793 26.7002 10.2695s19.1201 -3.4502 26.75 -10.3096l101.25 -89.3809v51.6904
-c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-136.45z" />
-    <glyph glyph-name="hryvnia" unicode="&#xf6f2;" horiz-adv-x="384" 
-d="M368 208h-99.7002l-34.6699 -32h134.37c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-203.7l-29.4902 -27.2197c-4.3291 -4 -6.80957 -9.66992 -6.80957 -15.5801c0 -11.6807 9.50977 -21.2002 21.2002 -21.2002h83.6299
-c5.83301 0 11.1992 2.09375 15.3604 5.55957l11.75 9.80078c10.1895 8.48926 25.3193 7.12012 33.8096 -3.07031l20.4902 -24.5898c8.49023 -10.1807 7.10938 -25.3105 -3.07031 -33.7998l-11.7695 -9.81055c-18.6807 -15.5596 -42.2207 -24.0898 -66.54 -24.0898h-78.8203
-c-37.1396 0 -73.3799 17.8496 -92.0498 49.9502c-17.8701 30.7197 -17.54 65.4199 -4.12988 94.0498h-41.8604c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h99.7002l34.6699 32h-134.37c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16
-h203.7l29.4902 27.21c4.3291 4 6.80957 9.66992 6.80957 15.5801c0 11.6797 -9.50977 21.2002 -21.2002 21.2002h-83.6201c-5.62012 0 -11.0693 -1.9707 -15.3896 -5.57031l-11.7305 -9.78027c-10.1895 -8.48926 -25.3193 -7.12012 -33.8096 3.07031l-20.4902 24.5898
-c-8.49023 10.1807 -7.10938 25.3105 3.07031 33.7998l11.7695 9.81055c18.6807 15.5596 42.2207 24.0898 66.54 24.0898h78.8203c37.1396 0 73.3799 -17.8398 92.0498 -49.9502c17.8701 -30.7197 17.54 -65.4199 4.12988 -94.0498h41.8604c8.83984 0 16 -7.16016 16 -16v-32
-c0 -8.83984 -7.16016 -16 -16 -16z" />
-    <glyph glyph-name="mask" unicode="&#xf6fa;" horiz-adv-x="640" 
-d="M320.67 384c449.09 0 348.32 -384 158.46 -384c-39.8994 0 -77.4697 20.6904 -101.41 55.8604l-25.7295 37.79c-15.6602 22.9893 -46.9707 22.9893 -62.6299 0l-25.7305 -37.79c-23.9502 -35.1699 -61.5195 -55.8604 -101.42 -55.8604c-199.11 0 -284.14 384 158.46 384z
-M184 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498c-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299
-c12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508zM456 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498
-c-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299c12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508z" />
-    <glyph glyph-name="mountain" unicode="&#xf6fc;" horiz-adv-x="640" 
-d="M634.92 -14.7002c3.2041 -4.98145 5.06348 -10.9756 5.06348 -17.334c0 -5.53906 -1.41113 -10.751 -3.89355 -15.2959c-5.60938 -10.2803 -16.3799 -16.6699 -28.0898 -16.6699h-576c-12.1191 0 -22.6582 6.7168 -28.0898 16.6602
-c-2.48242 4.5459 -3.89355 9.82715 -3.89355 15.3672c0 6.36035 1.85938 12.2891 5.06348 17.2725l288 448c5.88965 9.16016 16.0303 14.7002 26.9199 14.7002s21.0303 -5.54004 26.9199 -14.7002zM320 356.82l-102.06 -158.761l38.0596 -38.0596l64 64h85.3896z" />
-    <glyph glyph-name="network-wired" unicode="&#xf6ff;" horiz-adv-x="640" 
-d="M640 184c0 -8.83984 -7.16016 -16 -16 -16h-104v-40h56c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-304v-40h56c17.6699 0 32 -14.3301 32 -32v-128
-c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-104c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h280v40h-72c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h192
-c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-72v-40h280c8.83984 0 16 -7.16016 16 -16v-16zM256 320h128v64h-128v-64zM192 0v64h-96v-64h96zM544 0v64h-96v-64h96z" />
-    <glyph glyph-name="otter" unicode="&#xf700;" horiz-adv-x="640" 
-d="M608 416c17.6699 0 32 -14.3301 32 -32v-32c0 -53.0195 -42.9805 -96 -96 -96h-22.8604l-92.4697 -49.79l55.1104 -110.21h28.2197c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-80l-74.5098 144.5l-149.49 -80.5h64
-c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83008 0 -16 -7.16992 -16 -16s7.16992 -16 16 -16h112c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32h-108.47c-39.3799 0 -75.5205 26.9004 -82.2803 65.7002
-c-4.91016 28.1201 5 54.2197 23.1904 71.7998c23.5596 22.75 39.5596 52.1396 39.5596 84.8896v1.61035c0 106.04 85.96 192 192 192h56l153.25 87.5703c9.66992 5.51953 20.6104 8.42969 31.75 8.42969h20.4902c0.00390625 0 0.0166016 0.00878906 0.0214844 0.00878906
-c17.6602 0 33.6582 -7.17188 45.2383 -18.7588l13.25 -13.25h32zM512 400c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16s16 7.16016 16 16s-7.16016 16 -16 16zM544 304c20.8301 0 38.4297 13.4199 45.0498 32h-77.0498l-118.57 -59.29l13.7705 -27.5498
-l101.84 54.8398h34.96z" />
-    <glyph glyph-name="ring" unicode="&#xf70b;" 
-d="M256 384c145.94 0 256 -61.9102 256 -144v-98.1299c0 -78.3506 -114.62 -141.87 -256 -141.87s-256 63.5195 -256 141.87v98.1299c0 82.0898 110.06 144 256 144zM256 320c-106.04 0 -192 -35.8203 -192 -80c0 -9.25977 3.96973 -18.1201 10.9102 -26.3896
-c44.9395 26.1797 108.859 42.3896 181.09 42.3896s136.15 -16.21 181.09 -42.3896c6.94043 8.26953 10.9102 17.1299 10.9102 26.3896c0 44.1797 -85.96 80 -192 80zM120.43 183.36c34.7305 -14.4307 82.6406 -23.3604 135.57 -23.3604s100.84 8.92969 135.57 23.3604
-c-34.6104 14.71 -81.21 24.6396 -135.57 24.6396s-100.96 -9.92969 -135.57 -24.6396z" />
-    <glyph glyph-name="running" unicode="&#xf70c;" horiz-adv-x="416" 
-d="M272 352c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48zM113.69 130.53c7.92969 -17.2402 20.6699 -32.3799 37.9893 -42.6104l10.6699 -6.2998l-8.79004 -20.5205c-7.5293 -17.6494 -24.8594 -29.0898 -44.1094 -29.0898
-h-77.4502c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32h66.8896zM384 224.01c17.6699 0 32 -14.3193 32 -31.9902c0 -17.6699 -14.3301 -32 -32 -32h-53.9902c-18.1895 0 -35.1094 10.5508 -43.1094 26.8906l-20.2705 41.4297l-31.3096 -78.2803l61.2393 -36.1396
-c18.75 -11.3096 27.5508 -33.6201 21.6406 -54.3896l-31.6406 -101.061c-4.29004 -13.6797 -16.9092 -22.4502 -30.5195 -22.4502c-3.16992 0 -6.38965 0.480469 -9.58008 1.48047c-16.8604 5.28027 -26.25 23.2305 -20.9697 40.0898l27.4697 87.7305l-84.9795 50.1699
-c-27.6104 16.2998 -38.9209 50.8301 -26.3008 80.3096l37.46 87.3906l-14.6992 4.36914c-7.83008 1.86035 -17.6006 -0.25 -25.2705 -6.13965l-39.6895 -30.4102c-14.0205 -10.7402 -34.0908 -8.10938 -44.8604 5.91992c-10.7705 14.0303 -8.11035 34.1104 5.91992 44.8604
-l39.6699 30.4102c23.0703 17.6895 52.54 23.9395 80.8398 17.1396l71.0801 -21.1396c26.3301 -6.70996 49.2803 -25.3906 61.7803 -50.9404l26.0596 -53.25h44.0303z" />
-    <glyph glyph-name="scroll" unicode="&#xf70e;" horiz-adv-x="640" 
-d="M48 448c26.4697 0 48 -21.5303 48 -48v-80h-80c-8.83984 0 -16 7.16016 -16 16v64c0 26.4697 21.5303 48 48 48zM256 35.4297c0 -31.8896 -21.7803 -61.4297 -53.25 -66.5498c-40.0996 -6.53027 -74.75 24.25 -74.75 63.1201v368c0 18.0801 -6.25977 34.5898 -16.4102 48
-h336.41c52.9404 0 96 -43.0596 96 -96v-256h-288v-60.5703zM288 64h336c8.83984 0 16 -7.16016 16 -16c0 -61.8604 -50.1396 -112 -112 -112h-336c52.9404 0 96 43.0703 96 96v32z" />
-    <glyph glyph-name="skull-crossbones" unicode="&#xf714;" horiz-adv-x="448" 
-d="M439.15 -5.05957c7.89941 -3.9502 11.1094 -13.5605 7.15918 -21.4707l-14.3096 -28.6299c-3.95996 -7.89941 -13.5703 -11.0996 -21.4697 -7.14941l-186.53 90.7197l-186.52 -90.7197c-7.91016 -3.95996 -17.5205 -0.75 -21.4707 7.14941l-14.3096 28.6299
-c-3.95996 7.91016 -0.75 17.5205 7.14941 21.4707l141.98 69.0596l-141.99 69.0596c-7.89941 3.9502 -11.0996 13.5605 -7.14941 21.46l14.3096 28.6309c3.95996 7.90918 13.5703 11.1094 21.4697 7.15918l186.53 -90.7197l186.53 90.7197
-c7.91016 3.9502 17.5195 0.740234 21.4697 -7.15918l14.3096 -28.6309c3.95996 -7.89941 0.75 -17.5098 -7.14941 -21.46l-141.99 -69.0596zM150 210.72c-41.7803 22.4102 -70 62.75 -70 109.28c0 70.6904 64.4697 128 144 128s144 -57.3096 144 -128
-c0 -46.5303 -28.2197 -86.8701 -70 -109.28l5.5 -25.8701c2.66992 -12.6191 -5.41992 -24.8496 -16.4502 -24.8496h-126.08c-11.0293 0 -19.1201 12.2305 -16.4502 24.8496zM280 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32
-s-14.3496 32 -32 32zM168 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32s-14.3496 32 -32 32z" />
-    <glyph glyph-name="slash" unicode="&#xf715;" horiz-adv-x="640" 
-d="M594.53 -60.6299l-588.351 454.729c-6.96973 5.41992 -8.22949 15.4707 -2.80957 22.4502l19.6396 25.2705c5.41992 6.97949 15.4805 8.23926 22.46 2.80957l588.351 -454.729c6.96973 -5.41992 8.22949 -15.4707 2.80957 -22.4502l-19.6396 -25.2705
-c-5.41992 -6.97949 -15.4805 -8.22949 -22.46 -2.80957z" />
-    <glyph glyph-name="spider" unicode="&#xf717;" horiz-adv-x="576" 
-d="M151.17 280.65l-27.1504 54.2998c-2.14551 4.29883 -3.3623 9.18359 -3.3623 14.3115c0 3.53516 0.573242 6.9375 1.63281 10.1182l25.8896 77.6797c2.79004 8.39062 11.8604 12.9209 20.2402 10.1201l15.1699 -5.05957
-c8.39062 -2.7998 12.9102 -11.8604 10.1201 -20.2402l-23.7998 -71.3896l20.29 -40.5801c-1.41016 -4.20996 -2.49023 -8.20996 -3.20996 -11.79l-5.2207 -26.1201h-4.66992zM573.31 98.6201c4.90039 -7.35059 2.9209 -17.2803 -4.43945 -22.1797l-13.3105 -8.88086
-c-7.34961 -4.89941 -17.29 -2.90918 -22.1895 4.44043l-48 72h-47.0605l60.8301 -97.3301c3.16992 -5.08008 4.86035 -10.96 4.86035 -16.96v-77.71c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.1104l-74.0801 118.529
-c1 -14.0498 2.08008 -28.1094 2.08008 -42.21c0 -53.0693 -40.7598 -101.43 -96 -101.43s-96 48.3604 -96 101.43c0 14.1006 1.07031 28.1602 2.08008 42.21l-74.0801 -118.529v-73.1104c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v77.7002
-c0 0.00292969 0.0205078 0.0400391 0.0205078 0.0439453c0 6.20898 1.77246 12.0078 4.83984 16.916l60.8301 97.3301h-47.0605l-48 -72c-4.89941 -7.35059 -14.8398 -9.33984 -22.1895 -4.44043l-13.3105 8.87988c-7.36035 4.90039 -9.33984 14.8398 -4.43945 22.1904
-l52.7393 79.1299c5.74121 8.60547 15.5186 14.248 26.6299 14.25h77.9404l-68.9902 24.3496c-6.81738 2.27441 -12.5947 6.74023 -16.5098 12.6104l-53.5996 80.4102c-4.90039 7.36035 -2.91016 17.29 4.43945 22.1895l13.3105 8.88086
-c7.35938 4.89941 17.29 2.90918 22.1895 -4.44043l50.5703 -75.8301l60.4902 -20.1699h36.0996l10.3701 51.8496c2.18945 10.9707 17.3701 60.1504 69.6299 60.1504s67.4404 -49.1797 69.6299 -60.1504l10.3701 -51.8496h36.0996l60.5 20.1699l50.5605 75.8301
-c4.89941 7.34961 14.8398 9.33984 22.1895 4.44043l13.3105 -8.88086c7.34961 -4.89941 9.33984 -14.8398 4.43945 -22.1895l-53.5996 -80.4102c-3.91504 -5.87012 -9.69238 -10.3359 -16.5098 -12.6104l-68.9902 -24.3594h77.9404
-c11.1084 -0.00292969 20.8828 -5.64453 26.6191 -14.25zM406.09 350.49l-23.7998 71.3896c-2.79004 8.37988 1.74023 17.4404 10.1201 20.2402l15.1699 5.05957c8.37988 2.80078 17.4502 -1.73926 20.2402 -10.1201l25.8896 -77.6797
-c1.06152 -3.18164 1.62598 -6.62109 1.62598 -10.1582c0 -5.12695 -1.20801 -9.97461 -3.35547 -14.2715l-27.1504 -54.2998l-25.9297 -8.65039h-4.66992l-5.2207 26.1201c-0.719727 3.58008 -1.7998 7.58008 -3.20996 11.79z" />
-    <glyph glyph-name="toilet-paper" unicode="&#xf71e;" horiz-adv-x="576" 
-d="M128 448h284.44c-36.7705 -38.4805 -60.4404 -108.4 -60.4404 -192v-172.07c0 -53.6494 -11.8799 -87.5693 -24.71 -126.05c-4.36035 -13.0703 -16.5898 -21.8799 -30.3604 -21.8799h-280.92c-10.9199 0 -18.6299 10.7002 -15.1797 21.0596
-c21.3701 64.1006 31.1699 85.75 31.1699 126.87v172.07c0 106.04 42.9805 192 96 192zM96 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM160 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16
-s7.16016 -16 16 -16zM224 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM288 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM480 448c53.0195 0 96 -85.96 96 -192
-s-42.9805 -192 -96 -192s-96 85.96 -96 192s42.9805 192 96 192zM480 192c17.6699 0 32 28.6504 32 64s-14.3301 64 -32 64s-32 -28.6504 -32 -64s14.3301 -64 32 -64z" />
-    <glyph glyph-name="tractor" unicode="&#xf722;" horiz-adv-x="640" 
-d="M528 112c48.5996 0 88 -39.4004 88 -88s-39.4004 -88 -88 -88s-88 39.4004 -88 88s39.4004 88 88 88zM528 0c13.2305 0 24 10.7695 24 24s-10.7695 24 -24 24s-24 -10.7695 -24 -24s10.7695 -24 24 -24zM608 288c17.6699 0 32 -14.3301 31.9902 -32v-50.7598
-c0 -8.49023 -3.37012 -16.6299 -9.37012 -22.6299l-50.8203 -50.8203c-15.7295 7.58984 -33.1602 12.2002 -51.7998 12.2002c-39.1396 0 -73.5498 -19.0098 -95.46 -48h-80.54v-6c0 -12.1504 -9.84961 -22 -22 -22h-7.16016
-c-2.9502 -9.90039 -6.91992 -19.46 -11.9102 -28.7207l5.06055 -5.05957c8.58984 -8.58984 8.58984 -22.5195 0 -31.1104l-31.1104 -31.1094c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-5.05957 5.05957c-9.25977 -4.99023 -18.8203 -8.95996 -28.7197 -11.9102
-v-7.13965c0 -12.1504 -9.85059 -22 -22 -22h-44c-12.1504 0 -22 9.84961 -22 22v7.15039c-9.90039 2.94922 -19.46 6.91992 -28.7207 11.9092l-5.05957 -5.05957c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-31.1094 31.1104
-c-8.58984 8.58984 -8.58984 22.5195 0 31.1094l5.05957 5.06055c-4.99023 9.26953 -8.9502 18.8193 -11.9102 28.7295h-7.13965c-12.1504 0 -22 9.85059 -22 22v44c0 12.1504 9.84961 22 22 22h7.15039c2.94922 9.90039 6.91992 19.46 11.9092 28.7207l-5.05957 5.05957
-c-8.58984 8.58984 -8.58984 22.5195 0 31.1104l31.1104 31.1094c7.92969 7.93066 20.2598 8.2002 28.8896 1.4707v146.52c0 26.4697 21.5303 48 48 48h133.45c0.015625 0 0.00878906 0.0341797 0.0244141 0.0341797c19.7969 0 36.8047 -12.0312 44.1055 -29.1738
-l56.0898 -130.86h102.33v40.2002c0 29.9902 10.5801 58.8994 29.5 81.7197c6.37988 7.7002 18.04 8.23047 24.7002 0.780273l21.6299 -24.1699c4.87012 -5.43066 5.74023 -13.6904 1.32031 -19.4902c-8.4502 -11.0801 -13.1504 -24.7197 -13.1504 -38.8398v-40.2002h64z
-M176 32c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM198 288h110.04l-41.1504 96h-106.89v-96h38z" />
-    <glyph glyph-name="user-injured" unicode="&#xf728;" horiz-adv-x="448" 
-d="M277.37 436.02l-90.6904 -68.0195h-81.1895c19.0098 46.8701 64.8193 80 118.51 80c19.1104 0 37.0801 -4.46973 53.3701 -11.9805zM342.51 368h-102.52l66.0293 49.5195c15.8203 -13.3193 28.5908 -30.0498 36.4902 -49.5195zM224 192c-70.6904 0 -128 57.3096 -128 128
-c0 5.48047 0.94043 10.7002 1.61035 16h252.779c0.660156 -5.2998 1.61035 -10.5195 1.61035 -16c0 -70.6904 -57.3096 -128 -128 -128zM80 148.3c9.34668 4.14844 19.4795 7.31641 29.8096 9.21973l98.4502 -221.52h-128.26v212.3zM0 -16v41.5996
-c0 41.1406 18.8799 77.5107 48 102.16v-191.76c-26.5098 0 -48 21.4902 -48 48zM256 32c26.4697 0 48 -21.5303 48 -48s-21.5303 -48 -48 -48h-12.71l-42.6699 96h55.3799zM313.6 160c74.2305 0 134.4 -60.1699 134.4 -134.4v-41.5996c0 -26.5098 -21.4902 -48 -48 -48
-h-80.4102c10.1504 13.4102 16.4102 29.9199 16.4102 48c0 44.1104 -35.8896 80 -80 80h-69.5898l-42.6699 96h7.37012c22.2393 -10.1797 46.8799 -16 72.8896 -16s50.6504 5.82031 72.8896 16h16.71z" />
-    <glyph glyph-name="vr-cardboard" unicode="&#xf729;" horiz-adv-x="640" 
-d="M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-160.22c-25.1807 0 -48.0303 14.7695 -58.3604 37.7402l-27.7402 61.6396c-7.88965 17.54 -24.0293 28.6201 -41.6797 28.6201s-33.79 -11.0801 -41.6797 -28.6201l-27.7402 -61.6396
-c-10.3301 -22.9707 -33.1699 -37.7402 -58.3604 -37.7402h-160.22c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM160 144c35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64zM480 144
-c35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64z" />
-    <glyph glyph-name="wind" unicode="&#xf72e;" 
-d="M156.7 192c48.7002 0 92.2998 -35 98.3994 -83.4004c7.5 -58.5 -38.0996 -108.6 -95.1992 -108.6c-46.6006 0 -85.6006 33.5 -94.2002 77.5996c-1.7998 9.60059 6.09961 18.4004 15.8994 18.4004h32.8008c6.59961 0 13.0996 -3.7998 15.1992 -10.0996
-c4.30078 -12.7002 16.3008 -21.9004 30.4004 -21.9004c19.5 0 34.9004 17.4004 31.5996 37.4004c-2.59961 15.6992 -17.5 26.5996 -33.3994 26.5996h-142.2c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h140.7zM16 224c-8.7998 0 -16 7.2002 -16 16v32
-c0 8.7998 7.2002 16 16 16h334.2c16 0 30.7998 10.9004 33.3994 26.5996c3.30078 20 -12.1992 37.4004 -31.5996 37.4004c-14.0996 0 -26.0996 -9.2002 -30.4004 -21.9004c-2.09961 -6.2998 -8.5 -10.0996 -15.1992 -10.0996h-32.8008
-c-9.69922 0 -17.6992 8.7002 -15.7998 18.2998c9.7998 50.6006 59.5 87.1006 114.9 75.5c36.2002 -7.59961 65.5 -36.8994 73.0996 -73.0996c13 -61.9004 -34.0996 -116.7 -93.7998 -116.7h-336zM400 192c70.5 0 126 -65.5 108.9 -138.7
-c-9.60059 -41.0996 -43.5 -74 -84.7002 -82.7002c-58.9004 -12.5 -111.601 21.7002 -129.4 72.3008c-3.7002 10.2998 4.40039 21.0996 15.2998 21.0996h33.8008c5.7998 0 11.5996 -2.59961 14.5 -7.59961c8.2998 -14.5 23.6992 -24.4004 41.5996 -24.4004
-c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-116.5c-6.59961 25.2002 -20.5 47.4004 -39.7998 64h156.3z" />
-    <glyph glyph-name="wine-bottle" unicode="&#xf72f;" 
-d="M507.31 375.43c6.25 -6.25 6.25 -16.3799 0.0107422 -22.6201l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-76.6699 -76.6699c19.7002 -46.5801 10.7305 -102.41 -27.2295 -140.37l-158.391 -158.39c-24.9893 -24.9902 -65.5195 -24.9902 -90.5098 0
-l-90.5098 90.5098c-24.9902 24.9902 -24.9902 65.5205 0 90.5098l158.38 158.381c37.9697 37.96 93.79 46.9297 140.37 27.2295l76.6699 76.6699c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6299c6.25 6.25 16.3799 6.25 22.6299 0zM179.22 24.71l122.04 122.04
-l-90.5098 90.5098l-122.04 -122.04z" />
-    <glyph glyph-name="cloud-meatball" unicode="&#xf73b;" 
-d="M48 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM464 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM345 84.9004c13.5 -7 23 -20.7002 23 -36.9004s-9.5 -29.9004 -23 -36.9004
-c4.59961 -14.5 1.7002 -30.7998 -9.7998 -42.2998c-8.2002 -8.2002 -18.9004 -12.2998 -29.7002 -12.2998c-4.2998 0 -8.5 1.2002 -12.5996 2.5c-7 -13.5 -20.7002 -23 -36.9004 -23s-29.9004 9.5 -36.9004 23c-4.09961 -1.40039 -8.2998 -2.5 -12.5996 -2.5
-c-10.7998 0 -21.5 4.09961 -29.7002 12.2998c-11.5 11.5 -14.5 27.7998 -9.89941 42.2998c-13.5 7 -23 20.7002 -23 36.9004s9.5 29.9004 23 36.9004c-4.5 14.5 -1.60059 30.7998 9.89941 42.2998s27.7998 14.5 42.2998 9.89941c7 13.5 20.7002 23 36.9004 23
-s29.9004 -9.5 36.9004 -23c14.5 4.5 30.7998 1.60059 42.2998 -9.89941c11.3994 -11.5 14.3994 -27.7998 9.7998 -42.2998zM512 224c0 -53 -43 -96 -96 -96h-43.4004c-3.5 8 -8.39941 15.4004 -14.7998 21.7998c-13.5 13.5 -31.5 21.1006 -50.7998 21.2998
-c-13.5 13.2002 -31.7002 20.9004 -51 20.9004s-37.5 -7.7002 -51 -20.9004c-19.2998 -0.199219 -37.2998 -7.7998 -50.7998 -21.2998c-6.40039 -6.39941 -11.2002 -13.7998 -14.7998 -21.7998h-43.4004c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998
-c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002
-c0.5 0 1 0.200195 1.59961 0.200195c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="cloud-moon-rain" unicode="&#xf73c;" horiz-adv-x="576" 
-d="M350.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71.0996 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96
-c32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM567.9 224.2c6.19922 1.2002 10.5996 -6 6.39941 -10.7998c-27 -33.1006 -67.8994 -53.3008 -112.6 -53.3008c-5.2002 0 -10.1006 1 -15.2002 1.5
-c-6.2002 39.4004 -33.0996 72.5 -70.2002 86.8008c-10.7002 27.8994 -32.2002 49.7998 -58.8994 61.6992c3.2998 76.7002 66.5 137.9 144.399 137.9c8.90039 0 17.7998 -0.799805 26.5 -2.40039c6.2002 -1.09961 7.60059 -9.39941 2.10059 -12.5
-c-35.6006 -20.0996 -57.5 -57.5 -57.5 -98.0996c0 -70.5 64.5996 -124.1 135 -110.8zM364.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961
-c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM268.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961
-c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM172.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64
-c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM76.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008
-l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z" />
-    <glyph glyph-name="cloud-rain" unicode="&#xf73d;" 
-d="M416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998
-c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195zM88 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002
-c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002zM248 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996
-c0 31.3008 27.2002 43.3008 40 87.7002zM408 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002z" />
-    <glyph glyph-name="cloud-showers-heavy" unicode="&#xf740;" 
-d="M183.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112
-c4.40039 7.7998 14.2002 10.3994 21.8008 6zM279.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008
-l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM87.9004 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961
-c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM471.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961
-c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM375.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112
-c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320
-c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.2002 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80
-c0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195z" />
-    <glyph glyph-name="cloud-sun-rain" unicode="&#xf743;" horiz-adv-x="576" 
-d="M510.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96
-c32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM124.1 188.1c3.10059 -3.09961 6.60059 -5.59961 10.2002 -8.2998c-3.89941 -11.3994 -6.2002 -23.3994 -6.2002 -35.8994c0 -2.5 0.5 -4.80078 0.700195 -7.2002
-l-59.2002 -19.7002c-10.1992 -3.2998 -19.8994 6.2998 -16.5 16.5l25.1006 75.2998l-71 35.5c-9.60059 4.7998 -9.60059 18.5 0 23.2998l71 35.5l-25.1006 75.3008c-3.39941 10.1992 6.2002 19.8994 16.4004 16.5l75.2998 -25.1006l35.5 71
-c4.7998 9.60059 18.5 9.60059 23.2998 0l35.5 -71l75.3008 25.1006c10.1992 3.39941 19.8994 -6.2002 16.5 -16.4004l-8.90039 -26.7002c-0.700195 0 -1.2998 0.200195 -2 0.200195c-25.5996 0 -49.2002 -7.7998 -69.2002 -20.7002
-c-37.5996 29.4004 -92.0996 27.2002 -126.7 -7.39941c-37.3994 -37.5 -37.3994 -98.4004 0 -135.801zM193.9 246.1c-18.2002 -8.2998 -33.5 -21.2998 -44.8008 -37.1992c-12.8994 11.6992 -21.0996 28.3994 -21.0996 47.0996c0 35.2998 28.7002 64 64 64
-c12.4004 0 24 -3.7002 33.7998 -9.90039c-16.0996 -17.5996 -27.5996 -39.5 -31.8994 -64zM524.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961
-c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM428.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961
-c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM332.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64
-c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM236.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008
-l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z" />
-    <glyph glyph-name="democrat" unicode="&#xf747;" horiz-adv-x="640" 
-d="M637.3 191.1c4.90039 -7.39941 2.90039 -17.2998 -4.39941 -22.2998l-26.6006 -17.7002c-7.39941 -4.89941 -17.2998 -3 -22.2002 4.40039c-21.7998 32.7002 -23.8994 38.0996 -40.0996 50.2998v-77.7998h-352l-54 108l-38.0996 -34.5996
-c-6 -6 -14.1006 -9.40039 -22.6006 -9.40039h-31c-12.0996 0 -23.2002 6.90039 -28.5996 17.7002l-14.2998 28.5996c-5.40039 10.7998 -4.30078 23.7998 3 33.5l74.5996 99.2998c1.7002 2.30078 4.2002 3.7002 6.40039 5.40039c-4 2.2002 -8 4.2002 -11.3008 7.5
-c-16.3994 16.4004 -18.3994 41.7998 -6.09961 60.4004c2.7998 4.19922 8.7998 4.7998 12.4004 1.19922l42.8994 -42.7998l41.7998 41.7998c4.40039 4.40039 11.8008 3.7002 15.2002 -1.5c15.1006 -22.7998 12.6006 -53.7998 -7.5 -73.8994l81.2002 -81.2002h235.6
-c50.8008 0 97.9004 -25.2002 126.101 -67.5zM296.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5
-l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM408.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998
-l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002
-l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM520.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998
-c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM192 -48v144h352v-144
-c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v80h-160v-80c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16z" />
-    <glyph glyph-name="flag-usa" unicode="&#xf74d;" 
-d="M32 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v464c0 17.7002 14.2998 32 32 32zM299.9 144.4c31.0996 -8.2002 62.5996 -16.5 100 -16.6006c31.8994 0 68.5 6.7998 112.1 24.1006v-36
-c0 -12.3008 -7.09961 -23.8008 -18.5 -28.8008c-175.8 -76.3994 -211.8 69.1006 -397.5 -23.0996v69.2998c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM299.9 240.4c31.0996 -8.2002 62.5996 -16.5 100 -16.5c31.8994 0 68.5 6.7998 112.1 24.0996v-61.5
-c-92.2002 -39.9004 -146.7 -26.2002 -203.9 -11.0996c-57.5 15.0996 -117.3 30 -212.1 -7.60059v61.5c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM309.4 366.3c-7 2.10059 -14.1006 4.2002 -21.3008 6.2002v-33.2002c4 -1.09961 8.10059 -2.2998 12.1006 -3.5
-c26.7002 -8.09961 52.8994 -15.8994 85.7002 -15.8994c32.7998 0 72.5 7.89941 126.1 31.3994v-68.8994c-92.2002 -39.8008 -146.7 -26.1006 -203.9 -11.1006c-57.5 15.1006 -117.3 29.9004 -212.1 -7.59961v151.899c209.4 94.6006 195.3 -59.0996 366.6 28.2002
-c22.6006 11.5 49.4004 -1.5 49.4004 -26.5996v-30.7998c-105.2 -49.1006 -150.8 -35.7002 -202.6 -20.1006zM160 319.9c8.7998 0 16 7.09961 16 16c0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM160 375.7c8.7998 0 16 7.2002 16 16
-c0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM224 327.8c8.7998 0 16 7.2002 16 16c0 8.90039 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.89941 7.2002 -16 16 -16zM224 383.7c8.7998 0 16 7.2002 16 16c0 8.89941 -7.2002 16 -16 16
-s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16z" />
-    <glyph glyph-name="meteor" unicode="&#xf753;" 
-d="M511.328 427.197c-11.6074 -38.7021 -34.3076 -111.702 -61.3037 -187.701c6.99902 -2.09375 13.4043 -4 18.6074 -5.59277c6.58301 -2.00684 11.3779 -8.13184 11.3779 -15.3672c0 -2.71875 -0.685547 -5.29395 -1.87988 -7.53906
-c-22.1055 -42.2969 -82.6904 -152.795 -142.479 -214.403c-0.999023 -1.09375 -1.99902 -2.5 -2.99902 -3.5c-35.2676 -35.2773 -83.9824 -57.1094 -137.757 -57.1094c-107.53 0 -194.83 87.2998 -194.83 194.83c0 53.7559 21.7637 102.511 57.0195 137.775
-c1 1 2.40625 2 3.49902 3c61.6006 59.9053 171.975 120.405 214.374 142.498c2.24512 1.19434 4.80664 1.87109 7.52441 1.87109c7.23535 0 13.374 -4.78711 15.3779 -11.3711c1.59375 -5.09375 3.5 -11.5928 5.59277 -18.5928
-c75.8955 26.999 148.978 49.7021 187.675 61.2959c1.4834 0.448242 3.05664 0.689453 4.68652 0.689453c8.93164 0 16.1826 -7.25098 16.1826 -16.1826c0 -1.59961 -0.236328 -3.14062 -0.668945 -4.60059zM319.951 127.998
-c-0.00976562 70.626 -57.3525 127.962 -127.98 127.962c-70.6348 0 -127.98 -57.3457 -127.98 -127.98c0 -70.6338 57.3457 -127.979 127.98 -127.979c70.6318 0 127.976 57.3438 127.976 127.976c0 0.0078125 0.00488281 0.0146484 0.00488281 0.0224609zM191.971 159.997
-c-0.00292969 -17.6562 -14.3379 -31.9902 -31.9951 -31.9902c-17.6582 0 -31.9951 14.3369 -31.9951 31.9951c0 17.6592 14.3369 31.9951 31.9951 31.9951h0.0371094c17.6387 0 31.959 -14.3203 31.959 -31.959
-c0 -0.0136719 -0.000976562 -0.0263672 -0.000976562 -0.0410156v0zM223.966 79.998c-0.000976562 -8.82812 -7.16895 -15.9951 -15.998 -15.9951s-15.9971 7.16895 -15.9971 15.998s7.16797 15.9971 15.9971 15.9971c8.81738 -0.0283203 15.9707 -7.18262 15.998 -16v0z
-" />
-    <glyph glyph-name="person-booth" unicode="&#xf756;" horiz-adv-x="576" 
-d="M192 -48v176h64v-176c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16zM224 224c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-57.5c-12.7998 0 -24.7998 5 -33.9004 14.0996l-20.8994 20.9004v-80.5996l41.2002 -61.3008
-c4.39941 -8.7998 6.69922 -18.6992 6.69922 -28.5996v-56.5c0 -17.7002 -14.2998 -32 -32 -32c-17.6992 0 -32 14.2998 -32 32v56l-29.0996 43c-0.900391 0.400391 -1.59961 1.2002 -2.5 1.7002l-0.0996094 -100.7c0 -17.7002 -14.4004 -32 -32 -32
-c-17.6006 0 -31.9004 14.2998 -31.9004 32l0.200195 160l-0.200195 95.9004c0 17.0996 6.7002 33.1992 18.7002 45.2998c12.0996 12.0996 28.2002 18.7998 45.2998 18.7998h18.7002c17 0 33.0996 -6.59961 45.2002 -18.7002l45.1992 -45.2998h50.9004zM64 320
-c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM288 416v32h192v-416c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 -17.7002 -14.2998 -32 -32 -32c-17.0996 0 -30.7998 13.5 -31.7002 30.4004
-c-4.2998 -21.3008 -17.0996 -30.4004 -32.2998 -30.4004c-18.4004 0 -35.7002 16.7002 -31.4004 38.2998l30.9004 154.601zM192 416c0 17.7002 14.2998 32 32 32h32v-192h-64v160zM544 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32
-c-8.7998 0 -16 7.2002 -16 16v496h32z" />
-    <glyph glyph-name="poo-storm" unicode="&#xf75a;" horiz-adv-x="448" 
-d="M308 112c9.2002 0 15 -10 10.4004 -18l-88 -152c-2.2002 -3.7998 -6.2002 -6 -10.4004 -6c-7.7002 0 -13.5 7.2002 -11.7002 14.7998l23 97.2002h-59.2998c-7.2998 0 -12.9004 6.40039 -11.9004 13.5996l16 120c0.800781 5.90039 5.90039 10.4004 11.9004 10.4004h68
-c7.90039 0 13.5996 -7.5 11.5996 -15.0996l-17.2998 -64.9004h57.7002zM374.4 223.3c41 -3.2998 73.5996 -37.5 73.5 -79.2998c0 -44 -36 -80 -80 -80h-30l8.09961 14c7.7998 13.5 7.7998 30.4004 0 44s-22.4004 22 -38.0996 22h-16l6.59961 24.7002
-c3.59961 13.2998 0.799805 27.2002 -7.59961 38.0996c-8.40039 10.9004 -21.1006 17.2002 -34.9004 17.2002h-68c-22 0 -40.7002 -16.4004 -43.7002 -38.2002l-16 -120c0 -0.599609 0.100586 -1.2002 0 -1.7998h-48.2998c-44 0 -80 36 -80 80
-c0 41.7998 32.5996 76 73.5996 79.2998c-5.89941 9.60059 -9.59961 20.6006 -9.59961 32.7002c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96
-c0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039c35.2998 0 64 -28.7002 64 -64c0 -12.0996 -3.7002 -23.0996 -9.59961 -32.7002z" />
-    <glyph glyph-name="rainbow" unicode="&#xf75b;" horiz-adv-x="576" 
-d="M268.3 415.3c167.7 11.2998 307.7 -122 307.7 -287.3v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v136.2c0 113.8 -81.5996 215.399 -194.5 229.899c-136.6 17.6006 -253.5 -88.8994 -253.5 -222.1v-144c0 -8.7998 -7.2002 -16 -16 -16h-32
-c-8.7998 0 -16 7.2002 -16 16v133.8c0 153.3 115.4 287.3 268.3 297.5zM262.7 318.4c117.1 15 217.3 -76.2002 217.3 -190.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v138.3c0 66.9004 -48.7002 126.601 -115.2 133.101
-c-76.2998 7.39941 -140.8 -52.6006 -140.8 -127.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v137.3c0 97.6006 70 184.7 166.7 197.101zM268.9 222.1c61.2998 11.9004 115.1 -34.8994 115.1 -94.0996v-144c0 -8.7998 -7.2002 -16 -16 -16h-32
-c-8.7998 0 -16 7.2002 -16 16v144c0 17.5996 -14.2998 32 -32 32s-32 -14.4004 -32 -32v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v140.2c0 46.3994 31.2998 89 76.9004 97.8994z" />
-    <glyph glyph-name="republican" unicode="&#xf75e;" horiz-adv-x="640" 
-d="M544 256v-64h-544v64c0 88.4004 71.5996 160 160 160h224c88.4004 0 160 -71.5996 160 -160zM176.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4
-c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM320.3 277.6
-c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998
-c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM464.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0
-l-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998z
-M624 128c8.7998 0 16 -7.2002 16 -16v-64c0 -46.9004 -40.5996 -84.5 -88.4004 -79.5996c-41.5996 4.19922 -71.5996 42.5 -71.5996 84.2998v43.2998h-32v-112c0 -8.7998 -7.2002 -16 -16 -16h-96c-8.7998 0 -16 7.2002 -16 16v80h-192v-80c0 -8.7998 -7.2002 -16 -16 -16
-h-96c-8.7998 0 -16 7.2002 -16 16v176h544v-112c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16v64c0 8.7998 7.2002 16 16 16h32z" />
-    <glyph glyph-name="smog" unicode="&#xf75f;" horiz-adv-x="640" 
-d="M624 80c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h544zM144 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-128c-8.7998 0 -16 7.2002 -16 16v16
-c0 8.7998 7.2002 16 16 16h128zM560 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-336c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h336zM144 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144c41 0 77.7998 -17.2998 104 -44.7998
-c26.2002 27.5 63 44.7998 104 44.7998c54.7998 0 102 -31 126.3 -76.0996c15 7.5 31.7002 12.0996 49.7002 12.0996c61.9004 0 112 -50.0996 112 -112s-50.0996 -112 -112 -112h-60.0996c-22.6006 -19.7002 -51.6006 -32 -83.9004 -32s-61.4004 12.2998 -83.9004 32h-156.1z
-" />
-    <glyph glyph-name="temperature-high" unicode="&#xf769;" 
-d="M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5
-c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2
-c-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v210.9c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16
-v-210.9z" />
-    <glyph glyph-name="temperature-low" unicode="&#xf76b;" 
-d="M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5
-c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2
-c-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v18.9004c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16
-v-18.9004z" />
-    <glyph glyph-name="vote-yea" unicode="&#xf772;" horiz-adv-x="640" 
-d="M608 128c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-576c-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h64v-64h-22.4004c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h492.801
-c5.2998 0 9.59961 3.59961 9.59961 8v16c0 4.40039 -4.2998 8 -9.59961 8h-22.4004v64h64zM512 64h-384v319.7c0 17.7998 14.5 32.2998 32.4004 32.2998h319.3c17.7998 0 32.2998 -14.4004 32.2998 -32.2998v-319.7zM211.2 246c-4.2002 -4.2002 -4.2998 -11 0 -15.2002
-l74.0996 -74.7002c4.2002 -4.2998 11 -4.2998 15.2002 -0.0996094l128.3 127.2c4.2998 4.2002 4.2998 11 0.100586 15.2002l-25.3008 25.5c-4.19922 4.2998 -11 4.2998 -15.1992 0.0996094l-95.2002 -94.4004l-41.2998 41.6006
-c-4.2002 4.2998 -11 4.2998 -15.2002 0.0996094z" />
-    <glyph glyph-name="water" unicode="&#xf773;" horiz-adv-x="576" 
-d="M562.1 64.0996c8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0
-c-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2
-c38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 208.1
-c8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0
-c-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2
-c38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 352.1
-c8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0
-c-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2
-c38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.4004 57.8994 -22.9004z" />
-    <glyph glyph-name="baby" unicode="&#xf77c;" horiz-adv-x="384" 
-d="M192 288c-44.2002 0 -80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80s-35.7998 -80 -80 -80zM138.6 39.2002l29.4004 -39.2002c13.2002 -17.7002 9.7002 -42.7998 -8 -56c-7.2002 -5.40039 -15.7002 -8 -24 -8c-12.0996 0 -24.0996 5.5 -32 16l-48 64
-c-10.9004 14.5996 -10.5996 34.7998 0.799805 49l45.9004 57.4004l61.5 -51.2002zM281.3 122.4l45.9004 -57.4004c11.3994 -14.2002 11.7002 -34.4004 0.799805 -49l-48 -64c-7.7998 -10.5 -19.7998 -16 -32 -16c-8.40039 0 -16.7998 2.59961 -24 8
-c-17.7002 13.2002 -21.2002 38.2998 -8 56l29.4004 39.2002l-25.6006 32zM376.7 303c12.7002 -18.0996 8.39941 -43 -9.7002 -55.7998l-40.5996 -28.5c-17 -11.9004 -35.4004 -20.9004 -54.4004 -27.9004v-30.7998h-160v30.9004c-19 7 -37.4004 16 -54.4004 27.8994
-l-40.5996 28.5c-18 12.7002 -22.4004 37.6006 -9.7002 55.7002c12.7002 18 37.6006 22.4004 55.7002 9.7002l40.5996 -28.4004c52.6006 -37 124.101 -37 176.801 0l40.5996 28.5c18.0996 12.6006 43 8.2998 55.7002 -9.7998z" />
-    <glyph glyph-name="baby-carriage" unicode="&#xf77d;" 
-d="M144.8 431l111.2 -175h-256c0 74 35.2998 140.1 90.7998 184.4c16.7998 13.3994 42.7002 8.39941 54 -9.40039zM496 352c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48v-64c0 -50.5996 -23 -96.4004 -60.2998 -130.7
-c34.5996 -8.89941 60.2998 -40 60.2998 -77.2998c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 8.90039 1.7002 17.2002 4.40039 25.2002c-21.5 -5.90039 -44.6006 -9.2002 -68.4004 -9.2002s-46.7998 3.2998 -68.4004 9.2002
-c2.60059 -8 4.40039 -16.2998 4.40039 -25.2002c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 37.2998 25.7002 68.4004 60.2998 77.2998c-37.2998 34.2998 -60.2998 80.1006 -60.2998 130.7h384v64c0 35.2998 28.7002 64 64 64h48zM80 -16
-c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM400 16c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32s32 14.4004 32 32z" />
-    <glyph glyph-name="biohazard" unicode="&#xf780;" horiz-adv-x="576" 
-d="M287.9 336c-18.5 0 -36 -3.7998 -52.5 -9.5c-13.3008 10.2998 -23.6006 24.2998 -29.5 40.7002c25.1992 10.8994 53 16.8994 82.0996 16.8994c29.2002 0 57 -6.09961 82.2002 -17c-5.90039 -16.3994 -16.2002 -30.3994 -29.5 -40.6992
-c-16.6006 5.7998 -34.2002 9.59961 -52.7998 9.59961zM163.6 9.2998c-47.5 35.5 -79.1992 90.7002 -83.2998 153.5c7.2998 2.10059 14.9004 3.10059 22.5 3.10059c9.2002 0 17.9004 -1.80078 26.4004 -4.60059c4.09961 -44.2998 26 -83.2002 58.8994 -109.6
-c-4.09961 -16 -12.5 -30.6006 -24.5 -42.4004zM387.8 51.9004c32.7002 26.3994 54.6006 65.0996 58.7002 109.3c8.59961 2.7998 17.4004 4.7002 26.5996 4.7002c7.5 0 15 -1 22.2002 -3c-3.89941 -62.8008 -35.5996 -118 -83 -153.5c-12 11.7998 -20.3994 26.5 -24.5 42.5z
-M501.3 256.9c34.6006 -20.4004 61 -53.3008 74.1006 -92.4004c1.2998 -3.7002 -0.200195 -7.7998 -3.5 -9.7998c-3.30078 -2 -7.5 -1.2998 -10 1.59961c-9.40039 10.7998 -19 19 -29.2002 25.1006c-57.2998 33.8994 -130.8 13.6992 -163.9 -45
-c-33.0996 -58.7002 -13.3994 -134 43.9004 -167.9c10.2002 -6.09961 21.8994 -10.5 35.7998 -13.4004c3.7998 -0.799805 6.40039 -4.19922 6.40039 -8.09961c-0.100586 -4 -2.7002 -7.2998 -6.5 -8c-39.7002 -7.7998 -80.6006 -0.799805 -115.2 19.7002
-c-18 10.5996 -32.9004 24.5 -45.2998 40.0996c-12.4004 -15.5996 -27.3008 -29.5 -45.3008 -40.0996c-34.5996 -20.5 -75.5 -27.5 -115.199 -19.7002c-3.80078 0.700195 -6.40039 4 -6.5 8c0 3.90039 2.69922 7.2998 6.39941 8.09961
-c13.7998 3 25.6006 7.30078 35.7998 13.4004c57.3008 33.9004 77 109.2 43.9004 167.9c-33.0996 58.6992 -106.6 78.8994 -163.9 45c-10.1992 -6 -19.7998 -14.3008 -29.1992 -25.1006c-2.5 -2.89941 -6.7002 -3.59961 -10 -1.59961
-c-3.30078 2.09961 -4.80078 6.09961 -3.5 9.7998c13.2998 39.0996 39.6992 71.9004 74.2998 92.4004c17.5996 10.3994 36.3994 16.5996 55.2998 19.8994c-6.09961 17.7002 -10 36.4004 -10 56.2002c0 41 14.5996 80.7998 41 112.2c2.5 3 6.59961 3.7002 10 1.7998
-c3.2998 -1.90039 4.7998 -6 3.59961 -9.7002c-4.39941 -13.7998 -6.59961 -26.3994 -6.59961 -38.5c0 -67.7998 53.7998 -122.899 120 -122.899s120 55.0996 120 122.899c0 12.2002 -2.09961 24.7002 -6.59961 38.5c-1.2002 3.7002 0.299805 7.7998 3.59961 9.7002
-c3.40039 1.90039 7.5 1.2002 10 -1.7998c26.5 -31.4004 41 -71.2002 41 -112.2c0 -19.7998 -4 -38.5 -10 -56.2002c19 -3.2998 37.7002 -9.5 55.2998 -19.8994zM287.9 127.9c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z" />
-    <glyph glyph-name="blog" unicode="&#xf781;" 
-d="M172.2 221.2c75.5 -15 129.899 -89.2998 112.5 -172.2c-11.4004 -54.2998 -55.2998 -98.2998 -109.7 -109.7c-92.9004 -19.5 -175 51.2002 -175 140.7v248c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-248c0 -26.5 21.5 -48 48 -48s48 21.5 48 48
-c0 20.5996 -13.0996 38.2002 -31.2998 45c-9.60059 3.59961 -16.7002 11.7998 -16.7002 22v50.4004c0 14.8994 13.5996 26.6992 28.2002 23.7998zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17h-32.1006
-c-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7
-c0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z" />
-    <glyph glyph-name="calendar-day" unicode="&#xf783;" horiz-adv-x="448" 
-d="M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-96c0 -8.7998 7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16v96c0 8.7998 -7.2002 16 -16 16h-96c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48
-c0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z" />
-    <glyph glyph-name="calendar-week" unicode="&#xf784;" horiz-adv-x="448" 
-d="M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-64c0 -8.7998 7.2002 -16 16 -16h288c8.7998 0 16 7.2002 16 16v64c0 8.7998 -7.2002 16 -16 16h-288c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448
-v48c0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z" />
-    <glyph glyph-name="candy-cane" unicode="&#xf786;" 
-d="M497.5 356c35.7002 -75.5 2.7998 -166.1 -68.9004 -209l-347.3 -206.5c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.59961 -27.5 15.5996l-32.8008 54.9004c-9.09961 15.2002 -4.19922 34.7998 11 43.9004l353.601 210.1
-c15.0996 9.09961 20.0996 28.7998 11 43.9004c-6 10 -16.6006 15.5996 -27.5 15.5996c-5.60059 0 -11.2998 -1.40039 -16.4004 -4.5l-27.5 -16.4004c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.60059 -27.5 15.6006l-32.8008 54.8994
-c-9.09961 15.2002 -4.19922 34.8008 11 43.9004l27.5 16.4004c25.6006 15.2998 53.9004 22.5996 81.8008 22.5996c59.3994 0 117.199 -33.0996 145.1 -92zM319.8 343c8.5 5.09961 18.1006 7.59961 27.9004 8.40039l-20.6006 61.7998
-c-10.5 -2.10059 -20.5996 -5.5 -30.2998 -10.2002l20.5 -61.5zM145.9 16.2002l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM253.4 80.0996l30.7998 18.3008l-60.5 38.5l-30.7998 -18.3008zM364.3 146l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM384.7 343.3
-c9.2002 -5.39941 17.2002 -13 22.8994 -22.2998l45.7002 45.7002c-6.59961 8.5 -14.2002 16.0996 -22.5996 22.5996zM466.8 235.5c4.60059 9.7998 8 20 10.1006 30.4004l-60.4004 20.0996c-0.0996094 -4.5 -0.700195 -9.09961 -1.7998 -13.5996
-c-1.60059 -6.2002 -4.2002 -11.8008 -7.40039 -17.1006z" />
-    <glyph glyph-name="carrot" unicode="&#xf787;" 
-d="M298.2 291.4c61.7002 -30.1006 87.2998 -104.5 57.2002 -166.2c-12.6006 -25.7998 -33.1006 -45.4004 -57.1006 -57.1006l-102 -49.7998l-57 57c-6.2002 6.2002 -16.2998 6.2002 -22.5996 0s-6.2998 -16.3994 0 -22.5996l49.2002 -49.2002l-133.601 -65.2002
-c-11.0996 -5.39941 -24.5996 -0.799805 -30 10.2998c-3.09961 6.40039 -2.89941 13.7002 0 19.7002l128.101 262.7l50.1992 -50.2002c3.10059 -3.09961 7.2002 -4.7002 11.3008 -4.7002c4.09961 0 8.19922 1.60059 11.2998 4.7002c6.2998 6.2002 6.2998 16.2998 0 22.6006
-l-55.2002 55.1992c35.7002 43.3008 97.5 58.5 150.2 32.8008zM390.3 326.3c40.7002 19.5 88.7998 9.40039 121.7 -30.2998c-41.5996 -50.2998 -107.5 -52.5 -151.9 -7.90039l-8 8c-44.5996 44.4004 -42.3994 110.2 7.90039 151.9
-c39.7002 -32.9004 49.7998 -81 30.2998 -121.7z" />
-    <glyph glyph-name="cash-register" unicode="&#xf788;" 
-d="M511.1 69.2002c0.600586 -3.5 0.900391 -7 0.800781 -10.5v-90.7002c0 -17.7002 -14.3008 -32 -32 -32h-448c-17.7002 0 -32 14.2998 -32 32v90.7998c0 3.5 0.299805 7 0.899414 10.5l26.7002 160c2.59961 15.4004 16 26.7002 31.5996 26.7002h84.9004v64h-96
-c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h256c8.7998 0 16 -7.2002 16 -16v-96.0996c0 -8.80078 -7.2002 -16 -16 -16h-96v-64h244.8c15.7002 0 29 -11.3008 31.6006 -26.7002zM280 200v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16
-c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16zM248 136c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16zM216 216h-16c-8.7998 0 -16 -7.2002 -16 -16v-16
-c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16zM80 368h192v32h-192v-32zM120 168c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16zM136 104
-c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16zM352 -8v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8
-zM376 104v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16zM424 184v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16
-c8.7998 0 16 7.2002 16 16z" />
-    <glyph glyph-name="compress-arrows-alt" unicode="&#xf78c;" 
-d="M200 160c13.2998 0 24 -10.7002 24 -24v-112c0 -21.4004 -25.7998 -32.0996 -40.9004 -17l-31.0996 33l-99.2998 -99.2998c-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-25.3994 25.3994c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l99.2002 99.2998l-32.9004 31
-c-15.0996 15.2002 -4.40039 41 17 41h112zM312 224c-13.2998 0 -24 10.7002 -24 24v112c0 21.4004 25.7998 32.0996 40.9004 17l31.0996 -33l99.2998 99.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0l25.3994 -25.3994c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006
-l-99.2998 -99.2998l33 -31c15.0996 -15.0996 4.40039 -41 -17 -41h-112zM408 88l99.2998 -99.4004c6.2002 -6.19922 6.2002 -16.3994 0 -22.5996l-25.3994 -25.4004c-6.2002 -6.19922 -16.4004 -6.19922 -22.6006 0l-99.2998 99.3008l-31 -32.9004
-c-15.0996 -15.0996 -41 -4.40039 -41 17v112c0 13.2998 10.7002 24 24 24h112c21.4004 0 32.0996 -25.7998 17 -40.9004zM183 376.9c15.0996 15.0996 41 4.39941 41 -16.9004v-112c0 -13.2998 -10.7002 -24 -24 -24h-112c-21.4004 0 -32.0996 25.7998 -17 40.9004
-l33 31.0996l-99.2998 99.2998c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l25.3994 25.3994c6.2002 6.2002 16.4004 6.2002 22.6006 0l99.2998 -99.2998z" />
-    <glyph glyph-name="dumpster" unicode="&#xf793;" horiz-adv-x="576" 
-d="M560 288h-97.2998l-25.6006 128h98.9004c7.2998 0 13.7002 -5 15.5 -12.0996l24 -96c2.5 -10.1006 -5.09961 -19.9004 -15.5 -19.9004zM272 416v-128h-126.1l25.5996 128h100.5zM404.5 416l25.5996 -128h-126.1v128h100.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004
-l24 96c1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM560 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-28l-20 -160v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-320v-16
-c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16l-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h512l-4 -32h20z" />
-    <glyph glyph-name="dumpster-fire" unicode="&#xf794;" horiz-adv-x="640" 
-d="M418.7 343.9c-19.7002 -17.6006 -37.7002 -36.5 -53.9004 -55.8008h-60.7998v128h100.5l14.4004 -72zM272 416v-128h-126.1l25.5996 128h100.5zM461.3 343.9l-11.8994 10.5996l-12.3008 61.5h98.9004c7.2998 0 13.7002 -5 15.4004 -12.0996l24 -96
-c0.199219 -0.800781 -0.100586 -1.5 0 -2.30078c-1 1 -2 2.2002 -3.10059 3.10059l-21.2998 19l-21.2998 -19c-5.90039 -5.2002 -11.6006 -10.7002 -17.2998 -16.2998c-15.6006 17.7998 -32.9004 35.1992 -51.1006 51.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004l24 96
-c1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM340.6 256c-32.6992 -46.7002 -52.5996 -93.7002 -52.5996 -129.6c0 -48.5 18.5996 -92.7002 48.7998 -126.4h-208.8v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16
-l-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h308.6zM551.1 284.8c51.8008 -46.2002 88.9004 -121.8 88.8008 -158.399c0 -87.5 -71.6006 -158.4 -160 -158.4c-88.4004 0 -160 70.9004 -160 158.4c0 49.2998 49.7998 130.899 120 193.6
-c27.3994 -24.4004 51.5 -50.5996 71 -76.4004c11.8994 14 25.2998 27.9004 40.1992 41.2002zM532.5 55.4004c33.4004 24.1992 41.2002 71.0996 22.5996 107.8c-2.2998 4.5 -4.89941 9.2002 -7.69922 14l-39.8008 -47s-62.3994 82.5 -67.0996 88.0996
-c-32.9004 -40.8994 -49.4004 -64.7998 -49.4004 -91.8994c0 -54.5 39.9004 -88 88.9004 -88c19.5996 0 37.7998 6.2998 52.5 17z" />
-    <glyph glyph-name="ethernet" unicode="&#xf796;" 
-d="M496 256c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-80v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-80c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h48v48
-c0 8.7998 7.2002 16 16 16h224c8.7998 0 16 -7.2002 16 -16v-48h48c8.7998 0 16 -7.2002 16 -16v-48h48z" />
-    <glyph glyph-name="gifts" unicode="&#xf79c;" horiz-adv-x="640" 
-d="M240.6 253.9c-27.7998 -6.90039 -48.5996 -32 -48.5996 -61.9004v-224c0 -11.7002 3.40039 -22.5 8.90039 -32h-168.9c-17.7002 0 -32 14.2998 -32 32v352c0 17.7002 14.2998 32 32 32h29.4004l-30.7002 22c-7.2002 5.09961 -8.7998 15.0996 -3.7002 22.2998l9.2998 13
-c5.10059 7.2002 15.1006 8.7998 22.2998 3.7002l32.1006 -22.7998l-11.5 30.5996c-3.2002 8.2002 1 17.5 9.2998 20.6006l15 5.59961c8.2998 3.09961 17.5 -1.09961 20.5996 -9.40039l19.9004 -53.0996l19.9004 53c3.09961 8.2998 12.2998 12.5 20.5996 9.40039l15 -5.60059
-c8.2998 -3.09961 12.5 -12.2998 9.40039 -20.5996l-11.5 -30.6006l32 22.9004c7.19922 5.2002 17.1992 3.5 22.2998 -3.7002l9.2998 -13c5.2002 -7.2002 3.5 -17.2002 -3.7002 -22.2998l-30.7002 -22h29.4004c12.7002 0 23.4004 -7.5 28.5996 -18.2998
-c-26.6992 -18.6006 -42.0996 -49 -44 -79.7998zM224 -32v96h192v-128h-160c-17.7002 0 -32 14.2998 -32 32zM448 -64v128h192v-96c0 -17.7002 -14.2998 -32 -32 -32h-160zM608 224c17.7002 0 32 -14.2998 32 -32v-96h-192v128h-15.2998l-0.700195 0.200195
-l-0.700195 -0.200195h-15.2998v-128h-192v96c0 17.7002 14.2998 32 32 32h20.4004c-2.7002 7.59961 -4.40039 15.5 -4.40039 23.7998c0 35.5 27 72.2002 72.0996 72.2002c48 0 75.8008 -47.7002 87.9004 -75.2998c12 27.5996 39.7998 75.2998 87.9004 75.2998
-c45.0996 0 72.0996 -36.7002 72.0996 -72.2002c0 -8.2998 -1.7998 -16.2002 -4.40039 -23.7998h20.4004zM336 224h52.5996c-8.89941 20.5996 -25.7998 48 -44.5 48c-17.6992 0 -24.0996 -14.5 -24.0996 -24.2002c0 -5.2002 1.5 -12.5996 8.7998 -19
-c2.10059 -1.7998 4.5 -3.39941 7.2002 -4.7998zM535.2 228.8c7.2998 6.40039 8.7998 13.7998 8.7998 19c0 9.7002 -6.40039 24.2002 -24.0996 24.2002c-18.7002 0 -35.7002 -27.7002 -44.5 -48h52.5996c2.7002 1.40039 5.09961 3 7.2002 4.7998z" />
-    <glyph glyph-name="glass-cheers" unicode="&#xf79f;" horiz-adv-x="640" 
-d="M639.4 14.4004c1.69922 -4.10059 -0.300781 -8.7002 -4.30078 -10.4004l-162.399 -67.4004c-4 -1.69922 -8.7002 0.200195 -10.4004 4.30078c-8.5 20.3994 1.2002 43.7998 21.6006 52.2998l22.0996 9.2002l-39.2998 103.6
-c-4.40039 -0.5 -8.7998 -1.2998 -13.1006 -1.2998c-51.6992 0 -99.3994 33.0996 -113.399 85.2998l-20.2002 75.4004l-20.2002 -75.4004c-14 -52.2002 -61.7002 -85.2998 -113.399 -85.2998c-4.30078 0 -8.7002 0.799805 -13.1006 1.2998l-39.3994 -103.6l22.0996 -9.2002
-c20.4004 -8.5 30 -31.9004 21.5996 -52.2998c-1.69922 -4.10059 -6.2998 -6 -10.3994 -4.30078l-162.3 67.4004c-4.10059 1.7002 -6 6.40039 -4.30078 10.5c8.5 20.4004 31.8008 30.0996 52.2002 21.5996l22.1006 -9.19922l38.6992 101.899
-c-47.8994 34.9004 -64.6992 100.2 -34.5 152.7l86.6006 150.5c8 13.9004 25.0996 19.7998 40 13.5996l114.3 -47.3994l114.3 47.3994c14.9004 6.10059 32 0.300781 40 -13.5996l86.6006 -150.5c30.2998 -52.5 13.3994 -117.8 -34.5 -152.8l38.6992 -101.9l22.1006 9.2002
-c20.3994 8.5 43.7998 -1.2002 52.2002 -21.5996zM275.9 285.9l18.8994 70.6992l-94.5 39.2002l-36.5 -63.3994zM364.1 285.9l112.101 46.5l-36.5 63.3994l-94.5 -39.2002z" />
-    <glyph glyph-name="glass-whiskey" unicode="&#xf7a0;" 
-d="M480 416c19.5 0 34.4004 -17.2002 31.7002 -36.5l-55.6006 -356.5c-4.5 -31.5 -31.5996 -54.9004 -63.3994 -54.9004h-273c-31.9004 0 -58.9004 23.4004 -63.4004 54.9004l-56 356.5c-2.7002 19.2998 12.2002 36.5 31.7002 36.5h448zM442.6 352h-373.199l30.1992 -192
-h313z" />
-    <glyph glyph-name="globe-europe" unicode="&#xf7a2;" horiz-adv-x="496" 
-d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM448 192c0 110.3 -89.7002 200 -200.2 200c-1.89941 0 -3.7998 -0.200195 -5.7002 -0.299805l-28.8994 -21.7002c-2 -1.5 -3.2002 -3.90039 -3.2002 -6.40039v-20
-c0 -4.39941 3.59961 -8 8 -8h16c4.40039 0 8 3.60059 8 8v8l16 16h20.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998c0 -3 -1.2002 -5.89941 -3.2998 -8l-26.7998 -26.7998c-1.2002 -1.2002 -2.7002 -2.09961 -4.40039 -2.7002l-40 -13.2998
-c-3.2998 -1.09961 -5.5 -4.2002 -5.5 -7.59961c0 -6.60059 -2.59961 -12.9004 -7.2002 -17.5l-20.0996 -20.1006c-3 -3 -4.7002 -7.09961 -4.7002 -11.2998v-25.2998c0 -8.7998 7.2002 -16 16 -16h22.0996c6.10059 0 11.6006 3.39941 14.3008 8.7998l9.39941 18.7002
-c1.40039 2.7002 4.2002 4.39941 7.2002 4.39941h3.09961c4.40039 0 8 -3.59961 8 -8c0 -4.39941 3.60059 -8 8 -8h16c4.40039 0 8 3.60059 8 8v2.2002c0 3.5 2.2002 6.5 5.5 7.60059l31.6006 10.5c6.5 2.19922 10.8994 8.2998 10.8994 15.1992v4.5
-c0 8.80078 7.2002 16 16 16h36.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998v-9.39941c0 -6.2002 -5.09961 -11.3008 -11.2998 -11.3008h-32c-3 0 -5.89941 -1.19922 -8 -3.2998l-9.39941 -9.39941c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8
-c0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 -1.19922 8 -3.2998l9.39941 -9.39941c2.10059 -2.10059 3.2998 -5 3.2998 -8v-8.7002l-12.5 -12.5c-4.59961 -4.60059 -4.59961 -12.1006 -0.0996094 -16.7002l32 -32.5996
-c3 -3.10059 7.09961 -4.80078 11.4004 -4.80078h20.2998c6.89941 20.2002 10.7998 41.9004 10.7998 64.4004zM130.1 298.9c0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 1.2002 8 3.30078l9.39941 9.39941c2.10059 2.10059 3.2998 5 3.2998 8v16
-c0 6.2002 -5.09961 11.2998 -11.2998 11.2998c-3 0 -5.89941 -1.19922 -8 -3.2998l-25.3994 -25.3994c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8zM258.1 -7.5c71.1006 3.59961 132.5 44.2002 164.9 103.1h-13.4004c-4.7998 0 -9.5 1.90039 -12.8994 5.30078
-l-17.2998 17.2998c-6 6 -14.1006 9.39941 -22.6006 9.39941h-18.2998l-43.2002 37.1006c-8.2002 7 -18.7002 10.8994 -29.5996 10.8994h-31.2002c-8.2002 0 -16.2998 -2.2998 -23.4004 -6.5l-42.8994 -25.6992c-13.7002 -8.2002 -22.1006 -23 -22.1006 -39v-23.9004
-c0 -14.2998 6.7002 -27.7998 18.2002 -36.4004l22.2002 -16.6992c8.7002 -6.5 24.5996 -11.8008 35.4004 -11.8008h20.1992c8.80078 0 16 -7.19922 16 -16v-7.09961z" />
-    <glyph glyph-name="grip-lines" unicode="&#xf7a4;" 
-d="M496 160c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h480zM496 288c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32
-c0 8.7998 7.2002 16 16 16h480z" />
-    <glyph glyph-name="grip-lines-vertical" unicode="&#xf7a5;" horiz-adv-x="256" 
-d="M96 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-480zM224 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32
-c8.7998 0 16 -7.2002 16 -16v-480z" />
-    <glyph glyph-name="guitar" unicode="&#xf7a6;" 
-d="M502.63 409c5.77344 -5.79004 9.34473 -13.7852 9.34473 -22.5996c0 -8.8291 -3.58398 -16.8281 -9.375 -22.6201l-46.3301 -46.3203c-3.82617 -3.83691 -8.53223 -6.78125 -13.7891 -8.53027l-36.4805 -12.1602l-76.2402 -76.2393
-c8.79004 -12.2002 15.7705 -25.5605 19.1602 -40.2002c7.74023 -33.3896 0.870117 -66.8701 -22 -89.75c-9.26367 -9.2207 -20.71 -16.2314 -33.4795 -20.25c-18.54 -6.00977 -32.6709 -23.29 -34.4307 -42.1396c-2.29004 -23.8105 -11.4502 -45.8301 -28.4502 -62.71
-c-45.5596 -45.4805 -127.5 -37.3809 -182.979 18.0693c-55.4805 55.4502 -63.6904 137.45 -18.0498 182.96c16.8799 16.9902 38.9102 26.1699 62.6094 28.4404c18.9404 1.76953 36.1504 15.8994 42.1504 34.46c4.01172 12.7686 11.0195 24.2119 20.2402 33.4697
-c22.8799 22.8799 56.4297 29.7803 89.8799 22c14.5996 -3.39941 27.9395 -10.3799 40.0996 -19.1396l76.2598 76.2598l12.1602 36.5098c1.74902 5.25781 4.69336 9.96387 8.53027 13.79l46.2803 46.3301c5.79199 5.79395 13.8018 9.37988 22.6338 9.37988
-s16.833 -3.58594 22.626 -9.37988zM208 96c26.4922 0 48 21.5078 48 48s-21.5078 48 -48 48s-48 -21.5078 -48 -48s21.5078 -48 48 -48z" />
-    <glyph glyph-name="heart-broken" unicode="&#xf7a9;" 
-d="M473.7 374.2c48.7002 -49.7998 50.7998 -129.101 7.2998 -182.101l-212.2 -218.699c-7.09961 -7.30078 -18.5996 -7.30078 -25.7002 0l-212.1 218.6c-43.5 53.0996 -41.4004 132.4 7.2998 182.2l2.40039 2.39941c46.2998 47.4004 119 51.8008 170.7 14l28.5996 -86.5
-l-96 -64l144 -144l-48 128l96 64l-34.2998 103.4c51.5996 36.9004 123.6 32.2002 169.6 -14.7998z" />
-    <glyph glyph-name="holly-berry" unicode="&#xf7aa;" horiz-adv-x="448" 
-d="M144 256c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM256 304c0 26.5 21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48zM224 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48z
-M207.8 212.9c-0.399414 -39.8008 7.40039 -78.1006 22.9004 -112.301c4 -8.89941 -2 -19.1992 -11.7002 -20.1992c-15.2002 -1.5 -30.4004 -4.60059 -45.2998 -9.10059c-14.9004 -4.5 -23.7998 -19.8994 -20.2002 -35.0996s8.5 -29.9004 14.7002 -43.7998
-c4 -8.90039 -1.90039 -19.3008 -11.6006 -20.2002c-35.8994 -3.40039 -71.5996 -14.9004 -104.8 -33.9004c-12.3994 -7.09961 -27.5 1.60059 -27.5996 16c-0.100586 38.2002 -8 74.9004 -23 107.7c-4 8.90039 2 19.2002 11.7002 20.2002
-c15.1992 1.5 30.3994 4.59961 45.2998 9.09961c14.8994 4.5 23.7998 19.9004 20.2002 35.1006c-3.60059 15.1992 -8.5 29.8994 -14.7002 43.7998c-4 8.89941 1.89941 19.2998 11.5996 20.2002c37.2998 3.5 74.4004 15.8994 108.7 36.1992
-c10.7002 6.40039 23.9004 -1.2998 23.7998 -13.6992zM435 82.4004c9.7002 -1 15.7998 -11.4004 11.5 -20.1006c-15 -32.7002 -22.7998 -69.5 -23 -107.7c0 -14.3994 -15.0996 -23.0996 -27.5996 -16c-33.2002 19 -68.9004 30.5 -104.801 33.9004
-c-9.69922 0.900391 -15.5996 11.2998 -11.5996 20.2002c6.2002 14 11.0996 28.5996 14.7002 43.7998c3.59961 15.2002 -5.2998 30.5996 -20.2002 35.0996c-4.90039 1.5 -9.90039 2.5 -14.7998 3.7002c5.7998 12.2998 6.2998 26.5 0.599609 38.9004
-c-12.8994 28.2998 -19.7002 60.7002 -19.8994 94c0 1.7002 0.199219 3.2998 0.199219 4.89941c-0.0996094 12.3008 13.1006 20 23.8008 13.7002c34.2998 -20.2998 71.3994 -32.7002 108.699 -36.2002c9.7002 -0.899414 15.6006 -11.2998 11.6006 -20.1992
-c-6.2002 -14 -11.1006 -28.6006 -14.7002 -43.8008c-3.59961 -15.1992 5.2998 -30.5996 20.2002 -35.0996c15 -4.40039 30.0996 -7.5 45.2998 -9.09961z" />
-    <glyph glyph-name="horse-head" unicode="&#xf7ab;" 
-d="M509.8 115.5c4.60059 -11.7998 1.7998 -25.2998 -7.09961 -34.4004l-45.2998 -39.7998c-6 -6 -14.1006 -9.39941 -22.6006 -9.39941h-50.2998c-10.2998 0 -20 4.89941 -26 13.2998l-46 63.8994c-13.7998 -8.09961 -29.5996 -13.1992 -46.7998 -13.1992
-c-39.2002 0 -72.6006 23.6992 -87.4004 57.3994c-2.2998 5.10059 -9 6.2998 -12.8994 2.40039l-12.1006 -12.1006c-2.5 -2.39941 -3.2002 -6.19922 -1.59961 -9.2998c19.7002 -38.8994 58.7002 -66.0996 104.3 -69.5996v-0.700195l40.7998 -81.7002
-c10.7002 -21.2998 -4.7998 -46.2998 -28.5996 -46.2998h-236.2c-17.7002 0 -32 14.2998 -32 32v81.2002c0 159.899 35.9004 275.399 166.9 322.5l202.199 75.7002c4.90039 1.7998 10.7002 -1.10059 12 -6.10059c12.1006 -46.3994 -16.1992 -71.7002 -34.1992 -82.2998
-c42.5996 -8.2002 78.0996 -38 93 -79.2002zM328 224c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24z" />
-    <glyph glyph-name="icicles" unicode="&#xf7ad;" 
-d="M511.4 410.1l-87.5 -467.699c-1.7002 -8.60059 -14 -8.60059 -15.7002 0l-66.7002 363.8l-45.7998 -172.5c-2.2998 -7.60059 -13 -7.60059 -15.2998 0l-34.1006 133.399l-46.5 -196.899c-1.89941 -8.2998 -13.7002 -8.2998 -15.5996 0l-44.2002 187.3l-36.4004 -124.1
-c-2.39941 -7.2002 -12.5996 -7.2002 -15.0996 0l-87.0996 273.399c-6.2002 20.5 9.19922 41.2002 30.5996 41.2002h448c20 0 35.0996 -18.2002 31.4004 -37.9004z" />
-    <glyph glyph-name="igloo" unicode="&#xf7ae;" horiz-adv-x="576" 
-d="M320 414.1v-126.1h-271.4c51.6006 77.2002 139.601 128 239.4 128c10.7998 0 21.5 -0.700195 32 -1.90039zM96 256v-128h-96c0 46 11.0996 89.4004 30.2998 128h65.7002zM352 408.6c72.7998 -16.5 135.2 -60.5 175.4 -120.6h-175.4v120.6zM480 128v128h65.7002
-c19.2002 -38.5996 30.2998 -82 30.2998 -128h-96zM416 64c0 11.0996 -1.90039 21.7002 -4.5 32h164.5v-96c0 -17.7002 -14.2998 -32 -32 -32h-128v96zM448 256v-128h-49.7998c-22.2002 38.0996 -63 64 -110.2 64s-88 -25.9004 -110.2 -64h-49.7998v128h320zM0 0v96h164.5
-c-2.59961 -10.2998 -4.5 -20.9004 -4.5 -32v-96h-128c-17.7002 0 -32 14.2998 -32 32zM288 160c53 0 96 -43 96 -96v-96h-192v96c0 53 43 96 96 96z" />
-    <glyph glyph-name="mitten" unicode="&#xf7b5;" horiz-adv-x="448" 
-d="M368 32c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v64c0 8.7998 7.2002 16 16 16h320zM425 241.1c27.0996 -22.5996 30.7998 -62.8994 8.09961 -90.0996l-72.5 -87h-309l-47.8994 207.6
-c-17.9004 77.5 30.5 154.801 107.899 172.7c77.4004 17.9004 154.801 -30.5 172.801 -108l29.5996 -128.399l20.9004 25c22.5996 27.1992 62.8994 30.7998 90.0996 8.19922z" />
-    <glyph glyph-name="mug-hot" unicode="&#xf7b6;" 
-d="M127.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004c-1.09961 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5
-c20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM239.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004
-c-1.19922 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5c20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM400 256
-c61.7998 0 112 -50.2002 112 -112s-50.2002 -112 -112 -112h-16c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 17.7002 14.2998 32 32 32h368zM400 96c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-16v-96h16z" />
-    <glyph glyph-name="radiation" unicode="&#xf7b9;" horiz-adv-x="496" 
-d="M328.2 192.2c0 28.5996 -15.2002 53.5 -37.7998 67.7998l80.3994 128.4c4.7998 7.69922 15.2998 10.0996 22.7002 4.7998c58.0996 -42 97.4004 -108.4 102.5 -184.2c0.599609 -9.09961 -7.09961 -16.7998 -16.2002 -16.7998h-151.6zM290.4 124.5l80.3994 -128.5
-c4.7998 -7.59961 2.40039 -18.0996 -5.59961 -22.4004c-34.9004 -18.7998 -74.7998 -29.5996 -117.2 -29.5996s-82.2998 10.7998 -117.2 29.5996c-8 4.30078 -10.3994 14.7002 -5.59961 22.4004l80.3994 128.5c12.4004 -7.7002 26.8008 -12.4004 42.4004 -12.4004
-s30.0996 4.7002 42.4004 12.4004zM248 144.2c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM16.2002 192.2c-9.10059 0 -16.7998 7.7002 -16.2002 16.7002c5.09961 75.7998 44.4004 142.199 102.5 184.199
-c7.40039 5.40039 17.9004 2.90039 22.7002 -4.7998l80.3994 -128.399c-22.5996 -14.2002 -37.7998 -39.1006 -37.7998 -67.7002h-151.6z" />
-    <glyph glyph-name="radiation-alt" unicode="&#xf7ba;" horiz-adv-x="496" 
-d="M312 192c0 22.7998 -12.0996 42.7998 -30.0996 54l41.6992 66.7998c5.2002 8.2998 16.4004 9.90039 24 3.7998c32.5 -26 54.9004 -64.1992 59.5 -107.8c0.900391 -9.09961 -6.7998 -16.7998 -16 -16.7998h-79.0996zM214.2 137.9
-c9.7998 -6.2002 21.5 -9.90039 33.8994 -9.90039c12.4004 0 24 3.7002 33.8008 9.90039l41.7998 -66.9004c4.7998 -7.7998 2.39941 -18.4004 -5.7998 -22.5c-21.2002 -10.4004 -44.8008 -16.5 -69.9004 -16.5s-48.7002 6.09961 -69.7998 16.5
-c-8.2002 4.09961 -10.7002 14.7002 -5.7998 22.5zM104.9 192c-9.2002 0 -17 7.7002 -15.9004 16.9004c4.59961 43.5996 26.9004 81.7998 59.5 107.8c7.59961 6.09961 18.7998 4.5 24 -3.7998l41.7002 -66.8008c-18.1006 -11.2998 -30.2002 -31.2998 -30.2002 -54.0996
-h-79.0996zM248 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM248 376c-101.5 0 -184 -82.5 -184 -184s82.5 -184 184 -184s184 82.5 184 184s-82.5 184 -184 184zM248 160c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
-s32 -14.2998 32 -32s-14.2998 -32 -32 -32z" />
-    <glyph glyph-name="restroom" unicode="&#xf7bd;" horiz-adv-x="640" 
-d="M128 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM512 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM639.3 93.5c3.7002 -15.0996 -8.2998 -29.5 -24.5 -29.5
-h-54.7998v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-54.7998c-16.2002 0 -28.2002 14.4004 -24.7002 29.5l45.5996 185.8c3.30078 13.5 15.5 23 29.8008 24.2002c15 -9.7002 32.7998 -15.5 52 -15.5c19.1992 0 37 5.7998 52 15.5
-c14.2998 -1.2002 26.5 -10.7002 29.7998 -24.2002zM336 448c8.7998 0 16 -7.2002 16 -16v-480c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32zM180.1 303.6c24.6006 -2.09961 43.9004 -22.5 43.9004 -47.5996v-136
-c0 -13.2998 -10.7002 -24 -24 -24h-8v-136c0 -13.2998 -10.7002 -24 -24 -24h-80c-13.2998 0 -24 10.7002 -24 24v136h-8c-13.2998 0 -24 10.7002 -24 24v136c0 25.0996 19.2998 45.5 43.9004 47.5996c15 -9.7998 32.8994 -15.5996 52.0996 -15.5996
-s37.0996 5.7998 52.0996 15.5996z" />
-    <glyph glyph-name="satellite" unicode="&#xf7bf;" 
-d="M502.609 137.958l-96.7041 -96.7168c-5.76758 -5.74707 -13.7207 -9.30176 -22.499 -9.30176c-8.77734 0 -16.7402 3.55469 -22.5078 9.30176l-80.3262 80.418l-9.89258 -9.9082c10.8848 -23.9746 16.9482 -50.5957 16.9482 -78.6221
-c0 -32.3584 -8.10156 -63.1982 -22.3555 -89.9004c-4.50098 -8.50098 -16.3936 -9.59473 -23.207 -2.79785l-107.519 107.515l-17.7998 -17.7988c0.703125 -2.60938 1.60938 -5.00098 1.60938 -7.79785c0 -17.6641 -14.3408 -32.0059 -32.0049 -32.0059
-s-32.0059 14.3418 -32.0059 32.0059s14.3418 32.0039 32.0059 32.0039c2.79688 0 5.18848 -0.90625 7.79785 -1.60938l17.7998 17.7998l-107.518 107.515c-6.79883 6.8125 -5.7041 18.6113 2.79688 23.2061c26.7031 14.2539 57.1895 22.3359 89.5479 22.3359
-c28.0273 0 55.0049 -6.04395 78.9805 -16.9297l9.79883 9.79883l-80.3105 80.417c-5.74609 5.78613 -9.29785 13.7539 -9.29785 22.5449s3.55176 16.7686 9.29785 22.5547l96.7197 96.7168c5.72754 5.74512 13.6484 9.30273 22.3945 9.30273
-c0.0351562 0 0.0732422 -0.00488281 0.109375 -0.00488281h0.0458984c8.79199 0 16.7656 -3.5498 22.5518 -9.29785l80.3262 -80.3076l47.8047 47.8965c6.08301 6.07715 14.4805 9.83789 23.749 9.83789c9.26953 0 17.6768 -3.76074 23.7588 -9.83789l47.5088 -47.5059
-c6.07031 -6.08594 9.82617 -14.4824 9.82617 -23.749s-3.75586 -17.6719 -9.82617 -23.7578l-47.8057 -47.8975l80.3105 -80.417c5.73633 -5.75195 9.28516 -13.6865 9.28516 -22.4434c0 -8.81348 -3.59277 -16.8018 -9.39453 -22.5625zM219.562 250.567l73.8252 73.8223
-l-68.918 68.8994l-73.8096 -73.8066zM457.305 160.461l-68.9023 68.916l-73.8242 -73.8232l68.918 -68.8994z" />
-    <glyph glyph-name="satellite-dish" unicode="&#xf7c0;" 
-d="M305.449 -14.5898c7.3916 -7.29785 6.18848 -20.0967 -3 -25.0039c-77.7129 -41.8027 -176.726 -29.9102 -242.344 35.708c-65.6016 65.6035 -77.5098 164.523 -35.6914 242.332c4.89062 9.09473 17.6895 10.2979 25.0029 3l116.812 -116.813l27.3945 27.3945
-c-0.6875 2.60938 -1.59375 5.00098 -1.59375 7.81348c0 17.6631 14.3398 32.0039 32.0039 32.0039c17.6631 0 32.0039 -14.3408 32.0039 -32.0039c0 -17.6641 -14.3408 -32.0039 -32.0039 -32.0039c-2.79785 0 -5.2041 0.890625 -7.79785 1.59375l-27.4102 -27.4102z
-M511.976 144.933c0.0175781 -0.301758 0.0253906 -0.605469 0.0253906 -0.912109c0 -8.86133 -7.1748 -16.0488 -16.0273 -16.0898h-32.1133c-8.46289 0.0244141 -15.3867 6.65918 -15.8926 15.002c-7.50098 129.519 -111.515 234.533 -240.937 241.534
-c-8.34863 0.444336 -14.9902 7.36426 -14.9902 15.8223c0 0.0292969 -0.0126953 0.0566406 -0.0117188 0.0859375v31.5986c0.0361328 8.85156 7.2334 16.0264 16.0938 16.0264c0.308594 0 0.603516 -0.00683594 0.908203 -0.0244141
-c163.224 -8.59473 294.443 -139.816 302.944 -303.043zM415.964 145.229c0.0244141 -0.364258 0.0371094 -0.732422 0.0371094 -1.10254c0 -8.92578 -7.23145 -16.1621 -16.1484 -16.1963h-32.208c-8.34961 0.0605469 -15.1953 6.51953 -15.8926 14.7051
-c-6.90625 77.0107 -68.1172 138.91 -144.924 145.224c-8.25781 0.592773 -14.7959 7.48633 -14.7988 15.8926v32.1143v0.00390625c0 8.9043 7.22949 16.1338 16.1338 16.1338c0.396484 0 0.775391 -0.0136719 1.16504 -0.0419922
-c110.123 -8.50098 198.229 -96.6074 206.636 -206.732z" />
-    <glyph glyph-name="sd-card" unicode="&#xf7c2;" horiz-adv-x="384" 
-d="M320 448c35.2998 0 64 -28.7002 64 -64v-384c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v320l128 128h192zM160 288v96h-48v-96h48zM240 288v96h-48v-96h48zM320 288v96h-48v-96h48z" />
-    <glyph glyph-name="sim-card" unicode="&#xf7c4;" horiz-adv-x="384" 
-d="M0 384c0 35.2998 28.7002 64 64 64h192l128 -128v-320c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v384zM224 192v64h-64v-64h64zM320 192v32c0 17.7002 -14.2998 32 -32 32h-32v-64h64zM256 64v-64h32c17.7002 0 32 14.2998 32 32v32h-64z
-M160 64v-64h64v64h-64zM64 64v-32c0 -17.7002 14.2998 -32 32 -32h32v64h-64zM64 160v-64h256v64h-256zM64 224v-32h64v64h-32c-17.7002 0 -32 -14.2998 -32 -32z" />
-    <glyph glyph-name="skating" unicode="&#xf7c5;" horiz-adv-x="448" 
-d="M400 448c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM400 0c8.7998 0 16 -7.2002 16 -16c0 -26.5 -21.5 -48 -48 -48h-96c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 7.2002 16 16s7.2002 16 16 16zM117.8 -8.59961
-c6.2998 6.2998 16.5 6.19922 22.7002 0c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006c-9.2998 -9.2998 -21.5996 -14 -33.9004 -14c-12.2998 0 -24.5996 4.60059 -34 14l-67.8994 67.9004c-6.2002 6.2002 -6.2002 16.3994 0 22.5996s16.3994 6.2002 22.5996 0
-l67.9004 -67.8994c6.2002 -6.30078 16.3994 -6.2002 22.5996 0zM173.9 171.2c3.7998 -6.10059 8.19922 -11.7998 13.1992 -16.7998l30.2002 -30.2002l-91.8994 -91.9004c-6.2002 -6.2998 -14.4004 -9.39941 -22.6006 -9.39941s-16.3994 3.19922 -22.5996 9.39941
-c-12.5 12.4004 -12.5 32.7002 0 45.2002zM128 288c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h204.6c16.3008 0 30.8008 -9.7002 37 -24.7002c6.2002 -15 2.80078 -32.0996 -8.69922 -43.5996l-82.3008 -82.2998c-0.5 -0.5 -1.19922 -0.700195 -1.69922 -1.10059
-l61 -61c9 -8.89941 14.0996 -21.2998 14.0996 -33.8994v-89.4004c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32v82.7998l-78.2002 78.2002c-12.5996 12.5 -19.3994 29.9004 -18.7002 47.7002c0.700195 17.7002 8.80078 34.5996 22.3008 46.0996l20.0996 17.2002
-h-105.5z" />
-    <glyph glyph-name="skiing" unicode="&#xf7c9;" 
-d="M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM505 -4.09961c9.2998 -9.30078 9.2998 -24.5 0 -33.8008c-17 -17 -39.7998 -26 -63 -26c-12.5996 0 -25.2002 2.60059 -37.0996 8.10059l-391.9 202.5
-c-11.7998 6 -16.4004 20.5 -10.2998 32.2998c6.09961 11.7998 20.5996 16.2998 32.2998 10.2998l197.9 -102.3l45.8994 68.7998l-75.0996 75.2002c-14.2998 14.4004 -20.6006 34.5 -17.7002 54.4004l107 -53.1006l40.4004 -40.5
-c16.1992 -16.0996 18.6992 -41.5996 6 -60.5996l-49.2002 -73.7998l135.8 -70.2002c14.5996 -6.7002 33 -3.40039 45.0996 8.7002c9.30078 9.39941 24.5 9.39941 33.9004 0zM120 356.4l-26.2002 23c-2.2002 1.89941 -2.39941 5.19922 -0.5 7.39941
-c1.2998 1.5 3.2002 2.10059 5 1.7002l34.4004 -7h0.200195l11.0996 21.7002c13.7002 -7 21.2002 -21.1006 20.9004 -35.6006l62.5 -31l81.1992 32.5c43.6006 17.4004 76.4004 -15 84.5 -39.1992l17.1006 -51.2002l52.0996 -26.1006
-c15.7998 -7.89941 22.2002 -27.0996 14.2998 -42.8994c-7.89941 -15.7998 -27 -22.2002 -42.8994 -14.2998l-58.1006 29c-11.3994 5.69922 -20 15.5996 -24 27.6992l-6.39941 19.1006l-32.4004 -13l-114.5 56.7998c0.100586 0.0996094 0.100586 0.200195 0.200195 0.299805
-l-47.2002 23.4004c-11.5996 -9.7002 -28.3994 -12.1006 -42.7998 -4.7998z" />
-    <glyph glyph-name="skiing-nordic" unicode="&#xf7ca;" horiz-adv-x="576" 
-d="M336 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM552 32c13.2002 0 24 -10.7998 24 -24c0 -39.7002 -32.2998 -72 -72 -72h-480c-13.2002 0 -24 10.7002 -24 24s10.7998 24 24 24h42.9004l54.0996 270.8
-c-0.700195 0.799805 -1.7002 1.2002 -2.40039 2.10059c-10.7998 14.0996 -8.09961 34.1992 5.90039 44.8994l39.7002 30.4004c23 17.5996 52.5 23.8994 80.7998 17.0996l71.2002 -21.2002c26.2998 -6.69922 49.2998 -25.3994 61.7998 -50.8994l26.0996 -53.2002h44
-c17.7002 0 32 -14.2998 32 -32c0 -13.4004 -8.39941 -24.9004 -20.0996 -29.5996l-25.5 -178.4h69.5c13.2002 0 24 10.7998 24 24c0 13.2998 10.7998 24 24 24zM291.5 -16l25.5 81.2002l-85 50.2002c-27.5996 16.2998 -38.9004 50.7998 -26.2998 80.2998l37.5 87.3994
-l-14.7002 4.40039c-7.90039 1.90039 -17.5996 -0.200195 -25.2998 -6.09961l-39.7002 -30.4004c-3.59961 -2.7002 -7.59961 -4.59961 -11.7002 -5.59961l-52.2998 -261.4h24.2002l62.5 131.8c7.59961 -10.8994 17.3994 -20.5996 29.5 -27.7998l22 -13l-43.1006 -91h96.9004z
-M402.1 -16l25.2002 176h-33.2998c-18.2002 0 -35.0996 10.5996 -43.0996 26.9004l-20.3008 41.3994l-31.2998 -78.2998l61.2002 -36.0996c18.7002 -11.3008 27.5 -33.6006 21.5996 -54.4004l-23.5996 -75.5h43.5996z" />
-    <glyph glyph-name="sleigh" unicode="&#xf7cc;" horiz-adv-x="640" 
-d="M612.7 97.2998c18.5 -14.7002 28.5996 -37.2002 27.2002 -61c-2.2002 -39 -36.9004 -68.2998 -75.9004 -68.2998h-516c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h519.3c13.6006 0 24.6006 11 24.6006 24.5996c0 7.5 -3.30078 14.5 -9.2002 19.2002
-l-9.2998 7.40039c-6.90039 5.5 -8 15.5996 -2.5 22.5l10 12.5c5.5 6.89941 15.5996 8 22.5 2.5zM32 224v128c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h20.7002c65.7002 0 125.899 -37.2002 155.3 -96s89.5 -96 155.3 -96h20.7002c35.2998 0 64 28.7002 64 64v64h96
-c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32v-96c0 -53 -43 -96 -96 -96v-48h-64v48h-192v-48h-64v52.5c-55.0996 14.2998 -96 63.9004 -96 123.5z" />
-    <glyph glyph-name="sms" unicode="&#xf7cd;" 
-d="M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002
-c0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128.2 144c23.3994 0 42.5 17.2998 42.3994 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998
-c-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996
-l21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2002zM320 152v104c0 8.7998 -7.2002 16 -16 16h-16
-c-6 0 -11.5996 -3.40039 -14.2998 -8.7998l-17.7002 -35.4004l-17.7002 35.4004c-2.7002 5.39941 -8.2002 8.7998 -14.2998 8.7998h-16c-8.7998 0 -16 -7.2002 -16 -16v-104c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v68.2002l24.9004 -55.7998
-c2.89941 -5.90039 11.3994 -5.90039 14.2998 0l24.7998 55.7998v-68.2002c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8zM368.3 144c23.4004 0 42.4004 17.2998 42.2998 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998
-c-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996
-l21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2998z" />
-    <glyph glyph-name="snowboarding" unicode="&#xf7ce;" 
-d="M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM460.8 198.4l-83.5 62.8994l-66 -30.5l52 -39c14.9004 -11.2002 22 -30.2002 18.1006 -48.3994l-21.9004 -102c-2.2002 -10.1006 -9.09961 -17.8008 -17.7998 -21.9004
-l90.7998 -33.0996c9.7002 -3.5 20.2002 -3.10059 29.5 1.2998c12 5.59961 26.2998 0.399414 31.9004 -11.6006c5.59961 -12 0.399414 -26.2998 -11.6006 -31.8994c-11.5996 -5.5 -24 -8.2002 -36.5 -8.2002c-10 0 -20 1.7998 -29.7002 5.2998l-364.8 132.7
-c-21.7998 7.90039 -39.0996 23.7998 -48.8994 44.7998c-5.60059 12 -0.400391 26.2998 11.5996 31.9004c12 5.59961 26.2998 0.399414 31.9004 -11.6006c4.39941 -9.39941 12.0996 -16.5 21.7998 -20l38.7002 -14.0996c-3.80078 3.5 -7 7.7002 -8.7002 12.9004
-c-5.60059 16.7998 3.39941 34.8994 20.2002 40.5l74.0996 24.6992v53.1006c0 24.3994 13.5996 46.2998 35.4004 57.2002l41.1992 20.5996l-16.3994 5.5c-12.1006 4.09961 -22 12.5996 -27.7002 24l-29.0996 58.0996c-7.90039 15.8008 -1.5 35 14.2998 42.9004
-s35 1.5 42.8994 -14.2998l26.1006 -52.1006l63.7002 -21.1992c16.2998 -5.40039 31.5996 -13.5 45.3994 -23.8008l111.4 -83.5c14.2002 -10.5996 17 -30.6992 6.39941 -44.7998c-6.2998 -8.39941 -15.8994 -12.7998 -25.5996 -12.7998
-c-6.7002 0 -13.4004 2.09961 -19.2002 6.40039zM316.4 146.7l-60.5 45.2998v-20.5c0 -20.7002 -13.2002 -39 -32.8008 -45.5l-85 -28.4004c-2.59961 -0.899414 -5.2998 -1.09961 -8 -1.2998l169.4 -61.5996c-2.90039 6.09961 -4.2998 12.8994 -2.7998 20z" />
-    <glyph glyph-name="snowman" unicode="&#xf7d0;" 
-d="M510.9 295.7c3.19922 -8.10059 -0.800781 -17.2002 -8.90039 -20.2998l-135.2 -55.2002c0.400391 -4.10059 1.2002 -8 1.2002 -12.2002c0 -10 -1.7002 -19.5 -4.2002 -28.7002c21.1006 -21.3994 36.1006 -48.7998 41.6006 -79
-c11.5 -63.2002 -16.4004 -120.3 -62.9004 -152.6c-10.9004 -7.60059 -23.9004 -11.7002 -37.2002 -11.7002h-99.2002c-11 0 -22 2.2998 -31.2998 8.2002c-42.3994 26.8994 -70.7998 73.7998 -70.7998 127.8c0 41.7998 16.9004 79.5996 44.2998 107.1
-c-2.5 9.30078 -4.2002 18.8008 -4.2002 28.9004c0 4.2002 0.800781 8.2002 1.2002 12.2002l-135.2 55.2002c-8.19922 3.19922 -12.1992 12.2998 -8.89941 20.2998l5.89941 14.5c3.30078 8 12.6006 11.8994 20.8008 8.7002l28.0996 -11.5v29
-c0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 15.7998 -15.5996v-46.9004c0 -0.5 -0.200195 -1 -0.299805 -1.5l56.4004 -23c6 10 13.2998 18.9004 22 26.5996c-13.5 16.6006 -22 37.4004 -22 60.5c0 53 43 96 96 96s96 -43 96 -96
-c0 -23.0996 -8.40039 -43.8994 -22 -60.5c8.69922 -7.69922 16.0996 -16.5996 22 -26.5996l56.3994 23c0 0.5 -0.299805 1 -0.299805 1.5v46.9004c0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 16 -15.5996v-29l28.2002 11.5
-c8.2002 3.19922 17.5 -0.700195 20.7998 -8.7002zM224 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 80c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 144
-c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 208c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 296c0 0 16 23.2002 16 32s-7.2002 16 -16 16s-16 -7.2002 -16 -16s16 -32 16 -32z
-M288 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z" />
-    <glyph glyph-name="snowplow" unicode="&#xf7d2;" horiz-adv-x="640" 
-d="M120 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM200 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM280 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24
-s-24 10.7002 -24 24s10.7002 24 24 24zM360 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM598.6 22.5996l36.7002 -36.6992c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-22.5996 -22.5996
-c-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-36.6992 36.7002c-26.5 26.5 -41.4004 62.3994 -41.4004 99.8994v18.7002h-43.2002c7 -14.5996 11.2002 -30.7002 11.2002 -48c0 -61.9004 -50.0996 -112 -112 -112h-256c-61.9004 0 -112 50.0996 -112 112
-c0 44.5996 26.2998 82.7998 64 100.8v91.2002c0 26.5 21.5 48 48 48h16v112c0 26.5 21.5 48 48 48h144.3c19.2998 0 36.6006 -11.4004 44.2002 -29.0996l78.2998 -182.801c3.40039 -8 5.2002 -16.5 5.2002 -25.1992v-50.9004h64v18.7002
-c0 37.5 14.9004 73.3994 41.4004 99.8994l36.6992 36.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l22.5996 -22.5996c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-36.7002 -36.6992c-14.5 -14.5 -22.5996 -34.1006 -22.5996 -54.6006v-101.6
-c0 -20.5 8.09961 -40.1006 22.5996 -54.6006zM192 384v-96l64 -64h122.4l-68.6006 160h-117.8zM368 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-256c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48h256z" />
-    <glyph glyph-name="tenge" unicode="&#xf7d7;" horiz-adv-x="384" 
-d="M372 288c6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-140v-228c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v228h-140c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360zM372 416
-c6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-360c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360z" />
-    <glyph glyph-name="toilet" unicode="&#xf7d8;" horiz-adv-x="384" 
-d="M368 400h-16v-156.7c20.2002 -10.0996 32 -22.2002 32 -35.2998c0 -67.2002 -34.5996 -126.2 -86.7998 -160.5l21.3994 -70.2002c6.30078 -20.5 -9.09961 -41.2998 -30.5996 -41.2998h-192c-21.5 0 -36.9004 20.7998 -30.5996 41.2998l21.3994 70.2002
-c-52.2002 34.2998 -86.7998 93.2998 -86.7998 160.5c0 13.0996 11.7998 25.2002 32 35.2998v156.7h-16c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h352c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16zM80 376v-16
-c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8zM192 176c77.0996 0 139.6 14.2998 139.6 32s-62.5 32 -139.6 32s-139.6 -14.2998 -139.6 -32s62.5 -32 139.6 -32z" />
-    <glyph glyph-name="tools" unicode="&#xf7d9;" 
-d="M501.1 52.2998c14.5 -14.5 14.5 -38.0996 0 -52.7002l-52.6992 -52.6992c-14.5 -14.6006 -38.1006 -14.6006 -52.7002 0l-117.101 117.1c-23.0996 23.0996 -27.5 57.5996 -13.8994 85.4004l-106.601 106.6h-62.0996l-96 128l64 64l128 -96v-62.0996l106.6 -106.601
-c27.8008 13.7002 62.3008 9.2002 85.4004 -13.8994zM331.7 223c-8.2002 0 -16.6006 -1 -24.7002 -2.90039l-82.0996 82.1006c-0.700195 37.5 12.6992 75.0996 41.1992 103.6c37 37 89.2002 49.6006 136.601 37.9004c9.09961 -2.2998 12.2998 -13.6006 5.7002 -20.2002
-l-74.4004 -74.4004l11.2998 -67.8994l67.9004 -11.2998l74.3994 74.3994c6.60059 6.60059 17.9004 3.5 20.1006 -5.5c11.7998 -47.3994 -0.799805 -99.5996 -37.9004 -136.7c-13 -13 -28 -22.5996 -43.7998 -29.5l-19.4004 19.4004c-20 20 -46.5996 31 -74.8994 31z
-M227.8 141c-4.89941 -21.0996 -2.59961 -42.7998 5 -62.7002l-123.6 -123.6c-25 -25 -65.5 -25 -90.5 0s-25 65.5 0 90.5l152.399 152.5zM64 -24c13.2998 0 24 10.7998 24 24c0 13.2998 -10.7002 24 -24 24s-24 -10.7002 -24 -24c0 -13.2002 10.7998 -24 24 -24z" />
-    <glyph glyph-name="tram" unicode="&#xf7da;" 
-d="M288 384c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM511.5 396.1c2.2002 -8.5 -2.7998 -17.2998 -11.4004 -19.5996l-228.1 -60.7998v-91.7002h176c17.7002 0 32 -14.2998 32 -32v-224c0 -17.7002 -14.2998 -32 -32 -32
-h-384c-17.7002 0 -32 14.2998 -32 32v224c0 17.7002 14.2998 32 32 32h176v83.2002l-219.9 -58.7002c-1.2998 -0.299805 -2.69922 -0.5 -4.09961 -0.5c-7.09961 0 -13.5 4.7002 -15.4004 11.7998c-2.2998 8.60059 2.80078 17.2998 11.3008 19.6006l480 128
-c8.59961 2.2998 17.2998 -2.7002 19.5996 -11.3008zM176 64v96h-96v-96h96zM336 160v-96h96v96h-96zM304 160h-96v-96h96v96zM192 352c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z" />
-    <glyph glyph-name="fire-alt" unicode="&#xf7e4;" horiz-adv-x="448" 
-d="M323.56 396.8c72.46 -67.2598 124.44 -177.13 124.44 -230.399c0 -127.25 -100.29 -230.4 -224 -230.4s-224 103.15 -224 230.4c0 71.6396 69.7402 190.43 168 281.6c38.2803 -35.5303 72.0801 -73.6201 99.3398 -111.17
-c16.6406 20.3799 35.4199 40.6699 56.2197 59.9697zM304.09 56.1504c49.2402 34.4492 60.7803 101.229 33.4297 153.42c-3.35938 6.41992 -7.12988 13.1201 -11.2695 19.9697l-58.6299 -66.8799s-91.9004 117.359 -98.8301 125.34
-c-48.4805 -58.1201 -72.79 -92.1396 -72.79 -130.75c0 -77.5098 58.71 -125.25 130.86 -125.25c28.8594 0 55.5693 8.99023 77.2295 24.1504z" />
-    <glyph glyph-name="bacon" unicode="&#xf7e5;" horiz-adv-x="576" 
-d="M218.92 111.61c-34.8604 -34.8799 -59.6504 -44.1602 -85.9199 -54c-26 -9.76074 -53 -20.1299 -88.1699 -52.7305l-35.7598 35.5098c-12.7002 12.6104 -12.0703 33.6104 1.79004 45.0605c36.3398 29.9795 66.21 41.0996 91.0693 50.3594
-c9.16992 3.41016 68.9707 19.2607 98.7207 98.0908c8.60938 22.8096 46.3496 134.58 188.979 187.72c15.8506 5.91016 27.3604 10.2002 41 20.2998c5.14941 3.80859 11.5498 6.08008 18.4404 6.08008c8.46484 0 16.1426 -3.40137 21.7393 -8.91016l37.6709 -37.3896
-c-30.1504 -27.6904 -52.9102 -36.3701 -76.79 -45.3701c-28.3008 -10.6104 -57.5703 -21.5801 -97.3506 -61.3799s-50.7598 -69.0498 -61.3701 -97.3398c-9.84961 -26.3008 -19.1602 -51.1104 -54.0498 -86zM566.92 343.61
-c12.7002 -12.5996 12.0801 -33.6602 -1.80957 -45.0605c-36.3701 -30.0098 -66.2402 -41.1396 -91.1104 -50.4102c-9.2002 -3.43945 -69 -19.3193 -98.7305 -98.1094c-8.93945 -23.5898 -46.7393 -134.69 -188.939 -187.69
-c-15.8496 -5.89941 -27.3398 -10.1797 -40.9404 -20.2402c-5.14941 -3.81055 -11.5527 -6.08301 -18.4453 -6.08301c-8.46289 0 -16.1377 3.39844 -21.7344 8.90332l-37.6797 37.4297c30.1094 27.6699 52.8594 36.3301 76.7197 45.3301
-c28.2998 10.5898 57.5098 21.54 97.2998 61.3203s50.7803 69 61.4199 97.3301c9.81055 26.3096 19.1104 51.1602 54 86c34.8906 34.8398 59.6904 44.1504 85.9502 54c26.0703 9.79004 53.0605 20.1602 88.25 52.79z" />
-    <glyph glyph-name="book-medical" unicode="&#xf7e6;" horiz-adv-x="448" 
-d="M448 89.5996c0 -9.59961 -3.2002 -15.999 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320
-c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 280v-48c0 -4.41504 3.58496 -8 8 -8h56v-56c0 -4.41504 3.58496 -8 8 -8h48c4.41504 0 8 3.58496 8 8v56h56c4.41504 0 8 3.58496 8 8v48c0 4.41504 -3.58496 8 -8 8h-56v56
-c0 4.41504 -3.58496 8 -8 8h-48c-4.41504 0 -8 -3.58496 -8 -8v-56h-56c-4.41504 0 -8 -3.58496 -8 -8zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z" />
-    <glyph glyph-name="bread-slice" unicode="&#xf7ec;" horiz-adv-x="576" 
-d="M288 448c180 0 288 -93.4004 288 -169.14c0 -30.3008 -24.2402 -54.8604 -64 -54.8604v-256c0 -17.6699 -16.1201 -32 -36 -32h-376c-19.8799 0 -36 14.3301 -36 32v256c-39.7598 0 -64 24.5596 -64 54.8604c0 75.7393 108 169.14 288 169.14z" />
-    <glyph glyph-name="cheese" unicode="&#xf7ef;" 
-d="M0 160h512v-160c0 -17.6611 -14.3389 -32 -32 -32h-448c-17.6611 0 -32 14.3389 -32 32v160zM299.83 416c118.17 -6.2002 212.17 -104.11 212.17 -224h-512l278.7 217c5.47656 4.38477 12.4277 7.02051 19.9814 7.02051
-c0.384766 0 0.767578 -0.00683594 1.14844 -0.0205078z" />
-    <glyph glyph-name="clinic-medical" unicode="&#xf7f2;" horiz-adv-x="576" 
-d="M288 333l218.74 -192.9c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM384 72v48c0 4.41504 -3.58496 8 -8 8h-56v56
-c0 4.41504 -3.58496 8 -8 8h-48c-4.41504 0 -8 -3.58496 -8 -8v-56h-56c-4.41504 0 -8 -3.58496 -8 -8v-48c0 -4.41504 3.58496 -8 8 -8h56v-56c0 -4.41504 3.58496 -8 8 -8h48c4.41504 0 8 3.58496 8 8v56h56c4.41504 0 8 3.58496 8 8zM570.69 211.72
-c3.2627 -2.92969 5.30762 -7.18555 5.30762 -11.9121c0 -4.10156 -1.54688 -7.84473 -4.08789 -10.6777l-21.4004 -23.8203c-2.92969 -3.2627 -7.18457 -5.30762 -11.9111 -5.30762c-4.10742 0 -7.85449 1.55078 -10.6885 4.09766l-229.32 202.271
-c-2.82031 2.48828 -6.53906 3.99902 -10.5928 3.99902c-4.05273 0 -7.75684 -1.51074 -10.5771 -3.99902l-229.32 -202.28c-2.83398 -2.54688 -6.58594 -4.10645 -10.6924 -4.10645c-4.72656 0 -8.97754 2.05371 -11.9072 5.31641l-21.4102 23.8203
-c-2.54688 2.83398 -4.10645 6.58594 -4.10645 10.6934c0 4.72559 2.05371 8.97656 5.31641 11.9062l256 226c7.06934 6.3916 16.4707 10.2852 26.7412 10.2852c10.2715 0 19.6396 -3.89355 26.709 -10.2852z" />
-    <glyph glyph-name="comment-medical" unicode="&#xf7f5;" 
-d="M256 416c141.39 0 256 -93.1201 256 -208s-114.61 -208 -256 -208c-0.161133 0 -0.446289 0.107422 -0.606445 0.107422c-37.5674 0 -73.5547 6.81445 -106.794 19.2725c-24.5996 -19.6299 -74.3398 -51.3799 -140.6 -51.3799
-c-4.41113 0.00488281 -7.99023 3.58984 -7.99023 8.00195c0 2.12891 0.833008 4.06445 2.19043 5.49805c0.5 0.5 42.2598 45.4502 54.7998 95.7598c-35.5898 35.7402 -57 81.1807 -57 130.74c0 114.88 114.62 208 256 208zM352 184v48c0 4.41504 -3.58496 8 -8 8h-56v56
-c0 4.41504 -3.58496 8 -8 8h-48c-4.41504 0 -8 -3.58496 -8 -8v-56h-56c-4.41504 0 -8 -3.58496 -8 -8v-48c0 -4.41504 3.58496 -8 8 -8h56v-56c0 -4.41504 3.58496 -8 8 -8h48c4.41504 0 8 3.58496 8 8v56h56c4.41504 0 8 3.58496 8 8z" />
-    <glyph glyph-name="crutch" unicode="&#xf7f7;" 
-d="M507.31 262.29c2.87109 -2.89258 4.64551 -6.87891 4.64551 -11.2725c0 -4.42285 -1.79883 -8.42969 -4.70508 -11.3271l-22.6201 -22.6309c-2.89648 -2.89648 -6.90137 -4.68945 -11.3174 -4.68945s-8.41602 1.79297 -11.3125 4.68945l-181 181
-c-2.89648 2.89648 -4.68945 6.90137 -4.68945 11.3174s1.79297 8.41699 4.68945 11.3135l22.6904 22.5996c2.89551 2.89355 6.89844 4.68457 11.3115 4.68457c4.41406 0 8.41211 -1.79102 11.3076 -4.68457zM327.77 195.88l55.1006 55.1201l45.25 -45.2695l-109.68 -109.681
-c-12.4922 -12.4961 -28.4805 -21.5479 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.89648 -2.89746 -6.90137 -4.69043 -11.3174 -4.69043s-8.41699 1.79297 -11.3135 4.69043l-22.6191 22.6191c-2.89746 2.89648 -4.69043 6.90137 -4.69043 11.3174
-s1.79297 8.41699 4.69043 11.3135l102 102l27.7393 120.26c4.11816 17.8066 13.1738 33.7939 25.6699 46.29l109.671 109.67l45.25 -45.25l-55.1006 -55.1006zM273.2 141.31l9.30957 9.31055l-67.8896 67.8896l-9.31055 -9.30957
-c-4.16113 -4.17676 -7.17969 -9.51074 -8.55957 -15.4502l-18.2998 -79.2998l79.2998 18.3193c5.94238 1.36328 11.2783 4.37695 15.4502 8.54004z" />
-    <glyph glyph-name="disease" unicode="&#xf7fa;" 
-d="M472.29 252.1c48.54 -16.6191 53.8301 -73.8301 8.99023 -96.79l-62 -31.7393c-17.8301 -9.12988 -29.2803 -25.2002 -30.6299 -43l-4.7002 -61.8604c-3.4502 -44.79 -65.1299 -66.7803 -104.45 -37.2197l-54.3203 40.8301
-c-15.6201 11.7295 -36.96 16.1201 -57.0693 11.7295l-70 -15.2803c-50.6504 -11.0596 -94.1104 32.5605 -73.46 73.8008l28.4297 57c8.17969 16.3799 6.43945 35.1699 -4.63965 50.2393l-38.54 52.4209c-27.9307 37.9492 7 86.9092 59 82.8398l71.8994 -5.62012
-c20.6602 -1.62012 40.9404 5.59961 54.2002 19.3096l46.0898 47.7207c33.4297 34.5098 98.4199 21.1494 110 -22.6201l16 -60.4502c4.60059 -17.3906 18.8604 -31.71 38.1406 -38.3105zM160 192c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32
-s14.3389 -32 32 -32zM288 96c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM304 224c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16s-16 -7.16895 -16 -16s7.16895 -16 16 -16z" />
-    <glyph glyph-name="egg" unicode="&#xf7fb;" horiz-adv-x="384" 
-d="M192 448c106 0 192 -214 192 -320s-86 -192 -192 -192s-192 86 -192 192s86 320 192 320z" />
-    <glyph glyph-name="hamburger" unicode="&#xf805;" 
-d="M464 192c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48h-416c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48h416zM480 64c8.83105 0 16 -7.16895 16 -16v-16c0 -35.3223 -28.6777 -64 -64 -64h-352c-35.3223 0 -64 28.6777 -64 64v16
-c0 8.83105 7.16895 16 16 16h448zM58.6396 224c-34.5693 0 -54.6396 43.9102 -34.8193 75.8896c40.1797 64.9102 128.64 116.011 232.18 116.11c103.55 -0.0996094 192 -51.2002 232.18 -116.12c19.8008 -31.9795 -0.25 -75.8799 -34.8193 -75.8799h-394.721zM384 336
-c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16s16 7.16895 16 16s-7.16895 16 -16 16zM256 368c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16s16 7.16895 16 16s-7.16895 16 -16 16zM128 336c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16
-s16 7.16895 16 16s-7.16895 16 -16 16z" />
-    <glyph glyph-name="hand-middle-finger" unicode="&#xf806;" 
-d="M479.93 130.88l0.0703125 -82.8799c0 -61.7979 -50.1592 -111.973 -111.95 -112h-215c-30.9053 0.00292969 -58.9189 12.5361 -79.1895 32.8096l-30.9307 30.9307c-6.75488 6.75391 -10.9297 16.0928 -10.9297 26.3896v73.4697
-c0 14.6221 8.38574 27.2734 20.6396 33.4004l27.3604 15v-76c0 -4.41504 3.58496 -8 8 -8s8 3.58496 8 8v147.04c0 15.2598 12.8701 28.3799 30.8701 31.3799l30.6797 5.12012c17.8203 2.96973 34.4502 -8.38965 34.4502 -23.54v-32c0 -4.41504 3.58496 -8 8 -8
-s8 3.58496 8 8v200c0 0.0078125 -0.0244141 0.015625 -0.0244141 0.0234375c0 26.4912 21.5078 48 48 48c0.50293 0 1.00488 -0.0078125 1.50488 -0.0234375c26.2695 -0.799805 46.5195 -23.7197 46.5195 -50v-198c0 -4.41504 3.58496 -8 8 -8s8 3.58496 8 8v32
-c0 15.1396 16.6299 26.5 34.4502 23.5303l38.3994 -6.40039c13.46 -2.25 23.1504 -12.0996 23.1504 -23.54v-49.5898l35.6504 -8.92969c16.2188 -4.05371 28.2676 -18.7256 28.2793 -36.1904z" />
-    <glyph glyph-name="hard-hat" unicode="&#xf807;" 
-d="M480 160v-64h-448v64c0 80.25 49.2803 148.92 119.19 177.62l40.8096 -81.6201v112c0 8.83105 7.16895 16 16 16h96c8.83105 0 16 -7.16895 16 -16v-112l40.8096 81.6201c69.9102 -28.7002 119.19 -97.3701 119.19 -177.62zM496 64c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-480c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h480z" />
-    <glyph glyph-name="hospital-user" unicode="&#xf80d;" horiz-adv-x="640" 
-d="M480 128c-52.9834 0 -96 43.0166 -96 96s43.0166 96 96 96s96 -43.0166 96 -96s-43.0166 -96 -96 -96zM528 96c61.8145 0 112.002 -50.1738 112.002 -111.988c0 -0.210938 -0.000976562 -0.420898 -0.00195312 -0.631836
-c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.000976562 0.210938 0 0.40918 0 0.620117c0 61.8145 50.1855 112 112 112c0.0273438 0 0.0556641 -0.00488281 0.0830078 -0.00488281
-c2.42871 0 4.77051 -0.380859 6.9668 -1.08496c12.8193 -4.4541 26.6504 -6.87402 40.9775 -6.87402s28.0938 2.41992 40.9131 6.87402c2.19922 0.704102 4.54395 1.08984 6.97656 1.08984h0.0830078zM329.91 85.5498c-25.9033 -25.8965 -41.915 -61.665 -41.915 -101.15
-c0 -0.396484 0.00195312 -0.792969 0.00488281 -1.18945c0.166016 -17.7246 6.24512 -34.1309 16.3096 -47.21h-288.31c-8.83105 0 -16 7.16895 -16 16v368c0 17.6611 14.3389 32 32 32h32v64c0 17.6611 14.3389 32 32 32h160c17.6611 0 32 -14.3389 32 -32v-64h32
-c17.6611 0 32 -14.3389 32 -32v-216.62c-7.98633 -5.24609 -15.3037 -11.1562 -22.0898 -17.8301zM144 44v40c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12zM144 172v40
-c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12zM192 294v26h26c3.31152 0 6 2.68848 6 6v20c0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20
-c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6zM272 44v40c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40
-c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12zM272 172v40c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12z" />
-    <glyph glyph-name="hotdog" unicode="&#xf80f;" 
-d="M488.56 424.56c14.4766 -14.4795 23.4346 -34.498 23.4346 -56.5703s-8.95801 -42.0693 -23.4346 -56.5488l-352 -352c-14.5518 -15.0674 -34.9814 -24.4199 -57.5615 -24.4199c-44.1523 0 -80 35.8467 -80 80c0 22.5801 9.375 42.9873 24.4424 57.5391l352 352
-c14.4795 14.4766 34.498 23.4346 56.5703 23.4346s42.0693 -8.95801 56.5488 -23.4346zM438.63 329.37c2.89648 2.89648 4.68457 6.90137 4.68457 11.3174c0 8.83105 -7.16992 16.002 -16.002 16.002c-4.41602 0 -8.41602 -1.79297 -11.3125 -4.68945
-c-12.4102 -12.4102 -21.7598 -14 -34.71 -16.2305c-14.4004 -2.46973 -32.3203 -5.55957 -51.9199 -25.1494c-19.6006 -19.5898 -22.6699 -37.5205 -25.1396 -51.9199c-2.24023 -12.9502 -3.84082 -22.3105 -16.2402 -34.71
-c-12.4004 -12.4004 -21.7002 -14.0098 -34.7002 -16.2305c-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-19.6006 -19.5898 -22.6699 -37.5205 -25.1504 -51.9199c-2.21973 -12.9502 -3.80957 -22.29 -16.2197 -34.7002s-21.71 -14.0098 -34.71 -16.2305
-c-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-2.89648 -2.89648 -4.68457 -6.90137 -4.68457 -11.3174c0 -8.83105 7.16992 -16.002 16.002 -16.002c4.41602 0 8.41602 1.79297 11.3125 4.68945c12.4004 12.4004 21.7598 14 34.7002 16.2305
-c14.3994 2.46973 32.3301 5.55957 51.9297 25.1494c19.6006 19.5898 22.6699 37.5205 25.1396 51.9199c2.23047 12.9502 3.83008 22.2998 16.2305 34.7002s21.75 14 34.7002 16.2197c14.3994 2.48047 32.3193 5.56055 51.9199 25.1504
-c19.5996 19.5898 22.6699 37.5195 25.1494 51.9199c2.23047 12.9502 3.83008 22.3096 16.2305 34.71s21.7598 14 34.7002 16.2305c14.4102 2.46973 32.3301 5.5498 51.9297 25.1396zM31.4404 125.82l-11.5508 11.5498c-24.9893 24.9902 -26.6592 63.8398 -3.71973 86.7803
-l207.68 207.68c22.9404 22.9395 61.79 21.2803 86.79 -3.71973l11.54 -11.5508zM480.56 258.18l11.5508 -11.54c24.9893 -25 26.6592 -63.8496 3.71973 -86.79l-207.68 -207.68c-22.9404 -22.9395 -61.79 -21.2803 -86.79 3.71973l-11.54 11.5508z" />
-    <glyph glyph-name="ice-cream" unicode="&#xf810;" horiz-adv-x="448" 
-d="M368 288c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48h0.94043c-0.625 5.43945 -0.93457 10.9707 -0.93457 16.5762c0 79.4756 64.5234 144 144 144c79.4756 0 144 -64.5244 144 -144
-c0 -5.60547 -0.321289 -11.1367 -0.946289 -16.5762h0.94043zM195.38 -45.6904l-99.3799 205.69h256l-99.3799 -205.69c-4.99414 -10.8223 -15.9111 -18.3398 -28.6035 -18.3398s-23.6426 7.51758 -28.6367 18.3398z" />
-    <glyph glyph-name="laptop-medical" unicode="&#xf812;" horiz-adv-x="640" 
-d="M232 224c-4.41504 0 -8 3.58496 -8 8v48c0 4.41504 3.58496 8 8 8h56v56c0 4.41504 3.58496 8 8 8h48c4.41504 0 8 -3.58496 8 -8v-56h56c4.41504 0 8 -3.58496 8 -8v-48c0 -4.41504 -3.58496 -8 -8 -8h-56v-56c0 -4.41504 -3.58496 -8 -8 -8h-48
-c-4.41504 0 -8 3.58496 -8 8v56h-56zM576 400v-336h-512v336c0.0771484 26.4561 21.5439 47.9229 48 48h416c26.4561 -0.0771484 47.9229 -21.5439 48 -48zM512 128v256h-384v-256h384zM624 32c8.83105 0 16 -7.16895 16 -16v-16
-c-0.104492 -35.2744 -28.7256 -63.8955 -64 -64h-512c-35.2744 0.104492 -63.8955 28.7256 -64 64v16c0 8.83105 7.16895 16 16 16h239.23c-0.230469 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46z" />
-    <glyph glyph-name="pager" unicode="&#xf815;" 
-d="M448 384c35.3223 0 64 -28.6777 64 -64v-256c0 -35.3223 -28.6777 -64 -64 -64h-384c-35.3223 0 -64 28.6777 -64 64v256c0 35.3223 28.6777 64 64 64h384zM160 80v48h-80c-8.83105 0 -16 -7.16895 -16 -16v-16c0 -8.83105 7.16895 -16 16 -16h80zM288 96v16
-c0 8.83105 -7.16895 16 -16 16h-80v-48h80c8.83105 0 16 7.16895 16 16zM448 224v64c0 17.6611 -14.3389 32 -32 32h-320c-17.6611 0 -32 -14.3389 -32 -32v-64c0 -17.6611 14.3389 -32 32 -32h320c17.6611 0 32 14.3389 32 32z" />
-    <glyph glyph-name="pepper-hot" unicode="&#xf816;" 
-d="M330.67 184.88h107.46l37.0498 -38.54c-48.5293 -87.4697 -206.54 -210.34 -419.18 -210.34c-30.9072 0 -56 25.0928 -56 56s25.0928 56 56 56c141.58 0 163.44 181.24 221.92 250.82l52.75 -24.2207v-89.7197zM461.76 313.25
-c30.8984 -28.1729 50.2402 -68.7275 50.2402 -113.795v-0.145508c0 -13.6797 -2.2998 -26.6895 -5.55957 -39.3096l-54.6807 56.8799h-89.0898v78.2402l-74.6699 34.29c22.3398 14.0498 48.3398 22.5898 76.3398 22.5898
-c20.2783 -0.0078125 39.6836 -4.32031 57.1602 -11.96c18.4502 37.2197 8.25977 61.96 1.40039 72.3203c-0.896484 1.29883 -1.42676 2.88184 -1.42676 4.57715c0 2.20117 0.884766 4.19727 2.31641 5.65234l22.9004 23c1.45117 1.47559 3.46777 2.39453 5.69922 2.39453
-c2.5166 0 4.76367 -1.16504 6.23047 -2.98438c18.5596 -23.4805 35.2998 -71.9102 3.13965 -131.75z" />
-    <glyph glyph-name="pizza-slice" unicode="&#xf818;" 
-d="M158.87 447.85c181.91 -17.1699 332.02 -164.93 352.899 -345.71c1.87012 -16.2197 -7.89941 -31.54 -23.6191 -35.8994l-56.9404 -15.7803c-7.94043 186.39 -134.86 311.51 -322.479 317l14.8096 56.2705c4.12988 15.6992 19.1699 25.6396 35.3301 24.1191z
-M100.4 335.85c176.069 -1.95996 294.88 -119.25 299.149 -294.14l-379 -105.1c-1.37793 -0.381836 -2.82324 -0.59375 -4.32227 -0.59375c-8.94629 0 -16.21 7.26367 -16.21 16.21c0 1.42871 0.18457 2.81348 0.532227 4.13379zM128 32c17.6611 0 32 14.3389 32 32
-s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM176 184c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM280 80c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32z" />
-    <glyph glyph-name="trash-restore" unicode="&#xf829;" horiz-adv-x="448" 
-d="M53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.57031 -25.0762 -22.4316 -44.9971 -47.8994 -45h-245.801c-25.4678 0.00292969 -46.3291 19.9238 -47.8994 45zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112
-c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16v112h57.3701c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.81543 3.04297 -6.83984 4.94922 -11.3086 4.94922s-8.49512 -1.90625 -11.3105 -4.94922zM432 416
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3
-c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375c9.41113 0 17.5645 -5.42871 21.4961 -13.3232l9.40039 -18.7002h120z" />
-    <glyph glyph-name="trash-restore-alt" unicode="&#xf82a;" horiz-adv-x="448" 
-d="M32 -16v336h384v-336c0 -26.4922 -21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16v112h57.3701
-c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.81543 3.04297 -6.83984 4.94922 -11.3086 4.94922s-8.49512 -1.90625 -11.3105 -4.94922zM432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375c9.41113 0 17.5645 -5.42871 21.4961 -13.3232
-l9.40039 -18.7002h120z" />
-    <glyph glyph-name="user-nurse" unicode="&#xf82f;" horiz-adv-x="448" 
-d="M319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79c0 -32.127 -26.083 -58.21 -58.21 -58.21h-331.58c-32.127 0 -58.21 26.083 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896zM224 144c-70.6455 0 -128 57.3545 -128 128v110.18
-c0 13.7119 8.62988 25.4092 20.7598 29.96l84.7705 31.79c6.98438 2.61914 14.6035 4.05176 22.498 4.05176s15.457 -1.43262 22.4414 -4.05176l84.7705 -31.75c12.1309 -4.55078 20.7598 -16.248 20.7598 -29.96v-0.0400391v-110.18c0 -70.6455 -57.3545 -128 -128 -128z
-M184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699c0 2.75977 -2.24023 5 -5 5h-16.6602
-c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-16c0 -44.1533 35.8467 -80 80 -80s80 35.8467 80 80v16h-160z" />
-    <glyph glyph-name="wave-square" unicode="&#xf83e;" horiz-adv-x="640" 
-d="M476 -32h-152c-19.8691 0 -36 16.1309 -36 36v348h-96v-156c0 -19.8691 -16.1309 -36 -36 -36h-140c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h112v156c0 19.8691 16.1309 36 36 36h152c19.8691 0 36 -16.1309 36 -36v-348h96v156
-c0 19.8691 16.1309 36 36 36h140c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-112v-156c0 -19.8691 -16.1309 -36 -36 -36z" />
-    <glyph glyph-name="biking" unicode="&#xf84a;" horiz-adv-x="640" 
-d="M400 352c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48s48 -21.5078 48 -48s-21.5078 -48 -48 -48zM396 231l-41.3604 33.1104l-58.25 -49.9199l41.3604 -27.5703c8.60547 -5.7373 14.248 -15.5117 14.25 -26.6201v-128c0 -17.6611 -14.3389 -32 -32 -32
-s-32 14.3389 -32 32v110.88l-81.7305 54.5205c-8.60742 5.7373 -14.2686 15.5068 -14.2686 26.6191c0 9.71777 4.3418 18.4297 11.1895 24.3008l112 96c5.58887 4.80176 12.8965 7.70117 20.8359 7.70117c7.55566 0 14.502 -2.62891 19.9736 -7.02148l71.2197 -57h52.7803
-c17.6611 0 32 -14.3389 32 -32s-14.3389 -32 -32 -32h-64c-0.0205078 0 -0.0625 0.0117188 -0.0830078 0.0117188c-7.53125 0 -14.457 2.61621 -19.917 6.98828zM512 192c70.6455 0 128 -57.3545 128 -128s-57.3545 -128 -128 -128s-128 57.3545 -128 128
-s57.3545 128 128 128zM512 0c35.3223 0 64 28.6777 64 64s-28.6777 64 -64 64s-64 -28.6777 -64 -64s28.6777 -64 64 -64zM128 192c70.6455 0 128 -57.3545 128 -128s-57.3545 -128 -128 -128s-128 57.3545 -128 128s57.3545 128 128 128zM128 0c35.3223 0 64 28.6777 64 64
-s-28.6777 64 -64 64s-64 -28.6777 -64 -64s28.6777 -64 64 -64z" />
-    <glyph glyph-name="border-all" unicode="&#xf84c;" horiz-adv-x="448" 
-d="M416 416c17.6611 0 32 -14.3389 32 -32v-384c0 -17.6611 -14.3389 -32 -32 -32h-384c-17.6611 0 -32 14.3389 -32 32v384c0 17.6611 14.3389 32 32 32h384zM384 352h-128v-128h128v128zM192 352h-128v-128h128v128zM64 32h128v128h-128v-128zM256 32h128v128h-128v-128z
-" />
-    <glyph glyph-name="border-none" unicode="&#xf850;" horiz-adv-x="448" 
-d="M240 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM336 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h32zM432 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM240 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM336 32c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 128
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h32zM240 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM240 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM240 416c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM336 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 416
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h32zM48 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 416c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32z" />
-    <glyph glyph-name="border-style" unicode="&#xf853;" horiz-adv-x="448" 
-d="M240 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32
-c0 8.83105 7.16895 16 16 16h32zM336 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32
-c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 32c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 416
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-368v-368c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v400c0 17.6611 14.3389 32 32 32h400z" />
-    <glyph glyph-name="fan" unicode="&#xf863;" 
-d="M352.57 320c81.79 0 149.3 -61.6299 159.3 -141.33c1.30957 -10.4795 -7.17969 -19.6396 -17.6201 -18.5898l-123.11 12.4102c8.34082 -22.9707 12.8604 -48.9707 12.8604 -77.0605c0 -81.79 -61.6299 -149.3 -141.33 -159.3
-c-10.4795 -1.30957 -19.6396 7.19043 -18.5898 17.6201l12.4102 123.11c-22.9707 -8.34082 -48.9707 -12.8604 -77.0605 -12.8604c-81.79 0 -149.3 61.6299 -159.3 141.33c-1.30957 10.4795 7.17969 19.6699 17.6201 18.5898l123.11 -12.4102
-c-8.34082 22.9707 -12.8604 48.9707 -12.8604 77.0605c0 81.79 61.6299 149.3 141.33 159.3c10.4795 1.30957 19.6699 -7.17969 18.5898 -17.6201l-12.4102 -123.11c22.9707 8.34082 48.9707 12.8604 77.0605 12.8604zM256 160c17.6611 0 32 14.3389 32 32
-s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32z" />
-    <glyph glyph-name="icons" unicode="&#xf86d;" 
-d="M116.65 228.65l-96.79 99.8301c-28 29.0293 -26.4102 77.0996 5 103.88c27.3896 23.3398 68.1895 19.1396 93.29 -6.80078l9.84961 -10.1396l9.86035 10.1396c25.1396 25.9404 65.8896 30.1406 93.2793 6.80078c31.4102 -26.7803 33.0605 -74.8799 4.91016 -103.88
-l-96.75 -99.8301c-2.85449 -2.98242 -6.875 -4.83984 -11.3252 -4.83984s-8.46973 1.85742 -11.3242 4.83984zM260.57 128.16c15.1406 -0.0107422 27.4297 -12.3066 27.4297 -27.4502v-0.00976562v-137.25c0 -15.1436 -12.2891 -27.4395 -27.4297 -27.4502h-233.141
-c-15.1396 0.00585938 -27.4297 12.2988 -27.4297 27.4395v0.0107422v137.25v0.00976562c0 15.1504 12.2998 27.4502 27.4502 27.4502h0.00976562h48l7 14.2402c3.89258 10.3887 13.9082 17.7793 25.6484 17.7793h0.0117188h71.71
-c0.00390625 0 -0.00195312 0.0126953 0.000976562 0.0126953c11.7412 0 21.7666 -7.40332 25.6592 -17.792l7.08008 -14.2402h48zM144 -20c28.6992 0 52 23.3008 52 52s-23.3008 52 -52 52s-52 -23.3008 -52 -52s23.3008 -52 52 -52zM499.4 95.9004
-c9.70996 0 15.75 -8.79004 10.8691 -15.7002l-92.3994 -138.91c-2.42188 -3.19824 -6.24805 -5.25488 -10.5654 -5.25488c-0.118164 0 -0.236328 0.00195312 -0.354492 0.00488281c-8.03027 0 -14.1201 6.25 -12.2305 12.9004l24.2002 83h-62.3096
-c-7.62012 0 -13.5 5.58984 -12.5 11.8896l16.7998 106.93c0.839844 5.2002 6.2002 9.10059 12.5 9.10059h75.5898c8.25 0 14.2803 -6.56055 12.1797 -13.21l-22.3594 -50.75h60.5801zM478.08 447.67c17.9199 2.75 33.9199 -12.1895 33.9199 -31.6699v-144.26
-c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602c-35.3496 0 -64 21.4795 -64 48c0 26.5195 28.6504 48 64 48c5.49219 -0.0498047 10.8096 -0.633789 16 -1.7002v47.1797l-112 -17.2197v-108.58c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602
-c-35.3496 0 -64 21.4805 -64 48c0 26.5205 28.6504 48 64 48c5.49219 -0.0498047 10.8096 -0.632812 16 -1.69922v106.77c0 15.9102 10.8701 29.4102 25.5098 31.6602z" />
-    <glyph glyph-name="phone-alt" unicode="&#xf879;" 
-d="M497.39 86.2002c8.60059 -3.74121 14.6006 -12.2891 14.6006 -22.2588c0 -1.83496 -0.204102 -3.62305 -0.589844 -5.3418l-24 -104c-2.45801 -10.6416 -12 -18.5996 -23.3848 -18.5996h-0.015625c-256.1 0 -464 207.5 -464 464l0.0136719 0.00390625
-c0 11.3848 7.94434 20.9287 18.5859 23.3857l104 24c1.72754 0.392578 3.49805 0.619141 5.34375 0.619141c9.9082 0 18.4307 -5.97656 22.1562 -14.5186l48 -112c1.23828 -2.88965 1.95117 -6.0791 1.95117 -9.41895c0 -7.49512 -3.45215 -14.1904 -8.85059 -18.5811
-l-60.6006 -49.6006c36.7334 -77.9072 99.2822 -140.457 177.19 -177.189l49.5996 60.5996c4.40332 5.39258 11.1113 8.81055 18.6084 8.81055c3.33203 0 6.50684 -0.680664 9.3916 -1.91016z" />
-    <glyph glyph-name="phone-square-alt" unicode="&#xf87b;" horiz-adv-x="448" 
-d="M400 416c26.4922 0 48 -21.5078 48 -48v-352c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352zM383.61 108.63c0.235352 1.09082 0.369141 2.21387 0.389648 3.37012
-c-0.301758 6.06445 -3.91992 11.2607 -9.08984 13.79l-70 30c-1.83594 0.71582 -3.83789 1.14355 -5.91016 1.20996c-4.58496 -0.251953 -8.69922 -2.31836 -11.6104 -5.5l-31 -37.8896c-48.7002 22.9775 -87.8018 62.0791 -110.779 110.779l37.8896 31
-c3.18164 2.91113 5.24805 7.02539 5.5 11.6104c-0.0673828 2.07129 -0.495117 4.07324 -1.20996 5.91016l-30 70c-2.53223 5.16797 -7.72754 8.78418 -13.79 9.08984c-1.15527 -0.0253906 -2.27734 -0.15918 -3.37012 -0.389648l-65 -15
-c-6.52246 -1.74707 -11.3818 -7.59961 -11.6299 -14.6104c0 -160.29 130 -290 290 -290c7.11426 0.00292969 13.0762 4.97852 14.6104 11.6299z" />
-    <glyph glyph-name="photo-video" unicode="&#xf87c;" horiz-adv-x="640" 
-d="M608 448c17.6611 0 32 -14.3389 32 -32v-320c0 -17.6611 -14.3389 -32 -32 -32h-128v320h-192v-64h-160v96c0 17.6611 14.3389 32 32 32h448zM232 345v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30
-c4.9668 0 9 4.0332 9 9zM584 137v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30c4.9668 0 9 4.0332 9 9zM584 241v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30
-c4.9668 0 9 4.0332 9 9zM584 345v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30c4.9668 0 9 4.0332 9 9zM416 288c17.6611 0 32 -14.3389 32 -32v-288c0 -17.6611 -14.3389 -32 -32 -32h-384c-17.6611 0 -32 14.3389 -32 32
-v288c0 17.6611 14.3389 32 32 32h384zM96 224c-17.6611 0 -32 -14.3389 -32 -32s14.3389 -32 32 -32s32 14.3389 32 32s-14.3389 32 -32 32zM384 0v96l-96 96l-128 -128l-32 32l-64 -64v-32h320z" />
-    <glyph glyph-name="remove-format" unicode="&#xf87d;" horiz-adv-x="640" 
-d="M336 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32.4902l26.5098 79.5996l67.0898 -51.8301l-9.25977 -27.7695h11.1699zM633.82 -10.0996
-c3.76855 -2.92871 6.17676 -7.50977 6.17676 -12.6475c0 -3.69238 -1.25293 -7.09375 -3.35742 -9.80273l-19.6396 -25.2705c-2.92871 -3.76855 -7.50879 -6.17578 -12.6465 -6.17578c-3.69727 0 -7.10254 1.25684 -9.81348 3.36621l-588.36 454.72
-c-3.76562 2.92871 -6.1709 7.50781 -6.1709 12.6426c0 3.69434 1.25488 7.09766 3.36133 9.80762l19.6299 25.2695c2.92871 3.76855 7.50879 6.17676 12.6465 6.17676c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l114.54 -88.5205v43.9004c0 8.83105 7.16895 16 16 16h416
-c8.83105 0 16 -7.16895 16 -16v-96c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32h-117.83l-49.1699 -147.59zM309.91 240.24l31.9199 95.7598h-117.83v-29.3604z" />
-    <glyph glyph-name="sort-alpha-down-alt" unicode="&#xf881;" horiz-adv-x="448" 
-d="M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32
-c8.83105 0 16 -7.16895 16 -16v-304h48zM288 224c-8.83105 0 -16 7.16895 -16 16v17.6299c0 9.51074 4.14355 18.0566 10.7402 23.9199l61.2598 70.4502h-56c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-17.6299
-c0 -9.51074 -4.14355 -18.0566 -10.7402 -23.9199l-61.2598 -70.4502h56c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128zM447.06 -10.6201c0.600586 -1.67969 0.931641 -3.49512 0.931641 -5.37988c0 -8.82812 -7.16406 -15.9951 -15.9912 -16
-h-24.8398c-0.015625 0 -0.0263672 -0.00195312 -0.0419922 -0.00195312c-7.11426 0 -13.1514 4.6543 -15.2285 11.082l-4.40918 12.9199h-71l-4.4209 -12.9199c-2.07617 -6.42773 -8.10938 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301
-c-8.82715 0.00488281 -15.9863 7.17773 -15.9863 16.0049c0 1.88574 0.326172 3.69531 0.926758 5.375l59.2695 160c2.20996 6.19043 8.125 10.6201 15.0703 10.6201h41.4395c6.94531 0 12.8604 -4.42969 15.0703 -10.6201zM335.61 48h32.7793l-16.3896 48z" />
-    <glyph glyph-name="sort-alpha-up-alt" unicode="&#xf882;" horiz-adv-x="448" 
-d="M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16
-h-32c-8.83105 0 -16 7.16895 -16 16v304h-48zM288 224c-8.83105 0 -16 7.16895 -16 16v17.6299c0 9.51074 4.14355 18.0566 10.7402 23.9199l61.2598 70.4502h-56c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-17.6299
-c0 -9.51074 -4.14355 -18.0566 -10.7402 -23.9199l-61.2598 -70.4502h56c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128zM447.06 -10.6201c0.600586 -1.67969 0.931641 -3.49512 0.931641 -5.37988c0 -8.82812 -7.16406 -15.9951 -15.9912 -16
-h-24.8398c-0.015625 0 -0.0263672 -0.00195312 -0.0419922 -0.00195312c-7.11426 0 -13.1514 4.6543 -15.2285 11.082l-4.40918 12.9199h-71l-4.4209 -12.9199c-2.07617 -6.42773 -8.10938 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301
-c-8.82715 0.00488281 -15.9863 7.17773 -15.9863 16.0049c0 1.88574 0.326172 3.69531 0.926758 5.375l59.2695 160c2.20996 6.19043 8.125 10.6201 15.0703 10.6201h41.4395c6.94531 0 12.8604 -4.42969 15.0703 -10.6201zM335.61 48h32.7793l-16.3896 48z" />
-    <glyph glyph-name="sort-amount-down-alt" unicode="&#xf884;" 
-d="M240 352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64zM240 224c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-128zM496 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256zM240 96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96
-c-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-304h48z" />
-    <glyph glyph-name="sort-amount-up-alt" unicode="&#xf885;" 
-d="M240 352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64zM240 224c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-32
-c0 -8.83105 -7.16895 -16 -16 -16h-128zM496 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256zM240 96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192
-c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192zM16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -96
-c10.0801 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48z" />
-    <glyph glyph-name="sort-numeric-down-alt" unicode="&#xf886;" horiz-adv-x="448" 
-d="M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32
-c8.83105 0 16 -7.16895 16 -16v-304h48zM400 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156
-c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.23 -86.25 -132
-c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c7.62891 26.2793 28.5596 46.9287 55 54.1699
-zM352 316c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20z" />
-    <glyph glyph-name="sort-numeric-up-alt" unicode="&#xf887;" horiz-adv-x="448" 
-d="M107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96
-c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555zM400 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16
-c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898
-v-10.7695c0 -70.3906 -28.25 -107.23 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092
-c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c7.62891 26.2793 28.5596 46.9287 55 54.1699zM352 316c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20z" />
-    <glyph glyph-name="spell-check" unicode="&#xf891;" horiz-adv-x="576" 
-d="M272 192c-8.83105 0 -16 7.16895 -16 16v224c0 8.83105 7.16895 16 16 16h75c42.2998 0 80.9004 -30.5703 84.6699 -72.6797c0.225586 -2.44238 0.289062 -4.91895 0.289062 -7.41895c0 -13.5479 -3.38281 -26.3115 -9.34863 -37.4912
-c15.6377 -14.5762 25.3984 -35.2832 25.3984 -58.3262c0 -1.59277 -0.046875 -3.1748 -0.138672 -4.74414c-2.50977 -43.1396 -41.3105 -75.3398 -84.5098 -75.3398h-91.3604zM312 392v-48h40c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24h-40zM312 296v-48h56
-c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24h-56zM155.12 425.75l68.2998 -213.48c0.376953 -1.36035 0.580078 -2.79004 0.580078 -4.26953c0 -8.83105 -7.16895 -16 -16 -16h-24.9297c-7.35059 0 -13.5488 4.97168 -15.4199 11.7305l-11.9404 36.2695h-87.4199
-l-11.9404 -36.2695c-1.87109 -6.75879 -8.06934 -11.7305 -15.4199 -11.7305h-24.9297c-8.82617 0.00488281 -15.9883 7.16895 -15.9883 15.9961c0 1.47949 0.201172 2.91309 0.578125 4.27344l68.29 213.48c4.12695 12.9004 16.2168 22.25 30.4805 22.25h25.2793
-c14.2637 0 26.3535 -9.34961 30.4805 -22.25zM89.3701 304h45.2598l-22.6299 68.7002zM571.37 171.52c2.8916 -2.89453 4.65918 -6.89648 4.65918 -11.3066c0 -4.40137 -1.78027 -8.38867 -4.65918 -11.2832l-208 -208.21
-c-2.88086 -2.91406 -6.88379 -4.7207 -11.3018 -4.7207s-8.41699 1.80664 -11.2988 4.7207l-112 112.21c-2.88477 2.89453 -4.66895 6.8916 -4.66895 11.2979c0 4.40527 1.78418 8.39746 4.66895 11.292l45.3008 45.3008c2.87891 2.91309 6.87988 4.71973 11.2969 4.71973
-c4.41602 0 8.41309 -1.80664 11.293 -4.71973l55.4102 -55.5l151.5 151.5c2.87891 2.91309 6.87988 4.71973 11.2969 4.71973c4.41602 0 8.41309 -1.80664 11.293 -4.71973z" />
-    <glyph glyph-name="voicemail" unicode="&#xf897;" horiz-adv-x="640" 
-d="M496 320c79.4756 0 144 -64.5244 144 -144s-64.5244 -144 -144 -144h-352c-79.4727 0.00390625 -144.079 64.3818 -144.079 143.854c0 79.4766 64.5244 144 144 144c79.4766 0 144 -64.5234 144 -144c0 -29.5293 -8.90723 -56.9961 -24.1807 -79.8545h112.52
-c-15.2734 22.8584 -24.2598 50.4697 -24.2598 80c0 79.4756 64.5244 144 144 144zM64 176c0 -44.1533 35.8467 -80 80 -80s80 35.8467 80 80s-35.8467 80 -80 80s-80 -35.8467 -80 -80zM496 96c44.1533 0 80 35.8467 80 80s-35.8467 80 -80 80s-80 -35.8467 -80 -80
-s35.8467 -80 80 -80z" />
-    <glyph glyph-name="hat-cowboy" unicode="&#xf8c0;" horiz-adv-x="640" 
-d="M490 151.1c-38.7695 -12.5898 -93.7305 -23.0996 -170 -23.0996s-131.19 10.5303 -169.99 23.1201c9.50977 57.4102 39.5098 232.88 97.71 232.88c14 0 26.4902 -6 37 -14c9.78516 -7.45996 22.0947 -11.8906 35.3369 -11.8906c13.2432 0 25.458 4.43066 35.2432 11.8906
-c10.5098 8.07031 23 14 37 14c58.21 0 88.21 -175.51 97.7002 -232.9zM632.9 188.28c4.27637 -2.87402 7.08008 -7.75195 7.08008 -13.2871c0 -1.94043 -0.34668 -3.80078 -0.980469 -5.52344c-0.730469 -2.01953 -77.3203 -201.47 -319 -201.47s-318.27 199.45 -319 201.47
-c-0.625977 1.71289 -0.966797 3.56543 -0.966797 5.49316c0 8.83105 7.16992 16 16 16c4.12012 0 7.87891 -1.56055 10.7168 -4.12305c1.01953 -0.899414 102.42 -90.8398 293.24 -90.8398c191.89 0 292.16 89.8799 293.16 90.7803
-c2.84863 2.61816 6.6709 4.20996 10.8428 4.20996c3.2959 0 6.36035 -0.999023 8.90723 -2.70996z" />
-    <glyph glyph-name="hat-cowboy-side" unicode="&#xf8c1;" horiz-adv-x="640" 
-d="M260.8 156.94l98.0098 -84.4805c78.1904 -67.3896 129.98 -104.46 233.19 -104.46h-546.12c-14.0498 0 -27.1299 7.53027 -35.8799 20.6396c-9 13.4707 -12.1201 30.7002 -8.57031 47.3008c20.04 93.3398 85.5703 156.06 162.971 156.06
-c34.3994 0 67.7695 -12.1201 96.3994 -35.0596zM495.45 175.23c114.95 -7.90039 144.55 -101.841 144.55 -127.23c0 -26.4922 -21.5078 -48 -48 -48c-97.0996 0 -141.24 35.46 -212.31 96.7002l-98 84.4795c-35.29 28.2705 -75.5 42.8203 -117.29 42.8203
-c-7.09082 0 -13.8906 -1.16992 -20.79 -2l6.88965 65.21c2.96094 27.6465 23.6035 50.1143 50.3496 55.79l191.15 40.5898c4.31055 0.916992 8.73828 1.34277 13.3203 1.34277c31.6191 0 57.9131 -22.9785 63.0801 -53.1328z" />
-    <glyph glyph-name="mouse" unicode="&#xf8cc;" horiz-adv-x="384" 
-d="M0 96v128h384v-128c0 -88.3066 -71.6934 -160 -160 -160h-64c-88.3066 0 -160 71.6934 -160 160zM176 448v-192h-176v32c0 88.3066 71.6934 160 160 160h16zM224 448c88.3066 0 160 -71.6934 160 -160v-32h-176v192h16z" />
-    <glyph glyph-name="record-vinyl" unicode="&#xf8d9;" 
-d="M256 296c57.3994 0 104 -46.6006 104 -104s-46.6006 -104 -104 -104s-104 46.6006 -104 104s46.6006 104 104 104zM256 168c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24s-24 -10.7539 -24 -24s10.7539 -24 24 -24zM256 440c137 0 248 -111 248 -248
-s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 64c70.6455 0 128 57.3545 128 128s-57.3545 128 -128 128s-128 -57.3545 -128 -128s57.3545 -128 128 -128z" />
-    <glyph glyph-name="caravan" unicode="&#xf8ff;" horiz-adv-x="640" 
-d="M416 240c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM624 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-336c0 -52.9834 -43.0166 -96 -96 -96s-96 43.0166 -96 96h-32
-c-35.3223 0 -64 28.6777 -64 64v256c0 35.3223 28.6777 64 64 64h352c88.3066 0 160 -71.6934 160 -160v-160h48zM192 16c26.4795 0.0273438 47.9727 21.5205 48 48c0 26.4922 -21.5078 48 -48 48s-48 -21.5078 -48 -48s21.5078 -48 48 -48zM256 256v64
-c0 17.6611 -14.3389 32 -32 32h-128c-17.6611 0 -32 -14.3389 -32 -32v-64c0 -17.6611 14.3389 -32 32 -32h128c17.6611 0 32 14.3389 32 32zM448 128v192c0 17.6611 -14.3389 32 -32 32h-64c-17.6611 0 -32 -14.3389 -32 -32v-192h128z" />
-  </font>
-</defs></svg>
diff --git a/assets/fonts/font-awesome/fa-solid-900.ttf b/assets/fonts/font-awesome/fa-solid-900.ttf
deleted file mode 100644
index bc640928c36e0d678aa1d199dd128602f4c7f97c..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-solid-900.ttf and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-solid-900.woff b/assets/fonts/font-awesome/fa-solid-900.woff
deleted file mode 100644
index 7a14a11eb7d8746f60f949ee2b159c2460d1c0f2..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-solid-900.woff and /dev/null differ
diff --git a/assets/fonts/font-awesome/fa-solid-900.woff2 b/assets/fonts/font-awesome/fa-solid-900.woff2
deleted file mode 100644
index 9a4633d9c4eccaa7c60974214eac25a62f6d2289..0000000000000000000000000000000000000000
Binary files a/assets/fonts/font-awesome/fa-solid-900.woff2 and /dev/null differ
diff --git a/assets/img/favicon.ico b/assets/img/favicon.ico
index 3de0ab46720fce42c4729feab729cefe27aa7dcf..ab8b4f414a5efddf26f976d9ce62347ade1d9567 100644
Binary files a/assets/img/favicon.ico and b/assets/img/favicon.ico differ
diff --git a/assets/img/favicon.png b/assets/img/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..88dfa211eefa5809335386ac67d8ccf80bb9f132
Binary files /dev/null and b/assets/img/favicon.png differ
diff --git a/assets/img/learningmastery.png b/assets/img/learningmastery.png
new file mode 100644
index 0000000000000000000000000000000000000000..57e4f24a3dda7610751c9f5b1023ef510f4485e2
Binary files /dev/null and b/assets/img/learningmastery.png differ
diff --git a/assets/img/staff/bricker.jpg b/assets/img/staff/bricker.jpg
deleted file mode 100644
index abe76467726d570ebe746fda39cc2f8f1b13cac9..0000000000000000000000000000000000000000
Binary files a/assets/img/staff/bricker.jpg and /dev/null differ
diff --git a/assets/img/staff/cheung.jpg b/assets/img/staff/cheung.jpg
deleted file mode 100644
index 4648b38f0ca813ddf9af8be7942c660f919049ac..0000000000000000000000000000000000000000
Binary files a/assets/img/staff/cheung.jpg and /dev/null differ
diff --git a/assets/img/staff/mack.jpg b/assets/img/staff/mack.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..15a8c0c938f1d44af651b2618bc8422714b33dbc
Binary files /dev/null and b/assets/img/staff/mack.jpg differ
diff --git a/assets/img/staff/potluri.JPG b/assets/img/staff/potluri.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..c6711704794ec3efa25060d2e4d60ddb5b3fbcc9
Binary files /dev/null and b/assets/img/staff/potluri.JPG differ
diff --git a/assets/img/staff/tian.jpg b/assets/img/staff/tian.jpg
deleted file mode 100644
index a531ec3bb4af788679e53de05212e40e93a7de43..0000000000000000000000000000000000000000
Binary files a/assets/img/staff/tian.jpg and /dev/null differ
diff --git a/assets/js/mermaid.8.8.2.js b/assets/js/mermaid.8.8.2.js
new file mode 100644
index 0000000000000000000000000000000000000000..a8a92ea8020cc76ad439d4a32c3017b35aad6806
--- /dev/null
+++ b/assets/js/mermaid.8.8.2.js
@@ -0,0 +1,74073 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory();
+	else if(typeof define === 'function' && define.amd)
+		define([], factory);
+	else if(typeof exports === 'object')
+		exports["mermaid"] = factory();
+	else
+		root["mermaid"] = factory();
+})(typeof self !== "undefined" ? self : this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = "./src/mermaid.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./node_modules/@braintree/sanitize-url/index.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/@braintree/sanitize-url/index.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var invalidPrototcolRegex = /^(%20|\s)*(javascript|data)/im;
+var ctrlCharactersRegex = /[^\x20-\x7E]/gmi;
+var urlSchemeRegex = /^([^:]+):/gm;
+var relativeFirstCharacters = ['.', '/']
+
+function isRelativeUrl(url) {
+  return relativeFirstCharacters.indexOf(url[0]) > -1;
+}
+
+function sanitizeUrl(url) {
+  if (!url) {
+    return 'about:blank';
+  }
+
+  var urlScheme, urlSchemeParseResults;
+  var sanitizedUrl = url.replace(ctrlCharactersRegex, '').trim();
+
+  if (isRelativeUrl(sanitizedUrl)) {
+    return sanitizedUrl;
+  }
+
+  urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);
+
+  if (!urlSchemeParseResults) {
+    return 'about:blank';
+  }
+
+  urlScheme = urlSchemeParseResults[0];
+
+  if (invalidPrototcolRegex.test(urlScheme)) {
+    return 'about:blank';
+  }
+
+  return sanitizedUrl;
+}
+
+module.exports = {
+  sanitizeUrl: sanitizeUrl
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/array.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-array/src/array.js ***!
+  \********************************************/
+/*! exports provided: slice, map */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; });
+var array = Array.prototype;
+
+var slice = array.slice;
+var map = array.map;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/ascending.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-array/src/ascending.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/bisect.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-array/src/bisect.js ***!
+  \*********************************************/
+/*! exports provided: bisectRight, bisectLeft, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bisectRight", function() { return bisectRight; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bisectLeft", function() { return bisectLeft; });
+/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ "./node_modules/d3-array/src/ascending.js");
+/* harmony import */ var _bisector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bisector */ "./node_modules/d3-array/src/bisector.js");
+
+
+
+var ascendingBisect = Object(_bisector__WEBPACK_IMPORTED_MODULE_1__["default"])(_ascending__WEBPACK_IMPORTED_MODULE_0__["default"]);
+var bisectRight = ascendingBisect.right;
+var bisectLeft = ascendingBisect.left;
+/* harmony default export */ __webpack_exports__["default"] = (bisectRight);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/bisector.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-array/src/bisector.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ "./node_modules/d3-array/src/ascending.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(compare) {
+  if (compare.length === 1) compare = ascendingComparator(compare);
+  return {
+    left: function(a, x, lo, hi) {
+      if (lo == null) lo = 0;
+      if (hi == null) hi = a.length;
+      while (lo < hi) {
+        var mid = lo + hi >>> 1;
+        if (compare(a[mid], x) < 0) lo = mid + 1;
+        else hi = mid;
+      }
+      return lo;
+    },
+    right: function(a, x, lo, hi) {
+      if (lo == null) lo = 0;
+      if (hi == null) hi = a.length;
+      while (lo < hi) {
+        var mid = lo + hi >>> 1;
+        if (compare(a[mid], x) > 0) hi = mid;
+        else lo = mid + 1;
+      }
+      return lo;
+    }
+  };
+});
+
+function ascendingComparator(f) {
+  return function(d, x) {
+    return Object(_ascending__WEBPACK_IMPORTED_MODULE_0__["default"])(f(d), x);
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/constant.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-array/src/constant.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/cross.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-array/src/cross.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _pairs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pairs */ "./node_modules/d3-array/src/pairs.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values0, values1, reduce) {
+  var n0 = values0.length,
+      n1 = values1.length,
+      values = new Array(n0 * n1),
+      i0,
+      i1,
+      i,
+      value0;
+
+  if (reduce == null) reduce = _pairs__WEBPACK_IMPORTED_MODULE_0__["pair"];
+
+  for (i0 = i = 0; i0 < n0; ++i0) {
+    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {
+      values[i] = reduce(value0, values1[i1]);
+    }
+  }
+
+  return values;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/descending.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-array/src/descending.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/deviation.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-array/src/deviation.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _variance__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./variance */ "./node_modules/d3-array/src/variance.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(array, f) {
+  var v = Object(_variance__WEBPACK_IMPORTED_MODULE_0__["default"])(array, f);
+  return v ? Math.sqrt(v) : v;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/extent.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-array/src/extent.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(values, valueof) {
+  var n = values.length,
+      i = -1,
+      value,
+      min,
+      max;
+
+  if (valueof == null) {
+    while (++i < n) { // Find the first comparable value.
+      if ((value = values[i]) != null && value >= value) {
+        min = max = value;
+        while (++i < n) { // Compare the remaining values.
+          if ((value = values[i]) != null) {
+            if (min > value) min = value;
+            if (max < value) max = value;
+          }
+        }
+      }
+    }
+  }
+
+  else {
+    while (++i < n) { // Find the first comparable value.
+      if ((value = valueof(values[i], i, values)) != null && value >= value) {
+        min = max = value;
+        while (++i < n) { // Compare the remaining values.
+          if ((value = valueof(values[i], i, values)) != null) {
+            if (min > value) min = value;
+            if (max < value) max = value;
+          }
+        }
+      }
+    }
+  }
+
+  return [min, max];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/histogram.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-array/src/histogram.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ "./node_modules/d3-array/src/array.js");
+/* harmony import */ var _bisect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bisect */ "./node_modules/d3-array/src/bisect.js");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-array/src/constant.js");
+/* harmony import */ var _extent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./extent */ "./node_modules/d3-array/src/extent.js");
+/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./identity */ "./node_modules/d3-array/src/identity.js");
+/* harmony import */ var _range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./range */ "./node_modules/d3-array/src/range.js");
+/* harmony import */ var _ticks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ticks */ "./node_modules/d3-array/src/ticks.js");
+/* harmony import */ var _threshold_sturges__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./threshold/sturges */ "./node_modules/d3-array/src/threshold/sturges.js");
+
+
+
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var value = _identity__WEBPACK_IMPORTED_MODULE_4__["default"],
+      domain = _extent__WEBPACK_IMPORTED_MODULE_3__["default"],
+      threshold = _threshold_sturges__WEBPACK_IMPORTED_MODULE_7__["default"];
+
+  function histogram(data) {
+    var i,
+        n = data.length,
+        x,
+        values = new Array(n);
+
+    for (i = 0; i < n; ++i) {
+      values[i] = value(data[i], i, data);
+    }
+
+    var xz = domain(values),
+        x0 = xz[0],
+        x1 = xz[1],
+        tz = threshold(values, x0, x1);
+
+    // Convert number of thresholds into uniform thresholds.
+    if (!Array.isArray(tz)) {
+      tz = Object(_ticks__WEBPACK_IMPORTED_MODULE_6__["tickStep"])(x0, x1, tz);
+      tz = Object(_range__WEBPACK_IMPORTED_MODULE_5__["default"])(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive
+    }
+
+    // Remove any thresholds outside the domain.
+    var m = tz.length;
+    while (tz[0] <= x0) tz.shift(), --m;
+    while (tz[m - 1] > x1) tz.pop(), --m;
+
+    var bins = new Array(m + 1),
+        bin;
+
+    // Initialize bins.
+    for (i = 0; i <= m; ++i) {
+      bin = bins[i] = [];
+      bin.x0 = i > 0 ? tz[i - 1] : x0;
+      bin.x1 = i < m ? tz[i] : x1;
+    }
+
+    // Assign data to bins by value, ignoring any outside the domain.
+    for (i = 0; i < n; ++i) {
+      x = values[i];
+      if (x0 <= x && x <= x1) {
+        bins[Object(_bisect__WEBPACK_IMPORTED_MODULE_1__["default"])(tz, x, 0, m)].push(data[i]);
+      }
+    }
+
+    return bins;
+  }
+
+  histogram.value = function(_) {
+    return arguments.length ? (value = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(_), histogram) : value;
+  };
+
+  histogram.domain = function(_) {
+    return arguments.length ? (domain = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])([_[0], _[1]]), histogram) : domain;
+  };
+
+  histogram.thresholds = function(_) {
+    return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(_array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_)) : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(_), histogram) : threshold;
+  };
+
+  return histogram;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/identity.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-array/src/identity.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return x;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-array/src/index.js ***!
+  \********************************************/
+/*! exports provided: bisect, bisectRight, bisectLeft, ascending, bisector, cross, descending, deviation, extent, histogram, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, max, mean, median, merge, min, pairs, permute, quantile, range, scan, shuffle, sum, ticks, tickIncrement, tickStep, transpose, variance, zip */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _bisect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bisect */ "./node_modules/d3-array/src/bisect.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisect", function() { return _bisect__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisectRight", function() { return _bisect__WEBPACK_IMPORTED_MODULE_0__["bisectRight"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisectLeft", function() { return _bisect__WEBPACK_IMPORTED_MODULE_0__["bisectLeft"]; });
+
+/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending */ "./node_modules/d3-array/src/ascending.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ascending", function() { return _ascending__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _bisector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bisector */ "./node_modules/d3-array/src/bisector.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisector", function() { return _bisector__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _cross__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cross */ "./node_modules/d3-array/src/cross.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cross", function() { return _cross__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _descending__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./descending */ "./node_modules/d3-array/src/descending.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "descending", function() { return _descending__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _deviation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./deviation */ "./node_modules/d3-array/src/deviation.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "deviation", function() { return _deviation__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _extent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extent */ "./node_modules/d3-array/src/extent.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extent", function() { return _extent__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _histogram__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./histogram */ "./node_modules/d3-array/src/histogram.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "histogram", function() { return _histogram__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _threshold_freedmanDiaconis__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./threshold/freedmanDiaconis */ "./node_modules/d3-array/src/threshold/freedmanDiaconis.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thresholdFreedmanDiaconis", function() { return _threshold_freedmanDiaconis__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony import */ var _threshold_scott__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./threshold/scott */ "./node_modules/d3-array/src/threshold/scott.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thresholdScott", function() { return _threshold_scott__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _threshold_sturges__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./threshold/sturges */ "./node_modules/d3-array/src/threshold/sturges.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thresholdSturges", function() { return _threshold_sturges__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony import */ var _max__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./max */ "./node_modules/d3-array/src/max.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _max__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony import */ var _mean__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./mean */ "./node_modules/d3-array/src/mean.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mean", function() { return _mean__WEBPACK_IMPORTED_MODULE_12__["default"]; });
+
+/* harmony import */ var _median__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./median */ "./node_modules/d3-array/src/median.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "median", function() { return _median__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./merge */ "./node_modules/d3-array/src/merge.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _merge__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./min */ "./node_modules/d3-array/src/min.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _min__WEBPACK_IMPORTED_MODULE_15__["default"]; });
+
+/* harmony import */ var _pairs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./pairs */ "./node_modules/d3-array/src/pairs.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _pairs__WEBPACK_IMPORTED_MODULE_16__["default"]; });
+
+/* harmony import */ var _permute__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./permute */ "./node_modules/d3-array/src/permute.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "permute", function() { return _permute__WEBPACK_IMPORTED_MODULE_17__["default"]; });
+
+/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./quantile */ "./node_modules/d3-array/src/quantile.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "quantile", function() { return _quantile__WEBPACK_IMPORTED_MODULE_18__["default"]; });
+
+/* harmony import */ var _range__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./range */ "./node_modules/d3-array/src/range.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _range__WEBPACK_IMPORTED_MODULE_19__["default"]; });
+
+/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./scan */ "./node_modules/d3-array/src/scan.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _scan__WEBPACK_IMPORTED_MODULE_20__["default"]; });
+
+/* harmony import */ var _shuffle__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./shuffle */ "./node_modules/d3-array/src/shuffle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return _shuffle__WEBPACK_IMPORTED_MODULE_21__["default"]; });
+
+/* harmony import */ var _sum__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./sum */ "./node_modules/d3-array/src/sum.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return _sum__WEBPACK_IMPORTED_MODULE_22__["default"]; });
+
+/* harmony import */ var _ticks__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ticks */ "./node_modules/d3-array/src/ticks.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ticks", function() { return _ticks__WEBPACK_IMPORTED_MODULE_23__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tickIncrement", function() { return _ticks__WEBPACK_IMPORTED_MODULE_23__["tickIncrement"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tickStep", function() { return _ticks__WEBPACK_IMPORTED_MODULE_23__["tickStep"]; });
+
+/* harmony import */ var _transpose__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./transpose */ "./node_modules/d3-array/src/transpose.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transpose", function() { return _transpose__WEBPACK_IMPORTED_MODULE_24__["default"]; });
+
+/* harmony import */ var _variance__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./variance */ "./node_modules/d3-array/src/variance.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "variance", function() { return _variance__WEBPACK_IMPORTED_MODULE_25__["default"]; });
+
+/* harmony import */ var _zip__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./zip */ "./node_modules/d3-array/src/zip.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _zip__WEBPACK_IMPORTED_MODULE_26__["default"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/max.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-array/src/max.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(values, valueof) {
+  var n = values.length,
+      i = -1,
+      value,
+      max;
+
+  if (valueof == null) {
+    while (++i < n) { // Find the first comparable value.
+      if ((value = values[i]) != null && value >= value) {
+        max = value;
+        while (++i < n) { // Compare the remaining values.
+          if ((value = values[i]) != null && value > max) {
+            max = value;
+          }
+        }
+      }
+    }
+  }
+
+  else {
+    while (++i < n) { // Find the first comparable value.
+      if ((value = valueof(values[i], i, values)) != null && value >= value) {
+        max = value;
+        while (++i < n) { // Compare the remaining values.
+          if ((value = valueof(values[i], i, values)) != null && value > max) {
+            max = value;
+          }
+        }
+      }
+    }
+  }
+
+  return max;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/mean.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-array/src/mean.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number */ "./node_modules/d3-array/src/number.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values, valueof) {
+  var n = values.length,
+      m = n,
+      i = -1,
+      value,
+      sum = 0;
+
+  if (valueof == null) {
+    while (++i < n) {
+      if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(values[i]))) sum += value;
+      else --m;
+    }
+  }
+
+  else {
+    while (++i < n) {
+      if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(valueof(values[i], i, values)))) sum += value;
+      else --m;
+    }
+  }
+
+  if (m) return sum / m;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/median.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-array/src/median.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ "./node_modules/d3-array/src/ascending.js");
+/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number */ "./node_modules/d3-array/src/number.js");
+/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./quantile */ "./node_modules/d3-array/src/quantile.js");
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values, valueof) {
+  var n = values.length,
+      i = -1,
+      value,
+      numbers = [];
+
+  if (valueof == null) {
+    while (++i < n) {
+      if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_1__["default"])(values[i]))) {
+        numbers.push(value);
+      }
+    }
+  }
+
+  else {
+    while (++i < n) {
+      if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_1__["default"])(valueof(values[i], i, values)))) {
+        numbers.push(value);
+      }
+    }
+  }
+
+  return Object(_quantile__WEBPACK_IMPORTED_MODULE_2__["default"])(numbers.sort(_ascending__WEBPACK_IMPORTED_MODULE_0__["default"]), 0.5);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/merge.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-array/src/merge.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(arrays) {
+  var n = arrays.length,
+      m,
+      i = -1,
+      j = 0,
+      merged,
+      array;
+
+  while (++i < n) j += arrays[i].length;
+  merged = new Array(j);
+
+  while (--n >= 0) {
+    array = arrays[n];
+    m = array.length;
+    while (--m >= 0) {
+      merged[--j] = array[m];
+    }
+  }
+
+  return merged;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/min.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-array/src/min.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(values, valueof) {
+  var n = values.length,
+      i = -1,
+      value,
+      min;
+
+  if (valueof == null) {
+    while (++i < n) { // Find the first comparable value.
+      if ((value = values[i]) != null && value >= value) {
+        min = value;
+        while (++i < n) { // Compare the remaining values.
+          if ((value = values[i]) != null && min > value) {
+            min = value;
+          }
+        }
+      }
+    }
+  }
+
+  else {
+    while (++i < n) { // Find the first comparable value.
+      if ((value = valueof(values[i], i, values)) != null && value >= value) {
+        min = value;
+        while (++i < n) { // Compare the remaining values.
+          if ((value = valueof(values[i], i, values)) != null && min > value) {
+            min = value;
+          }
+        }
+      }
+    }
+  }
+
+  return min;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/number.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-array/src/number.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return x === null ? NaN : +x;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/pairs.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-array/src/pairs.js ***!
+  \********************************************/
+/*! exports provided: default, pair */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pair", function() { return pair; });
+/* harmony default export */ __webpack_exports__["default"] = (function(array, f) {
+  if (f == null) f = pair;
+  var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);
+  while (i < n) pairs[i] = f(p, p = array[++i]);
+  return pairs;
+});
+
+function pair(a, b) {
+  return [a, b];
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/permute.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-array/src/permute.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(array, indexes) {
+  var i = indexes.length, permutes = new Array(i);
+  while (i--) permutes[i] = array[indexes[i]];
+  return permutes;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/quantile.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-array/src/quantile.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number */ "./node_modules/d3-array/src/number.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values, p, valueof) {
+  if (valueof == null) valueof = _number__WEBPACK_IMPORTED_MODULE_0__["default"];
+  if (!(n = values.length)) return;
+  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);
+  if (p >= 1) return +valueof(values[n - 1], n - 1, values);
+  var n,
+      i = (n - 1) * p,
+      i0 = Math.floor(i),
+      value0 = +valueof(values[i0], i0, values),
+      value1 = +valueof(values[i0 + 1], i0 + 1, values);
+  return value0 + (value1 - value0) * (i - i0);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/range.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-array/src/range.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(start, stop, step) {
+  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;
+
+  var i = -1,
+      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,
+      range = new Array(n);
+
+  while (++i < n) {
+    range[i] = start + i * step;
+  }
+
+  return range;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/scan.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-array/src/scan.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ "./node_modules/d3-array/src/ascending.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values, compare) {
+  if (!(n = values.length)) return;
+  var n,
+      i = 0,
+      j = 0,
+      xi,
+      xj = values[j];
+
+  if (compare == null) compare = _ascending__WEBPACK_IMPORTED_MODULE_0__["default"];
+
+  while (++i < n) {
+    if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {
+      xj = xi, j = i;
+    }
+  }
+
+  if (compare(xj, xj) === 0) return j;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/shuffle.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-array/src/shuffle.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(array, i0, i1) {
+  var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),
+      t,
+      i;
+
+  while (m) {
+    i = Math.random() * m-- | 0;
+    t = array[m + i0];
+    array[m + i0] = array[i + i0];
+    array[i + i0] = t;
+  }
+
+  return array;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/sum.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-array/src/sum.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(values, valueof) {
+  var n = values.length,
+      i = -1,
+      value,
+      sum = 0;
+
+  if (valueof == null) {
+    while (++i < n) {
+      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.
+    }
+  }
+
+  else {
+    while (++i < n) {
+      if (value = +valueof(values[i], i, values)) sum += value;
+    }
+  }
+
+  return sum;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/threshold/freedmanDiaconis.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-array/src/threshold/freedmanDiaconis.js ***!
+  \*****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../array */ "./node_modules/d3-array/src/array.js");
+/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ascending */ "./node_modules/d3-array/src/ascending.js");
+/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../number */ "./node_modules/d3-array/src/number.js");
+/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../quantile */ "./node_modules/d3-array/src/quantile.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values, min, max) {
+  values = _array__WEBPACK_IMPORTED_MODULE_0__["map"].call(values, _number__WEBPACK_IMPORTED_MODULE_2__["default"]).sort(_ascending__WEBPACK_IMPORTED_MODULE_1__["default"]);
+  return Math.ceil((max - min) / (2 * (Object(_quantile__WEBPACK_IMPORTED_MODULE_3__["default"])(values, 0.75) - Object(_quantile__WEBPACK_IMPORTED_MODULE_3__["default"])(values, 0.25)) * Math.pow(values.length, -1 / 3)));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/threshold/scott.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-array/src/threshold/scott.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _deviation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../deviation */ "./node_modules/d3-array/src/deviation.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values, min, max) {
+  return Math.ceil((max - min) / (3.5 * Object(_deviation__WEBPACK_IMPORTED_MODULE_0__["default"])(values) * Math.pow(values.length, -1 / 3)));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/threshold/sturges.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-array/src/threshold/sturges.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(values) {
+  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/ticks.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-array/src/ticks.js ***!
+  \********************************************/
+/*! exports provided: default, tickIncrement, tickStep */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tickIncrement", function() { return tickIncrement; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tickStep", function() { return tickStep; });
+var e10 = Math.sqrt(50),
+    e5 = Math.sqrt(10),
+    e2 = Math.sqrt(2);
+
+/* harmony default export */ __webpack_exports__["default"] = (function(start, stop, count) {
+  var reverse,
+      i = -1,
+      n,
+      ticks,
+      step;
+
+  stop = +stop, start = +start, count = +count;
+  if (start === stop && count > 0) return [start];
+  if (reverse = stop < start) n = start, start = stop, stop = n;
+  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];
+
+  if (step > 0) {
+    start = Math.ceil(start / step);
+    stop = Math.floor(stop / step);
+    ticks = new Array(n = Math.ceil(stop - start + 1));
+    while (++i < n) ticks[i] = (start + i) * step;
+  } else {
+    start = Math.floor(start * step);
+    stop = Math.ceil(stop * step);
+    ticks = new Array(n = Math.ceil(start - stop + 1));
+    while (++i < n) ticks[i] = (start - i) / step;
+  }
+
+  if (reverse) ticks.reverse();
+
+  return ticks;
+});
+
+function tickIncrement(start, stop, count) {
+  var step = (stop - start) / Math.max(0, count),
+      power = Math.floor(Math.log(step) / Math.LN10),
+      error = step / Math.pow(10, power);
+  return power >= 0
+      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
+      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
+}
+
+function tickStep(start, stop, count) {
+  var step0 = Math.abs(stop - start) / Math.max(0, count),
+      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),
+      error = step0 / step1;
+  if (error >= e10) step1 *= 10;
+  else if (error >= e5) step1 *= 5;
+  else if (error >= e2) step1 *= 2;
+  return stop < start ? -step1 : step1;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/transpose.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-array/src/transpose.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./min */ "./node_modules/d3-array/src/min.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(matrix) {
+  if (!(n = matrix.length)) return [];
+  for (var i = -1, m = Object(_min__WEBPACK_IMPORTED_MODULE_0__["default"])(matrix, length), transpose = new Array(m); ++i < m;) {
+    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {
+      row[j] = matrix[j][i];
+    }
+  }
+  return transpose;
+});
+
+function length(d) {
+  return d.length;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/variance.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-array/src/variance.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number */ "./node_modules/d3-array/src/number.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values, valueof) {
+  var n = values.length,
+      m = 0,
+      i = -1,
+      mean = 0,
+      value,
+      delta,
+      sum = 0;
+
+  if (valueof == null) {
+    while (++i < n) {
+      if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(values[i]))) {
+        delta = value - mean;
+        mean += delta / ++m;
+        sum += delta * (value - mean);
+      }
+    }
+  }
+
+  else {
+    while (++i < n) {
+      if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(valueof(values[i], i, values)))) {
+        delta = value - mean;
+        mean += delta / ++m;
+        sum += delta * (value - mean);
+      }
+    }
+  }
+
+  if (m > 1) return sum / (m - 1);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-array/src/zip.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-array/src/zip.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _transpose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transpose */ "./node_modules/d3-array/src/transpose.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_transpose__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-axis/src/array.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-axis/src/array.js ***!
+  \*******************************************/
+/*! exports provided: slice */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; });
+var slice = Array.prototype.slice;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-axis/src/axis.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-axis/src/axis.js ***!
+  \******************************************/
+/*! exports provided: axisTop, axisRight, axisBottom, axisLeft */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "axisTop", function() { return axisTop; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "axisRight", function() { return axisRight; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "axisBottom", function() { return axisBottom; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "axisLeft", function() { return axisLeft; });
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ "./node_modules/d3-axis/src/array.js");
+/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity */ "./node_modules/d3-axis/src/identity.js");
+
+
+
+var top = 1,
+    right = 2,
+    bottom = 3,
+    left = 4,
+    epsilon = 1e-6;
+
+function translateX(x) {
+  return "translate(" + (x + 0.5) + ",0)";
+}
+
+function translateY(y) {
+  return "translate(0," + (y + 0.5) + ")";
+}
+
+function number(scale) {
+  return function(d) {
+    return +scale(d);
+  };
+}
+
+function center(scale) {
+  var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.
+  if (scale.round()) offset = Math.round(offset);
+  return function(d) {
+    return +scale(d) + offset;
+  };
+}
+
+function entering() {
+  return !this.__axis;
+}
+
+function axis(orient, scale) {
+  var tickArguments = [],
+      tickValues = null,
+      tickFormat = null,
+      tickSizeInner = 6,
+      tickSizeOuter = 6,
+      tickPadding = 3,
+      k = orient === top || orient === left ? -1 : 1,
+      x = orient === left || orient === right ? "x" : "y",
+      transform = orient === top || orient === bottom ? translateX : translateY;
+
+  function axis(context) {
+    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,
+        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : _identity__WEBPACK_IMPORTED_MODULE_1__["default"]) : tickFormat,
+        spacing = Math.max(tickSizeInner, 0) + tickPadding,
+        range = scale.range(),
+        range0 = +range[0] + 0.5,
+        range1 = +range[range.length - 1] + 0.5,
+        position = (scale.bandwidth ? center : number)(scale.copy()),
+        selection = context.selection ? context.selection() : context,
+        path = selection.selectAll(".domain").data([null]),
+        tick = selection.selectAll(".tick").data(values, scale).order(),
+        tickExit = tick.exit(),
+        tickEnter = tick.enter().append("g").attr("class", "tick"),
+        line = tick.select("line"),
+        text = tick.select("text");
+
+    path = path.merge(path.enter().insert("path", ".tick")
+        .attr("class", "domain")
+        .attr("stroke", "currentColor"));
+
+    tick = tick.merge(tickEnter);
+
+    line = line.merge(tickEnter.append("line")
+        .attr("stroke", "currentColor")
+        .attr(x + "2", k * tickSizeInner));
+
+    text = text.merge(tickEnter.append("text")
+        .attr("fill", "currentColor")
+        .attr(x, k * spacing)
+        .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em"));
+
+    if (context !== selection) {
+      path = path.transition(context);
+      tick = tick.transition(context);
+      line = line.transition(context);
+      text = text.transition(context);
+
+      tickExit = tickExit.transition(context)
+          .attr("opacity", epsilon)
+          .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); });
+
+      tickEnter
+          .attr("opacity", epsilon)
+          .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });
+    }
+
+    tickExit.remove();
+
+    path
+        .attr("d", orient === left || orient == right
+            ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter : "M0.5," + range0 + "V" + range1)
+            : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + ",0.5H" + range1));
+
+    tick
+        .attr("opacity", 1)
+        .attr("transform", function(d) { return transform(position(d)); });
+
+    line
+        .attr(x + "2", k * tickSizeInner);
+
+    text
+        .attr(x, k * spacing)
+        .text(format);
+
+    selection.filter(entering)
+        .attr("fill", "none")
+        .attr("font-size", 10)
+        .attr("font-family", "sans-serif")
+        .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle");
+
+    selection
+        .each(function() { this.__axis = position; });
+  }
+
+  axis.scale = function(_) {
+    return arguments.length ? (scale = _, axis) : scale;
+  };
+
+  axis.ticks = function() {
+    return tickArguments = _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(arguments), axis;
+  };
+
+  axis.tickArguments = function(_) {
+    return arguments.length ? (tickArguments = _ == null ? [] : _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_), axis) : tickArguments.slice();
+  };
+
+  axis.tickValues = function(_) {
+    return arguments.length ? (tickValues = _ == null ? null : _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_), axis) : tickValues && tickValues.slice();
+  };
+
+  axis.tickFormat = function(_) {
+    return arguments.length ? (tickFormat = _, axis) : tickFormat;
+  };
+
+  axis.tickSize = function(_) {
+    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;
+  };
+
+  axis.tickSizeInner = function(_) {
+    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;
+  };
+
+  axis.tickSizeOuter = function(_) {
+    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;
+  };
+
+  axis.tickPadding = function(_) {
+    return arguments.length ? (tickPadding = +_, axis) : tickPadding;
+  };
+
+  return axis;
+}
+
+function axisTop(scale) {
+  return axis(top, scale);
+}
+
+function axisRight(scale) {
+  return axis(right, scale);
+}
+
+function axisBottom(scale) {
+  return axis(bottom, scale);
+}
+
+function axisLeft(scale) {
+  return axis(left, scale);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-axis/src/identity.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-axis/src/identity.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return x;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-axis/src/index.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-axis/src/index.js ***!
+  \*******************************************/
+/*! exports provided: axisTop, axisRight, axisBottom, axisLeft */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _axis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./axis */ "./node_modules/d3-axis/src/axis.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisTop", function() { return _axis__WEBPACK_IMPORTED_MODULE_0__["axisTop"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisRight", function() { return _axis__WEBPACK_IMPORTED_MODULE_0__["axisRight"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisBottom", function() { return _axis__WEBPACK_IMPORTED_MODULE_0__["axisBottom"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisLeft", function() { return _axis__WEBPACK_IMPORTED_MODULE_0__["axisLeft"]; });
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-brush/src/brush.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-brush/src/brush.js ***!
+  \********************************************/
+/*! exports provided: brushSelection, brushX, brushY, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "brushSelection", function() { return brushSelection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "brushX", function() { return brushX; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "brushY", function() { return brushY; });
+/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ "./node_modules/d3-dispatch/src/index.js");
+/* harmony import */ var d3_drag__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-drag */ "./node_modules/d3-drag/src/index.js");
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var d3_transition__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-transition */ "./node_modules/d3-transition/src/index.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-brush/src/constant.js");
+/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./event.js */ "./node_modules/d3-brush/src/event.js");
+/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./noevent.js */ "./node_modules/d3-brush/src/noevent.js");
+
+
+
+
+
+
+
+
+
+var MODE_DRAG = {name: "drag"},
+    MODE_SPACE = {name: "space"},
+    MODE_HANDLE = {name: "handle"},
+    MODE_CENTER = {name: "center"};
+
+function number1(e) {
+  return [+e[0], +e[1]];
+}
+
+function number2(e) {
+  return [number1(e[0]), number1(e[1])];
+}
+
+function toucher(identifier) {
+  return function(target) {
+    return Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["touch"])(target, d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches, identifier);
+  };
+}
+
+var X = {
+  name: "x",
+  handles: ["w", "e"].map(type),
+  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },
+  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }
+};
+
+var Y = {
+  name: "y",
+  handles: ["n", "s"].map(type),
+  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },
+  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }
+};
+
+var XY = {
+  name: "xy",
+  handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type),
+  input: function(xy) { return xy == null ? null : number2(xy); },
+  output: function(xy) { return xy; }
+};
+
+var cursors = {
+  overlay: "crosshair",
+  selection: "move",
+  n: "ns-resize",
+  e: "ew-resize",
+  s: "ns-resize",
+  w: "ew-resize",
+  nw: "nwse-resize",
+  ne: "nesw-resize",
+  se: "nwse-resize",
+  sw: "nesw-resize"
+};
+
+var flipX = {
+  e: "w",
+  w: "e",
+  nw: "ne",
+  ne: "nw",
+  se: "sw",
+  sw: "se"
+};
+
+var flipY = {
+  n: "s",
+  s: "n",
+  nw: "sw",
+  ne: "se",
+  se: "ne",
+  sw: "nw"
+};
+
+var signsX = {
+  overlay: +1,
+  selection: +1,
+  n: null,
+  e: +1,
+  s: null,
+  w: -1,
+  nw: -1,
+  ne: +1,
+  se: +1,
+  sw: -1
+};
+
+var signsY = {
+  overlay: +1,
+  selection: +1,
+  n: -1,
+  e: null,
+  s: +1,
+  w: null,
+  nw: -1,
+  ne: -1,
+  se: +1,
+  sw: +1
+};
+
+function type(t) {
+  return {type: t};
+}
+
+// Ignore right-click, since that should open the context menu.
+function defaultFilter() {
+  return !d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].ctrlKey && !d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].button;
+}
+
+function defaultExtent() {
+  var svg = this.ownerSVGElement || this;
+  if (svg.hasAttribute("viewBox")) {
+    svg = svg.viewBox.baseVal;
+    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];
+  }
+  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];
+}
+
+function defaultTouchable() {
+  return navigator.maxTouchPoints || ("ontouchstart" in this);
+}
+
+// Like d3.local, but with the name “__brush” rather than auto-generated.
+function local(node) {
+  while (!node.__brush) if (!(node = node.parentNode)) return;
+  return node.__brush;
+}
+
+function empty(extent) {
+  return extent[0][0] === extent[1][0]
+      || extent[0][1] === extent[1][1];
+}
+
+function brushSelection(node) {
+  var state = node.__brush;
+  return state ? state.dim.output(state.selection) : null;
+}
+
+function brushX() {
+  return brush(X);
+}
+
+function brushY() {
+  return brush(Y);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return brush(XY);
+});
+
+function brush(dim) {
+  var extent = defaultExtent,
+      filter = defaultFilter,
+      touchable = defaultTouchable,
+      keys = true,
+      listeners = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("start", "brush", "end"),
+      handleSize = 6,
+      touchending;
+
+  function brush(group) {
+    var overlay = group
+        .property("__brush", initialize)
+      .selectAll(".overlay")
+      .data([type("overlay")]);
+
+    overlay.enter().append("rect")
+        .attr("class", "overlay")
+        .attr("pointer-events", "all")
+        .attr("cursor", cursors.overlay)
+      .merge(overlay)
+        .each(function() {
+          var extent = local(this).extent;
+          Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this)
+              .attr("x", extent[0][0])
+              .attr("y", extent[0][1])
+              .attr("width", extent[1][0] - extent[0][0])
+              .attr("height", extent[1][1] - extent[0][1]);
+        });
+
+    group.selectAll(".selection")
+      .data([type("selection")])
+      .enter().append("rect")
+        .attr("class", "selection")
+        .attr("cursor", cursors.selection)
+        .attr("fill", "#777")
+        .attr("fill-opacity", 0.3)
+        .attr("stroke", "#fff")
+        .attr("shape-rendering", "crispEdges");
+
+    var handle = group.selectAll(".handle")
+      .data(dim.handles, function(d) { return d.type; });
+
+    handle.exit().remove();
+
+    handle.enter().append("rect")
+        .attr("class", function(d) { return "handle handle--" + d.type; })
+        .attr("cursor", function(d) { return cursors[d.type]; });
+
+    group
+        .each(redraw)
+        .attr("fill", "none")
+        .attr("pointer-events", "all")
+        .on("mousedown.brush", started)
+      .filter(touchable)
+        .on("touchstart.brush", started)
+        .on("touchmove.brush", touchmoved)
+        .on("touchend.brush touchcancel.brush", touchended)
+        .style("touch-action", "none")
+        .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
+  }
+
+  brush.move = function(group, selection) {
+    if (group.selection) {
+      group
+          .on("start.brush", function() { emitter(this, arguments).beforestart().start(); })
+          .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); })
+          .tween("brush", function() {
+            var that = this,
+                state = that.__brush,
+                emit = emitter(that, arguments),
+                selection0 = state.selection,
+                selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent),
+                i = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_2__["interpolate"])(selection0, selection1);
+
+            function tween(t) {
+              state.selection = t === 1 && selection1 === null ? null : i(t);
+              redraw.call(that);
+              emit.brush();
+            }
+
+            return selection0 !== null && selection1 !== null ? tween : tween(1);
+          });
+    } else {
+      group
+          .each(function() {
+            var that = this,
+                args = arguments,
+                state = that.__brush,
+                selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent),
+                emit = emitter(that, args).beforestart();
+
+            Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(that);
+            state.selection = selection1 === null ? null : selection1;
+            redraw.call(that);
+            emit.start().brush().end();
+          });
+    }
+  };
+
+  brush.clear = function(group) {
+    brush.move(group, null);
+  };
+
+  function redraw() {
+    var group = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this),
+        selection = local(this).selection;
+
+    if (selection) {
+      group.selectAll(".selection")
+          .style("display", null)
+          .attr("x", selection[0][0])
+          .attr("y", selection[0][1])
+          .attr("width", selection[1][0] - selection[0][0])
+          .attr("height", selection[1][1] - selection[0][1]);
+
+      group.selectAll(".handle")
+          .style("display", null)
+          .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })
+          .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })
+          .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })
+          .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });
+    }
+
+    else {
+      group.selectAll(".selection,.handle")
+          .style("display", "none")
+          .attr("x", null)
+          .attr("y", null)
+          .attr("width", null)
+          .attr("height", null);
+    }
+  }
+
+  function emitter(that, args, clean) {
+    return (!clean && that.__brush.emitter) || new Emitter(that, args);
+  }
+
+  function Emitter(that, args) {
+    this.that = that;
+    this.args = args;
+    this.state = that.__brush;
+    this.active = 0;
+  }
+
+  Emitter.prototype = {
+    beforestart: function() {
+      if (++this.active === 1) this.state.emitter = this, this.starting = true;
+      return this;
+    },
+    start: function() {
+      if (this.starting) this.starting = false, this.emit("start");
+      else this.emit("brush");
+      return this;
+    },
+    brush: function() {
+      this.emit("brush");
+      return this;
+    },
+    end: function() {
+      if (--this.active === 0) delete this.state.emitter, this.emit("end");
+      return this;
+    },
+    emit: function(type) {
+      Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["customEvent"])(new _event_js__WEBPACK_IMPORTED_MODULE_6__["default"](brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);
+    }
+  };
+
+  function started() {
+    if (touchending && !d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches) return;
+    if (!filter.apply(this, arguments)) return;
+
+    var that = this,
+        type = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].target.__data__.type,
+        mode = (keys && d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (keys && d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].altKey ? MODE_CENTER : MODE_HANDLE),
+        signX = dim === Y ? null : signsX[type],
+        signY = dim === X ? null : signsY[type],
+        state = local(that),
+        extent = state.extent,
+        selection = state.selection,
+        W = extent[0][0], w0, w1,
+        N = extent[0][1], n0, n1,
+        E = extent[1][0], e0, e1,
+        S = extent[1][1], s0, s1,
+        dx = 0,
+        dy = 0,
+        moving,
+        shifting = signX && signY && keys && d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].shiftKey,
+        lockX,
+        lockY,
+        pointer = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches ? toucher(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches[0].identifier) : d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"],
+        point0 = pointer(that),
+        point = point0,
+        emit = emitter(that, arguments, true).beforestart();
+
+    if (type === "overlay") {
+      if (selection) moving = true;
+      state.selection = selection = [
+        [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],
+        [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]
+      ];
+    } else {
+      w0 = selection[0][0];
+      n0 = selection[0][1];
+      e0 = selection[1][0];
+      s0 = selection[1][1];
+    }
+
+    w1 = w0;
+    n1 = n0;
+    e1 = e0;
+    s1 = s0;
+
+    var group = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(that)
+        .attr("pointer-events", "none");
+
+    var overlay = group.selectAll(".overlay")
+        .attr("cursor", cursors[type]);
+
+    if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches) {
+      emit.moved = moved;
+      emit.ended = ended;
+    } else {
+      var view = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view)
+          .on("mousemove.brush", moved, true)
+          .on("mouseup.brush", ended, true);
+      if (keys) view
+          .on("keydown.brush", keydowned, true)
+          .on("keyup.brush", keyupped, true)
+
+      Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragDisable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view);
+    }
+
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_7__["nopropagation"])();
+    Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(that);
+    redraw.call(that);
+    emit.start();
+
+    function moved() {
+      var point1 = pointer(that);
+      if (shifting && !lockX && !lockY) {
+        if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;
+        else lockX = true;
+      }
+      point = point1;
+      moving = true;
+      Object(_noevent_js__WEBPACK_IMPORTED_MODULE_7__["default"])();
+      move();
+    }
+
+    function move() {
+      var t;
+
+      dx = point[0] - point0[0];
+      dy = point[1] - point0[1];
+
+      switch (mode) {
+        case MODE_SPACE:
+        case MODE_DRAG: {
+          if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;
+          if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;
+          break;
+        }
+        case MODE_HANDLE: {
+          if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;
+          else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;
+          if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;
+          else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;
+          break;
+        }
+        case MODE_CENTER: {
+          if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));
+          if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));
+          break;
+        }
+      }
+
+      if (e1 < w1) {
+        signX *= -1;
+        t = w0, w0 = e0, e0 = t;
+        t = w1, w1 = e1, e1 = t;
+        if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]);
+      }
+
+      if (s1 < n1) {
+        signY *= -1;
+        t = n0, n0 = s0, s0 = t;
+        t = n1, n1 = s1, s1 = t;
+        if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]);
+      }
+
+      if (state.selection) selection = state.selection; // May be set by brush.move!
+      if (lockX) w1 = selection[0][0], e1 = selection[1][0];
+      if (lockY) n1 = selection[0][1], s1 = selection[1][1];
+
+      if (selection[0][0] !== w1
+          || selection[0][1] !== n1
+          || selection[1][0] !== e1
+          || selection[1][1] !== s1) {
+        state.selection = [[w1, n1], [e1, s1]];
+        redraw.call(that);
+        emit.brush();
+      }
+    }
+
+    function ended() {
+      Object(_noevent_js__WEBPACK_IMPORTED_MODULE_7__["nopropagation"])();
+      if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches) {
+        if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches.length) return;
+        if (touchending) clearTimeout(touchending);
+        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
+      } else {
+        Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragEnable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view, moving);
+        view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null);
+      }
+      group.attr("pointer-events", "all");
+      overlay.attr("cursor", cursors.overlay);
+      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!
+      if (empty(selection)) state.selection = null, redraw.call(that);
+      emit.end();
+    }
+
+    function keydowned() {
+      switch (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].keyCode) {
+        case 16: { // SHIFT
+          shifting = signX && signY;
+          break;
+        }
+        case 18: { // ALT
+          if (mode === MODE_HANDLE) {
+            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;
+            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;
+            mode = MODE_CENTER;
+            move();
+          }
+          break;
+        }
+        case 32: { // SPACE; takes priority over ALT
+          if (mode === MODE_HANDLE || mode === MODE_CENTER) {
+            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;
+            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;
+            mode = MODE_SPACE;
+            overlay.attr("cursor", cursors.selection);
+            move();
+          }
+          break;
+        }
+        default: return;
+      }
+      Object(_noevent_js__WEBPACK_IMPORTED_MODULE_7__["default"])();
+    }
+
+    function keyupped() {
+      switch (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].keyCode) {
+        case 16: { // SHIFT
+          if (shifting) {
+            lockX = lockY = shifting = false;
+            move();
+          }
+          break;
+        }
+        case 18: { // ALT
+          if (mode === MODE_CENTER) {
+            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;
+            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;
+            mode = MODE_HANDLE;
+            move();
+          }
+          break;
+        }
+        case 32: { // SPACE
+          if (mode === MODE_SPACE) {
+            if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].altKey) {
+              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;
+              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;
+              mode = MODE_CENTER;
+            } else {
+              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;
+              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;
+              mode = MODE_HANDLE;
+            }
+            overlay.attr("cursor", cursors[type]);
+            move();
+          }
+          break;
+        }
+        default: return;
+      }
+      Object(_noevent_js__WEBPACK_IMPORTED_MODULE_7__["default"])();
+    }
+  }
+
+  function touchmoved() {
+    emitter(this, arguments).moved();
+  }
+
+  function touchended() {
+    emitter(this, arguments).ended();
+  }
+
+  function initialize() {
+    var state = this.__brush || {selection: null};
+    state.extent = number2(extent.apply(this, arguments));
+    state.dim = dim;
+    return state;
+  }
+
+  brush.extent = function(_) {
+    return arguments.length ? (extent = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_5__["default"])(number2(_)), brush) : extent;
+  };
+
+  brush.filter = function(_) {
+    return arguments.length ? (filter = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_5__["default"])(!!_), brush) : filter;
+  };
+
+  brush.touchable = function(_) {
+    return arguments.length ? (touchable = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_5__["default"])(!!_), brush) : touchable;
+  };
+
+  brush.handleSize = function(_) {
+    return arguments.length ? (handleSize = +_, brush) : handleSize;
+  };
+
+  brush.keyModifiers = function(_) {
+    return arguments.length ? (keys = !!_, brush) : keys;
+  };
+
+  brush.on = function() {
+    var value = listeners.on.apply(listeners, arguments);
+    return value === listeners ? brush : value;
+  };
+
+  return brush;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-brush/src/constant.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-brush/src/constant.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-brush/src/event.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-brush/src/event.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(target, type, selection) {
+  this.target = target;
+  this.type = type;
+  this.selection = selection;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-brush/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-brush/src/index.js ***!
+  \********************************************/
+/*! exports provided: brush, brushX, brushY, brushSelection */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _brush_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./brush.js */ "./node_modules/d3-brush/src/brush.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brush", function() { return _brush_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brushX", function() { return _brush_js__WEBPACK_IMPORTED_MODULE_0__["brushX"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brushY", function() { return _brush_js__WEBPACK_IMPORTED_MODULE_0__["brushY"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brushSelection", function() { return _brush_js__WEBPACK_IMPORTED_MODULE_0__["brushSelection"]; });
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-brush/src/noevent.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-brush/src/noevent.js ***!
+  \**********************************************/
+/*! exports provided: nopropagation, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nopropagation", function() { return nopropagation; });
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+
+
+function nopropagation() {
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].preventDefault();
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-chord/src/array.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-chord/src/array.js ***!
+  \********************************************/
+/*! exports provided: slice */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; });
+var slice = Array.prototype.slice;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-chord/src/chord.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-chord/src/chord.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ "./node_modules/d3-chord/src/math.js");
+
+
+
+function compareValue(compare) {
+  return function(a, b) {
+    return compare(
+      a.source.value + a.target.value,
+      b.source.value + b.target.value
+    );
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var padAngle = 0,
+      sortGroups = null,
+      sortSubgroups = null,
+      sortChords = null;
+
+  function chord(matrix) {
+    var n = matrix.length,
+        groupSums = [],
+        groupIndex = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(n),
+        subgroupIndex = [],
+        chords = [],
+        groups = chords.groups = new Array(n),
+        subgroups = new Array(n * n),
+        k,
+        x,
+        x0,
+        dx,
+        i,
+        j;
+
+    // Compute the sum.
+    k = 0, i = -1; while (++i < n) {
+      x = 0, j = -1; while (++j < n) {
+        x += matrix[i][j];
+      }
+      groupSums.push(x);
+      subgroupIndex.push(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(n));
+      k += x;
+    }
+
+    // Sort groups…
+    if (sortGroups) groupIndex.sort(function(a, b) {
+      return sortGroups(groupSums[a], groupSums[b]);
+    });
+
+    // Sort subgroups…
+    if (sortSubgroups) subgroupIndex.forEach(function(d, i) {
+      d.sort(function(a, b) {
+        return sortSubgroups(matrix[i][a], matrix[i][b]);
+      });
+    });
+
+    // Convert the sum to scaling factor for [0, 2pi].
+    // TODO Allow start and end angle to be specified?
+    // TODO Allow padding to be specified as percentage?
+    k = Object(_math__WEBPACK_IMPORTED_MODULE_1__["max"])(0, _math__WEBPACK_IMPORTED_MODULE_1__["tau"] - padAngle * n) / k;
+    dx = k ? padAngle : _math__WEBPACK_IMPORTED_MODULE_1__["tau"] / n;
+
+    // Compute the start and end angle for each group and subgroup.
+    // Note: Opera has a bug reordering object literal properties!
+    x = 0, i = -1; while (++i < n) {
+      x0 = x, j = -1; while (++j < n) {
+        var di = groupIndex[i],
+            dj = subgroupIndex[di][j],
+            v = matrix[di][dj],
+            a0 = x,
+            a1 = x += v * k;
+        subgroups[dj * n + di] = {
+          index: di,
+          subindex: dj,
+          startAngle: a0,
+          endAngle: a1,
+          value: v
+        };
+      }
+      groups[di] = {
+        index: di,
+        startAngle: x0,
+        endAngle: x,
+        value: groupSums[di]
+      };
+      x += dx;
+    }
+
+    // Generate chords for each (non-empty) subgroup-subgroup link.
+    i = -1; while (++i < n) {
+      j = i - 1; while (++j < n) {
+        var source = subgroups[j * n + i],
+            target = subgroups[i * n + j];
+        if (source.value || target.value) {
+          chords.push(source.value < target.value
+              ? {source: target, target: source}
+              : {source: source, target: target});
+        }
+      }
+    }
+
+    return sortChords ? chords.sort(sortChords) : chords;
+  }
+
+  chord.padAngle = function(_) {
+    return arguments.length ? (padAngle = Object(_math__WEBPACK_IMPORTED_MODULE_1__["max"])(0, _), chord) : padAngle;
+  };
+
+  chord.sortGroups = function(_) {
+    return arguments.length ? (sortGroups = _, chord) : sortGroups;
+  };
+
+  chord.sortSubgroups = function(_) {
+    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;
+  };
+
+  chord.sortChords = function(_) {
+    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;
+  };
+
+  return chord;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-chord/src/constant.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-chord/src/constant.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-chord/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-chord/src/index.js ***!
+  \********************************************/
+/*! exports provided: chord, ribbon */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _chord__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chord */ "./node_modules/d3-chord/src/chord.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "chord", function() { return _chord__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _ribbon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ribbon */ "./node_modules/d3-chord/src/ribbon.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ribbon", function() { return _ribbon__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-chord/src/math.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-chord/src/math.js ***!
+  \*******************************************/
+/*! exports provided: cos, sin, pi, halfPi, tau, max */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cos", function() { return cos; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sin", function() { return sin; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pi", function() { return pi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "halfPi", function() { return halfPi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tau", function() { return tau; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; });
+var cos = Math.cos;
+var sin = Math.sin;
+var pi = Math.PI;
+var halfPi = pi / 2;
+var tau = pi * 2;
+var max = Math.max;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-chord/src/ribbon.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-chord/src/ribbon.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ "./node_modules/d3-chord/src/array.js");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-chord/src/constant.js");
+/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math */ "./node_modules/d3-chord/src/math.js");
+/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-path */ "./node_modules/d3-path/src/index.js");
+
+
+
+
+
+function defaultSource(d) {
+  return d.source;
+}
+
+function defaultTarget(d) {
+  return d.target;
+}
+
+function defaultRadius(d) {
+  return d.radius;
+}
+
+function defaultStartAngle(d) {
+  return d.startAngle;
+}
+
+function defaultEndAngle(d) {
+  return d.endAngle;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var source = defaultSource,
+      target = defaultTarget,
+      radius = defaultRadius,
+      startAngle = defaultStartAngle,
+      endAngle = defaultEndAngle,
+      context = null;
+
+  function ribbon() {
+    var buffer,
+        argv = _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(arguments),
+        s = source.apply(this, argv),
+        t = target.apply(this, argv),
+        sr = +radius.apply(this, (argv[0] = s, argv)),
+        sa0 = startAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
+        sa1 = endAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
+        sx0 = sr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(sa0),
+        sy0 = sr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(sa0),
+        tr = +radius.apply(this, (argv[0] = t, argv)),
+        ta0 = startAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
+        ta1 = endAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"];
+
+    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_3__["path"])();
+
+    context.moveTo(sx0, sy0);
+    context.arc(0, 0, sr, sa0, sa1);
+    if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?
+      context.quadraticCurveTo(0, 0, tr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(ta0), tr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(ta0));
+      context.arc(0, 0, tr, ta0, ta1);
+    }
+    context.quadraticCurveTo(0, 0, sx0, sy0);
+    context.closePath();
+
+    if (buffer) return context = null, buffer + "" || null;
+  }
+
+  ribbon.radius = function(_) {
+    return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), ribbon) : radius;
+  };
+
+  ribbon.startAngle = function(_) {
+    return arguments.length ? (startAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), ribbon) : startAngle;
+  };
+
+  ribbon.endAngle = function(_) {
+    return arguments.length ? (endAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), ribbon) : endAngle;
+  };
+
+  ribbon.source = function(_) {
+    return arguments.length ? (source = _, ribbon) : source;
+  };
+
+  ribbon.target = function(_) {
+    return arguments.length ? (target = _, ribbon) : target;
+  };
+
+  ribbon.context = function(_) {
+    return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;
+  };
+
+  return ribbon;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-collection/src/entries.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-collection/src/entries.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(map) {
+  var entries = [];
+  for (var key in map) entries.push({key: key, value: map[key]});
+  return entries;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-collection/src/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-collection/src/index.js ***!
+  \*************************************************/
+/*! exports provided: nest, set, map, keys, values, entries */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _nest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nest */ "./node_modules/d3-collection/src/nest.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nest", function() { return _nest__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./set */ "./node_modules/d3-collection/src/set.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "set", function() { return _set__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map */ "./node_modules/d3-collection/src/map.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _map__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keys */ "./node_modules/d3-collection/src/keys.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return _keys__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./values */ "./node_modules/d3-collection/src/values.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "values", function() { return _values__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _entries__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./entries */ "./node_modules/d3-collection/src/entries.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "entries", function() { return _entries__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-collection/src/keys.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-collection/src/keys.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(map) {
+  var keys = [];
+  for (var key in map) keys.push(key);
+  return keys;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-collection/src/map.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-collection/src/map.js ***!
+  \***********************************************/
+/*! exports provided: prefix, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prefix", function() { return prefix; });
+var prefix = "$";
+
+function Map() {}
+
+Map.prototype = map.prototype = {
+  constructor: Map,
+  has: function(key) {
+    return (prefix + key) in this;
+  },
+  get: function(key) {
+    return this[prefix + key];
+  },
+  set: function(key, value) {
+    this[prefix + key] = value;
+    return this;
+  },
+  remove: function(key) {
+    var property = prefix + key;
+    return property in this && delete this[property];
+  },
+  clear: function() {
+    for (var property in this) if (property[0] === prefix) delete this[property];
+  },
+  keys: function() {
+    var keys = [];
+    for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));
+    return keys;
+  },
+  values: function() {
+    var values = [];
+    for (var property in this) if (property[0] === prefix) values.push(this[property]);
+    return values;
+  },
+  entries: function() {
+    var entries = [];
+    for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});
+    return entries;
+  },
+  size: function() {
+    var size = 0;
+    for (var property in this) if (property[0] === prefix) ++size;
+    return size;
+  },
+  empty: function() {
+    for (var property in this) if (property[0] === prefix) return false;
+    return true;
+  },
+  each: function(f) {
+    for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);
+  }
+};
+
+function map(object, f) {
+  var map = new Map;
+
+  // Copy constructor.
+  if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });
+
+  // Index array by numeric index or specified key function.
+  else if (Array.isArray(object)) {
+    var i = -1,
+        n = object.length,
+        o;
+
+    if (f == null) while (++i < n) map.set(i, object[i]);
+    else while (++i < n) map.set(f(o = object[i], i, object), o);
+  }
+
+  // Convert object to map.
+  else if (object) for (var key in object) map.set(key, object[key]);
+
+  return map;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (map);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-collection/src/nest.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-collection/src/nest.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ "./node_modules/d3-collection/src/map.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var keys = [],
+      sortKeys = [],
+      sortValues,
+      rollup,
+      nest;
+
+  function apply(array, depth, createResult, setResult) {
+    if (depth >= keys.length) {
+      if (sortValues != null) array.sort(sortValues);
+      return rollup != null ? rollup(array) : array;
+    }
+
+    var i = -1,
+        n = array.length,
+        key = keys[depth++],
+        keyValue,
+        value,
+        valuesByKey = Object(_map__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+        values,
+        result = createResult();
+
+    while (++i < n) {
+      if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) {
+        values.push(value);
+      } else {
+        valuesByKey.set(keyValue, [value]);
+      }
+    }
+
+    valuesByKey.each(function(values, key) {
+      setResult(result, key, apply(values, depth, createResult, setResult));
+    });
+
+    return result;
+  }
+
+  function entries(map, depth) {
+    if (++depth > keys.length) return map;
+    var array, sortKey = sortKeys[depth - 1];
+    if (rollup != null && depth >= keys.length) array = map.entries();
+    else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });
+    return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;
+  }
+
+  return nest = {
+    object: function(array) { return apply(array, 0, createObject, setObject); },
+    map: function(array) { return apply(array, 0, createMap, setMap); },
+    entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },
+    key: function(d) { keys.push(d); return nest; },
+    sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },
+    sortValues: function(order) { sortValues = order; return nest; },
+    rollup: function(f) { rollup = f; return nest; }
+  };
+});
+
+function createObject() {
+  return {};
+}
+
+function setObject(object, key, value) {
+  object[key] = value;
+}
+
+function createMap() {
+  return Object(_map__WEBPACK_IMPORTED_MODULE_0__["default"])();
+}
+
+function setMap(map, key, value) {
+  map.set(key, value);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-collection/src/set.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-collection/src/set.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ "./node_modules/d3-collection/src/map.js");
+
+
+function Set() {}
+
+var proto = _map__WEBPACK_IMPORTED_MODULE_0__["default"].prototype;
+
+Set.prototype = set.prototype = {
+  constructor: Set,
+  has: proto.has,
+  add: function(value) {
+    value += "";
+    this[_map__WEBPACK_IMPORTED_MODULE_0__["prefix"] + value] = value;
+    return this;
+  },
+  remove: proto.remove,
+  clear: proto.clear,
+  values: proto.keys,
+  size: proto.size,
+  empty: proto.empty,
+  each: proto.each
+};
+
+function set(object, f) {
+  var set = new Set;
+
+  // Copy constructor.
+  if (object instanceof Set) object.each(function(value) { set.add(value); });
+
+  // Otherwise, assume it’s an array.
+  else if (object) {
+    var i = -1, n = object.length;
+    if (f == null) while (++i < n) set.add(object[i]);
+    else while (++i < n) set.add(f(object[i], i, object));
+  }
+
+  return set;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (set);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-collection/src/values.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-collection/src/values.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(map) {
+  var values = [];
+  for (var key in map) values.push(map[key]);
+  return values;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-color/src/color.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-color/src/color.js ***!
+  \********************************************/
+/*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return Color; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "darker", function() { return darker; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "brighter", function() { return brighter; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return color; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rgbConvert", function() { return rgbConvert; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rgb", function() { return rgb; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Rgb", function() { return Rgb; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hslConvert", function() { return hslConvert; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hsl", function() { return hsl; });
+/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ "./node_modules/d3-color/src/define.js");
+
+
+function Color() {}
+
+var darker = 0.7;
+var brighter = 1 / darker;
+
+var reI = "\\s*([+-]?\\d+)\\s*",
+    reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",
+    reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
+    reHex = /^#([0-9a-f]{3,8})$/,
+    reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"),
+    reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"),
+    reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"),
+    reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"),
+    reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"),
+    reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$");
+
+var named = {
+  aliceblue: 0xf0f8ff,
+  antiquewhite: 0xfaebd7,
+  aqua: 0x00ffff,
+  aquamarine: 0x7fffd4,
+  azure: 0xf0ffff,
+  beige: 0xf5f5dc,
+  bisque: 0xffe4c4,
+  black: 0x000000,
+  blanchedalmond: 0xffebcd,
+  blue: 0x0000ff,
+  blueviolet: 0x8a2be2,
+  brown: 0xa52a2a,
+  burlywood: 0xdeb887,
+  cadetblue: 0x5f9ea0,
+  chartreuse: 0x7fff00,
+  chocolate: 0xd2691e,
+  coral: 0xff7f50,
+  cornflowerblue: 0x6495ed,
+  cornsilk: 0xfff8dc,
+  crimson: 0xdc143c,
+  cyan: 0x00ffff,
+  darkblue: 0x00008b,
+  darkcyan: 0x008b8b,
+  darkgoldenrod: 0xb8860b,
+  darkgray: 0xa9a9a9,
+  darkgreen: 0x006400,
+  darkgrey: 0xa9a9a9,
+  darkkhaki: 0xbdb76b,
+  darkmagenta: 0x8b008b,
+  darkolivegreen: 0x556b2f,
+  darkorange: 0xff8c00,
+  darkorchid: 0x9932cc,
+  darkred: 0x8b0000,
+  darksalmon: 0xe9967a,
+  darkseagreen: 0x8fbc8f,
+  darkslateblue: 0x483d8b,
+  darkslategray: 0x2f4f4f,
+  darkslategrey: 0x2f4f4f,
+  darkturquoise: 0x00ced1,
+  darkviolet: 0x9400d3,
+  deeppink: 0xff1493,
+  deepskyblue: 0x00bfff,
+  dimgray: 0x696969,
+  dimgrey: 0x696969,
+  dodgerblue: 0x1e90ff,
+  firebrick: 0xb22222,
+  floralwhite: 0xfffaf0,
+  forestgreen: 0x228b22,
+  fuchsia: 0xff00ff,
+  gainsboro: 0xdcdcdc,
+  ghostwhite: 0xf8f8ff,
+  gold: 0xffd700,
+  goldenrod: 0xdaa520,
+  gray: 0x808080,
+  green: 0x008000,
+  greenyellow: 0xadff2f,
+  grey: 0x808080,
+  honeydew: 0xf0fff0,
+  hotpink: 0xff69b4,
+  indianred: 0xcd5c5c,
+  indigo: 0x4b0082,
+  ivory: 0xfffff0,
+  khaki: 0xf0e68c,
+  lavender: 0xe6e6fa,
+  lavenderblush: 0xfff0f5,
+  lawngreen: 0x7cfc00,
+  lemonchiffon: 0xfffacd,
+  lightblue: 0xadd8e6,
+  lightcoral: 0xf08080,
+  lightcyan: 0xe0ffff,
+  lightgoldenrodyellow: 0xfafad2,
+  lightgray: 0xd3d3d3,
+  lightgreen: 0x90ee90,
+  lightgrey: 0xd3d3d3,
+  lightpink: 0xffb6c1,
+  lightsalmon: 0xffa07a,
+  lightseagreen: 0x20b2aa,
+  lightskyblue: 0x87cefa,
+  lightslategray: 0x778899,
+  lightslategrey: 0x778899,
+  lightsteelblue: 0xb0c4de,
+  lightyellow: 0xffffe0,
+  lime: 0x00ff00,
+  limegreen: 0x32cd32,
+  linen: 0xfaf0e6,
+  magenta: 0xff00ff,
+  maroon: 0x800000,
+  mediumaquamarine: 0x66cdaa,
+  mediumblue: 0x0000cd,
+  mediumorchid: 0xba55d3,
+  mediumpurple: 0x9370db,
+  mediumseagreen: 0x3cb371,
+  mediumslateblue: 0x7b68ee,
+  mediumspringgreen: 0x00fa9a,
+  mediumturquoise: 0x48d1cc,
+  mediumvioletred: 0xc71585,
+  midnightblue: 0x191970,
+  mintcream: 0xf5fffa,
+  mistyrose: 0xffe4e1,
+  moccasin: 0xffe4b5,
+  navajowhite: 0xffdead,
+  navy: 0x000080,
+  oldlace: 0xfdf5e6,
+  olive: 0x808000,
+  olivedrab: 0x6b8e23,
+  orange: 0xffa500,
+  orangered: 0xff4500,
+  orchid: 0xda70d6,
+  palegoldenrod: 0xeee8aa,
+  palegreen: 0x98fb98,
+  paleturquoise: 0xafeeee,
+  palevioletred: 0xdb7093,
+  papayawhip: 0xffefd5,
+  peachpuff: 0xffdab9,
+  peru: 0xcd853f,
+  pink: 0xffc0cb,
+  plum: 0xdda0dd,
+  powderblue: 0xb0e0e6,
+  purple: 0x800080,
+  rebeccapurple: 0x663399,
+  red: 0xff0000,
+  rosybrown: 0xbc8f8f,
+  royalblue: 0x4169e1,
+  saddlebrown: 0x8b4513,
+  salmon: 0xfa8072,
+  sandybrown: 0xf4a460,
+  seagreen: 0x2e8b57,
+  seashell: 0xfff5ee,
+  sienna: 0xa0522d,
+  silver: 0xc0c0c0,
+  skyblue: 0x87ceeb,
+  slateblue: 0x6a5acd,
+  slategray: 0x708090,
+  slategrey: 0x708090,
+  snow: 0xfffafa,
+  springgreen: 0x00ff7f,
+  steelblue: 0x4682b4,
+  tan: 0xd2b48c,
+  teal: 0x008080,
+  thistle: 0xd8bfd8,
+  tomato: 0xff6347,
+  turquoise: 0x40e0d0,
+  violet: 0xee82ee,
+  wheat: 0xf5deb3,
+  white: 0xffffff,
+  whitesmoke: 0xf5f5f5,
+  yellow: 0xffff00,
+  yellowgreen: 0x9acd32
+};
+
+Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Color, color, {
+  copy: function(channels) {
+    return Object.assign(new this.constructor, this, channels);
+  },
+  displayable: function() {
+    return this.rgb().displayable();
+  },
+  hex: color_formatHex, // Deprecated! Use color.formatHex.
+  formatHex: color_formatHex,
+  formatHsl: color_formatHsl,
+  formatRgb: color_formatRgb,
+  toString: color_formatRgb
+});
+
+function color_formatHex() {
+  return this.rgb().formatHex();
+}
+
+function color_formatHsl() {
+  return hslConvert(this).formatHsl();
+}
+
+function color_formatRgb() {
+  return this.rgb().formatRgb();
+}
+
+function color(format) {
+  var m, l;
+  format = (format + "").trim().toLowerCase();
+  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000
+      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00
+      : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000
+      : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000
+      : null) // invalid hex
+      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)
+      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)
+      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)
+      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)
+      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)
+      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)
+      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins
+      : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0)
+      : null;
+}
+
+function rgbn(n) {
+  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);
+}
+
+function rgba(r, g, b, a) {
+  if (a <= 0) r = g = b = NaN;
+  return new Rgb(r, g, b, a);
+}
+
+function rgbConvert(o) {
+  if (!(o instanceof Color)) o = color(o);
+  if (!o) return new Rgb;
+  o = o.rgb();
+  return new Rgb(o.r, o.g, o.b, o.opacity);
+}
+
+function rgb(r, g, b, opacity) {
+  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);
+}
+
+function Rgb(r, g, b, opacity) {
+  this.r = +r;
+  this.g = +g;
+  this.b = +b;
+  this.opacity = +opacity;
+}
+
+Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Rgb, rgb, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(Color, {
+  brighter: function(k) {
+    k = k == null ? brighter : Math.pow(brighter, k);
+    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
+  },
+  darker: function(k) {
+    k = k == null ? darker : Math.pow(darker, k);
+    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
+  },
+  rgb: function() {
+    return this;
+  },
+  displayable: function() {
+    return (-0.5 <= this.r && this.r < 255.5)
+        && (-0.5 <= this.g && this.g < 255.5)
+        && (-0.5 <= this.b && this.b < 255.5)
+        && (0 <= this.opacity && this.opacity <= 1);
+  },
+  hex: rgb_formatHex, // Deprecated! Use color.formatHex.
+  formatHex: rgb_formatHex,
+  formatRgb: rgb_formatRgb,
+  toString: rgb_formatRgb
+}));
+
+function rgb_formatHex() {
+  return "#" + hex(this.r) + hex(this.g) + hex(this.b);
+}
+
+function rgb_formatRgb() {
+  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
+  return (a === 1 ? "rgb(" : "rgba(")
+      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", "
+      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", "
+      + Math.max(0, Math.min(255, Math.round(this.b) || 0))
+      + (a === 1 ? ")" : ", " + a + ")");
+}
+
+function hex(value) {
+  value = Math.max(0, Math.min(255, Math.round(value) || 0));
+  return (value < 16 ? "0" : "") + value.toString(16);
+}
+
+function hsla(h, s, l, a) {
+  if (a <= 0) h = s = l = NaN;
+  else if (l <= 0 || l >= 1) h = s = NaN;
+  else if (s <= 0) h = NaN;
+  return new Hsl(h, s, l, a);
+}
+
+function hslConvert(o) {
+  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);
+  if (!(o instanceof Color)) o = color(o);
+  if (!o) return new Hsl;
+  if (o instanceof Hsl) return o;
+  o = o.rgb();
+  var r = o.r / 255,
+      g = o.g / 255,
+      b = o.b / 255,
+      min = Math.min(r, g, b),
+      max = Math.max(r, g, b),
+      h = NaN,
+      s = max - min,
+      l = (max + min) / 2;
+  if (s) {
+    if (r === max) h = (g - b) / s + (g < b) * 6;
+    else if (g === max) h = (b - r) / s + 2;
+    else h = (r - g) / s + 4;
+    s /= l < 0.5 ? max + min : 2 - max - min;
+    h *= 60;
+  } else {
+    s = l > 0 && l < 1 ? 0 : h;
+  }
+  return new Hsl(h, s, l, o.opacity);
+}
+
+function hsl(h, s, l, opacity) {
+  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);
+}
+
+function Hsl(h, s, l, opacity) {
+  this.h = +h;
+  this.s = +s;
+  this.l = +l;
+  this.opacity = +opacity;
+}
+
+Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Hsl, hsl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(Color, {
+  brighter: function(k) {
+    k = k == null ? brighter : Math.pow(brighter, k);
+    return new Hsl(this.h, this.s, this.l * k, this.opacity);
+  },
+  darker: function(k) {
+    k = k == null ? darker : Math.pow(darker, k);
+    return new Hsl(this.h, this.s, this.l * k, this.opacity);
+  },
+  rgb: function() {
+    var h = this.h % 360 + (this.h < 0) * 360,
+        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,
+        l = this.l,
+        m2 = l + (l < 0.5 ? l : 1 - l) * s,
+        m1 = 2 * l - m2;
+    return new Rgb(
+      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),
+      hsl2rgb(h, m1, m2),
+      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),
+      this.opacity
+    );
+  },
+  displayable: function() {
+    return (0 <= this.s && this.s <= 1 || isNaN(this.s))
+        && (0 <= this.l && this.l <= 1)
+        && (0 <= this.opacity && this.opacity <= 1);
+  },
+  formatHsl: function() {
+    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
+    return (a === 1 ? "hsl(" : "hsla(")
+        + (this.h || 0) + ", "
+        + (this.s || 0) * 100 + "%, "
+        + (this.l || 0) * 100 + "%"
+        + (a === 1 ? ")" : ", " + a + ")");
+  }
+}));
+
+/* From FvD 13.37, CSS Color Module Level 3 */
+function hsl2rgb(h, m1, m2) {
+  return (h < 60 ? m1 + (m2 - m1) * h / 60
+      : h < 180 ? m2
+      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60
+      : m1) * 255;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-color/src/cubehelix.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-color/src/cubehelix.js ***!
+  \************************************************/
+/*! exports provided: default, Cubehelix */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return cubehelix; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Cubehelix", function() { return Cubehelix; });
+/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ "./node_modules/d3-color/src/define.js");
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-color/src/color.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-color/src/math.js");
+
+
+
+
+var A = -0.14861,
+    B = +1.78277,
+    C = -0.29227,
+    D = -0.90649,
+    E = +1.97294,
+    ED = E * D,
+    EB = E * B,
+    BC_DA = B * C - D * A;
+
+function cubehelixConvert(o) {
+  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
+  if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__["Rgb"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["rgbConvert"])(o);
+  var r = o.r / 255,
+      g = o.g / 255,
+      b = o.b / 255,
+      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
+      bl = b - l,
+      k = (E * (g - l) - C * bl) / D,
+      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
+      h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_2__["rad2deg"] - 120 : NaN;
+  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);
+}
+
+function cubehelix(h, s, l, opacity) {
+  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);
+}
+
+function Cubehelix(h, s, l, opacity) {
+  this.h = +h;
+  this.s = +s;
+  this.l = +l;
+  this.opacity = +opacity;
+}
+
+Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Cubehelix, cubehelix, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(_color_js__WEBPACK_IMPORTED_MODULE_1__["Color"], {
+  brighter: function(k) {
+    k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__["brighter"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__["brighter"], k);
+    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
+  },
+  darker: function(k) {
+    k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__["darker"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__["darker"], k);
+    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
+  },
+  rgb: function() {
+    var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_2__["deg2rad"],
+        l = +this.l,
+        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),
+        cosh = Math.cos(h),
+        sinh = Math.sin(h);
+    return new _color_js__WEBPACK_IMPORTED_MODULE_1__["Rgb"](
+      255 * (l + a * (A * cosh + B * sinh)),
+      255 * (l + a * (C * cosh + D * sinh)),
+      255 * (l + a * (E * cosh)),
+      this.opacity
+    );
+  }
+}));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-color/src/define.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-color/src/define.js ***!
+  \*********************************************/
+/*! exports provided: default, extend */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; });
+/* harmony default export */ __webpack_exports__["default"] = (function(constructor, factory, prototype) {
+  constructor.prototype = factory.prototype = prototype;
+  prototype.constructor = constructor;
+});
+
+function extend(parent, definition) {
+  var prototype = Object.create(parent.prototype);
+  for (var key in definition) prototype[key] = definition[key];
+  return prototype;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-color/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-color/src/index.js ***!
+  \********************************************/
+/*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-color/src/color.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "color", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "rgb", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__["rgb"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hsl", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__["hsl"]; });
+
+/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ "./node_modules/d3-color/src/lab.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lab", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hcl", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__["hcl"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lch", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__["lch"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "gray", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__["gray"]; });
+
+/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ "./node_modules/d3-color/src/cubehelix.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cubehelix", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-color/src/lab.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-color/src/lab.js ***!
+  \******************************************/
+/*! exports provided: gray, default, Lab, lch, hcl, Hcl */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gray", function() { return gray; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return lab; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Lab", function() { return Lab; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lch", function() { return lch; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hcl", function() { return hcl; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Hcl", function() { return Hcl; });
+/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ "./node_modules/d3-color/src/define.js");
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-color/src/color.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-color/src/math.js");
+
+
+
+
+// https://observablehq.com/@mbostock/lab-and-rgb
+var K = 18,
+    Xn = 0.96422,
+    Yn = 1,
+    Zn = 0.82521,
+    t0 = 4 / 29,
+    t1 = 6 / 29,
+    t2 = 3 * t1 * t1,
+    t3 = t1 * t1 * t1;
+
+function labConvert(o) {
+  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);
+  if (o instanceof Hcl) return hcl2lab(o);
+  if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__["Rgb"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["rgbConvert"])(o);
+  var r = rgb2lrgb(o.r),
+      g = rgb2lrgb(o.g),
+      b = rgb2lrgb(o.b),
+      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;
+  if (r === g && g === b) x = z = y; else {
+    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);
+    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);
+  }
+  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);
+}
+
+function gray(l, opacity) {
+  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);
+}
+
+function lab(l, a, b, opacity) {
+  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);
+}
+
+function Lab(l, a, b, opacity) {
+  this.l = +l;
+  this.a = +a;
+  this.b = +b;
+  this.opacity = +opacity;
+}
+
+Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Lab, lab, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(_color_js__WEBPACK_IMPORTED_MODULE_1__["Color"], {
+  brighter: function(k) {
+    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);
+  },
+  darker: function(k) {
+    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);
+  },
+  rgb: function() {
+    var y = (this.l + 16) / 116,
+        x = isNaN(this.a) ? y : y + this.a / 500,
+        z = isNaN(this.b) ? y : y - this.b / 200;
+    x = Xn * lab2xyz(x);
+    y = Yn * lab2xyz(y);
+    z = Zn * lab2xyz(z);
+    return new _color_js__WEBPACK_IMPORTED_MODULE_1__["Rgb"](
+      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),
+      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),
+      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),
+      this.opacity
+    );
+  }
+}));
+
+function xyz2lab(t) {
+  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;
+}
+
+function lab2xyz(t) {
+  return t > t1 ? t * t * t : t2 * (t - t0);
+}
+
+function lrgb2rgb(x) {
+  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
+}
+
+function rgb2lrgb(x) {
+  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
+}
+
+function hclConvert(o) {
+  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);
+  if (!(o instanceof Lab)) o = labConvert(o);
+  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);
+  var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__["rad2deg"];
+  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);
+}
+
+function lch(l, c, h, opacity) {
+  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
+}
+
+function hcl(h, c, l, opacity) {
+  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
+}
+
+function Hcl(h, c, l, opacity) {
+  this.h = +h;
+  this.c = +c;
+  this.l = +l;
+  this.opacity = +opacity;
+}
+
+function hcl2lab(o) {
+  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);
+  var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__["deg2rad"];
+  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
+}
+
+Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Hcl, hcl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(_color_js__WEBPACK_IMPORTED_MODULE_1__["Color"], {
+  brighter: function(k) {
+    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);
+  },
+  darker: function(k) {
+    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);
+  },
+  rgb: function() {
+    return hcl2lab(this).rgb();
+  }
+}));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-color/src/math.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-color/src/math.js ***!
+  \*******************************************/
+/*! exports provided: deg2rad, rad2deg */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deg2rad", function() { return deg2rad; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rad2deg", function() { return rad2deg; });
+var deg2rad = Math.PI / 180;
+var rad2deg = 180 / Math.PI;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/area.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-contour/src/area.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(ring) {
+  var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];
+  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];
+  return area;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/array.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-contour/src/array.js ***!
+  \**********************************************/
+/*! exports provided: slice */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; });
+var array = Array.prototype;
+
+var slice = array.slice;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/ascending.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-contour/src/ascending.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return a - b;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/blur.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-contour/src/blur.js ***!
+  \*********************************************/
+/*! exports provided: blurX, blurY */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "blurX", function() { return blurX; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "blurY", function() { return blurY; });
+// TODO Optimize edge cases.
+// TODO Optimize index calculation.
+// TODO Optimize arguments.
+function blurX(source, target, r) {
+  var n = source.width,
+      m = source.height,
+      w = (r << 1) + 1;
+  for (var j = 0; j < m; ++j) {
+    for (var i = 0, sr = 0; i < n + r; ++i) {
+      if (i < n) {
+        sr += source.data[i + j * n];
+      }
+      if (i >= r) {
+        if (i >= w) {
+          sr -= source.data[i - w + j * n];
+        }
+        target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);
+      }
+    }
+  }
+}
+
+// TODO Optimize edge cases.
+// TODO Optimize index calculation.
+// TODO Optimize arguments.
+function blurY(source, target, r) {
+  var n = source.width,
+      m = source.height,
+      w = (r << 1) + 1;
+  for (var i = 0; i < n; ++i) {
+    for (var j = 0, sr = 0; j < m + r; ++j) {
+      if (j < m) {
+        sr += source.data[i + j * n];
+      }
+      if (j >= r) {
+        if (j >= w) {
+          sr -= source.data[i + (j - w) * n];
+        }
+        target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);
+      }
+    }
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/constant.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-contour/src/constant.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/contains.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-contour/src/contains.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(ring, hole) {
+  var i = -1, n = hole.length, c;
+  while (++i < n) if (c = ringContains(ring, hole[i])) return c;
+  return 0;
+});
+
+function ringContains(ring, point) {
+  var x = point[0], y = point[1], contains = -1;
+  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {
+    var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];
+    if (segmentContains(pi, pj, point)) return 0;
+    if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;
+  }
+  return contains;
+}
+
+function segmentContains(a, b, c) {
+  var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);
+}
+
+function collinear(a, b, c) {
+  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);
+}
+
+function within(p, q, r) {
+  return p <= q && q <= r || r <= q && q <= p;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/contours.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-contour/src/contours.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ "./node_modules/d3-contour/src/array.js");
+/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ascending */ "./node_modules/d3-contour/src/ascending.js");
+/* harmony import */ var _area__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./area */ "./node_modules/d3-contour/src/area.js");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-contour/src/constant.js");
+/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./contains */ "./node_modules/d3-contour/src/contains.js");
+/* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./noop */ "./node_modules/d3-contour/src/noop.js");
+
+
+
+
+
+
+
+
+var cases = [
+  [],
+  [[[1.0, 1.5], [0.5, 1.0]]],
+  [[[1.5, 1.0], [1.0, 1.5]]],
+  [[[1.5, 1.0], [0.5, 1.0]]],
+  [[[1.0, 0.5], [1.5, 1.0]]],
+  [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],
+  [[[1.0, 0.5], [1.0, 1.5]]],
+  [[[1.0, 0.5], [0.5, 1.0]]],
+  [[[0.5, 1.0], [1.0, 0.5]]],
+  [[[1.0, 1.5], [1.0, 0.5]]],
+  [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],
+  [[[1.5, 1.0], [1.0, 0.5]]],
+  [[[0.5, 1.0], [1.5, 1.0]]],
+  [[[1.0, 1.5], [1.5, 1.0]]],
+  [[[0.5, 1.0], [1.0, 1.5]]],
+  []
+];
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var dx = 1,
+      dy = 1,
+      threshold = d3_array__WEBPACK_IMPORTED_MODULE_0__["thresholdSturges"],
+      smooth = smoothLinear;
+
+  function contours(values) {
+    var tz = threshold(values);
+
+    // Convert number of thresholds into uniform thresholds.
+    if (!Array.isArray(tz)) {
+      var domain = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["extent"])(values), start = domain[0], stop = domain[1];
+      tz = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(start, stop, tz);
+      tz = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);
+    } else {
+      tz = tz.slice().sort(_ascending__WEBPACK_IMPORTED_MODULE_2__["default"]);
+    }
+
+    return tz.map(function(value) {
+      return contour(values, value);
+    });
+  }
+
+  // Accumulate, smooth contour rings, assign holes to exterior rings.
+  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js
+  function contour(values, value) {
+    var polygons = [],
+        holes = [];
+
+    isorings(values, value, function(ring) {
+      smooth(ring, values, value);
+      if (Object(_area__WEBPACK_IMPORTED_MODULE_3__["default"])(ring) > 0) polygons.push([ring]);
+      else holes.push(ring);
+    });
+
+    holes.forEach(function(hole) {
+      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {
+        if (Object(_contains__WEBPACK_IMPORTED_MODULE_5__["default"])((polygon = polygons[i])[0], hole) !== -1) {
+          polygon.push(hole);
+          return;
+        }
+      }
+    });
+
+    return {
+      type: "MultiPolygon",
+      value: value,
+      coordinates: polygons
+    };
+  }
+
+  // Marching squares with isolines stitched into rings.
+  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js
+  function isorings(values, value, callback) {
+    var fragmentByStart = new Array,
+        fragmentByEnd = new Array,
+        x, y, t0, t1, t2, t3;
+
+    // Special case for the first row (y = -1, t2 = t3 = 0).
+    x = y = -1;
+    t1 = values[0] >= value;
+    cases[t1 << 1].forEach(stitch);
+    while (++x < dx - 1) {
+      t0 = t1, t1 = values[x + 1] >= value;
+      cases[t0 | t1 << 1].forEach(stitch);
+    }
+    cases[t1 << 0].forEach(stitch);
+
+    // General case for the intermediate rows.
+    while (++y < dy - 1) {
+      x = -1;
+      t1 = values[y * dx + dx] >= value;
+      t2 = values[y * dx] >= value;
+      cases[t1 << 1 | t2 << 2].forEach(stitch);
+      while (++x < dx - 1) {
+        t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;
+        t3 = t2, t2 = values[y * dx + x + 1] >= value;
+        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);
+      }
+      cases[t1 | t2 << 3].forEach(stitch);
+    }
+
+    // Special case for the last row (y = dy - 1, t0 = t1 = 0).
+    x = -1;
+    t2 = values[y * dx] >= value;
+    cases[t2 << 2].forEach(stitch);
+    while (++x < dx - 1) {
+      t3 = t2, t2 = values[y * dx + x + 1] >= value;
+      cases[t2 << 2 | t3 << 3].forEach(stitch);
+    }
+    cases[t2 << 3].forEach(stitch);
+
+    function stitch(line) {
+      var start = [line[0][0] + x, line[0][1] + y],
+          end = [line[1][0] + x, line[1][1] + y],
+          startIndex = index(start),
+          endIndex = index(end),
+          f, g;
+      if (f = fragmentByEnd[startIndex]) {
+        if (g = fragmentByStart[endIndex]) {
+          delete fragmentByEnd[f.end];
+          delete fragmentByStart[g.start];
+          if (f === g) {
+            f.ring.push(end);
+            callback(f.ring);
+          } else {
+            fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};
+          }
+        } else {
+          delete fragmentByEnd[f.end];
+          f.ring.push(end);
+          fragmentByEnd[f.end = endIndex] = f;
+        }
+      } else if (f = fragmentByStart[endIndex]) {
+        if (g = fragmentByEnd[startIndex]) {
+          delete fragmentByStart[f.start];
+          delete fragmentByEnd[g.end];
+          if (f === g) {
+            f.ring.push(end);
+            callback(f.ring);
+          } else {
+            fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};
+          }
+        } else {
+          delete fragmentByStart[f.start];
+          f.ring.unshift(start);
+          fragmentByStart[f.start = startIndex] = f;
+        }
+      } else {
+        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};
+      }
+    }
+  }
+
+  function index(point) {
+    return point[0] * 2 + point[1] * (dx + 1) * 4;
+  }
+
+  function smoothLinear(ring, values, value) {
+    ring.forEach(function(point) {
+      var x = point[0],
+          y = point[1],
+          xt = x | 0,
+          yt = y | 0,
+          v0,
+          v1 = values[yt * dx + xt];
+      if (x > 0 && x < dx && xt === x) {
+        v0 = values[yt * dx + xt - 1];
+        point[0] = x + (value - v0) / (v1 - v0) - 0.5;
+      }
+      if (y > 0 && y < dy && yt === y) {
+        v0 = values[(yt - 1) * dx + xt];
+        point[1] = y + (value - v0) / (v1 - v0) - 0.5;
+      }
+    });
+  }
+
+  contours.contour = contour;
+
+  contours.size = function(_) {
+    if (!arguments.length) return [dx, dy];
+    var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);
+    if (!(_0 > 0) || !(_1 > 0)) throw new Error("invalid size");
+    return dx = _0, dy = _1, contours;
+  };
+
+  contours.thresholds = function(_) {
+    return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? Object(_constant__WEBPACK_IMPORTED_MODULE_4__["default"])(_array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_)) : Object(_constant__WEBPACK_IMPORTED_MODULE_4__["default"])(_), contours) : threshold;
+  };
+
+  contours.smooth = function(_) {
+    return arguments.length ? (smooth = _ ? smoothLinear : _noop__WEBPACK_IMPORTED_MODULE_6__["default"], contours) : smooth === smoothLinear;
+  };
+
+  return contours;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/density.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-contour/src/density.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ "./node_modules/d3-contour/src/array.js");
+/* harmony import */ var _blur__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blur */ "./node_modules/d3-contour/src/blur.js");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-contour/src/constant.js");
+/* harmony import */ var _contours__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contours */ "./node_modules/d3-contour/src/contours.js");
+
+
+
+
+
+
+function defaultX(d) {
+  return d[0];
+}
+
+function defaultY(d) {
+  return d[1];
+}
+
+function defaultWeight() {
+  return 1;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var x = defaultX,
+      y = defaultY,
+      weight = defaultWeight,
+      dx = 960,
+      dy = 500,
+      r = 20, // blur radius
+      k = 2, // log2(grid cell size)
+      o = r * 3, // grid offset, to pad for blur
+      n = (dx + o * 2) >> k, // grid width
+      m = (dy + o * 2) >> k, // grid height
+      threshold = Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(20);
+
+  function density(data) {
+    var values0 = new Float32Array(n * m),
+        values1 = new Float32Array(n * m);
+
+    data.forEach(function(d, i, data) {
+      var xi = (+x(d, i, data) + o) >> k,
+          yi = (+y(d, i, data) + o) >> k,
+          wi = +weight(d, i, data);
+      if (xi >= 0 && xi < n && yi >= 0 && yi < m) {
+        values0[xi + yi * n] += wi;
+      }
+    });
+
+    // TODO Optimize.
+    Object(_blur__WEBPACK_IMPORTED_MODULE_2__["blurX"])({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);
+    Object(_blur__WEBPACK_IMPORTED_MODULE_2__["blurY"])({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);
+    Object(_blur__WEBPACK_IMPORTED_MODULE_2__["blurX"])({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);
+    Object(_blur__WEBPACK_IMPORTED_MODULE_2__["blurY"])({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);
+    Object(_blur__WEBPACK_IMPORTED_MODULE_2__["blurX"])({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);
+    Object(_blur__WEBPACK_IMPORTED_MODULE_2__["blurY"])({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);
+
+    var tz = threshold(values0);
+
+    // Convert number of thresholds into uniform thresholds.
+    if (!Array.isArray(tz)) {
+      var stop = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["max"])(values0);
+      tz = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(0, stop, tz);
+      tz = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(0, Math.floor(stop / tz) * tz, tz);
+      tz.shift();
+    }
+
+    return Object(_contours__WEBPACK_IMPORTED_MODULE_4__["default"])()
+        .thresholds(tz)
+        .size([n, m])
+      (values0)
+        .map(transform);
+  }
+
+  function transform(geometry) {
+    geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.
+    geometry.coordinates.forEach(transformPolygon);
+    return geometry;
+  }
+
+  function transformPolygon(coordinates) {
+    coordinates.forEach(transformRing);
+  }
+
+  function transformRing(coordinates) {
+    coordinates.forEach(transformPoint);
+  }
+
+  // TODO Optimize.
+  function transformPoint(coordinates) {
+    coordinates[0] = coordinates[0] * Math.pow(2, k) - o;
+    coordinates[1] = coordinates[1] * Math.pow(2, k) - o;
+  }
+
+  function resize() {
+    o = r * 3;
+    n = (dx + o * 2) >> k;
+    m = (dy + o * 2) >> k;
+    return density;
+  }
+
+  density.x = function(_) {
+    return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+_), density) : x;
+  };
+
+  density.y = function(_) {
+    return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+_), density) : y;
+  };
+
+  density.weight = function(_) {
+    return arguments.length ? (weight = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+_), density) : weight;
+  };
+
+  density.size = function(_) {
+    if (!arguments.length) return [dx, dy];
+    var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);
+    if (!(_0 >= 0) && !(_0 >= 0)) throw new Error("invalid size");
+    return dx = _0, dy = _1, resize();
+  };
+
+  density.cellSize = function(_) {
+    if (!arguments.length) return 1 << k;
+    if (!((_ = +_) >= 1)) throw new Error("invalid cell size");
+    return k = Math.floor(Math.log(_) / Math.LN2), resize();
+  };
+
+  density.thresholds = function(_) {
+    return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(_array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_)) : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(_), density) : threshold;
+  };
+
+  density.bandwidth = function(_) {
+    if (!arguments.length) return Math.sqrt(r * (r + 1));
+    if (!((_ = +_) >= 0)) throw new Error("invalid bandwidth");
+    return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();
+  };
+
+  return density;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/index.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-contour/src/index.js ***!
+  \**********************************************/
+/*! exports provided: contours, contourDensity */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _contours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contours */ "./node_modules/d3-contour/src/contours.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "contours", function() { return _contours__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _density__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./density */ "./node_modules/d3-contour/src/density.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "contourDensity", function() { return _density__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-contour/src/noop.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-contour/src/noop.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-dispatch/src/dispatch.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-dispatch/src/dispatch.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var noop = {value: function() {}};
+
+function dispatch() {
+  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
+    if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t);
+    _[t] = [];
+  }
+  return new Dispatch(_);
+}
+
+function Dispatch(_) {
+  this._ = _;
+}
+
+function parseTypenames(typenames, types) {
+  return typenames.trim().split(/^|\s+/).map(function(t) {
+    var name = "", i = t.indexOf(".");
+    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+    if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
+    return {type: t, name: name};
+  });
+}
+
+Dispatch.prototype = dispatch.prototype = {
+  constructor: Dispatch,
+  on: function(typename, callback) {
+    var _ = this._,
+        T = parseTypenames(typename + "", _),
+        t,
+        i = -1,
+        n = T.length;
+
+    // If no callback was specified, return the callback of the given type and name.
+    if (arguments.length < 2) {
+      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
+      return;
+    }
+
+    // If a type was specified, set the callback for the given type and name.
+    // Otherwise, if a null callback was specified, remove callbacks of the given name.
+    if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
+    while (++i < n) {
+      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);
+      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
+    }
+
+    return this;
+  },
+  copy: function() {
+    var copy = {}, _ = this._;
+    for (var t in _) copy[t] = _[t].slice();
+    return new Dispatch(copy);
+  },
+  call: function(type, that) {
+    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
+    if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+  },
+  apply: function(type, that, args) {
+    if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+  }
+};
+
+function get(type, name) {
+  for (var i = 0, n = type.length, c; i < n; ++i) {
+    if ((c = type[i]).name === name) {
+      return c.value;
+    }
+  }
+}
+
+function set(type, name, callback) {
+  for (var i = 0, n = type.length; i < n; ++i) {
+    if (type[i].name === name) {
+      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
+      break;
+    }
+  }
+  if (callback != null) type.push({name: name, value: callback});
+  return type;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (dispatch);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-dispatch/src/index.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-dispatch/src/index.js ***!
+  \***********************************************/
+/*! exports provided: dispatch */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _dispatch_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dispatch.js */ "./node_modules/d3-dispatch/src/dispatch.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return _dispatch_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-drag/src/constant.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-drag/src/constant.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-drag/src/drag.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-drag/src/drag.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ "./node_modules/d3-dispatch/src/index.js");
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _nodrag_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nodrag.js */ "./node_modules/d3-drag/src/nodrag.js");
+/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./noevent.js */ "./node_modules/d3-drag/src/noevent.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-drag/src/constant.js");
+/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./event.js */ "./node_modules/d3-drag/src/event.js");
+
+
+
+
+
+
+
+// Ignore right-click, since that should open the context menu.
+function defaultFilter() {
+  return !d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].ctrlKey && !d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].button;
+}
+
+function defaultContainer() {
+  return this.parentNode;
+}
+
+function defaultSubject(d) {
+  return d == null ? {x: d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].x, y: d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].y} : d;
+}
+
+function defaultTouchable() {
+  return navigator.maxTouchPoints || ("ontouchstart" in this);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var filter = defaultFilter,
+      container = defaultContainer,
+      subject = defaultSubject,
+      touchable = defaultTouchable,
+      gestures = {},
+      listeners = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("start", "drag", "end"),
+      active = 0,
+      mousedownx,
+      mousedowny,
+      mousemoving,
+      touchending,
+      clickDistance2 = 0;
+
+  function drag(selection) {
+    selection
+        .on("mousedown.drag", mousedowned)
+      .filter(touchable)
+        .on("touchstart.drag", touchstarted)
+        .on("touchmove.drag", touchmoved)
+        .on("touchend.drag touchcancel.drag", touchended)
+        .style("touch-action", "none")
+        .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
+  }
+
+  function mousedowned() {
+    if (touchending || !filter.apply(this, arguments)) return;
+    var gesture = beforestart("mouse", container.apply(this, arguments), d3_selection__WEBPACK_IMPORTED_MODULE_1__["mouse"], this, arguments);
+    if (!gesture) return;
+    Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true);
+    Object(_nodrag_js__WEBPACK_IMPORTED_MODULE_2__["default"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view);
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_3__["nopropagation"])();
+    mousemoving = false;
+    mousedownx = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientX;
+    mousedowny = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientY;
+    gesture("start");
+  }
+
+  function mousemoved() {
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_3__["default"])();
+    if (!mousemoving) {
+      var dx = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientX - mousedownx, dy = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientY - mousedowny;
+      mousemoving = dx * dx + dy * dy > clickDistance2;
+    }
+    gestures.mouse("drag");
+  }
+
+  function mouseupped() {
+    Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view).on("mousemove.drag mouseup.drag", null);
+    Object(_nodrag_js__WEBPACK_IMPORTED_MODULE_2__["yesdrag"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view, mousemoving);
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_3__["default"])();
+    gestures.mouse("end");
+  }
+
+  function touchstarted() {
+    if (!filter.apply(this, arguments)) return;
+    var touches = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].changedTouches,
+        c = container.apply(this, arguments),
+        n = touches.length, i, gesture;
+
+    for (i = 0; i < n; ++i) {
+      if (gesture = beforestart(touches[i].identifier, c, d3_selection__WEBPACK_IMPORTED_MODULE_1__["touch"], this, arguments)) {
+        Object(_noevent_js__WEBPACK_IMPORTED_MODULE_3__["nopropagation"])();
+        gesture("start");
+      }
+    }
+  }
+
+  function touchmoved() {
+    var touches = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].changedTouches,
+        n = touches.length, i, gesture;
+
+    for (i = 0; i < n; ++i) {
+      if (gesture = gestures[touches[i].identifier]) {
+        Object(_noevent_js__WEBPACK_IMPORTED_MODULE_3__["default"])();
+        gesture("drag");
+      }
+    }
+  }
+
+  function touchended() {
+    var touches = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].changedTouches,
+        n = touches.length, i, gesture;
+
+    if (touchending) clearTimeout(touchending);
+    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
+    for (i = 0; i < n; ++i) {
+      if (gesture = gestures[touches[i].identifier]) {
+        Object(_noevent_js__WEBPACK_IMPORTED_MODULE_3__["nopropagation"])();
+        gesture("end");
+      }
+    }
+  }
+
+  function beforestart(id, container, point, that, args) {
+    var p = point(container, id), s, dx, dy,
+        sublisteners = listeners.copy();
+
+    if (!Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["customEvent"])(new _event_js__WEBPACK_IMPORTED_MODULE_5__["default"](drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {
+      if ((d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].subject = s = subject.apply(that, args)) == null) return false;
+      dx = s.x - p[0] || 0;
+      dy = s.y - p[1] || 0;
+      return true;
+    })) return;
+
+    return function gesture(type) {
+      var p0 = p, n;
+      switch (type) {
+        case "start": gestures[id] = gesture, n = active++; break;
+        case "end": delete gestures[id], --active; // nobreak
+        case "drag": p = point(container, id), n = active; break;
+      }
+      Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["customEvent"])(new _event_js__WEBPACK_IMPORTED_MODULE_5__["default"](drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);
+    };
+  }
+
+  drag.filter = function(_) {
+    return arguments.length ? (filter = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_4__["default"])(!!_), drag) : filter;
+  };
+
+  drag.container = function(_) {
+    return arguments.length ? (container = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_), drag) : container;
+  };
+
+  drag.subject = function(_) {
+    return arguments.length ? (subject = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_), drag) : subject;
+  };
+
+  drag.touchable = function(_) {
+    return arguments.length ? (touchable = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_4__["default"])(!!_), drag) : touchable;
+  };
+
+  drag.on = function() {
+    var value = listeners.on.apply(listeners, arguments);
+    return value === listeners ? drag : value;
+  };
+
+  drag.clickDistance = function(_) {
+    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);
+  };
+
+  return drag;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-drag/src/event.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-drag/src/event.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return DragEvent; });
+function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {
+  this.target = target;
+  this.type = type;
+  this.subject = subject;
+  this.identifier = id;
+  this.active = active;
+  this.x = x;
+  this.y = y;
+  this.dx = dx;
+  this.dy = dy;
+  this._ = dispatch;
+}
+
+DragEvent.prototype.on = function() {
+  var value = this._.on.apply(this._, arguments);
+  return value === this._ ? this : value;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-drag/src/index.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-drag/src/index.js ***!
+  \*******************************************/
+/*! exports provided: drag, dragDisable, dragEnable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _drag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drag.js */ "./node_modules/d3-drag/src/drag.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drag", function() { return _drag_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _nodrag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nodrag.js */ "./node_modules/d3-drag/src/nodrag.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dragDisable", function() { return _nodrag_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dragEnable", function() { return _nodrag_js__WEBPACK_IMPORTED_MODULE_1__["yesdrag"]; });
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-drag/src/nodrag.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-drag/src/nodrag.js ***!
+  \********************************************/
+/*! exports provided: default, yesdrag */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesdrag", function() { return yesdrag; });
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./noevent.js */ "./node_modules/d3-drag/src/noevent.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(view) {
+  var root = view.document.documentElement,
+      selection = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["select"])(view).on("dragstart.drag", _noevent_js__WEBPACK_IMPORTED_MODULE_1__["default"], true);
+  if ("onselectstart" in root) {
+    selection.on("selectstart.drag", _noevent_js__WEBPACK_IMPORTED_MODULE_1__["default"], true);
+  } else {
+    root.__noselect = root.style.MozUserSelect;
+    root.style.MozUserSelect = "none";
+  }
+});
+
+function yesdrag(view, noclick) {
+  var root = view.document.documentElement,
+      selection = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["select"])(view).on("dragstart.drag", null);
+  if (noclick) {
+    selection.on("click.drag", _noevent_js__WEBPACK_IMPORTED_MODULE_1__["default"], true);
+    setTimeout(function() { selection.on("click.drag", null); }, 0);
+  }
+  if ("onselectstart" in root) {
+    selection.on("selectstart.drag", null);
+  } else {
+    root.style.MozUserSelect = root.__noselect;
+    delete root.__noselect;
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-drag/src/noevent.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-drag/src/noevent.js ***!
+  \*********************************************/
+/*! exports provided: nopropagation, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nopropagation", function() { return nopropagation; });
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+
+
+function nopropagation() {
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].preventDefault();
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-dsv/src/autoType.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-dsv/src/autoType.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return autoType; });
+function autoType(object) {
+  for (var key in object) {
+    var value = object[key].trim(), number, m;
+    if (!value) value = null;
+    else if (value === "true") value = true;
+    else if (value === "false") value = false;
+    else if (value === "NaN") value = NaN;
+    else if (!isNaN(number = +value)) value = number;
+    else if (m = value.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)) {
+      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, "/").replace(/T/, " ");
+      value = new Date(value);
+    }
+    else continue;
+    object[key] = value;
+  }
+  return object;
+}
+
+// https://github.com/d3/d3-dsv/issues/45
+var fixtz = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours();
+
+/***/ }),
+
+/***/ "./node_modules/d3-dsv/src/csv.js":
+/*!****************************************!*\
+  !*** ./node_modules/d3-dsv/src/csv.js ***!
+  \****************************************/
+/*! exports provided: csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csvParse", function() { return csvParse; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csvParseRows", function() { return csvParseRows; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csvFormat", function() { return csvFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csvFormatBody", function() { return csvFormatBody; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csvFormatRows", function() { return csvFormatRows; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csvFormatRow", function() { return csvFormatRow; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csvFormatValue", function() { return csvFormatValue; });
+/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ "./node_modules/d3-dsv/src/dsv.js");
+
+
+var csv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__["default"])(",");
+
+var csvParse = csv.parse;
+var csvParseRows = csv.parseRows;
+var csvFormat = csv.format;
+var csvFormatBody = csv.formatBody;
+var csvFormatRows = csv.formatRows;
+var csvFormatRow = csv.formatRow;
+var csvFormatValue = csv.formatValue;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-dsv/src/dsv.js":
+/*!****************************************!*\
+  !*** ./node_modules/d3-dsv/src/dsv.js ***!
+  \****************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var EOL = {},
+    EOF = {},
+    QUOTE = 34,
+    NEWLINE = 10,
+    RETURN = 13;
+
+function objectConverter(columns) {
+  return new Function("d", "return {" + columns.map(function(name, i) {
+    return JSON.stringify(name) + ": d[" + i + "] || \"\"";
+  }).join(",") + "}");
+}
+
+function customConverter(columns, f) {
+  var object = objectConverter(columns);
+  return function(row, i) {
+    return f(object(row), i, columns);
+  };
+}
+
+// Compute unique columns in order of discovery.
+function inferColumns(rows) {
+  var columnSet = Object.create(null),
+      columns = [];
+
+  rows.forEach(function(row) {
+    for (var column in row) {
+      if (!(column in columnSet)) {
+        columns.push(columnSet[column] = column);
+      }
+    }
+  });
+
+  return columns;
+}
+
+function pad(value, width) {
+  var s = value + "", length = s.length;
+  return length < width ? new Array(width - length + 1).join(0) + s : s;
+}
+
+function formatYear(year) {
+  return year < 0 ? "-" + pad(-year, 6)
+    : year > 9999 ? "+" + pad(year, 6)
+    : pad(year, 4);
+}
+
+function formatDate(date) {
+  var hours = date.getUTCHours(),
+      minutes = date.getUTCMinutes(),
+      seconds = date.getUTCSeconds(),
+      milliseconds = date.getUTCMilliseconds();
+  return isNaN(date) ? "Invalid Date"
+      : formatYear(date.getUTCFullYear(), 4) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2)
+      + (milliseconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "." + pad(milliseconds, 3) + "Z"
+      : seconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "Z"
+      : minutes || hours ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + "Z"
+      : "");
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(delimiter) {
+  var reFormat = new RegExp("[\"" + delimiter + "\n\r]"),
+      DELIMITER = delimiter.charCodeAt(0);
+
+  function parse(text, f) {
+    var convert, columns, rows = parseRows(text, function(row, i) {
+      if (convert) return convert(row, i - 1);
+      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);
+    });
+    rows.columns = columns || [];
+    return rows;
+  }
+
+  function parseRows(text, f) {
+    var rows = [], // output rows
+        N = text.length,
+        I = 0, // current character index
+        n = 0, // current line number
+        t, // current token
+        eof = N <= 0, // current token followed by EOF?
+        eol = false; // current token followed by EOL?
+
+    // Strip the trailing newline.
+    if (text.charCodeAt(N - 1) === NEWLINE) --N;
+    if (text.charCodeAt(N - 1) === RETURN) --N;
+
+    function token() {
+      if (eof) return EOF;
+      if (eol) return eol = false, EOL;
+
+      // Unescape quotes.
+      var i, j = I, c;
+      if (text.charCodeAt(j) === QUOTE) {
+        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);
+        if ((i = I) >= N) eof = true;
+        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;
+        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }
+        return text.slice(j + 1, i - 1).replace(/""/g, "\"");
+      }
+
+      // Find next delimiter or newline.
+      while (I < N) {
+        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;
+        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }
+        else if (c !== DELIMITER) continue;
+        return text.slice(j, i);
+      }
+
+      // Return last token before EOF.
+      return eof = true, text.slice(j, N);
+    }
+
+    while ((t = token()) !== EOF) {
+      var row = [];
+      while (t !== EOL && t !== EOF) row.push(t), t = token();
+      if (f && (row = f(row, n++)) == null) continue;
+      rows.push(row);
+    }
+
+    return rows;
+  }
+
+  function preformatBody(rows, columns) {
+    return rows.map(function(row) {
+      return columns.map(function(column) {
+        return formatValue(row[column]);
+      }).join(delimiter);
+    });
+  }
+
+  function format(rows, columns) {
+    if (columns == null) columns = inferColumns(rows);
+    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join("\n");
+  }
+
+  function formatBody(rows, columns) {
+    if (columns == null) columns = inferColumns(rows);
+    return preformatBody(rows, columns).join("\n");
+  }
+
+  function formatRows(rows) {
+    return rows.map(formatRow).join("\n");
+  }
+
+  function formatRow(row) {
+    return row.map(formatValue).join(delimiter);
+  }
+
+  function formatValue(value) {
+    return value == null ? ""
+        : value instanceof Date ? formatDate(value)
+        : reFormat.test(value += "") ? "\"" + value.replace(/"/g, "\"\"") + "\""
+        : value;
+  }
+
+  return {
+    parse: parse,
+    parseRows: parseRows,
+    format: format,
+    formatBody: formatBody,
+    formatRows: formatRows,
+    formatRow: formatRow,
+    formatValue: formatValue
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-dsv/src/index.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-dsv/src/index.js ***!
+  \******************************************/
+/*! exports provided: dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue, tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue, autoType */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ "./node_modules/d3-dsv/src/dsv.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dsvFormat", function() { return _dsv_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _csv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./csv.js */ "./node_modules/d3-dsv/src/csv.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvParse", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__["csvParse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvParseRows", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__["csvParseRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormat", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__["csvFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatBody", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__["csvFormatBody"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatRows", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__["csvFormatRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatRow", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__["csvFormatRow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatValue", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__["csvFormatValue"]; });
+
+/* harmony import */ var _tsv_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tsv.js */ "./node_modules/d3-dsv/src/tsv.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvParse", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__["tsvParse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvParseRows", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__["tsvParseRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormat", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__["tsvFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatBody", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__["tsvFormatBody"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatRows", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__["tsvFormatRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatRow", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__["tsvFormatRow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatValue", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__["tsvFormatValue"]; });
+
+/* harmony import */ var _autoType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./autoType.js */ "./node_modules/d3-dsv/src/autoType.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "autoType", function() { return _autoType_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-dsv/src/tsv.js":
+/*!****************************************!*\
+  !*** ./node_modules/d3-dsv/src/tsv.js ***!
+  \****************************************/
+/*! exports provided: tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsvParse", function() { return tsvParse; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsvParseRows", function() { return tsvParseRows; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsvFormat", function() { return tsvFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsvFormatBody", function() { return tsvFormatBody; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsvFormatRows", function() { return tsvFormatRows; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsvFormatRow", function() { return tsvFormatRow; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsvFormatValue", function() { return tsvFormatValue; });
+/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ "./node_modules/d3-dsv/src/dsv.js");
+
+
+var tsv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__["default"])("\t");
+
+var tsvParse = tsv.parse;
+var tsvParseRows = tsv.parseRows;
+var tsvFormat = tsv.format;
+var tsvFormatBody = tsv.formatBody;
+var tsvFormatRows = tsv.formatRows;
+var tsvFormatRow = tsv.formatRow;
+var tsvFormatValue = tsv.formatValue;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/back.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-ease/src/back.js ***!
+  \******************************************/
+/*! exports provided: backIn, backOut, backInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backIn", function() { return backIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backOut", function() { return backOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backInOut", function() { return backInOut; });
+var overshoot = 1.70158;
+
+var backIn = (function custom(s) {
+  s = +s;
+
+  function backIn(t) {
+    return t * t * ((s + 1) * t - s);
+  }
+
+  backIn.overshoot = custom;
+
+  return backIn;
+})(overshoot);
+
+var backOut = (function custom(s) {
+  s = +s;
+
+  function backOut(t) {
+    return --t * t * ((s + 1) * t + s) + 1;
+  }
+
+  backOut.overshoot = custom;
+
+  return backOut;
+})(overshoot);
+
+var backInOut = (function custom(s) {
+  s = +s;
+
+  function backInOut(t) {
+    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;
+  }
+
+  backInOut.overshoot = custom;
+
+  return backInOut;
+})(overshoot);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/bounce.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-ease/src/bounce.js ***!
+  \********************************************/
+/*! exports provided: bounceIn, bounceOut, bounceInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bounceIn", function() { return bounceIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bounceOut", function() { return bounceOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bounceInOut", function() { return bounceInOut; });
+var b1 = 4 / 11,
+    b2 = 6 / 11,
+    b3 = 8 / 11,
+    b4 = 3 / 4,
+    b5 = 9 / 11,
+    b6 = 10 / 11,
+    b7 = 15 / 16,
+    b8 = 21 / 22,
+    b9 = 63 / 64,
+    b0 = 1 / b1 / b1;
+
+function bounceIn(t) {
+  return 1 - bounceOut(1 - t);
+}
+
+function bounceOut(t) {
+  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;
+}
+
+function bounceInOut(t) {
+  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/circle.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-ease/src/circle.js ***!
+  \********************************************/
+/*! exports provided: circleIn, circleOut, circleInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "circleIn", function() { return circleIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "circleOut", function() { return circleOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "circleInOut", function() { return circleInOut; });
+function circleIn(t) {
+  return 1 - Math.sqrt(1 - t * t);
+}
+
+function circleOut(t) {
+  return Math.sqrt(1 - --t * t);
+}
+
+function circleInOut(t) {
+  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/cubic.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-ease/src/cubic.js ***!
+  \*******************************************/
+/*! exports provided: cubicIn, cubicOut, cubicInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cubicIn", function() { return cubicIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cubicOut", function() { return cubicOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cubicInOut", function() { return cubicInOut; });
+function cubicIn(t) {
+  return t * t * t;
+}
+
+function cubicOut(t) {
+  return --t * t * t + 1;
+}
+
+function cubicInOut(t) {
+  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/elastic.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-ease/src/elastic.js ***!
+  \*********************************************/
+/*! exports provided: elasticIn, elasticOut, elasticInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elasticIn", function() { return elasticIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elasticOut", function() { return elasticOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elasticInOut", function() { return elasticInOut; });
+var tau = 2 * Math.PI,
+    amplitude = 1,
+    period = 0.3;
+
+var elasticIn = (function custom(a, p) {
+  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
+
+  function elasticIn(t) {
+    return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);
+  }
+
+  elasticIn.amplitude = function(a) { return custom(a, p * tau); };
+  elasticIn.period = function(p) { return custom(a, p); };
+
+  return elasticIn;
+})(amplitude, period);
+
+var elasticOut = (function custom(a, p) {
+  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
+
+  function elasticOut(t) {
+    return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);
+  }
+
+  elasticOut.amplitude = function(a) { return custom(a, p * tau); };
+  elasticOut.period = function(p) { return custom(a, p); };
+
+  return elasticOut;
+})(amplitude, period);
+
+var elasticInOut = (function custom(a, p) {
+  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
+
+  function elasticInOut(t) {
+    return ((t = t * 2 - 1) < 0
+        ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)
+        : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;
+  }
+
+  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };
+  elasticInOut.period = function(p) { return custom(a, p); };
+
+  return elasticInOut;
+})(amplitude, period);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/exp.js":
+/*!*****************************************!*\
+  !*** ./node_modules/d3-ease/src/exp.js ***!
+  \*****************************************/
+/*! exports provided: expIn, expOut, expInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expIn", function() { return expIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expOut", function() { return expOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expInOut", function() { return expInOut; });
+function expIn(t) {
+  return Math.pow(2, 10 * t - 10);
+}
+
+function expOut(t) {
+  return 1 - Math.pow(2, -10 * t);
+}
+
+function expInOut(t) {
+  return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/index.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-ease/src/index.js ***!
+  \*******************************************/
+/*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ "./node_modules/d3-ease/src/linear.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeLinear", function() { return _linear_js__WEBPACK_IMPORTED_MODULE_0__["linear"]; });
+
+/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad.js */ "./node_modules/d3-ease/src/quad.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuad", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__["quadInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuadIn", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__["quadIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuadOut", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__["quadOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuadInOut", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__["quadInOut"]; });
+
+/* harmony import */ var _cubic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubic.js */ "./node_modules/d3-ease/src/cubic.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubic", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__["cubicInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubicIn", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__["cubicIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubicOut", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__["cubicOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubicInOut", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__["cubicInOut"]; });
+
+/* harmony import */ var _poly_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./poly.js */ "./node_modules/d3-ease/src/poly.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePoly", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__["polyInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePolyIn", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__["polyIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePolyOut", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__["polyOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePolyInOut", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__["polyInOut"]; });
+
+/* harmony import */ var _sin_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sin.js */ "./node_modules/d3-ease/src/sin.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSin", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__["sinInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSinIn", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__["sinIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSinOut", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__["sinOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSinInOut", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__["sinInOut"]; });
+
+/* harmony import */ var _exp_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exp.js */ "./node_modules/d3-ease/src/exp.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExp", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__["expInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExpIn", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__["expIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExpOut", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__["expOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExpInOut", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__["expInOut"]; });
+
+/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./circle.js */ "./node_modules/d3-ease/src/circle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircle", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__["circleInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircleIn", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__["circleIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircleOut", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__["circleOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircleInOut", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__["circleInOut"]; });
+
+/* harmony import */ var _bounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounce.js */ "./node_modules/d3-ease/src/bounce.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounce", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__["bounceOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounceIn", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__["bounceIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounceOut", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__["bounceOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounceInOut", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__["bounceInOut"]; });
+
+/* harmony import */ var _back_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./back.js */ "./node_modules/d3-ease/src/back.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBack", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__["backInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBackIn", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__["backIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBackOut", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__["backOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBackInOut", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__["backInOut"]; });
+
+/* harmony import */ var _elastic_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./elastic.js */ "./node_modules/d3-ease/src/elastic.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElastic", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__["elasticOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElasticIn", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__["elasticIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElasticOut", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__["elasticOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElasticInOut", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__["elasticInOut"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/linear.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-ease/src/linear.js ***!
+  \********************************************/
+/*! exports provided: linear */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linear", function() { return linear; });
+function linear(t) {
+  return +t;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/poly.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-ease/src/poly.js ***!
+  \******************************************/
+/*! exports provided: polyIn, polyOut, polyInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "polyIn", function() { return polyIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "polyOut", function() { return polyOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "polyInOut", function() { return polyInOut; });
+var exponent = 3;
+
+var polyIn = (function custom(e) {
+  e = +e;
+
+  function polyIn(t) {
+    return Math.pow(t, e);
+  }
+
+  polyIn.exponent = custom;
+
+  return polyIn;
+})(exponent);
+
+var polyOut = (function custom(e) {
+  e = +e;
+
+  function polyOut(t) {
+    return 1 - Math.pow(1 - t, e);
+  }
+
+  polyOut.exponent = custom;
+
+  return polyOut;
+})(exponent);
+
+var polyInOut = (function custom(e) {
+  e = +e;
+
+  function polyInOut(t) {
+    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;
+  }
+
+  polyInOut.exponent = custom;
+
+  return polyInOut;
+})(exponent);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/quad.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-ease/src/quad.js ***!
+  \******************************************/
+/*! exports provided: quadIn, quadOut, quadInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "quadIn", function() { return quadIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "quadOut", function() { return quadOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "quadInOut", function() { return quadInOut; });
+function quadIn(t) {
+  return t * t;
+}
+
+function quadOut(t) {
+  return t * (2 - t);
+}
+
+function quadInOut(t) {
+  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/sin.js":
+/*!*****************************************!*\
+  !*** ./node_modules/d3-ease/src/sin.js ***!
+  \*****************************************/
+/*! exports provided: sinIn, sinOut, sinInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sinIn", function() { return sinIn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sinOut", function() { return sinOut; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sinInOut", function() { return sinInOut; });
+var pi = Math.PI,
+    halfPi = pi / 2;
+
+function sinIn(t) {
+  return 1 - Math.cos(t * halfPi);
+}
+
+function sinOut(t) {
+  return Math.sin(t * halfPi);
+}
+
+function sinInOut(t) {
+  return (1 - Math.cos(pi * t)) / 2;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/blob.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-fetch/src/blob.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function responseBlob(response) {
+  if (!response.ok) throw new Error(response.status + " " + response.statusText);
+  return response.blob();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(input, init) {
+  return fetch(input, init).then(responseBlob);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/buffer.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-fetch/src/buffer.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function responseArrayBuffer(response) {
+  if (!response.ok) throw new Error(response.status + " " + response.statusText);
+  return response.arrayBuffer();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(input, init) {
+  return fetch(input, init).then(responseArrayBuffer);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/dsv.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-fetch/src/dsv.js ***!
+  \******************************************/
+/*! exports provided: default, csv, tsv */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return dsv; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "csv", function() { return csv; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tsv", function() { return tsv; });
+/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dsv */ "./node_modules/d3-dsv/src/index.js");
+/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ "./node_modules/d3-fetch/src/text.js");
+
+
+
+function dsvParse(parse) {
+  return function(input, init, row) {
+    if (arguments.length === 2 && typeof init === "function") row = init, init = undefined;
+    return Object(_text__WEBPACK_IMPORTED_MODULE_1__["default"])(input, init).then(function(response) {
+      return parse(response, row);
+    });
+  };
+}
+
+function dsv(delimiter, input, init, row) {
+  if (arguments.length === 3 && typeof init === "function") row = init, init = undefined;
+  var format = Object(d3_dsv__WEBPACK_IMPORTED_MODULE_0__["dsvFormat"])(delimiter);
+  return Object(_text__WEBPACK_IMPORTED_MODULE_1__["default"])(input, init).then(function(response) {
+    return format.parse(response, row);
+  });
+}
+
+var csv = dsvParse(d3_dsv__WEBPACK_IMPORTED_MODULE_0__["csvParse"]);
+var tsv = dsvParse(d3_dsv__WEBPACK_IMPORTED_MODULE_0__["tsvParse"]);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/image.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-fetch/src/image.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(input, init) {
+  return new Promise(function(resolve, reject) {
+    var image = new Image;
+    for (var key in init) image[key] = init[key];
+    image.onerror = reject;
+    image.onload = function() { resolve(image); };
+    image.src = input;
+  });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-fetch/src/index.js ***!
+  \********************************************/
+/*! exports provided: blob, buffer, dsv, csv, tsv, image, json, text, xml, html, svg */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blob */ "./node_modules/d3-fetch/src/blob.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "blob", function() { return _blob__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _buffer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buffer */ "./node_modules/d3-fetch/src/buffer.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _buffer__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _dsv__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dsv */ "./node_modules/d3-fetch/src/dsv.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dsv", function() { return _dsv__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csv", function() { return _dsv__WEBPACK_IMPORTED_MODULE_2__["csv"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsv", function() { return _dsv__WEBPACK_IMPORTED_MODULE_2__["tsv"]; });
+
+/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./image */ "./node_modules/d3-fetch/src/image.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "image", function() { return _image__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./json */ "./node_modules/d3-fetch/src/json.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "json", function() { return _json__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ "./node_modules/d3-fetch/src/text.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "text", function() { return _text__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _xml__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./xml */ "./node_modules/d3-fetch/src/xml.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "xml", function() { return _xml__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "html", function() { return _xml__WEBPACK_IMPORTED_MODULE_6__["html"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "svg", function() { return _xml__WEBPACK_IMPORTED_MODULE_6__["svg"]; });
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/json.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-fetch/src/json.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function responseJson(response) {
+  if (!response.ok) throw new Error(response.status + " " + response.statusText);
+  return response.json();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(input, init) {
+  return fetch(input, init).then(responseJson);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/text.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-fetch/src/text.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function responseText(response) {
+  if (!response.ok) throw new Error(response.status + " " + response.statusText);
+  return response.text();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(input, init) {
+  return fetch(input, init).then(responseText);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-fetch/src/xml.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-fetch/src/xml.js ***!
+  \******************************************/
+/*! exports provided: default, html, svg */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "html", function() { return html; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "svg", function() { return svg; });
+/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./text */ "./node_modules/d3-fetch/src/text.js");
+
+
+function parser(type) {
+  return function(input, init)  {
+    return Object(_text__WEBPACK_IMPORTED_MODULE_0__["default"])(input, init).then(function(text) {
+      return (new DOMParser).parseFromString(text, type);
+    });
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (parser("application/xml"));
+
+var html = parser("text/html");
+
+var svg = parser("image/svg+xml");
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/center.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-force/src/center.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x, y) {
+  var nodes;
+
+  if (x == null) x = 0;
+  if (y == null) y = 0;
+
+  function force() {
+    var i,
+        n = nodes.length,
+        node,
+        sx = 0,
+        sy = 0;
+
+    for (i = 0; i < n; ++i) {
+      node = nodes[i], sx += node.x, sy += node.y;
+    }
+
+    for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {
+      node = nodes[i], node.x -= sx, node.y -= sy;
+    }
+  }
+
+  force.initialize = function(_) {
+    nodes = _;
+  };
+
+  force.x = function(_) {
+    return arguments.length ? (x = +_, force) : x;
+  };
+
+  force.y = function(_) {
+    return arguments.length ? (y = +_, force) : y;
+  };
+
+  return force;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/collide.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-force/src/collide.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-force/src/constant.js");
+/* harmony import */ var _jiggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle */ "./node_modules/d3-force/src/jiggle.js");
+/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-quadtree */ "./node_modules/d3-quadtree/src/index.js");
+
+
+
+
+function x(d) {
+  return d.x + d.vx;
+}
+
+function y(d) {
+  return d.y + d.vy;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(radius) {
+  var nodes,
+      radii,
+      strength = 1,
+      iterations = 1;
+
+  if (typeof radius !== "function") radius = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(radius == null ? 1 : +radius);
+
+  function force() {
+    var i, n = nodes.length,
+        tree,
+        node,
+        xi,
+        yi,
+        ri,
+        ri2;
+
+    for (var k = 0; k < iterations; ++k) {
+      tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_2__["quadtree"])(nodes, x, y).visitAfter(prepare);
+      for (i = 0; i < n; ++i) {
+        node = nodes[i];
+        ri = radii[node.index], ri2 = ri * ri;
+        xi = node.x + node.vx;
+        yi = node.y + node.vy;
+        tree.visit(apply);
+      }
+    }
+
+    function apply(quad, x0, y0, x1, y1) {
+      var data = quad.data, rj = quad.r, r = ri + rj;
+      if (data) {
+        if (data.index > node.index) {
+          var x = xi - data.x - data.vx,
+              y = yi - data.y - data.vy,
+              l = x * x + y * y;
+          if (l < r * r) {
+            if (x === 0) x = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += x * x;
+            if (y === 0) y = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += y * y;
+            l = (r - (l = Math.sqrt(l))) / l * strength;
+            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));
+            node.vy += (y *= l) * r;
+            data.vx -= x * (r = 1 - r);
+            data.vy -= y * r;
+          }
+        }
+        return;
+      }
+      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;
+    }
+  }
+
+  function prepare(quad) {
+    if (quad.data) return quad.r = radii[quad.data.index];
+    for (var i = quad.r = 0; i < 4; ++i) {
+      if (quad[i] && quad[i].r > quad.r) {
+        quad.r = quad[i].r;
+      }
+    }
+  }
+
+  function initialize() {
+    if (!nodes) return;
+    var i, n = nodes.length, node;
+    radii = new Array(n);
+    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);
+  }
+
+  force.initialize = function(_) {
+    nodes = _;
+    initialize();
+  };
+
+  force.iterations = function(_) {
+    return arguments.length ? (iterations = +_, force) : iterations;
+  };
+
+  force.strength = function(_) {
+    return arguments.length ? (strength = +_, force) : strength;
+  };
+
+  force.radius = function(_) {
+    return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : radius;
+  };
+
+  return force;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/constant.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-force/src/constant.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-force/src/index.js ***!
+  \********************************************/
+/*! exports provided: forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _center__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./center */ "./node_modules/d3-force/src/center.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceCenter", function() { return _center__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _collide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collide */ "./node_modules/d3-force/src/collide.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceCollide", function() { return _collide__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./link */ "./node_modules/d3-force/src/link.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceLink", function() { return _link__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _manyBody__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./manyBody */ "./node_modules/d3-force/src/manyBody.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceManyBody", function() { return _manyBody__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _radial__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./radial */ "./node_modules/d3-force/src/radial.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceRadial", function() { return _radial__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _simulation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./simulation */ "./node_modules/d3-force/src/simulation.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceSimulation", function() { return _simulation__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _x__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./x */ "./node_modules/d3-force/src/x.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceX", function() { return _x__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _y__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./y */ "./node_modules/d3-force/src/y.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceY", function() { return _y__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/jiggle.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-force/src/jiggle.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return (Math.random() - 0.5) * 1e-6;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/link.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-force/src/link.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-force/src/constant.js");
+/* harmony import */ var _jiggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle */ "./node_modules/d3-force/src/jiggle.js");
+/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-collection */ "./node_modules/d3-collection/src/index.js");
+
+
+
+
+function index(d) {
+  return d.index;
+}
+
+function find(nodeById, nodeId) {
+  var node = nodeById.get(nodeId);
+  if (!node) throw new Error("missing: " + nodeId);
+  return node;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(links) {
+  var id = index,
+      strength = defaultStrength,
+      strengths,
+      distance = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(30),
+      distances,
+      nodes,
+      count,
+      bias,
+      iterations = 1;
+
+  if (links == null) links = [];
+
+  function defaultStrength(link) {
+    return 1 / Math.min(count[link.source.index], count[link.target.index]);
+  }
+
+  function force(alpha) {
+    for (var k = 0, n = links.length; k < iterations; ++k) {
+      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {
+        link = links[i], source = link.source, target = link.target;
+        x = target.x + target.vx - source.x - source.vx || Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])();
+        y = target.y + target.vy - source.y - source.vy || Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])();
+        l = Math.sqrt(x * x + y * y);
+        l = (l - distances[i]) / l * alpha * strengths[i];
+        x *= l, y *= l;
+        target.vx -= x * (b = bias[i]);
+        target.vy -= y * b;
+        source.vx += x * (b = 1 - b);
+        source.vy += y * b;
+      }
+    }
+  }
+
+  function initialize() {
+    if (!nodes) return;
+
+    var i,
+        n = nodes.length,
+        m = links.length,
+        nodeById = Object(d3_collection__WEBPACK_IMPORTED_MODULE_2__["map"])(nodes, id),
+        link;
+
+    for (i = 0, count = new Array(n); i < m; ++i) {
+      link = links[i], link.index = i;
+      if (typeof link.source !== "object") link.source = find(nodeById, link.source);
+      if (typeof link.target !== "object") link.target = find(nodeById, link.target);
+      count[link.source.index] = (count[link.source.index] || 0) + 1;
+      count[link.target.index] = (count[link.target.index] || 0) + 1;
+    }
+
+    for (i = 0, bias = new Array(m); i < m; ++i) {
+      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);
+    }
+
+    strengths = new Array(m), initializeStrength();
+    distances = new Array(m), initializeDistance();
+  }
+
+  function initializeStrength() {
+    if (!nodes) return;
+
+    for (var i = 0, n = links.length; i < n; ++i) {
+      strengths[i] = +strength(links[i], i, links);
+    }
+  }
+
+  function initializeDistance() {
+    if (!nodes) return;
+
+    for (var i = 0, n = links.length; i < n; ++i) {
+      distances[i] = +distance(links[i], i, links);
+    }
+  }
+
+  force.initialize = function(_) {
+    nodes = _;
+    initialize();
+  };
+
+  force.links = function(_) {
+    return arguments.length ? (links = _, initialize(), force) : links;
+  };
+
+  force.id = function(_) {
+    return arguments.length ? (id = _, force) : id;
+  };
+
+  force.iterations = function(_) {
+    return arguments.length ? (iterations = +_, force) : iterations;
+  };
+
+  force.strength = function(_) {
+    return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initializeStrength(), force) : strength;
+  };
+
+  force.distance = function(_) {
+    return arguments.length ? (distance = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initializeDistance(), force) : distance;
+  };
+
+  return force;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/manyBody.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-force/src/manyBody.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-force/src/constant.js");
+/* harmony import */ var _jiggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle */ "./node_modules/d3-force/src/jiggle.js");
+/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-quadtree */ "./node_modules/d3-quadtree/src/index.js");
+/* harmony import */ var _simulation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./simulation */ "./node_modules/d3-force/src/simulation.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var nodes,
+      node,
+      alpha,
+      strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(-30),
+      strengths,
+      distanceMin2 = 1,
+      distanceMax2 = Infinity,
+      theta2 = 0.81;
+
+  function force(_) {
+    var i, n = nodes.length, tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_2__["quadtree"])(nodes, _simulation__WEBPACK_IMPORTED_MODULE_3__["x"], _simulation__WEBPACK_IMPORTED_MODULE_3__["y"]).visitAfter(accumulate);
+    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);
+  }
+
+  function initialize() {
+    if (!nodes) return;
+    var i, n = nodes.length, node;
+    strengths = new Array(n);
+    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);
+  }
+
+  function accumulate(quad) {
+    var strength = 0, q, c, weight = 0, x, y, i;
+
+    // For internal nodes, accumulate forces from child quadrants.
+    if (quad.length) {
+      for (x = y = i = 0; i < 4; ++i) {
+        if ((q = quad[i]) && (c = Math.abs(q.value))) {
+          strength += q.value, weight += c, x += c * q.x, y += c * q.y;
+        }
+      }
+      quad.x = x / weight;
+      quad.y = y / weight;
+    }
+
+    // For leaf nodes, accumulate forces from coincident quadrants.
+    else {
+      q = quad;
+      q.x = q.data.x;
+      q.y = q.data.y;
+      do strength += strengths[q.data.index];
+      while (q = q.next);
+    }
+
+    quad.value = strength;
+  }
+
+  function apply(quad, x1, _, x2) {
+    if (!quad.value) return true;
+
+    var x = quad.x - node.x,
+        y = quad.y - node.y,
+        w = x2 - x1,
+        l = x * x + y * y;
+
+    // Apply the Barnes-Hut approximation if possible.
+    // Limit forces for very close nodes; randomize direction if coincident.
+    if (w * w / theta2 < l) {
+      if (l < distanceMax2) {
+        if (x === 0) x = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += x * x;
+        if (y === 0) y = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += y * y;
+        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
+        node.vx += x * quad.value * alpha / l;
+        node.vy += y * quad.value * alpha / l;
+      }
+      return true;
+    }
+
+    // Otherwise, process points directly.
+    else if (quad.length || l >= distanceMax2) return;
+
+    // Limit forces for very close nodes; randomize direction if coincident.
+    if (quad.data !== node || quad.next) {
+      if (x === 0) x = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += x * x;
+      if (y === 0) y = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += y * y;
+      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
+    }
+
+    do if (quad.data !== node) {
+      w = strengths[quad.data.index] * alpha / l;
+      node.vx += x * w;
+      node.vy += y * w;
+    } while (quad = quad.next);
+  }
+
+  force.initialize = function(_) {
+    nodes = _;
+    initialize();
+  };
+
+  force.strength = function(_) {
+    return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
+  };
+
+  force.distanceMin = function(_) {
+    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);
+  };
+
+  force.distanceMax = function(_) {
+    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);
+  };
+
+  force.theta = function(_) {
+    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);
+  };
+
+  return force;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/radial.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-force/src/radial.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-force/src/constant.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(radius, x, y) {
+  var nodes,
+      strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0.1),
+      strengths,
+      radiuses;
+
+  if (typeof radius !== "function") radius = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+radius);
+  if (x == null) x = 0;
+  if (y == null) y = 0;
+
+  function force(alpha) {
+    for (var i = 0, n = nodes.length; i < n; ++i) {
+      var node = nodes[i],
+          dx = node.x - x || 1e-6,
+          dy = node.y - y || 1e-6,
+          r = Math.sqrt(dx * dx + dy * dy),
+          k = (radiuses[i] - r) * strengths[i] * alpha / r;
+      node.vx += dx * k;
+      node.vy += dy * k;
+    }
+  }
+
+  function initialize() {
+    if (!nodes) return;
+    var i, n = nodes.length;
+    strengths = new Array(n);
+    radiuses = new Array(n);
+    for (i = 0; i < n; ++i) {
+      radiuses[i] = +radius(nodes[i], i, nodes);
+      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);
+    }
+  }
+
+  force.initialize = function(_) {
+    nodes = _, initialize();
+  };
+
+  force.strength = function(_) {
+    return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
+  };
+
+  force.radius = function(_) {
+    return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : radius;
+  };
+
+  force.x = function(_) {
+    return arguments.length ? (x = +_, force) : x;
+  };
+
+  force.y = function(_) {
+    return arguments.length ? (y = +_, force) : y;
+  };
+
+  return force;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/simulation.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-force/src/simulation.js ***!
+  \*************************************************/
+/*! exports provided: x, y, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return x; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return y; });
+/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ "./node_modules/d3-dispatch/src/index.js");
+/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-collection */ "./node_modules/d3-collection/src/index.js");
+/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-timer */ "./node_modules/d3-timer/src/index.js");
+
+
+
+
+function x(d) {
+  return d.x;
+}
+
+function y(d) {
+  return d.y;
+}
+
+var initialRadius = 10,
+    initialAngle = Math.PI * (3 - Math.sqrt(5));
+
+/* harmony default export */ __webpack_exports__["default"] = (function(nodes) {
+  var simulation,
+      alpha = 1,
+      alphaMin = 0.001,
+      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),
+      alphaTarget = 0,
+      velocityDecay = 0.6,
+      forces = Object(d3_collection__WEBPACK_IMPORTED_MODULE_1__["map"])(),
+      stepper = Object(d3_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(step),
+      event = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("tick", "end");
+
+  if (nodes == null) nodes = [];
+
+  function step() {
+    tick();
+    event.call("tick", simulation);
+    if (alpha < alphaMin) {
+      stepper.stop();
+      event.call("end", simulation);
+    }
+  }
+
+  function tick(iterations) {
+    var i, n = nodes.length, node;
+
+    if (iterations === undefined) iterations = 1;
+
+    for (var k = 0; k < iterations; ++k) {
+      alpha += (alphaTarget - alpha) * alphaDecay;
+
+      forces.each(function (force) {
+        force(alpha);
+      });
+
+      for (i = 0; i < n; ++i) {
+        node = nodes[i];
+        if (node.fx == null) node.x += node.vx *= velocityDecay;
+        else node.x = node.fx, node.vx = 0;
+        if (node.fy == null) node.y += node.vy *= velocityDecay;
+        else node.y = node.fy, node.vy = 0;
+      }
+    }
+
+    return simulation;
+  }
+
+  function initializeNodes() {
+    for (var i = 0, n = nodes.length, node; i < n; ++i) {
+      node = nodes[i], node.index = i;
+      if (node.fx != null) node.x = node.fx;
+      if (node.fy != null) node.y = node.fy;
+      if (isNaN(node.x) || isNaN(node.y)) {
+        var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;
+        node.x = radius * Math.cos(angle);
+        node.y = radius * Math.sin(angle);
+      }
+      if (isNaN(node.vx) || isNaN(node.vy)) {
+        node.vx = node.vy = 0;
+      }
+    }
+  }
+
+  function initializeForce(force) {
+    if (force.initialize) force.initialize(nodes);
+    return force;
+  }
+
+  initializeNodes();
+
+  return simulation = {
+    tick: tick,
+
+    restart: function() {
+      return stepper.restart(step), simulation;
+    },
+
+    stop: function() {
+      return stepper.stop(), simulation;
+    },
+
+    nodes: function(_) {
+      return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;
+    },
+
+    alpha: function(_) {
+      return arguments.length ? (alpha = +_, simulation) : alpha;
+    },
+
+    alphaMin: function(_) {
+      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;
+    },
+
+    alphaDecay: function(_) {
+      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;
+    },
+
+    alphaTarget: function(_) {
+      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;
+    },
+
+    velocityDecay: function(_) {
+      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;
+    },
+
+    force: function(name, _) {
+      return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);
+    },
+
+    find: function(x, y, radius) {
+      var i = 0,
+          n = nodes.length,
+          dx,
+          dy,
+          d2,
+          node,
+          closest;
+
+      if (radius == null) radius = Infinity;
+      else radius *= radius;
+
+      for (i = 0; i < n; ++i) {
+        node = nodes[i];
+        dx = x - node.x;
+        dy = y - node.y;
+        d2 = dx * dx + dy * dy;
+        if (d2 < radius) closest = node, radius = d2;
+      }
+
+      return closest;
+    },
+
+    on: function(name, _) {
+      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);
+    }
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/x.js":
+/*!****************************************!*\
+  !*** ./node_modules/d3-force/src/x.js ***!
+  \****************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-force/src/constant.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  var strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0.1),
+      nodes,
+      strengths,
+      xz;
+
+  if (typeof x !== "function") x = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(x == null ? 0 : +x);
+
+  function force(alpha) {
+    for (var i = 0, n = nodes.length, node; i < n; ++i) {
+      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;
+    }
+  }
+
+  function initialize() {
+    if (!nodes) return;
+    var i, n = nodes.length;
+    strengths = new Array(n);
+    xz = new Array(n);
+    for (i = 0; i < n; ++i) {
+      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);
+    }
+  }
+
+  force.initialize = function(_) {
+    nodes = _;
+    initialize();
+  };
+
+  force.strength = function(_) {
+    return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
+  };
+
+  force.x = function(_) {
+    return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : x;
+  };
+
+  return force;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-force/src/y.js":
+/*!****************************************!*\
+  !*** ./node_modules/d3-force/src/y.js ***!
+  \****************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-force/src/constant.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(y) {
+  var strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0.1),
+      nodes,
+      strengths,
+      yz;
+
+  if (typeof y !== "function") y = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(y == null ? 0 : +y);
+
+  function force(alpha) {
+    for (var i = 0, n = nodes.length, node; i < n; ++i) {
+      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;
+    }
+  }
+
+  function initialize() {
+    if (!nodes) return;
+    var i, n = nodes.length;
+    strengths = new Array(n);
+    yz = new Array(n);
+    for (i = 0; i < n; ++i) {
+      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);
+    }
+  }
+
+  force.initialize = function(_) {
+    nodes = _;
+    initialize();
+  };
+
+  force.strength = function(_) {
+    return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
+  };
+
+  force.y = function(_) {
+    return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : y;
+  };
+
+  return force;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/defaultLocale.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-format/src/defaultLocale.js ***!
+  \*****************************************************/
+/*! exports provided: format, formatPrefix, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "format", function() { return format; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatPrefix", function() { return formatPrefix; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return defaultLocale; });
+/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ "./node_modules/d3-format/src/locale.js");
+
+
+var locale;
+var format;
+var formatPrefix;
+
+defaultLocale({
+  decimal: ".",
+  thousands: ",",
+  grouping: [3],
+  currency: ["$", ""],
+  minus: "-"
+});
+
+function defaultLocale(definition) {
+  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__["default"])(definition);
+  format = locale.format;
+  formatPrefix = locale.formatPrefix;
+  return locale;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/exponent.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-format/src/exponent.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ "./node_modules/d3-format/src/formatDecimal.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return x = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.abs(x)), x ? x[1] : NaN;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatDecimal.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-format/src/formatDecimal.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+// Computes the decimal coefficient and exponent of the specified number x with
+// significant digits p, where x is positive and p is in [1, 21] or undefined.
+// For example, formatDecimal(1.23) returns ["123", 0].
+/* harmony default export */ __webpack_exports__["default"] = (function(x, p) {
+  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity
+  var i, coefficient = x.slice(0, i);
+
+  // The string returned by toExponential either has the form \d\.\d+e[-+]\d+
+  // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3).
+  return [
+    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
+    +x.slice(i + 1)
+  ];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatGroup.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-format/src/formatGroup.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(grouping, thousands) {
+  return function(value, width) {
+    var i = value.length,
+        t = [],
+        j = 0,
+        g = grouping[0],
+        length = 0;
+
+    while (i > 0 && g > 0) {
+      if (length + g + 1 > width) g = Math.max(1, width - length);
+      t.push(value.substring(i -= g, i + g));
+      if ((length += g + 1) > width) break;
+      g = grouping[j = (j + 1) % grouping.length];
+    }
+
+    return t.reverse().join(thousands);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatNumerals.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-format/src/formatNumerals.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(numerals) {
+  return function(value) {
+    return value.replace(/[0-9]/g, function(i) {
+      return numerals[+i];
+    });
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatPrefixAuto.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-format/src/formatPrefixAuto.js ***!
+  \********************************************************/
+/*! exports provided: prefixExponent, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prefixExponent", function() { return prefixExponent; });
+/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ "./node_modules/d3-format/src/formatDecimal.js");
+
+
+var prefixExponent;
+
+/* harmony default export */ __webpack_exports__["default"] = (function(x, p) {
+  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__["default"])(x, p);
+  if (!d) return x + "";
+  var coefficient = d[0],
+      exponent = d[1],
+      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,
+      n = coefficient.length;
+  return i === n ? coefficient
+      : i > n ? coefficient + new Array(i - n + 1).join("0")
+      : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i)
+      : "0." + new Array(1 - i).join("0") + Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__["default"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatRounded.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-format/src/formatRounded.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ "./node_modules/d3-format/src/formatDecimal.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(x, p) {
+  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__["default"])(x, p);
+  if (!d) return x + "";
+  var coefficient = d[0],
+      exponent = d[1];
+  return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient
+      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1)
+      : coefficient + new Array(exponent - coefficient.length + 2).join("0");
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatSpecifier.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-format/src/formatSpecifier.js ***!
+  \*******************************************************/
+/*! exports provided: default, FormatSpecifier */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatSpecifier; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FormatSpecifier", function() { return FormatSpecifier; });
+// [[fill]align][sign][symbol][0][width][,][.precision][~][type]
+var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
+
+function formatSpecifier(specifier) {
+  if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
+  var match;
+  return new FormatSpecifier({
+    fill: match[1],
+    align: match[2],
+    sign: match[3],
+    symbol: match[4],
+    zero: match[5],
+    width: match[6],
+    comma: match[7],
+    precision: match[8] && match[8].slice(1),
+    trim: match[9],
+    type: match[10]
+  });
+}
+
+formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof
+
+function FormatSpecifier(specifier) {
+  this.fill = specifier.fill === undefined ? " " : specifier.fill + "";
+  this.align = specifier.align === undefined ? ">" : specifier.align + "";
+  this.sign = specifier.sign === undefined ? "-" : specifier.sign + "";
+  this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + "";
+  this.zero = !!specifier.zero;
+  this.width = specifier.width === undefined ? undefined : +specifier.width;
+  this.comma = !!specifier.comma;
+  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;
+  this.trim = !!specifier.trim;
+  this.type = specifier.type === undefined ? "" : specifier.type + "";
+}
+
+FormatSpecifier.prototype.toString = function() {
+  return this.fill
+      + this.align
+      + this.sign
+      + this.symbol
+      + (this.zero ? "0" : "")
+      + (this.width === undefined ? "" : Math.max(1, this.width | 0))
+      + (this.comma ? "," : "")
+      + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0))
+      + (this.trim ? "~" : "")
+      + this.type;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatTrim.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-format/src/formatTrim.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.
+/* harmony default export */ __webpack_exports__["default"] = (function(s) {
+  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {
+    switch (s[i]) {
+      case ".": i0 = i1 = i; break;
+      case "0": if (i0 === 0) i0 = i; i1 = i; break;
+      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;
+    }
+  }
+  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/formatTypes.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-format/src/formatTypes.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatPrefixAuto.js */ "./node_modules/d3-format/src/formatPrefixAuto.js");
+/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatRounded.js */ "./node_modules/d3-format/src/formatRounded.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  "%": function(x, p) { return (x * 100).toFixed(p); },
+  "b": function(x) { return Math.round(x).toString(2); },
+  "c": function(x) { return x + ""; },
+  "d": function(x) { return Math.round(x).toString(10); },
+  "e": function(x, p) { return x.toExponential(p); },
+  "f": function(x, p) { return x.toFixed(p); },
+  "g": function(x, p) { return x.toPrecision(p); },
+  "o": function(x) { return Math.round(x).toString(8); },
+  "p": function(x, p) { return Object(_formatRounded_js__WEBPACK_IMPORTED_MODULE_1__["default"])(x * 100, p); },
+  "r": _formatRounded_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  "s": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  "X": function(x) { return Math.round(x).toString(16).toUpperCase(); },
+  "x": function(x) { return Math.round(x).toString(16); }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/identity.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-format/src/identity.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return x;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/index.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-format/src/index.js ***!
+  \*********************************************/
+/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ "./node_modules/d3-format/src/defaultLocale.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatDefaultLocale", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "format", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["format"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatPrefix", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["formatPrefix"]; });
+
+/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ "./node_modules/d3-format/src/locale.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatLocale", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ "./node_modules/d3-format/src/formatSpecifier.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatSpecifier", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FormatSpecifier", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__["FormatSpecifier"]; });
+
+/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ "./node_modules/d3-format/src/precisionFixed.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "precisionFixed", function() { return _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ "./node_modules/d3-format/src/precisionPrefix.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "precisionPrefix", function() { return _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ "./node_modules/d3-format/src/precisionRound.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "precisionRound", function() { return _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/locale.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-format/src/locale.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ "./node_modules/d3-format/src/exponent.js");
+/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ "./node_modules/d3-format/src/formatGroup.js");
+/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ "./node_modules/d3-format/src/formatNumerals.js");
+/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ "./node_modules/d3-format/src/formatSpecifier.js");
+/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTrim.js */ "./node_modules/d3-format/src/formatTrim.js");
+/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTypes.js */ "./node_modules/d3-format/src/formatTypes.js");
+/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ "./node_modules/d3-format/src/formatPrefixAuto.js");
+/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./identity.js */ "./node_modules/d3-format/src/identity.js");
+
+
+
+
+
+
+
+
+
+var map = Array.prototype.map,
+    prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];
+
+/* harmony default export */ __webpack_exports__["default"] = (function(locale) {
+  var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__["default"] : Object(_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__["default"])(map.call(locale.grouping, Number), locale.thousands + ""),
+      currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "",
+      currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "",
+      decimal = locale.decimal === undefined ? "." : locale.decimal + "",
+      numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__["default"] : Object(_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__["default"])(map.call(locale.numerals, String)),
+      percent = locale.percent === undefined ? "%" : locale.percent + "",
+      minus = locale.minus === undefined ? "-" : locale.minus + "",
+      nan = locale.nan === undefined ? "NaN" : locale.nan + "";
+
+  function newFormat(specifier) {
+    specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__["default"])(specifier);
+
+    var fill = specifier.fill,
+        align = specifier.align,
+        sign = specifier.sign,
+        symbol = specifier.symbol,
+        zero = specifier.zero,
+        width = specifier.width,
+        comma = specifier.comma,
+        precision = specifier.precision,
+        trim = specifier.trim,
+        type = specifier.type;
+
+    // The "n" type is an alias for ",g".
+    if (type === "n") comma = true, type = "g";
+
+    // The "" type, and any invalid type, is an alias for ".12~g".
+    else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_5__["default"][type]) precision === undefined && (precision = 12), trim = true, type = "g";
+
+    // If zero fill is specified, padding goes after sign and before digits.
+    if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";
+
+    // Compute the prefix and suffix.
+    // For SI-prefix, the suffix is lazily computed.
+    var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
+        suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : "";
+
+    // What format function should we use?
+    // Is this an integer type?
+    // Can this type generate exponential notation?
+    var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__["default"][type],
+        maybeSuffix = /[defgprs%]/.test(type);
+
+    // Set the default precision if not specified,
+    // or clamp the specified precision to the supported range.
+    // For significant precision, it must be in [1, 21].
+    // For fixed precision, it must be in [0, 20].
+    precision = precision === undefined ? 6
+        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
+        : Math.max(0, Math.min(20, precision));
+
+    function format(value) {
+      var valuePrefix = prefix,
+          valueSuffix = suffix,
+          i, n, c;
+
+      if (type === "c") {
+        valueSuffix = formatType(value) + valueSuffix;
+        value = "";
+      } else {
+        value = +value;
+
+        // Perform the initial formatting.
+        var valueNegative = value < 0;
+        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);
+
+        // Trim insignificant zeros.
+        if (trim) value = Object(_formatTrim_js__WEBPACK_IMPORTED_MODULE_4__["default"])(value);
+
+        // If a negative value rounds to zero during formatting, treat as positive.
+        if (valueNegative && +value === 0) valueNegative = false;
+
+        // Compute the prefix and suffix.
+        valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
+
+        valueSuffix = (type === "s" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__["prefixExponent"] / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
+
+        // Break the formatted value into the integer “value” part that can be
+        // grouped, and fractional or exponential “suffix” part that is not.
+        if (maybeSuffix) {
+          i = -1, n = value.length;
+          while (++i < n) {
+            if (c = value.charCodeAt(i), 48 > c || c > 57) {
+              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;
+              value = value.slice(0, i);
+              break;
+            }
+          }
+        }
+      }
+
+      // If the fill character is not "0", grouping is applied before padding.
+      if (comma && !zero) value = group(value, Infinity);
+
+      // Compute the padding.
+      var length = valuePrefix.length + value.length + valueSuffix.length,
+          padding = length < width ? new Array(width - length + 1).join(fill) : "";
+
+      // If the fill character is "0", grouping is applied after padding.
+      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = "";
+
+      // Reconstruct the final output based on the desired alignment.
+      switch (align) {
+        case "<": value = valuePrefix + value + valueSuffix + padding; break;
+        case "=": value = valuePrefix + padding + value + valueSuffix; break;
+        case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
+        default: value = padding + valuePrefix + value + valueSuffix; break;
+      }
+
+      return numerals(value);
+    }
+
+    format.toString = function() {
+      return specifier + "";
+    };
+
+    return format;
+  }
+
+  function formatPrefix(specifier, value) {
+    var f = newFormat((specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__["default"])(specifier), specifier.type = "f", specifier)),
+        e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) / 3))) * 3,
+        k = Math.pow(10, -e),
+        prefix = prefixes[8 + e / 3];
+    return function(value) {
+      return f(k * value) + prefix;
+    };
+  }
+
+  return {
+    format: newFormat,
+    formatPrefix: formatPrefix
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/precisionFixed.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-format/src/precisionFixed.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ "./node_modules/d3-format/src/exponent.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(step) {
+  return Math.max(0, -Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.abs(step)));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/precisionPrefix.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-format/src/precisionPrefix.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ "./node_modules/d3-format/src/exponent.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(step, value) {
+  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) / 3))) * 3 - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.abs(step)));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-format/src/precisionRound.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-format/src/precisionRound.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ "./node_modules/d3-format/src/exponent.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(step, max) {
+  step = Math.abs(step), max = Math.abs(max) - step;
+  return Math.max(0, Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(max) - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(step)) + 1;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/adder.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-geo/src/adder.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+// Adds floating point numbers with twice the normal precision.
+// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
+// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
+// 305–363 (1997).
+// Code adapted from GeographicLib by Charles F. F. Karney,
+// http://geographiclib.sourceforge.net/
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return new Adder;
+});
+
+function Adder() {
+  this.reset();
+}
+
+Adder.prototype = {
+  constructor: Adder,
+  reset: function() {
+    this.s = // rounded value
+    this.t = 0; // exact error
+  },
+  add: function(y) {
+    add(temp, y, this.t);
+    add(this, temp.s, this.s);
+    if (this.s) this.t += temp.t;
+    else this.s = temp.t;
+  },
+  valueOf: function() {
+    return this.s;
+  }
+};
+
+var temp = new Adder;
+
+function add(adder, a, b) {
+  var x = adder.s = a + b,
+      bv = x - a,
+      av = x - bv;
+  adder.t = (a - av) + (b - bv);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/area.js":
+/*!*****************************************!*\
+  !*** ./node_modules/d3-geo/src/area.js ***!
+  \*****************************************/
+/*! exports provided: areaRingSum, areaStream, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areaRingSum", function() { return areaRingSum; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areaStream", function() { return areaStream; });
+/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adder.js */ "./node_modules/d3-geo/src/adder.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ "./node_modules/d3-geo/src/noop.js");
+/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ "./node_modules/d3-geo/src/stream.js");
+
+
+
+
+
+var areaRingSum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])();
+
+var areaSum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+    lambda00,
+    phi00,
+    lambda0,
+    cosPhi0,
+    sinPhi0;
+
+var areaStream = {
+  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  polygonStart: function() {
+    areaRingSum.reset();
+    areaStream.lineStart = areaRingStart;
+    areaStream.lineEnd = areaRingEnd;
+  },
+  polygonEnd: function() {
+    var areaRing = +areaRingSum;
+    areaSum.add(areaRing < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__["tau"] + areaRing : areaRing);
+    this.lineStart = this.lineEnd = this.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"];
+  },
+  sphere: function() {
+    areaSum.add(_math_js__WEBPACK_IMPORTED_MODULE_1__["tau"]);
+  }
+};
+
+function areaRingStart() {
+  areaStream.point = areaPointFirst;
+}
+
+function areaRingEnd() {
+  areaPoint(lambda00, phi00);
+}
+
+function areaPointFirst(lambda, phi) {
+  areaStream.point = areaPoint;
+  lambda00 = lambda, phi00 = phi;
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"];
+  lambda0 = lambda, cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__["quarterPi"]), sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi);
+}
+
+function areaPoint(lambda, phi) {
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"];
+  phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__["quarterPi"]; // half the angular distance from south pole
+
+  // Spherical excess E for a spherical triangle with vertices: south pole,
+  // previous point, current point.  Uses a formula derived from Cagnoli’s
+  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
+  var dLambda = lambda - lambda0,
+      sdLambda = dLambda >= 0 ? 1 : -1,
+      adLambda = sdLambda * dLambda,
+      cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
+      sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
+      k = sinPhi0 * sinPhi,
+      u = cosPhi0 * cosPhi + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(adLambda),
+      v = k * sdLambda * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(adLambda);
+  areaRingSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["atan2"])(v, u));
+
+  // Advance the previous points.
+  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(object) {
+  areaSum.reset();
+  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__["default"])(object, areaStream);
+  return areaSum * 2;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/bounds.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-geo/src/bounds.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adder.js */ "./node_modules/d3-geo/src/adder.js");
+/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ "./node_modules/d3-geo/src/area.js");
+/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cartesian.js */ "./node_modules/d3-geo/src/cartesian.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stream.js */ "./node_modules/d3-geo/src/stream.js");
+
+
+
+
+
+
+var lambda0, phi0, lambda1, phi1, // bounds
+    lambda2, // previous lambda-coordinate
+    lambda00, phi00, // first point
+    p0, // previous 3D point
+    deltaSum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+    ranges,
+    range;
+
+var boundsStream = {
+  point: boundsPoint,
+  lineStart: boundsLineStart,
+  lineEnd: boundsLineEnd,
+  polygonStart: function() {
+    boundsStream.point = boundsRingPoint;
+    boundsStream.lineStart = boundsRingStart;
+    boundsStream.lineEnd = boundsRingEnd;
+    deltaSum.reset();
+    _area_js__WEBPACK_IMPORTED_MODULE_1__["areaStream"].polygonStart();
+  },
+  polygonEnd: function() {
+    _area_js__WEBPACK_IMPORTED_MODULE_1__["areaStream"].polygonEnd();
+    boundsStream.point = boundsPoint;
+    boundsStream.lineStart = boundsLineStart;
+    boundsStream.lineEnd = boundsLineEnd;
+    if (_area_js__WEBPACK_IMPORTED_MODULE_1__["areaRingSum"] < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);
+    else if (deltaSum > _math_js__WEBPACK_IMPORTED_MODULE_3__["epsilon"]) phi1 = 90;
+    else if (deltaSum < -_math_js__WEBPACK_IMPORTED_MODULE_3__["epsilon"]) phi0 = -90;
+    range[0] = lambda0, range[1] = lambda1;
+  },
+  sphere: function() {
+    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);
+  }
+};
+
+function boundsPoint(lambda, phi) {
+  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);
+  if (phi < phi0) phi0 = phi;
+  if (phi > phi1) phi1 = phi;
+}
+
+function linePoint(lambda, phi) {
+  var p = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__["cartesian"])([lambda * _math_js__WEBPACK_IMPORTED_MODULE_3__["radians"], phi * _math_js__WEBPACK_IMPORTED_MODULE_3__["radians"]]);
+  if (p0) {
+    var normal = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__["cartesianCross"])(p0, p),
+        equatorial = [normal[1], -normal[0], 0],
+        inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__["cartesianCross"])(equatorial, normal);
+    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__["cartesianNormalizeInPlace"])(inflection);
+    inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__["spherical"])(inflection);
+    var delta = lambda - lambda2,
+        sign = delta > 0 ? 1 : -1,
+        lambdai = inflection[0] * _math_js__WEBPACK_IMPORTED_MODULE_3__["degrees"] * sign,
+        phii,
+        antimeridian = Object(_math_js__WEBPACK_IMPORTED_MODULE_3__["abs"])(delta) > 180;
+    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
+      phii = inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__["degrees"];
+      if (phii > phi1) phi1 = phii;
+    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
+      phii = -inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__["degrees"];
+      if (phii < phi0) phi0 = phii;
+    } else {
+      if (phi < phi0) phi0 = phi;
+      if (phi > phi1) phi1 = phi;
+    }
+    if (antimeridian) {
+      if (lambda < lambda2) {
+        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;
+      } else {
+        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;
+      }
+    } else {
+      if (lambda1 >= lambda0) {
+        if (lambda < lambda0) lambda0 = lambda;
+        if (lambda > lambda1) lambda1 = lambda;
+      } else {
+        if (lambda > lambda2) {
+          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;
+        } else {
+          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;
+        }
+      }
+    }
+  } else {
+    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);
+  }
+  if (phi < phi0) phi0 = phi;
+  if (phi > phi1) phi1 = phi;
+  p0 = p, lambda2 = lambda;
+}
+
+function boundsLineStart() {
+  boundsStream.point = linePoint;
+}
+
+function boundsLineEnd() {
+  range[0] = lambda0, range[1] = lambda1;
+  boundsStream.point = boundsPoint;
+  p0 = null;
+}
+
+function boundsRingPoint(lambda, phi) {
+  if (p0) {
+    var delta = lambda - lambda2;
+    deltaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_3__["abs"])(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);
+  } else {
+    lambda00 = lambda, phi00 = phi;
+  }
+  _area_js__WEBPACK_IMPORTED_MODULE_1__["areaStream"].point(lambda, phi);
+  linePoint(lambda, phi);
+}
+
+function boundsRingStart() {
+  _area_js__WEBPACK_IMPORTED_MODULE_1__["areaStream"].lineStart();
+}
+
+function boundsRingEnd() {
+  boundsRingPoint(lambda00, phi00);
+  _area_js__WEBPACK_IMPORTED_MODULE_1__["areaStream"].lineEnd();
+  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_3__["abs"])(deltaSum) > _math_js__WEBPACK_IMPORTED_MODULE_3__["epsilon"]) lambda0 = -(lambda1 = 180);
+  range[0] = lambda0, range[1] = lambda1;
+  p0 = null;
+}
+
+// Finds the left-right distance between two longitudes.
+// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want
+// the distance between ±180° to be 360°.
+function angle(lambda0, lambda1) {
+  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;
+}
+
+function rangeCompare(a, b) {
+  return a[0] - b[0];
+}
+
+function rangeContains(range, x) {
+  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(feature) {
+  var i, n, a, b, merged, deltaMax, delta;
+
+  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);
+  ranges = [];
+  Object(_stream_js__WEBPACK_IMPORTED_MODULE_4__["default"])(feature, boundsStream);
+
+  // First, sort ranges by their minimum longitudes.
+  if (n = ranges.length) {
+    ranges.sort(rangeCompare);
+
+    // Then, merge any ranges that overlap.
+    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {
+      b = ranges[i];
+      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {
+        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
+        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
+      } else {
+        merged.push(a = b);
+      }
+    }
+
+    // Finally, find the largest gap between the merged ranges.
+    // The final bounding box will be the inverse of this gap.
+    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {
+      b = merged[i];
+      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];
+    }
+  }
+
+  ranges = range = null;
+
+  return lambda0 === Infinity || phi0 === Infinity
+      ? [[NaN, NaN], [NaN, NaN]]
+      : [[lambda0, phi0], [lambda1, phi1]];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/cartesian.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-geo/src/cartesian.js ***!
+  \**********************************************/
+/*! exports provided: spherical, cartesian, cartesianDot, cartesianCross, cartesianAddInPlace, cartesianScale, cartesianNormalizeInPlace */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spherical", function() { return spherical; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cartesian", function() { return cartesian; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cartesianDot", function() { return cartesianDot; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cartesianCross", function() { return cartesianCross; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cartesianAddInPlace", function() { return cartesianAddInPlace; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cartesianScale", function() { return cartesianScale; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cartesianNormalizeInPlace", function() { return cartesianNormalizeInPlace; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+function spherical(cartesian) {
+  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(cartesian[1], cartesian[0]), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])(cartesian[2])];
+}
+
+function cartesian(spherical) {
+  var lambda = spherical[0], phi = spherical[1], cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
+  return [cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi)];
+}
+
+function cartesianDot(a, b) {
+  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+}
+
+function cartesianCross(a, b) {
+  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
+}
+
+// TODO return a
+function cartesianAddInPlace(a, b) {
+  a[0] += b[0], a[1] += b[1], a[2] += b[2];
+}
+
+function cartesianScale(vector, k) {
+  return [vector[0] * k, vector[1] * k, vector[2] * k];
+}
+
+// TODO return d
+function cartesianNormalizeInPlace(d) {
+  var l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
+  d[0] /= l, d[1] /= l, d[2] /= l;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/centroid.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-geo/src/centroid.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./noop.js */ "./node_modules/d3-geo/src/noop.js");
+/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stream.js */ "./node_modules/d3-geo/src/stream.js");
+
+
+
+
+var W0, W1,
+    X0, Y0, Z0,
+    X1, Y1, Z1,
+    X2, Y2, Z2,
+    lambda00, phi00, // first point
+    x0, y0, z0; // previous point
+
+var centroidStream = {
+  sphere: _noop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  point: centroidPoint,
+  lineStart: centroidLineStart,
+  lineEnd: centroidLineEnd,
+  polygonStart: function() {
+    centroidStream.lineStart = centroidRingStart;
+    centroidStream.lineEnd = centroidRingEnd;
+  },
+  polygonEnd: function() {
+    centroidStream.lineStart = centroidLineStart;
+    centroidStream.lineEnd = centroidLineEnd;
+  }
+};
+
+// Arithmetic mean of Cartesian vectors.
+function centroidPoint(lambda, phi) {
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"];
+  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
+  centroidPointCartesian(cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi));
+}
+
+function centroidPointCartesian(x, y, z) {
+  ++W0;
+  X0 += (x - X0) / W0;
+  Y0 += (y - Y0) / W0;
+  Z0 += (z - Z0) / W0;
+}
+
+function centroidLineStart() {
+  centroidStream.point = centroidLinePointFirst;
+}
+
+function centroidLinePointFirst(lambda, phi) {
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"];
+  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
+  x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda);
+  y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda);
+  z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi);
+  centroidStream.point = centroidLinePoint;
+  centroidPointCartesian(x0, y0, z0);
+}
+
+function centroidLinePoint(lambda, phi) {
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"];
+  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi),
+      x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda),
+      y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda),
+      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi),
+      w = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
+  W1 += w;
+  X1 += w * (x0 + (x0 = x));
+  Y1 += w * (y0 + (y0 = y));
+  Z1 += w * (z0 + (z0 = z));
+  centroidPointCartesian(x0, y0, z0);
+}
+
+function centroidLineEnd() {
+  centroidStream.point = centroidPoint;
+}
+
+// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,
+// J. Applied Mechanics 42, 239 (1975).
+function centroidRingStart() {
+  centroidStream.point = centroidRingPointFirst;
+}
+
+function centroidRingEnd() {
+  centroidRingPoint(lambda00, phi00);
+  centroidStream.point = centroidPoint;
+}
+
+function centroidRingPointFirst(lambda, phi) {
+  lambda00 = lambda, phi00 = phi;
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"];
+  centroidStream.point = centroidRingPoint;
+  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
+  x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda);
+  y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda);
+  z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi);
+  centroidPointCartesian(x0, y0, z0);
+}
+
+function centroidRingPoint(lambda, phi) {
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"];
+  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi),
+      x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda),
+      y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda),
+      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi),
+      cx = y0 * z - z0 * y,
+      cy = z0 * x - x0 * z,
+      cz = x0 * y - y0 * x,
+      m = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(cx * cx + cy * cy + cz * cz),
+      w = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])(m), // line weight = angle
+      v = m && -w / m; // area weight multiplier
+  X2 += v * cx;
+  Y2 += v * cy;
+  Z2 += v * cz;
+  W1 += w;
+  X1 += w * (x0 + (x0 = x));
+  Y1 += w * (y0 + (y0 = y));
+  Z1 += w * (z0 + (z0 = z));
+  centroidPointCartesian(x0, y0, z0);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(object) {
+  W0 = W1 =
+  X0 = Y0 = Z0 =
+  X1 = Y1 = Z1 =
+  X2 = Y2 = Z2 = 0;
+  Object(_stream_js__WEBPACK_IMPORTED_MODULE_2__["default"])(object, centroidStream);
+
+  var x = X2,
+      y = Y2,
+      z = Z2,
+      m = x * x + y * y + z * z;
+
+  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.
+  if (m < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon2"]) {
+    x = X1, y = Y1, z = Z1;
+    // If the feature has zero length, fall back to arithmetic mean of point vectors.
+    if (W1 < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) x = X0, y = Y0, z = Z0;
+    m = x * x + y * y + z * z;
+    // If the feature still has an undefined ccentroid, then return.
+    if (m < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon2"]) return [NaN, NaN];
+  }
+
+  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"], Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])(z / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(m)) * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"]];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/circle.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-geo/src/circle.js ***!
+  \*******************************************/
+/*! exports provided: circleStream, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "circleStream", function() { return circleStream; });
+/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cartesian.js */ "./node_modules/d3-geo/src/cartesian.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-geo/src/constant.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rotation.js */ "./node_modules/d3-geo/src/rotation.js");
+
+
+
+
+
+// Generates a circle centered at [0°, 0°], with a given radius and precision.
+function circleStream(stream, radius, delta, direction, t0, t1) {
+  if (!delta) return;
+  var cosRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(radius),
+      sinRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(radius),
+      step = direction * delta;
+  if (t0 == null) {
+    t0 = radius + direction * _math_js__WEBPACK_IMPORTED_MODULE_2__["tau"];
+    t1 = radius - step / 2;
+  } else {
+    t0 = circleRadius(cosRadius, t0);
+    t1 = circleRadius(cosRadius, t1);
+    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math_js__WEBPACK_IMPORTED_MODULE_2__["tau"];
+  }
+  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {
+    point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["spherical"])([cosRadius, -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(t), -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(t)]);
+    stream.point(point[0], point[1]);
+  }
+}
+
+// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].
+function circleRadius(cosRadius, point) {
+  point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesian"])(point), point[0] -= cosRadius;
+  Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianNormalizeInPlace"])(point);
+  var radius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["acos"])(-point[1]);
+  return ((-point[2] < 0 ? -radius : radius) + _math_js__WEBPACK_IMPORTED_MODULE_2__["tau"] - _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__["tau"];
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var center = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])([0, 0]),
+      radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(90),
+      precision = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(6),
+      ring,
+      rotate,
+      stream = {point: point};
+
+  function point(x, y) {
+    ring.push(x = rotate(x, y));
+    x[0] *= _math_js__WEBPACK_IMPORTED_MODULE_2__["degrees"], x[1] *= _math_js__WEBPACK_IMPORTED_MODULE_2__["degrees"];
+  }
+
+  function circle() {
+    var c = center.apply(this, arguments),
+        r = radius.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__["radians"],
+        p = precision.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__["radians"];
+    ring = [];
+    rotate = Object(_rotation_js__WEBPACK_IMPORTED_MODULE_3__["rotateRadians"])(-c[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__["radians"], -c[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__["radians"], 0).invert;
+    circleStream(stream, r, p, 1);
+    c = {type: "Polygon", coordinates: [ring]};
+    ring = rotate = null;
+    return c;
+  }
+
+  circle.center = function(_) {
+    return arguments.length ? (center = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])([+_[0], +_[1]]), circle) : center;
+  };
+
+  circle.radius = function(_) {
+    return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), circle) : radius;
+  };
+
+  circle.precision = function(_) {
+    return arguments.length ? (precision = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), circle) : precision;
+  };
+
+  return circle;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/antimeridian.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/antimeridian.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/clip/index.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(
+  function() { return true; },
+  clipAntimeridianLine,
+  clipAntimeridianInterpolate,
+  [-_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], -_math_js__WEBPACK_IMPORTED_MODULE_1__["halfPi"]]
+));
+
+// Takes a line and cuts into visible segments. Return values: 0 - there were
+// intersections or the line was empty; 1 - no intersections; 2 - there were
+// intersections, and the first and last segments should be rejoined.
+function clipAntimeridianLine(stream) {
+  var lambda0 = NaN,
+      phi0 = NaN,
+      sign0 = NaN,
+      clean; // no intersections
+
+  return {
+    lineStart: function() {
+      stream.lineStart();
+      clean = 1;
+    },
+    point: function(lambda1, phi1) {
+      var sign1 = lambda1 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__["pi"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"],
+          delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda1 - lambda0);
+      if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_1__["pi"]) < _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) { // line crosses a pole
+        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__["halfPi"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__["halfPi"]);
+        stream.point(sign0, phi0);
+        stream.lineEnd();
+        stream.lineStart();
+        stream.point(sign1, phi0);
+        stream.point(lambda1, phi0);
+        clean = 0;
+      } else if (sign0 !== sign1 && delta >= _math_js__WEBPACK_IMPORTED_MODULE_1__["pi"]) { // line crosses antimeridian
+        if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda0 - sign0) < _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) lambda0 -= sign0 * _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]; // handle degeneracies
+        if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda1 - sign1) < _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) lambda1 -= sign1 * _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"];
+        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);
+        stream.point(sign0, phi0);
+        stream.lineEnd();
+        stream.lineStart();
+        stream.point(sign1, phi0);
+        clean = 0;
+      }
+      stream.point(lambda0 = lambda1, phi0 = phi1);
+      sign0 = sign1;
+    },
+    lineEnd: function() {
+      stream.lineEnd();
+      lambda0 = phi0 = NaN;
+    },
+    clean: function() {
+      return 2 - clean; // if intersections, rejoin first and last segments
+    }
+  };
+}
+
+function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {
+  var cosPhi0,
+      cosPhi1,
+      sinLambda0Lambda1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda0 - lambda1);
+  return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(sinLambda0Lambda1) > _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]
+      ? Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["atan"])((Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi0) * (cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi1)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda1)
+          - Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi1) * (cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi0)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda0))
+          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))
+      : (phi0 + phi1) / 2;
+}
+
+function clipAntimeridianInterpolate(from, to, direction, stream) {
+  var phi;
+  if (from == null) {
+    phi = direction * _math_js__WEBPACK_IMPORTED_MODULE_1__["halfPi"];
+    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], phi);
+    stream.point(0, phi);
+    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], phi);
+    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], 0);
+    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], -phi);
+    stream.point(0, -phi);
+    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], -phi);
+    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], 0);
+    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"], phi);
+  } else if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(from[0] - to[0]) > _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) {
+    var lambda = from[0] < to[0] ? _math_js__WEBPACK_IMPORTED_MODULE_1__["pi"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"];
+    phi = direction * lambda / 2;
+    stream.point(-lambda, phi);
+    stream.point(0, phi);
+    stream.point(lambda, phi);
+  } else {
+    stream.point(to[0], to[1]);
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/buffer.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/buffer.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-geo/src/noop.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var lines = [],
+      line;
+  return {
+    point: function(x, y) {
+      line.push([x, y]);
+    },
+    lineStart: function() {
+      lines.push(line = []);
+    },
+    lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+    rejoin: function() {
+      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
+    },
+    result: function() {
+      var result = lines;
+      lines = [];
+      line = null;
+      return result;
+    }
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/circle.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/circle.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cartesian.js */ "./node_modules/d3-geo/src/cartesian.js");
+/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../circle.js */ "./node_modules/d3-geo/src/circle.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../pointEqual.js */ "./node_modules/d3-geo/src/pointEqual.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/clip/index.js");
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(radius) {
+  var cr = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(radius),
+      delta = 6 * _math_js__WEBPACK_IMPORTED_MODULE_2__["radians"],
+      smallRadius = cr > 0,
+      notHemisphere = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["abs"])(cr) > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]; // TODO optimise for this common case
+
+  function interpolate(from, to, direction, stream) {
+    Object(_circle_js__WEBPACK_IMPORTED_MODULE_1__["circleStream"])(stream, radius, delta, direction, from, to);
+  }
+
+  function visible(lambda, phi) {
+    return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(lambda) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(phi) > cr;
+  }
+
+  // Takes a line and cuts into visible segments. Return values used for polygon
+  // clipping: 0 - there were intersections or the line was empty; 1 - no
+  // intersections 2 - there were intersections, and the first and last segments
+  // should be rejoined.
+  function clipLine(stream) {
+    var point0, // previous point
+        c0, // code for previous point
+        v0, // visibility of previous point
+        v00, // visibility of first point
+        clean; // no intersections
+    return {
+      lineStart: function() {
+        v00 = v0 = false;
+        clean = 1;
+      },
+      point: function(lambda, phi) {
+        var point1 = [lambda, phi],
+            point2,
+            v = visible(lambda, phi),
+            c = smallRadius
+              ? v ? 0 : code(lambda, phi)
+              : v ? code(lambda + (lambda < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"] : -_math_js__WEBPACK_IMPORTED_MODULE_2__["pi"]), phi) : 0;
+        if (!point0 && (v00 = v0 = v)) stream.lineStart();
+        // Handle degeneracies.
+        // TODO ignore if not clipping polygons.
+        if (v !== v0) {
+          point2 = intersect(point0, point1);
+          if (!point2 || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__["default"])(point0, point2) || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__["default"])(point1, point2)) {
+            point1[0] += _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"];
+            point1[1] += _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"];
+            v = visible(point1[0], point1[1]);
+          }
+        }
+        if (v !== v0) {
+          clean = 0;
+          if (v) {
+            // outside going in
+            stream.lineStart();
+            point2 = intersect(point1, point0);
+            stream.point(point2[0], point2[1]);
+          } else {
+            // inside going out
+            point2 = intersect(point0, point1);
+            stream.point(point2[0], point2[1]);
+            stream.lineEnd();
+          }
+          point0 = point2;
+        } else if (notHemisphere && point0 && smallRadius ^ v) {
+          var t;
+          // If the codes for two points are different, or are both zero,
+          // and there this segment intersects with the small circle.
+          if (!(c & c0) && (t = intersect(point1, point0, true))) {
+            clean = 0;
+            if (smallRadius) {
+              stream.lineStart();
+              stream.point(t[0][0], t[0][1]);
+              stream.point(t[1][0], t[1][1]);
+              stream.lineEnd();
+            } else {
+              stream.point(t[1][0], t[1][1]);
+              stream.lineEnd();
+              stream.lineStart();
+              stream.point(t[0][0], t[0][1]);
+            }
+          }
+        }
+        if (v && (!point0 || !Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__["default"])(point0, point1))) {
+          stream.point(point1[0], point1[1]);
+        }
+        point0 = point1, v0 = v, c0 = c;
+      },
+      lineEnd: function() {
+        if (v0) stream.lineEnd();
+        point0 = null;
+      },
+      // Rejoin first and last segments if there were intersections and the first
+      // and last points were visible.
+      clean: function() {
+        return clean | ((v00 && v0) << 1);
+      }
+    };
+  }
+
+  // Intersects the great circle between a and b with the clip circle.
+  function intersect(a, b, two) {
+    var pa = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesian"])(a),
+        pb = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesian"])(b);
+
+    // We have two planes, n1.p = d1 and n2.p = d2.
+    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).
+    var n1 = [1, 0, 0], // normal
+        n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianCross"])(pa, pb),
+        n2n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(n2, n2),
+        n1n2 = n2[0], // cartesianDot(n1, n2),
+        determinant = n2n2 - n1n2 * n1n2;
+
+    // Two polar points.
+    if (!determinant) return !two && a;
+
+    var c1 =  cr * n2n2 / determinant,
+        c2 = -cr * n1n2 / determinant,
+        n1xn2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianCross"])(n1, n2),
+        A = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(n1, c1),
+        B = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(n2, c2);
+    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianAddInPlace"])(A, B);
+
+    // Solve |p(t)|^2 = 1.
+    var u = n1xn2,
+        w = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(A, u),
+        uu = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(u, u),
+        t2 = w * w - uu * (Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(A, A) - 1);
+
+    if (t2 < 0) return;
+
+    var t = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(t2),
+        q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(u, (-w - t) / uu);
+    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianAddInPlace"])(q, A);
+    q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["spherical"])(q);
+
+    if (!two) return q;
+
+    // Two intersection points.
+    var lambda0 = a[0],
+        lambda1 = b[0],
+        phi0 = a[1],
+        phi1 = b[1],
+        z;
+
+    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;
+
+    var delta = lambda1 - lambda0,
+        polar = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["abs"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"]) < _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"],
+        meridian = polar || delta < _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"];
+
+    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;
+
+    // Check that the first point is between a and b.
+    if (meridian
+        ? polar
+          ? phi0 + phi1 > 0 ^ q[1] < (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["abs"])(q[0] - lambda0) < _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"] ? phi0 : phi1)
+          : phi0 <= q[1] && q[1] <= phi1
+        : delta > _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"] ^ (lambda0 <= q[0] && q[0] <= lambda1)) {
+      var q1 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(u, (-w + t) / uu);
+      Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesianAddInPlace"])(q1, A);
+      return [q, Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["spherical"])(q1)];
+    }
+  }
+
+  // Generates a 4-bit vector representing the location of a point relative to
+  // the small circle's bounding box.
+  function code(lambda, phi) {
+    var r = smallRadius ? radius : _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"] - radius,
+        code = 0;
+    if (lambda < -r) code |= 1; // left
+    else if (lambda > r) code |= 2; // right
+    if (phi < -r) code |= 4; // below
+    else if (phi > r) code |= 8; // above
+    return code;
+  }
+
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-_math_js__WEBPACK_IMPORTED_MODULE_2__["pi"], radius - _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"]]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/extent.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/extent.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rectangle.js */ "./node_modules/d3-geo/src/clip/rectangle.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var x0 = 0,
+      y0 = 0,
+      x1 = 960,
+      y1 = 500,
+      cache,
+      cacheStream,
+      clip;
+
+  return clip = {
+    stream: function(stream) {
+      return cache && cacheStream === stream ? cache : cache = Object(_rectangle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(x0, y0, x1, y1)(cacheStream = stream);
+    },
+    extent: function(_) {
+      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];
+    }
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/index.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/index.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buffer.js */ "./node_modules/d3-geo/src/clip/buffer.js");
+/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rejoin.js */ "./node_modules/d3-geo/src/clip/rejoin.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../polygonContains.js */ "./node_modules/d3-geo/src/polygonContains.js");
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(pointVisible, clipLine, interpolate, start) {
+  return function(sink) {
+    var line = clipLine(sink),
+        ringBuffer = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+        ringSink = clipLine(ringBuffer),
+        polygonStarted = false,
+        polygon,
+        segments,
+        ring;
+
+    var clip = {
+      point: point,
+      lineStart: lineStart,
+      lineEnd: lineEnd,
+      polygonStart: function() {
+        clip.point = pointRing;
+        clip.lineStart = ringStart;
+        clip.lineEnd = ringEnd;
+        segments = [];
+        polygon = [];
+      },
+      polygonEnd: function() {
+        clip.point = point;
+        clip.lineStart = lineStart;
+        clip.lineEnd = lineEnd;
+        segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__["merge"])(segments);
+        var startInside = Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_3__["default"])(polygon, start);
+        if (segments.length) {
+          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
+          Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_1__["default"])(segments, compareIntersection, startInside, interpolate, sink);
+        } else if (startInside) {
+          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
+          sink.lineStart();
+          interpolate(null, null, 1, sink);
+          sink.lineEnd();
+        }
+        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;
+        segments = polygon = null;
+      },
+      sphere: function() {
+        sink.polygonStart();
+        sink.lineStart();
+        interpolate(null, null, 1, sink);
+        sink.lineEnd();
+        sink.polygonEnd();
+      }
+    };
+
+    function point(lambda, phi) {
+      if (pointVisible(lambda, phi)) sink.point(lambda, phi);
+    }
+
+    function pointLine(lambda, phi) {
+      line.point(lambda, phi);
+    }
+
+    function lineStart() {
+      clip.point = pointLine;
+      line.lineStart();
+    }
+
+    function lineEnd() {
+      clip.point = point;
+      line.lineEnd();
+    }
+
+    function pointRing(lambda, phi) {
+      ring.push([lambda, phi]);
+      ringSink.point(lambda, phi);
+    }
+
+    function ringStart() {
+      ringSink.lineStart();
+      ring = [];
+    }
+
+    function ringEnd() {
+      pointRing(ring[0][0], ring[0][1]);
+      ringSink.lineEnd();
+
+      var clean = ringSink.clean(),
+          ringSegments = ringBuffer.result(),
+          i, n = ringSegments.length, m,
+          segment,
+          point;
+
+      ring.pop();
+      polygon.push(ring);
+      ring = null;
+
+      if (!n) return;
+
+      // No intersections.
+      if (clean & 1) {
+        segment = ringSegments[0];
+        if ((m = segment.length - 1) > 0) {
+          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
+          sink.lineStart();
+          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);
+          sink.lineEnd();
+        }
+        return;
+      }
+
+      // Rejoin connected segments.
+      // TODO reuse ringBuffer.rejoin()?
+      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
+
+      segments.push(ringSegments.filter(validSegment));
+    }
+
+    return clip;
+  };
+});
+
+function validSegment(segment) {
+  return segment.length > 1;
+}
+
+// Intersections are sorted along the clip edge. For both antimeridian cutting
+// and circle clipping, the same comparison is used.
+function compareIntersection(a, b) {
+  return ((a = a.x)[0] < 0 ? a[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"] : _math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - a[1])
+       - ((b = b.x)[0] < 0 ? b[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"] : _math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - b[1]);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/line.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/line.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b, x0, y0, x1, y1) {
+  var ax = a[0],
+      ay = a[1],
+      bx = b[0],
+      by = b[1],
+      t0 = 0,
+      t1 = 1,
+      dx = bx - ax,
+      dy = by - ay,
+      r;
+
+  r = x0 - ax;
+  if (!dx && r > 0) return;
+  r /= dx;
+  if (dx < 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  } else if (dx > 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  }
+
+  r = x1 - ax;
+  if (!dx && r < 0) return;
+  r /= dx;
+  if (dx < 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  } else if (dx > 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  }
+
+  r = y0 - ay;
+  if (!dy && r > 0) return;
+  r /= dy;
+  if (dy < 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  } else if (dy > 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  }
+
+  r = y1 - ay;
+  if (!dy && r < 0) return;
+  r /= dy;
+  if (dy < 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  } else if (dy > 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  }
+
+  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;
+  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;
+  return true;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/rectangle.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/rectangle.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return clipRectangle; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buffer.js */ "./node_modules/d3-geo/src/clip/buffer.js");
+/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ "./node_modules/d3-geo/src/clip/line.js");
+/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rejoin.js */ "./node_modules/d3-geo/src/clip/rejoin.js");
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+
+
+
+
+
+
+var clipMax = 1e9, clipMin = -clipMax;
+
+// TODO Use d3-polygon’s polygonContains here for the ring check?
+// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?
+
+function clipRectangle(x0, y0, x1, y1) {
+
+  function visible(x, y) {
+    return x0 <= x && x <= x1 && y0 <= y && y <= y1;
+  }
+
+  function interpolate(from, to, direction, stream) {
+    var a = 0, a1 = 0;
+    if (from == null
+        || (a = corner(from, direction)) !== (a1 = corner(to, direction))
+        || comparePoint(from, to) < 0 ^ direction > 0) {
+      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
+      while ((a = (a + direction + 4) % 4) !== a1);
+    } else {
+      stream.point(to[0], to[1]);
+    }
+  }
+
+  function corner(p, direction) {
+    return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(p[0] - x0) < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"] ? direction > 0 ? 0 : 3
+        : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(p[0] - x1) < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"] ? direction > 0 ? 2 : 1
+        : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(p[1] - y0) < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"] ? direction > 0 ? 1 : 0
+        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon
+  }
+
+  function compareIntersection(a, b) {
+    return comparePoint(a.x, b.x);
+  }
+
+  function comparePoint(a, b) {
+    var ca = corner(a, 1),
+        cb = corner(b, 1);
+    return ca !== cb ? ca - cb
+        : ca === 0 ? b[1] - a[1]
+        : ca === 1 ? a[0] - b[0]
+        : ca === 2 ? a[1] - b[1]
+        : b[0] - a[0];
+  }
+
+  return function(stream) {
+    var activeStream = stream,
+        bufferStream = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_1__["default"])(),
+        segments,
+        polygon,
+        ring,
+        x__, y__, v__, // first point
+        x_, y_, v_, // previous point
+        first,
+        clean;
+
+    var clipStream = {
+      point: point,
+      lineStart: lineStart,
+      lineEnd: lineEnd,
+      polygonStart: polygonStart,
+      polygonEnd: polygonEnd
+    };
+
+    function point(x, y) {
+      if (visible(x, y)) activeStream.point(x, y);
+    }
+
+    function polygonInside() {
+      var winding = 0;
+
+      for (var i = 0, n = polygon.length; i < n; ++i) {
+        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {
+          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];
+          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }
+          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }
+        }
+      }
+
+      return winding;
+    }
+
+    // Buffer geometry within a polygon and then clip it en masse.
+    function polygonStart() {
+      activeStream = bufferStream, segments = [], polygon = [], clean = true;
+    }
+
+    function polygonEnd() {
+      var startInside = polygonInside(),
+          cleanInside = clean && startInside,
+          visible = (segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__["merge"])(segments)).length;
+      if (cleanInside || visible) {
+        stream.polygonStart();
+        if (cleanInside) {
+          stream.lineStart();
+          interpolate(null, null, 1, stream);
+          stream.lineEnd();
+        }
+        if (visible) {
+          Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_3__["default"])(segments, compareIntersection, startInside, interpolate, stream);
+        }
+        stream.polygonEnd();
+      }
+      activeStream = stream, segments = polygon = ring = null;
+    }
+
+    function lineStart() {
+      clipStream.point = linePoint;
+      if (polygon) polygon.push(ring = []);
+      first = true;
+      v_ = false;
+      x_ = y_ = NaN;
+    }
+
+    // TODO rather than special-case polygons, simply handle them separately.
+    // Ideally, coincident intersection points should be jittered to avoid
+    // clipping issues.
+    function lineEnd() {
+      if (segments) {
+        linePoint(x__, y__);
+        if (v__ && v_) bufferStream.rejoin();
+        segments.push(bufferStream.result());
+      }
+      clipStream.point = point;
+      if (v_) activeStream.lineEnd();
+    }
+
+    function linePoint(x, y) {
+      var v = visible(x, y);
+      if (polygon) ring.push([x, y]);
+      if (first) {
+        x__ = x, y__ = y, v__ = v;
+        first = false;
+        if (v) {
+          activeStream.lineStart();
+          activeStream.point(x, y);
+        }
+      } else {
+        if (v && v_) activeStream.point(x, y);
+        else {
+          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],
+              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];
+          if (Object(_line_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a, b, x0, y0, x1, y1)) {
+            if (!v_) {
+              activeStream.lineStart();
+              activeStream.point(a[0], a[1]);
+            }
+            activeStream.point(b[0], b[1]);
+            if (!v) activeStream.lineEnd();
+            clean = false;
+          } else if (v) {
+            activeStream.lineStart();
+            activeStream.point(x, y);
+            clean = false;
+          }
+        }
+      }
+      x_ = x, y_ = y, v_ = v;
+    }
+
+    return clipStream;
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/clip/rejoin.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-geo/src/clip/rejoin.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pointEqual.js */ "./node_modules/d3-geo/src/pointEqual.js");
+
+
+function Intersection(point, points, other, entry) {
+  this.x = point;
+  this.z = points;
+  this.o = other; // another intersection
+  this.e = entry; // is an entry?
+  this.v = false; // visited
+  this.n = this.p = null; // next & previous
+}
+
+// A generalized polygon clipping algorithm: given a polygon that has been cut
+// into its visible line segments, and rejoins the segments by interpolating
+// along the clip edge.
+/* harmony default export */ __webpack_exports__["default"] = (function(segments, compareIntersection, startInside, interpolate, stream) {
+  var subject = [],
+      clip = [],
+      i,
+      n;
+
+  segments.forEach(function(segment) {
+    if ((n = segment.length - 1) <= 0) return;
+    var n, p0 = segment[0], p1 = segment[n], x;
+
+    // If the first and last points of a segment are coincident, then treat as a
+    // closed ring. TODO if all rings are closed, then the winding order of the
+    // exterior ring should be checked.
+    if (Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_0__["default"])(p0, p1)) {
+      stream.lineStart();
+      for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);
+      stream.lineEnd();
+      return;
+    }
+
+    subject.push(x = new Intersection(p0, segment, null, true));
+    clip.push(x.o = new Intersection(p0, null, x, false));
+    subject.push(x = new Intersection(p1, segment, null, false));
+    clip.push(x.o = new Intersection(p1, null, x, true));
+  });
+
+  if (!subject.length) return;
+
+  clip.sort(compareIntersection);
+  link(subject);
+  link(clip);
+
+  for (i = 0, n = clip.length; i < n; ++i) {
+    clip[i].e = startInside = !startInside;
+  }
+
+  var start = subject[0],
+      points,
+      point;
+
+  while (1) {
+    // Find first unvisited intersection.
+    var current = start,
+        isSubject = true;
+    while (current.v) if ((current = current.n) === start) return;
+    points = current.z;
+    stream.lineStart();
+    do {
+      current.v = current.o.v = true;
+      if (current.e) {
+        if (isSubject) {
+          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);
+        } else {
+          interpolate(current.x, current.n.x, 1, stream);
+        }
+        current = current.n;
+      } else {
+        if (isSubject) {
+          points = current.p.z;
+          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);
+        } else {
+          interpolate(current.x, current.p.x, -1, stream);
+        }
+        current = current.p;
+      }
+      current = current.o;
+      points = current.z;
+      isSubject = !isSubject;
+    } while (!current.v);
+    stream.lineEnd();
+  }
+});
+
+function link(array) {
+  if (!(n = array.length)) return;
+  var n,
+      i = 0,
+      a = array[0],
+      b;
+  while (++i < n) {
+    a.n = b = array[i];
+    b.p = a;
+    a = b;
+  }
+  a.n = b = array[0];
+  b.p = a;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/compose.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-geo/src/compose.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+
+  function compose(x, y) {
+    return x = a(x, y), b(x[0], x[1]);
+  }
+
+  if (a.invert && b.invert) compose.invert = function(x, y) {
+    return x = b.invert(x, y), x && a.invert(x[0], x[1]);
+  };
+
+  return compose;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/constant.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-geo/src/constant.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/contains.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-geo/src/contains.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polygonContains.js */ "./node_modules/d3-geo/src/polygonContains.js");
+/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./distance.js */ "./node_modules/d3-geo/src/distance.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+
+
+var containsObjectType = {
+  Feature: function(object, point) {
+    return containsGeometry(object.geometry, point);
+  },
+  FeatureCollection: function(object, point) {
+    var features = object.features, i = -1, n = features.length;
+    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;
+    return false;
+  }
+};
+
+var containsGeometryType = {
+  Sphere: function() {
+    return true;
+  },
+  Point: function(object, point) {
+    return containsPoint(object.coordinates, point);
+  },
+  MultiPoint: function(object, point) {
+    var coordinates = object.coordinates, i = -1, n = coordinates.length;
+    while (++i < n) if (containsPoint(coordinates[i], point)) return true;
+    return false;
+  },
+  LineString: function(object, point) {
+    return containsLine(object.coordinates, point);
+  },
+  MultiLineString: function(object, point) {
+    var coordinates = object.coordinates, i = -1, n = coordinates.length;
+    while (++i < n) if (containsLine(coordinates[i], point)) return true;
+    return false;
+  },
+  Polygon: function(object, point) {
+    return containsPolygon(object.coordinates, point);
+  },
+  MultiPolygon: function(object, point) {
+    var coordinates = object.coordinates, i = -1, n = coordinates.length;
+    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;
+    return false;
+  },
+  GeometryCollection: function(object, point) {
+    var geometries = object.geometries, i = -1, n = geometries.length;
+    while (++i < n) if (containsGeometry(geometries[i], point)) return true;
+    return false;
+  }
+};
+
+function containsGeometry(geometry, point) {
+  return geometry && containsGeometryType.hasOwnProperty(geometry.type)
+      ? containsGeometryType[geometry.type](geometry, point)
+      : false;
+}
+
+function containsPoint(coordinates, point) {
+  return Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__["default"])(coordinates, point) === 0;
+}
+
+function containsLine(coordinates, point) {
+  var ao, bo, ab;
+  for (var i = 0, n = coordinates.length; i < n; i++) {
+    bo = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__["default"])(coordinates[i], point);
+    if (bo === 0) return true;
+    if (i > 0) {
+      ab = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__["default"])(coordinates[i], coordinates[i - 1]);
+      if (
+        ab > 0 &&
+        ao <= ab &&
+        bo <= ab &&
+        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon2"] * ab
+      )
+        return true;
+    }
+    ao = bo;
+  }
+  return false;
+}
+
+function containsPolygon(coordinates, point) {
+  return !!Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_0__["default"])(coordinates.map(ringRadians), pointRadians(point));
+}
+
+function ringRadians(ring) {
+  return ring = ring.map(pointRadians), ring.pop(), ring;
+}
+
+function pointRadians(point) {
+  return [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__["radians"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__["radians"]];
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(object, point) {
+  return (object && containsObjectType.hasOwnProperty(object.type)
+      ? containsObjectType[object.type]
+      : containsGeometry)(object, point);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/distance.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-geo/src/distance.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./length.js */ "./node_modules/d3-geo/src/length.js");
+
+
+var coordinates = [null, null],
+    object = {type: "LineString", coordinates: coordinates};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  coordinates[0] = a;
+  coordinates[1] = b;
+  return Object(_length_js__WEBPACK_IMPORTED_MODULE_0__["default"])(object);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/graticule.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-geo/src/graticule.js ***!
+  \**********************************************/
+/*! exports provided: default, graticule10 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return graticule; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "graticule10", function() { return graticule10; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+
+function graticuleX(y0, y1, dy) {
+  var y = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(y0, y1 - _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"], dy).concat(y1);
+  return function(x) { return y.map(function(y) { return [x, y]; }); };
+}
+
+function graticuleY(x0, x1, dx) {
+  var x = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(x0, x1 - _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"], dx).concat(x1);
+  return function(y) { return x.map(function(x) { return [x, y]; }); };
+}
+
+function graticule() {
+  var x1, x0, X1, X0,
+      y1, y0, Y1, Y0,
+      dx = 10, dy = dx, DX = 90, DY = 360,
+      x, y, X, Y,
+      precision = 2.5;
+
+  function graticule() {
+    return {type: "MultiLineString", coordinates: lines()};
+  }
+
+  function lines() {
+    return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["ceil"])(X0 / DX) * DX, X1, DX).map(X)
+        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["ceil"])(Y0 / DY) * DY, Y1, DY).map(Y))
+        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["ceil"])(x0 / dx) * dx, x1, dx).filter(function(x) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(x % DX) > _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]; }).map(x))
+        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["ceil"])(y0 / dy) * dy, y1, dy).filter(function(y) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(y % DY) > _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]; }).map(y));
+  }
+
+  graticule.lines = function() {
+    return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; });
+  };
+
+  graticule.outline = function() {
+    return {
+      type: "Polygon",
+      coordinates: [
+        X(X0).concat(
+        Y(Y1).slice(1),
+        X(X1).reverse().slice(1),
+        Y(Y0).reverse().slice(1))
+      ]
+    };
+  };
+
+  graticule.extent = function(_) {
+    if (!arguments.length) return graticule.extentMinor();
+    return graticule.extentMajor(_).extentMinor(_);
+  };
+
+  graticule.extentMajor = function(_) {
+    if (!arguments.length) return [[X0, Y0], [X1, Y1]];
+    X0 = +_[0][0], X1 = +_[1][0];
+    Y0 = +_[0][1], Y1 = +_[1][1];
+    if (X0 > X1) _ = X0, X0 = X1, X1 = _;
+    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
+    return graticule.precision(precision);
+  };
+
+  graticule.extentMinor = function(_) {
+    if (!arguments.length) return [[x0, y0], [x1, y1]];
+    x0 = +_[0][0], x1 = +_[1][0];
+    y0 = +_[0][1], y1 = +_[1][1];
+    if (x0 > x1) _ = x0, x0 = x1, x1 = _;
+    if (y0 > y1) _ = y0, y0 = y1, y1 = _;
+    return graticule.precision(precision);
+  };
+
+  graticule.step = function(_) {
+    if (!arguments.length) return graticule.stepMinor();
+    return graticule.stepMajor(_).stepMinor(_);
+  };
+
+  graticule.stepMajor = function(_) {
+    if (!arguments.length) return [DX, DY];
+    DX = +_[0], DY = +_[1];
+    return graticule;
+  };
+
+  graticule.stepMinor = function(_) {
+    if (!arguments.length) return [dx, dy];
+    dx = +_[0], dy = +_[1];
+    return graticule;
+  };
+
+  graticule.precision = function(_) {
+    if (!arguments.length) return precision;
+    precision = +_;
+    x = graticuleX(y0, y1, 90);
+    y = graticuleY(x0, x1, precision);
+    X = graticuleX(Y0, Y1, 90);
+    Y = graticuleY(X0, X1, precision);
+    return graticule;
+  };
+
+  return graticule
+      .extentMajor([[-180, -90 + _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]], [180, 90 - _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]]])
+      .extentMinor([[-180, -80 - _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]], [180, 80 + _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"]]]);
+}
+
+function graticule10() {
+  return graticule()();
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/identity.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-geo/src/identity.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return x;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/index.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-geo/src/index.js ***!
+  \******************************************/
+/*! exports provided: geoArea, geoBounds, geoCentroid, geoCircle, geoClipAntimeridian, geoClipCircle, geoClipExtent, geoClipRectangle, geoContains, geoDistance, geoGraticule, geoGraticule10, geoInterpolate, geoLength, geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEqualAreaRaw, geoAzimuthalEquidistant, geoAzimuthalEquidistantRaw, geoConicConformal, geoConicConformalRaw, geoConicEqualArea, geoConicEqualAreaRaw, geoConicEquidistant, geoConicEquidistantRaw, geoEqualEarth, geoEqualEarthRaw, geoEquirectangular, geoEquirectangularRaw, geoGnomonic, geoGnomonicRaw, geoIdentity, geoProjection, geoProjectionMutator, geoMercator, geoMercatorRaw, geoNaturalEarth1, geoNaturalEarth1Raw, geoOrthographic, geoOrthographicRaw, geoStereographic, geoStereographicRaw, geoTransverseMercator, geoTransverseMercatorRaw, geoRotation, geoStream, geoTransform */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ "./node_modules/d3-geo/src/area.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoArea", function() { return _area_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounds.js */ "./node_modules/d3-geo/src/bounds.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoBounds", function() { return _bounds_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./centroid.js */ "./node_modules/d3-geo/src/centroid.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoCentroid", function() { return _centroid_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./circle.js */ "./node_modules/d3-geo/src/circle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoCircle", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip/antimeridian.js */ "./node_modules/d3-geo/src/clip/antimeridian.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipAntimeridian", function() { return _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./clip/circle.js */ "./node_modules/d3-geo/src/clip/circle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipCircle", function() { return _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clip/extent.js */ "./node_modules/d3-geo/src/clip/extent.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipExtent", function() { return _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./clip/rectangle.js */ "./node_modules/d3-geo/src/clip/rectangle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipRectangle", function() { return _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./contains.js */ "./node_modules/d3-geo/src/contains.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoContains", function() { return _contains_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./distance.js */ "./node_modules/d3-geo/src/distance.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoDistance", function() { return _distance_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _graticule_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./graticule.js */ "./node_modules/d3-geo/src/graticule.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGraticule", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGraticule10", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__["graticule10"]; });
+
+/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./interpolate.js */ "./node_modules/d3-geo/src/interpolate.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoInterpolate", function() { return _interpolate_js__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./length.js */ "./node_modules/d3-geo/src/length.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoLength", function() { return _length_js__WEBPACK_IMPORTED_MODULE_12__["default"]; });
+
+/* harmony import */ var _path_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./path/index.js */ "./node_modules/d3-geo/src/path/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoPath", function() { return _path_index_js__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony import */ var _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./projection/albers.js */ "./node_modules/d3-geo/src/projection/albers.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAlbers", function() { return _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony import */ var _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./projection/albersUsa.js */ "./node_modules/d3-geo/src/projection/albersUsa.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAlbersUsa", function() { return _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__["default"]; });
+
+/* harmony import */ var _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./projection/azimuthalEqualArea.js */ "./node_modules/d3-geo/src/projection/azimuthalEqualArea.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEqualArea", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEqualAreaRaw", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__["azimuthalEqualAreaRaw"]; });
+
+/* harmony import */ var _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./projection/azimuthalEquidistant.js */ "./node_modules/d3-geo/src/projection/azimuthalEquidistant.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEquidistant", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEquidistantRaw", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__["azimuthalEquidistantRaw"]; });
+
+/* harmony import */ var _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./projection/conicConformal.js */ "./node_modules/d3-geo/src/projection/conicConformal.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicConformal", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicConformalRaw", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__["conicConformalRaw"]; });
+
+/* harmony import */ var _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./projection/conicEqualArea.js */ "./node_modules/d3-geo/src/projection/conicEqualArea.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEqualArea", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEqualAreaRaw", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__["conicEqualAreaRaw"]; });
+
+/* harmony import */ var _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./projection/conicEquidistant.js */ "./node_modules/d3-geo/src/projection/conicEquidistant.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEquidistant", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEquidistantRaw", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__["conicEquidistantRaw"]; });
+
+/* harmony import */ var _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./projection/equalEarth.js */ "./node_modules/d3-geo/src/projection/equalEarth.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEqualEarth", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEqualEarthRaw", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__["equalEarthRaw"]; });
+
+/* harmony import */ var _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./projection/equirectangular.js */ "./node_modules/d3-geo/src/projection/equirectangular.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEquirectangular", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEquirectangularRaw", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__["equirectangularRaw"]; });
+
+/* harmony import */ var _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./projection/gnomonic.js */ "./node_modules/d3-geo/src/projection/gnomonic.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGnomonic", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGnomonicRaw", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__["gnomonicRaw"]; });
+
+/* harmony import */ var _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./projection/identity.js */ "./node_modules/d3-geo/src/projection/identity.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoIdentity", function() { return _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__["default"]; });
+
+/* harmony import */ var _projection_index_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./projection/index.js */ "./node_modules/d3-geo/src/projection/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoProjection", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoProjectionMutator", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__["projectionMutator"]; });
+
+/* harmony import */ var _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./projection/mercator.js */ "./node_modules/d3-geo/src/projection/mercator.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoMercator", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoMercatorRaw", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__["mercatorRaw"]; });
+
+/* harmony import */ var _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./projection/naturalEarth1.js */ "./node_modules/d3-geo/src/projection/naturalEarth1.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoNaturalEarth1", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoNaturalEarth1Raw", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__["naturalEarth1Raw"]; });
+
+/* harmony import */ var _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./projection/orthographic.js */ "./node_modules/d3-geo/src/projection/orthographic.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoOrthographic", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoOrthographicRaw", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__["orthographicRaw"]; });
+
+/* harmony import */ var _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./projection/stereographic.js */ "./node_modules/d3-geo/src/projection/stereographic.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoStereographic", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoStereographicRaw", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__["stereographicRaw"]; });
+
+/* harmony import */ var _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./projection/transverseMercator.js */ "./node_modules/d3-geo/src/projection/transverseMercator.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoTransverseMercator", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoTransverseMercatorRaw", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__["transverseMercatorRaw"]; });
+
+/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rotation.js */ "./node_modules/d3-geo/src/rotation.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoRotation", function() { return _rotation_js__WEBPACK_IMPORTED_MODULE_31__["default"]; });
+
+/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stream.js */ "./node_modules/d3-geo/src/stream.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoStream", function() { return _stream_js__WEBPACK_IMPORTED_MODULE_32__["default"]; });
+
+/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./transform.js */ "./node_modules/d3-geo/src/transform.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoTransform", function() { return _transform_js__WEBPACK_IMPORTED_MODULE_33__["default"]; });
+
+
+
+
+
+
+
+ // DEPRECATED! Use d3.geoIdentity().clipExtent(…).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/interpolate.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-geo/src/interpolate.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  var x0 = a[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"],
+      y0 = a[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"],
+      x1 = b[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"],
+      y1 = b[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"],
+      cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y0),
+      sy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0),
+      cy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y1),
+      sy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y1),
+      kx0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(x0),
+      ky0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(x0),
+      kx1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(x1),
+      ky1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(x1),
+      d = 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["haversin"])(y1 - y0) + cy0 * cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["haversin"])(x1 - x0))),
+      k = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(d);
+
+  var interpolate = d ? function(t) {
+    var B = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(t *= d) / k,
+        A = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(d - t) / k,
+        x = A * kx0 + B * kx1,
+        y = A * ky0 + B * ky1,
+        z = A * sy0 + B * sy1;
+    return [
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"],
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(z, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + y * y)) * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"]
+    ];
+  } : function() {
+    return [x0 * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"], y0 * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"]];
+  };
+
+  interpolate.distance = d;
+
+  return interpolate;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/length.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-geo/src/length.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adder.js */ "./node_modules/d3-geo/src/adder.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ "./node_modules/d3-geo/src/noop.js");
+/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ "./node_modules/d3-geo/src/stream.js");
+
+
+
+
+
+var lengthSum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+    lambda0,
+    sinPhi0,
+    cosPhi0;
+
+var lengthStream = {
+  sphere: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  lineStart: lengthLineStart,
+  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"]
+};
+
+function lengthLineStart() {
+  lengthStream.point = lengthPointFirst;
+  lengthStream.lineEnd = lengthLineEnd;
+}
+
+function lengthLineEnd() {
+  lengthStream.point = lengthStream.lineEnd = _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"];
+}
+
+function lengthPointFirst(lambda, phi) {
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"];
+  lambda0 = lambda, sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi), cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi);
+  lengthStream.point = lengthPoint;
+}
+
+function lengthPoint(lambda, phi) {
+  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"];
+  var sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
+      cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
+      delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda - lambda0),
+      cosDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(delta),
+      sinDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(delta),
+      x = cosPhi * sinDelta,
+      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,
+      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;
+  lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["atan2"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sqrt"])(x * x + y * y), z));
+  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(object) {
+  lengthSum.reset();
+  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__["default"])(object, lengthStream);
+  return +lengthSum;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/math.js":
+/*!*****************************************!*\
+  !*** ./node_modules/d3-geo/src/math.js ***!
+  \*****************************************/
+/*! exports provided: epsilon, epsilon2, pi, halfPi, quarterPi, tau, degrees, radians, abs, atan, atan2, cos, ceil, exp, floor, log, pow, sin, sign, sqrt, tan, acos, asin, haversin */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "epsilon", function() { return epsilon; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "epsilon2", function() { return epsilon2; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pi", function() { return pi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "halfPi", function() { return halfPi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "quarterPi", function() { return quarterPi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tau", function() { return tau; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "degrees", function() { return degrees; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "radians", function() { return radians; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "abs", function() { return abs; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "atan", function() { return atan; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "atan2", function() { return atan2; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cos", function() { return cos; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ceil", function() { return ceil; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exp", function() { return exp; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "floor", function() { return floor; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pow", function() { return pow; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sin", function() { return sin; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sign", function() { return sign; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sqrt", function() { return sqrt; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tan", function() { return tan; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "acos", function() { return acos; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asin", function() { return asin; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "haversin", function() { return haversin; });
+var epsilon = 1e-6;
+var epsilon2 = 1e-12;
+var pi = Math.PI;
+var halfPi = pi / 2;
+var quarterPi = pi / 4;
+var tau = pi * 2;
+
+var degrees = 180 / pi;
+var radians = pi / 180;
+
+var abs = Math.abs;
+var atan = Math.atan;
+var atan2 = Math.atan2;
+var cos = Math.cos;
+var ceil = Math.ceil;
+var exp = Math.exp;
+var floor = Math.floor;
+var log = Math.log;
+var pow = Math.pow;
+var sin = Math.sin;
+var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };
+var sqrt = Math.sqrt;
+var tan = Math.tan;
+
+function acos(x) {
+  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);
+}
+
+function asin(x) {
+  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);
+}
+
+function haversin(x) {
+  return (x = sin(x / 2)) * x;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/noop.js":
+/*!*****************************************!*\
+  !*** ./node_modules/d3-geo/src/noop.js ***!
+  \*****************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return noop; });
+function noop() {}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/path/area.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-geo/src/path/area.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../adder.js */ "./node_modules/d3-geo/src/adder.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-geo/src/noop.js");
+
+
+
+
+var areaSum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+    areaRingSum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+    x00,
+    y00,
+    x0,
+    y0;
+
+var areaStream = {
+  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  polygonStart: function() {
+    areaStream.lineStart = areaRingStart;
+    areaStream.lineEnd = areaRingEnd;
+  },
+  polygonEnd: function() {
+    areaStream.lineStart = areaStream.lineEnd = areaStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"];
+    areaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(areaRingSum));
+    areaRingSum.reset();
+  },
+  result: function() {
+    var area = areaSum / 2;
+    areaSum.reset();
+    return area;
+  }
+};
+
+function areaRingStart() {
+  areaStream.point = areaPointFirst;
+}
+
+function areaPointFirst(x, y) {
+  areaStream.point = areaPoint;
+  x00 = x0 = x, y00 = y0 = y;
+}
+
+function areaPoint(x, y) {
+  areaRingSum.add(y0 * x - x0 * y);
+  x0 = x, y0 = y;
+}
+
+function areaRingEnd() {
+  areaPoint(x00, y00);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (areaStream);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/path/bounds.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-geo/src/path/bounds.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-geo/src/noop.js");
+
+
+var x0 = Infinity,
+    y0 = x0,
+    x1 = -x0,
+    y1 = x1;
+
+var boundsStream = {
+  point: boundsPoint,
+  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  result: function() {
+    var bounds = [[x0, y0], [x1, y1]];
+    x1 = y1 = -(y0 = x0 = Infinity);
+    return bounds;
+  }
+};
+
+function boundsPoint(x, y) {
+  if (x < x0) x0 = x;
+  if (x > x1) x1 = x;
+  if (y < y0) y0 = y;
+  if (y > y1) y1 = y;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (boundsStream);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/path/centroid.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-geo/src/path/centroid.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+// TODO Enforce positive area for exterior, negative area for interior?
+
+var X0 = 0,
+    Y0 = 0,
+    Z0 = 0,
+    X1 = 0,
+    Y1 = 0,
+    Z1 = 0,
+    X2 = 0,
+    Y2 = 0,
+    Z2 = 0,
+    x00,
+    y00,
+    x0,
+    y0;
+
+var centroidStream = {
+  point: centroidPoint,
+  lineStart: centroidLineStart,
+  lineEnd: centroidLineEnd,
+  polygonStart: function() {
+    centroidStream.lineStart = centroidRingStart;
+    centroidStream.lineEnd = centroidRingEnd;
+  },
+  polygonEnd: function() {
+    centroidStream.point = centroidPoint;
+    centroidStream.lineStart = centroidLineStart;
+    centroidStream.lineEnd = centroidLineEnd;
+  },
+  result: function() {
+    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]
+        : Z1 ? [X1 / Z1, Y1 / Z1]
+        : Z0 ? [X0 / Z0, Y0 / Z0]
+        : [NaN, NaN];
+    X0 = Y0 = Z0 =
+    X1 = Y1 = Z1 =
+    X2 = Y2 = Z2 = 0;
+    return centroid;
+  }
+};
+
+function centroidPoint(x, y) {
+  X0 += x;
+  Y0 += y;
+  ++Z0;
+}
+
+function centroidLineStart() {
+  centroidStream.point = centroidPointFirstLine;
+}
+
+function centroidPointFirstLine(x, y) {
+  centroidStream.point = centroidPointLine;
+  centroidPoint(x0 = x, y0 = y);
+}
+
+function centroidPointLine(x, y) {
+  var dx = x - x0, dy = y - y0, z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(dx * dx + dy * dy);
+  X1 += z * (x0 + x) / 2;
+  Y1 += z * (y0 + y) / 2;
+  Z1 += z;
+  centroidPoint(x0 = x, y0 = y);
+}
+
+function centroidLineEnd() {
+  centroidStream.point = centroidPoint;
+}
+
+function centroidRingStart() {
+  centroidStream.point = centroidPointFirstRing;
+}
+
+function centroidRingEnd() {
+  centroidPointRing(x00, y00);
+}
+
+function centroidPointFirstRing(x, y) {
+  centroidStream.point = centroidPointRing;
+  centroidPoint(x00 = x0 = x, y00 = y0 = y);
+}
+
+function centroidPointRing(x, y) {
+  var dx = x - x0,
+      dy = y - y0,
+      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(dx * dx + dy * dy);
+
+  X1 += z * (x0 + x) / 2;
+  Y1 += z * (y0 + y) / 2;
+  Z1 += z;
+
+  z = y0 * x - x0 * y;
+  X2 += z * (x0 + x);
+  Y2 += z * (y0 + y);
+  Z2 += z * 3;
+  centroidPoint(x0 = x, y0 = y);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (centroidStream);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/path/context.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-geo/src/path/context.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return PathContext; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-geo/src/noop.js");
+
+
+
+function PathContext(context) {
+  this._context = context;
+}
+
+PathContext.prototype = {
+  _radius: 4.5,
+  pointRadius: function(_) {
+    return this._radius = _, this;
+  },
+  polygonStart: function() {
+    this._line = 0;
+  },
+  polygonEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (this._line === 0) this._context.closePath();
+    this._point = NaN;
+  },
+  point: function(x, y) {
+    switch (this._point) {
+      case 0: {
+        this._context.moveTo(x, y);
+        this._point = 1;
+        break;
+      }
+      case 1: {
+        this._context.lineTo(x, y);
+        break;
+      }
+      default: {
+        this._context.moveTo(x + this._radius, y);
+        this._context.arc(x, y, this._radius, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__["tau"]);
+        break;
+      }
+    }
+  },
+  result: _noop_js__WEBPACK_IMPORTED_MODULE_1__["default"]
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/path/index.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-geo/src/path/index.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../identity.js */ "./node_modules/d3-geo/src/identity.js");
+/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stream.js */ "./node_modules/d3-geo/src/stream.js");
+/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./area.js */ "./node_modules/d3-geo/src/path/area.js");
+/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds.js */ "./node_modules/d3-geo/src/path/bounds.js");
+/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./centroid.js */ "./node_modules/d3-geo/src/path/centroid.js");
+/* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./context.js */ "./node_modules/d3-geo/src/path/context.js");
+/* harmony import */ var _measure_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./measure.js */ "./node_modules/d3-geo/src/path/measure.js");
+/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./string.js */ "./node_modules/d3-geo/src/path/string.js");
+
+
+
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(projection, context) {
+  var pointRadius = 4.5,
+      projectionStream,
+      contextStream;
+
+  function path(object) {
+    if (object) {
+      if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
+      Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(contextStream));
+    }
+    return contextStream.result();
+  }
+
+  path.area = function(object) {
+    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_area_js__WEBPACK_IMPORTED_MODULE_2__["default"]));
+    return _area_js__WEBPACK_IMPORTED_MODULE_2__["default"].result();
+  };
+
+  path.measure = function(object) {
+    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_measure_js__WEBPACK_IMPORTED_MODULE_6__["default"]));
+    return _measure_js__WEBPACK_IMPORTED_MODULE_6__["default"].result();
+  };
+
+  path.bounds = function(object) {
+    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_bounds_js__WEBPACK_IMPORTED_MODULE_3__["default"]));
+    return _bounds_js__WEBPACK_IMPORTED_MODULE_3__["default"].result();
+  };
+
+  path.centroid = function(object) {
+    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_centroid_js__WEBPACK_IMPORTED_MODULE_4__["default"]));
+    return _centroid_js__WEBPACK_IMPORTED_MODULE_4__["default"].result();
+  };
+
+  path.projection = function(_) {
+    return arguments.length ? (projectionStream = _ == null ? (projection = null, _identity_js__WEBPACK_IMPORTED_MODULE_0__["default"]) : (projection = _).stream, path) : projection;
+  };
+
+  path.context = function(_) {
+    if (!arguments.length) return context;
+    contextStream = _ == null ? (context = null, new _string_js__WEBPACK_IMPORTED_MODULE_7__["default"]) : new _context_js__WEBPACK_IMPORTED_MODULE_5__["default"](context = _);
+    if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
+    return path;
+  };
+
+  path.pointRadius = function(_) {
+    if (!arguments.length) return pointRadius;
+    pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
+    return path;
+  };
+
+  return path.projection(projection).context(context);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/path/measure.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-geo/src/path/measure.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../adder.js */ "./node_modules/d3-geo/src/adder.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-geo/src/noop.js");
+
+
+
+
+var lengthSum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(),
+    lengthRing,
+    x00,
+    y00,
+    x0,
+    y0;
+
+var lengthStream = {
+  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  lineStart: function() {
+    lengthStream.point = lengthPointFirst;
+  },
+  lineEnd: function() {
+    if (lengthRing) lengthPoint(x00, y00);
+    lengthStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__["default"];
+  },
+  polygonStart: function() {
+    lengthRing = true;
+  },
+  polygonEnd: function() {
+    lengthRing = null;
+  },
+  result: function() {
+    var length = +lengthSum;
+    lengthSum.reset();
+    return length;
+  }
+};
+
+function lengthPointFirst(x, y) {
+  lengthStream.point = lengthPoint;
+  x00 = x0 = x, y00 = y0 = y;
+}
+
+function lengthPoint(x, y) {
+  x0 -= x, y0 -= y;
+  lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sqrt"])(x0 * x0 + y0 * y0));
+  x0 = x, y0 = y;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (lengthStream);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/path/string.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-geo/src/path/string.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return PathString; });
+function PathString() {
+  this._string = [];
+}
+
+PathString.prototype = {
+  _radius: 4.5,
+  _circle: circle(4.5),
+  pointRadius: function(_) {
+    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;
+    return this;
+  },
+  polygonStart: function() {
+    this._line = 0;
+  },
+  polygonEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (this._line === 0) this._string.push("Z");
+    this._point = NaN;
+  },
+  point: function(x, y) {
+    switch (this._point) {
+      case 0: {
+        this._string.push("M", x, ",", y);
+        this._point = 1;
+        break;
+      }
+      case 1: {
+        this._string.push("L", x, ",", y);
+        break;
+      }
+      default: {
+        if (this._circle == null) this._circle = circle(this._radius);
+        this._string.push("M", x, ",", y, this._circle);
+        break;
+      }
+    }
+  },
+  result: function() {
+    if (this._string.length) {
+      var result = this._string.join("");
+      this._string = [];
+      return result;
+    } else {
+      return null;
+    }
+  }
+};
+
+function circle(radius) {
+  return "m0," + radius
+      + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius
+      + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius
+      + "z";
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/pointEqual.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-geo/src/pointEqual.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(a[0] - b[0]) < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"] && Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(a[1] - b[1]) < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/polygonContains.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-geo/src/polygonContains.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adder.js */ "./node_modules/d3-geo/src/adder.js");
+/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cartesian.js */ "./node_modules/d3-geo/src/cartesian.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+
+
+var sum = Object(_adder_js__WEBPACK_IMPORTED_MODULE_0__["default"])();
+
+function longitude(point) {
+  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["abs"])(point[0]) <= _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"])
+    return point[0];
+  else
+    return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sign"])(point[0]) * ((Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["abs"])(point[0]) + _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__["tau"] - _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"]);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(polygon, point) {
+  var lambda = longitude(point),
+      phi = point[1],
+      sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(phi),
+      normal = [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(lambda), -Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(lambda), 0],
+      angle = 0,
+      winding = 0;
+
+  sum.reset();
+
+  if (sinPhi === 1) phi = _math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"] + _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"];
+  else if (sinPhi === -1) phi = -_math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"];
+
+  for (var i = 0, n = polygon.length; i < n; ++i) {
+    if (!(m = (ring = polygon[i]).length)) continue;
+    var ring,
+        m,
+        point0 = ring[m - 1],
+        lambda0 = longitude(point0),
+        phi0 = point0[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__["quarterPi"],
+        sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(phi0),
+        cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(phi0);
+
+    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {
+      var point1 = ring[j],
+          lambda1 = longitude(point1),
+          phi1 = point1[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__["quarterPi"],
+          sinPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(phi1),
+          cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(phi1),
+          delta = lambda1 - lambda0,
+          sign = delta >= 0 ? 1 : -1,
+          absDelta = sign * delta,
+          antimeridian = absDelta > _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"],
+          k = sinPhi0 * sinPhi1;
+
+      sum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(k * sign * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(absDelta), cosPhi0 * cosPhi1 + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(absDelta)));
+      angle += antimeridian ? delta + sign * _math_js__WEBPACK_IMPORTED_MODULE_2__["tau"] : delta;
+
+      // Are the longitudes either side of the point’s meridian (lambda),
+      // and are the latitudes smaller than the parallel (phi)?
+      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {
+        var arc = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__["cartesianCross"])(Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__["cartesian"])(point0), Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__["cartesian"])(point1));
+        Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__["cartesianNormalizeInPlace"])(arc);
+        var intersection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__["cartesianCross"])(normal, arc);
+        Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__["cartesianNormalizeInPlace"])(intersection);
+        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["asin"])(intersection[2]);
+        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {
+          winding += antimeridian ^ delta >= 0 ? 1 : -1;
+        }
+      }
+    }
+  }
+
+  // First, determine whether the South pole is inside or outside:
+  //
+  // It is inside if:
+  // * the polygon winds around it in a clockwise direction.
+  // * the polygon does not (cumulatively) wind around it, but has a negative
+  //   (counter-clockwise) area.
+  //
+  // Second, count the (signed) number of times a segment crosses a lambda
+  // from the point to the South pole.  If it is zero, then the point is the
+  // same side as the South pole.
+
+  return (angle < -_math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"] || angle < _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"] && sum < -_math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) ^ (winding & 1);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/albers.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/albers.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./conicEqualArea.js */ "./node_modules/d3-geo/src/projection/conicEqualArea.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__["default"])()
+      .parallels([29.5, 45.5])
+      .scale(1070)
+      .translate([480, 250])
+      .rotate([96, 0])
+      .center([-0.6, 38.7]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/albersUsa.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/albersUsa.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _albers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./albers.js */ "./node_modules/d3-geo/src/projection/albers.js");
+/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conicEqualArea.js */ "./node_modules/d3-geo/src/projection/conicEqualArea.js");
+/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ "./node_modules/d3-geo/src/projection/fit.js");
+
+
+
+
+
+// The projections must have mutually exclusive clip regions on the sphere,
+// as this will avoid emitting interleaving lines and polygons.
+function multiplex(streams) {
+  var n = streams.length;
+  return {
+    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },
+    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },
+    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },
+    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },
+    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },
+    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }
+  };
+}
+
+// A composite projection for the United States, configured by default for
+// 960×500. The projection also works quite well at 960×600 if you change the
+// scale to 1285 and adjust the translate accordingly. The set of standard
+// parallels for each region comes from USGS, which is published here:
+// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var cache,
+      cacheStream,
+      lower48 = Object(_albers_js__WEBPACK_IMPORTED_MODULE_1__["default"])(), lower48Point,
+      alaska = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__["default"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338
+      hawaii = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__["default"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007
+      point, pointStream = {point: function(x, y) { point = [x, y]; }};
+
+  function albersUsa(coordinates) {
+    var x = coordinates[0], y = coordinates[1];
+    return point = null,
+        (lower48Point.point(x, y), point)
+        || (alaskaPoint.point(x, y), point)
+        || (hawaiiPoint.point(x, y), point);
+  }
+
+  albersUsa.invert = function(coordinates) {
+    var k = lower48.scale(),
+        t = lower48.translate(),
+        x = (coordinates[0] - t[0]) / k,
+        y = (coordinates[1] - t[1]) / k;
+    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska
+        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii
+        : lower48).invert(coordinates);
+  };
+
+  albersUsa.stream = function(stream) {
+    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);
+  };
+
+  albersUsa.precision = function(_) {
+    if (!arguments.length) return lower48.precision();
+    lower48.precision(_), alaska.precision(_), hawaii.precision(_);
+    return reset();
+  };
+
+  albersUsa.scale = function(_) {
+    if (!arguments.length) return lower48.scale();
+    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);
+    return albersUsa.translate(lower48.translate());
+  };
+
+  albersUsa.translate = function(_) {
+    if (!arguments.length) return lower48.translate();
+    var k = lower48.scale(), x = +_[0], y = +_[1];
+
+    lower48Point = lower48
+        .translate(_)
+        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])
+        .stream(pointStream);
+
+    alaskaPoint = alaska
+        .translate([x - 0.307 * k, y + 0.201 * k])
+        .clipExtent([[x - 0.425 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.120 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]], [x - 0.214 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]]])
+        .stream(pointStream);
+
+    hawaiiPoint = hawaii
+        .translate([x - 0.205 * k, y + 0.212 * k])
+        .clipExtent([[x - 0.214 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.166 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]], [x - 0.115 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]]])
+        .stream(pointStream);
+
+    return reset();
+  };
+
+  albersUsa.fitExtent = function(extent, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitExtent"])(albersUsa, extent, object);
+  };
+
+  albersUsa.fitSize = function(size, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitSize"])(albersUsa, size, object);
+  };
+
+  albersUsa.fitWidth = function(width, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitWidth"])(albersUsa, width, object);
+  };
+
+  albersUsa.fitHeight = function(height, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitHeight"])(albersUsa, height, object);
+  };
+
+  function reset() {
+    cache = cacheStream = null;
+    return albersUsa;
+  }
+
+  return albersUsa.scale(1070);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/azimuthal.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/azimuthal.js ***!
+  \*********************************************************/
+/*! exports provided: azimuthalRaw, azimuthalInvert */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "azimuthalRaw", function() { return azimuthalRaw; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "azimuthalInvert", function() { return azimuthalInvert; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+function azimuthalRaw(scale) {
+  return function(x, y) {
+    var cx = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(x),
+        cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y),
+        k = scale(cx * cy);
+    return [
+      k * cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(x),
+      k * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y)
+    ];
+  }
+}
+
+function azimuthalInvert(angle) {
+  return function(x, y) {
+    var z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + y * y),
+        c = angle(z),
+        sc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(c),
+        cc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(c);
+    return [
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x * sc, z * cc),
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])(z && y * sc / z)
+    ];
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/azimuthalEqualArea.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/azimuthalEqualArea.js ***!
+  \******************************************************************/
+/*! exports provided: azimuthalEqualAreaRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "azimuthalEqualAreaRaw", function() { return azimuthalEqualAreaRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ "./node_modules/d3-geo/src/projection/azimuthal.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+
+
+var azimuthalEqualAreaRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__["azimuthalRaw"])(function(cxcy) {
+  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(2 / (1 + cxcy));
+});
+
+azimuthalEqualAreaRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__["azimuthalInvert"])(function(z) {
+  return 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])(z / 2);
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(azimuthalEqualAreaRaw)
+      .scale(124.75)
+      .clipAngle(180 - 1e-3);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/azimuthalEquidistant.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/azimuthalEquidistant.js ***!
+  \********************************************************************/
+/*! exports provided: azimuthalEquidistantRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "azimuthalEquidistantRaw", function() { return azimuthalEquidistantRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ "./node_modules/d3-geo/src/projection/azimuthal.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+
+
+var azimuthalEquidistantRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__["azimuthalRaw"])(function(c) {
+  return (c = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["acos"])(c)) && c / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(c);
+});
+
+azimuthalEquidistantRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__["azimuthalInvert"])(function(z) {
+  return z;
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(azimuthalEquidistantRaw)
+      .scale(79.4188)
+      .clipAngle(180 - 1e-3);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/conic.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/conic.js ***!
+  \*****************************************************/
+/*! exports provided: conicProjection */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "conicProjection", function() { return conicProjection; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+
+function conicProjection(projectAt) {
+  var phi0 = 0,
+      phi1 = _math_js__WEBPACK_IMPORTED_MODULE_0__["pi"] / 3,
+      m = Object(_index_js__WEBPACK_IMPORTED_MODULE_1__["projectionMutator"])(projectAt),
+      p = m(phi0, phi1);
+
+  p.parallels = function(_) {
+    return arguments.length ? m(phi0 = _[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"], phi1 = _[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__["radians"]) : [phi0 * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"], phi1 * _math_js__WEBPACK_IMPORTED_MODULE_0__["degrees"]];
+  };
+
+  return p;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/conicConformal.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/conicConformal.js ***!
+  \**************************************************************/
+/*! exports provided: conicConformalRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "conicConformalRaw", function() { return conicConformalRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ "./node_modules/d3-geo/src/projection/conic.js");
+/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mercator.js */ "./node_modules/d3-geo/src/projection/mercator.js");
+
+
+
+
+function tany(y) {
+  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["tan"])((_math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + y) / 2);
+}
+
+function conicConformalRaw(y0, y1) {
+  var cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y0),
+      n = y0 === y1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0) : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["log"])(cy0 / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y1)) / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["log"])(tany(y1) / tany(y0)),
+      f = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["pow"])(tany(y0), n) / n;
+
+  if (!n) return _mercator_js__WEBPACK_IMPORTED_MODULE_2__["mercatorRaw"];
+
+  function project(x, y) {
+    if (f > 0) { if (y < -_math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) y = -_math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]; }
+    else { if (y > _math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"] - _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) y = _math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"] - _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]; }
+    var r = f / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["pow"])(tany(y), n);
+    return [r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(n * x), f - r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(n * x)];
+  }
+
+  project.invert = function(x, y) {
+    var fy = f - y, r = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sign"])(n) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + fy * fy);
+    return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(fy)) / n * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sign"])(fy), 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["pow"])(f / r, 1 / n)) - _math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"]];
+  };
+
+  return project;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__["conicProjection"])(conicConformalRaw)
+      .scale(109.5)
+      .parallels([30, 30]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/conicEqualArea.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/conicEqualArea.js ***!
+  \**************************************************************/
+/*! exports provided: conicEqualAreaRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "conicEqualAreaRaw", function() { return conicEqualAreaRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ "./node_modules/d3-geo/src/projection/conic.js");
+/* harmony import */ var _cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cylindricalEqualArea.js */ "./node_modules/d3-geo/src/projection/cylindricalEqualArea.js");
+
+
+
+
+function conicEqualAreaRaw(y0, y1) {
+  var sy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0), n = (sy0 + Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y1)) / 2;
+
+  // Are the parallels symmetrical around the Equator?
+  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) return Object(_cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_2__["cylindricalEqualAreaRaw"])(y0);
+
+  var c = 1 + sy0 * (2 * n - sy0), r0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(c) / n;
+
+  function project(x, y) {
+    var r = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(c - 2 * n * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y)) / n;
+    return [r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(x *= n), r0 - r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(x)];
+  }
+
+  project.invert = function(x, y) {
+    var r0y = r0 - y;
+    return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(r0y)) / n * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sign"])(r0y), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])((c - (x * x + r0y * r0y) * n * n) / (2 * n))];
+  };
+
+  return project;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__["conicProjection"])(conicEqualAreaRaw)
+      .scale(155.424)
+      .center([0, 33.6442]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/conicEquidistant.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/conicEquidistant.js ***!
+  \****************************************************************/
+/*! exports provided: conicEquidistantRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "conicEquidistantRaw", function() { return conicEquidistantRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ "./node_modules/d3-geo/src/projection/conic.js");
+/* harmony import */ var _equirectangular_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./equirectangular.js */ "./node_modules/d3-geo/src/projection/equirectangular.js");
+
+
+
+
+function conicEquidistantRaw(y0, y1) {
+  var cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y0),
+      n = y0 === y1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0) : (cy0 - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y1)) / (y1 - y0),
+      g = cy0 / n + y0;
+
+  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) return _equirectangular_js__WEBPACK_IMPORTED_MODULE_2__["equirectangularRaw"];
+
+  function project(x, y) {
+    var gy = g - y, nx = n * x;
+    return [gy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(nx), g - gy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(nx)];
+  }
+
+  project.invert = function(x, y) {
+    var gy = g - y;
+    return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["abs"])(gy)) / n * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sign"])(gy), g - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sign"])(n) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + gy * gy)];
+  };
+
+  return project;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__["conicProjection"])(conicEquidistantRaw)
+      .scale(131.154)
+      .center([0, 13.9389]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/cylindricalEqualArea.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/cylindricalEqualArea.js ***!
+  \********************************************************************/
+/*! exports provided: cylindricalEqualAreaRaw */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cylindricalEqualAreaRaw", function() { return cylindricalEqualAreaRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+function cylindricalEqualAreaRaw(phi0) {
+  var cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi0);
+
+  function forward(lambda, phi) {
+    return [lambda * cosPhi0, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi) / cosPhi0];
+  }
+
+  forward.invert = function(x, y) {
+    return [x / cosPhi0, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"])(y * cosPhi0)];
+  };
+
+  return forward;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/equalEarth.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/equalEarth.js ***!
+  \**********************************************************/
+/*! exports provided: equalEarthRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "equalEarthRaw", function() { return equalEarthRaw; });
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+
+var A1 = 1.340264,
+    A2 = -0.081106,
+    A3 = 0.000893,
+    A4 = 0.003796,
+    M = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sqrt"])(3) / 2,
+    iterations = 12;
+
+function equalEarthRaw(lambda, phi) {
+  var l = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["asin"])(M * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi)), l2 = l * l, l6 = l2 * l2 * l2;
+  return [
+    lambda * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),
+    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))
+  ];
+}
+
+equalEarthRaw.invert = function(x, y) {
+  var l = y, l2 = l * l, l6 = l2 * l2 * l2;
+  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {
+    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;
+    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);
+    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;
+    if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(delta) < _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon2"]) break;
+  }
+  return [
+    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(l),
+    Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["asin"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(l) / M)
+  ];
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(equalEarthRaw)
+      .scale(177.158);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/equirectangular.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/equirectangular.js ***!
+  \***************************************************************/
+/*! exports provided: equirectangularRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "equirectangularRaw", function() { return equirectangularRaw; });
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+function equirectangularRaw(lambda, phi) {
+  return [lambda, phi];
+}
+
+equirectangularRaw.invert = equirectangularRaw;
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(equirectangularRaw)
+      .scale(152.63);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/fit.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/fit.js ***!
+  \***************************************************/
+/*! exports provided: fitExtent, fitSize, fitWidth, fitHeight */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fitExtent", function() { return fitExtent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fitSize", function() { return fitSize; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fitWidth", function() { return fitWidth; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fitHeight", function() { return fitHeight; });
+/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stream.js */ "./node_modules/d3-geo/src/stream.js");
+/* harmony import */ var _path_bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../path/bounds.js */ "./node_modules/d3-geo/src/path/bounds.js");
+
+
+
+function fit(projection, fitBounds, object) {
+  var clip = projection.clipExtent && projection.clipExtent();
+  projection.scale(150).translate([0, 0]);
+  if (clip != null) projection.clipExtent(null);
+  Object(_stream_js__WEBPACK_IMPORTED_MODULE_0__["default"])(object, projection.stream(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__["default"]));
+  fitBounds(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__["default"].result());
+  if (clip != null) projection.clipExtent(clip);
+  return projection;
+}
+
+function fitExtent(projection, extent, object) {
+  return fit(projection, function(b) {
+    var w = extent[1][0] - extent[0][0],
+        h = extent[1][1] - extent[0][1],
+        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),
+        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,
+        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;
+    projection.scale(150 * k).translate([x, y]);
+  }, object);
+}
+
+function fitSize(projection, size, object) {
+  return fitExtent(projection, [[0, 0], size], object);
+}
+
+function fitWidth(projection, width, object) {
+  return fit(projection, function(b) {
+    var w = +width,
+        k = w / (b[1][0] - b[0][0]),
+        x = (w - k * (b[1][0] + b[0][0])) / 2,
+        y = -k * b[0][1];
+    projection.scale(150 * k).translate([x, y]);
+  }, object);
+}
+
+function fitHeight(projection, height, object) {
+  return fit(projection, function(b) {
+    var h = +height,
+        k = h / (b[1][1] - b[0][1]),
+        x = -k * b[0][0],
+        y = (h - k * (b[1][1] + b[0][1])) / 2;
+    projection.scale(150 * k).translate([x, y]);
+  }, object);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/gnomonic.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/gnomonic.js ***!
+  \********************************************************/
+/*! exports provided: gnomonicRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gnomonicRaw", function() { return gnomonicRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ "./node_modules/d3-geo/src/projection/azimuthal.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+
+
+function gnomonicRaw(x, y) {
+  var cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y), k = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(x) * cy;
+  return [cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(x) / k, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y) / k];
+}
+
+gnomonicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__["azimuthalInvert"])(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(gnomonicRaw)
+      .scale(144.049)
+      .clipAngle(60);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/identity.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/identity.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clip/rectangle.js */ "./node_modules/d3-geo/src/clip/rectangle.js");
+/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../identity.js */ "./node_modules/d3-geo/src/identity.js");
+/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transform.js */ "./node_modules/d3-geo/src/transform.js");
+/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ "./node_modules/d3-geo/src/projection/fit.js");
+
+
+
+
+
+function scaleTranslate(kx, ky, tx, ty) {
+  return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"] : Object(_transform_js__WEBPACK_IMPORTED_MODULE_2__["transformer"])({
+    point: function(x, y) {
+      this.stream.point(x * kx + tx, y * ky + ty);
+    }
+  });
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"], // scale, translate and reflect
+      x0 = null, y0, x1, y1, // clip extent
+      postclip = _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+      cache,
+      cacheStream,
+      projection;
+
+  function reset() {
+    cache = cacheStream = null;
+    return projection;
+  }
+
+  return projection = {
+    stream: function(stream) {
+      return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));
+    },
+    postclip: function(_) {
+      return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;
+    },
+    clipExtent: function(_) {
+      return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"]) : Object(_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
+    },
+    scale: function(_) {
+      return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;
+    },
+    translate: function(_) {
+      return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];
+    },
+    reflectX: function(_) {
+      return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;
+    },
+    reflectY: function(_) {
+      return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;
+    },
+    fitExtent: function(extent, object) {
+      return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitExtent"])(projection, extent, object);
+    },
+    fitSize: function(size, object) {
+      return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitSize"])(projection, size, object);
+    },
+    fitWidth: function(width, object) {
+      return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitWidth"])(projection, width, object);
+    },
+    fitHeight: function(height, object) {
+      return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__["fitHeight"])(projection, height, object);
+    }
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/index.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/index.js ***!
+  \*****************************************************/
+/*! exports provided: default, projectionMutator */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return projection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "projectionMutator", function() { return projectionMutator; });
+/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clip/antimeridian.js */ "./node_modules/d3-geo/src/clip/antimeridian.js");
+/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../clip/circle.js */ "./node_modules/d3-geo/src/clip/circle.js");
+/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../clip/rectangle.js */ "./node_modules/d3-geo/src/clip/rectangle.js");
+/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../compose.js */ "./node_modules/d3-geo/src/compose.js");
+/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../identity.js */ "./node_modules/d3-geo/src/identity.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../rotation.js */ "./node_modules/d3-geo/src/rotation.js");
+/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../transform.js */ "./node_modules/d3-geo/src/transform.js");
+/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./fit.js */ "./node_modules/d3-geo/src/projection/fit.js");
+/* harmony import */ var _resample_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./resample.js */ "./node_modules/d3-geo/src/projection/resample.js");
+
+
+
+
+
+
+
+
+
+
+
+var transformRadians = Object(_transform_js__WEBPACK_IMPORTED_MODULE_7__["transformer"])({
+  point: function(x, y) {
+    this.stream.point(x * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"], y * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"]);
+  }
+});
+
+function transformRotate(rotate) {
+  return Object(_transform_js__WEBPACK_IMPORTED_MODULE_7__["transformer"])({
+    point: function(x, y) {
+      var r = rotate(x, y);
+      return this.stream.point(r[0], r[1]);
+    }
+  });
+}
+
+function scaleTranslate(k, dx, dy) {
+  function transform(x, y) {
+    return [dx + k * x, dy - k * y];
+  }
+  transform.invert = function(x, y) {
+    return [(x - dx) / k, (dy - y) / k];
+  };
+  return transform;
+}
+
+function scaleTranslateRotate(k, dx, dy, alpha) {
+  var cosAlpha = Object(_math_js__WEBPACK_IMPORTED_MODULE_5__["cos"])(alpha),
+      sinAlpha = Object(_math_js__WEBPACK_IMPORTED_MODULE_5__["sin"])(alpha),
+      a = cosAlpha * k,
+      b = sinAlpha * k,
+      ai = cosAlpha / k,
+      bi = sinAlpha / k,
+      ci = (sinAlpha * dy - cosAlpha * dx) / k,
+      fi = (sinAlpha * dx + cosAlpha * dy) / k;
+  function transform(x, y) {
+    return [a * x - b * y + dx, dy - b * x - a * y];
+  }
+  transform.invert = function(x, y) {
+    return [ai * x - bi * y + ci, fi - bi * x - ai * y];
+  };
+  return transform;
+}
+
+function projection(project) {
+  return projectionMutator(function() { return project; })();
+}
+
+function projectionMutator(projectAt) {
+  var project,
+      k = 150, // scale
+      x = 480, y = 250, // translate
+      lambda = 0, phi = 0, // center
+      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate
+      alpha = 0, // post-rotate
+      theta = null, preclip = _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__["default"], // pre-clip angle
+      x0 = null, y0, x1, y1, postclip = _identity_js__WEBPACK_IMPORTED_MODULE_4__["default"], // post-clip extent
+      delta2 = 0.5, // precision
+      projectResample,
+      projectTransform,
+      projectRotateTransform,
+      cache,
+      cacheStream;
+
+  function projection(point) {
+    return projectRotateTransform(point[0] * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"]);
+  }
+
+  function invert(point) {
+    point = projectRotateTransform.invert(point[0], point[1]);
+    return point && [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"]];
+  }
+
+  projection.stream = function(stream) {
+    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));
+  };
+
+  projection.preclip = function(_) {
+    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;
+  };
+
+  projection.postclip = function(_) {
+    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;
+  };
+
+  projection.clipAngle = function(_) {
+    return arguments.length ? (preclip = +_ ? Object(_clip_circle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(theta = _ * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"]) : (theta = null, _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__["default"]), reset()) : theta * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"];
+  };
+
+  projection.clipExtent = function(_) {
+    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_4__["default"]) : Object(_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
+  };
+
+  projection.scale = function(_) {
+    return arguments.length ? (k = +_, recenter()) : k;
+  };
+
+  projection.translate = function(_) {
+    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];
+  };
+
+  projection.center = function(_) {
+    return arguments.length ? (lambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"], phi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"], recenter()) : [lambda * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"], phi * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"]];
+  };
+
+  projection.rotate = function(_) {
+    return arguments.length ? (deltaLambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"], deltaPhi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"], deltaGamma = _.length > 2 ? _[2] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"] : 0, recenter()) : [deltaLambda * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"], deltaPhi * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"], deltaGamma * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"]];
+  };
+
+  projection.angle = function(_) {
+    return arguments.length ? (alpha = _ % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__["radians"], recenter()) : alpha * _math_js__WEBPACK_IMPORTED_MODULE_5__["degrees"];
+  };
+
+  projection.precision = function(_) {
+    return arguments.length ? (projectResample = Object(_resample_js__WEBPACK_IMPORTED_MODULE_9__["default"])(projectTransform, delta2 = _ * _), reset()) : Object(_math_js__WEBPACK_IMPORTED_MODULE_5__["sqrt"])(delta2);
+  };
+
+  projection.fitExtent = function(extent, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__["fitExtent"])(projection, extent, object);
+  };
+
+  projection.fitSize = function(size, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__["fitSize"])(projection, size, object);
+  };
+
+  projection.fitWidth = function(width, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__["fitWidth"])(projection, width, object);
+  };
+
+  projection.fitHeight = function(height, object) {
+    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__["fitHeight"])(projection, height, object);
+  };
+
+  function recenter() {
+    var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),
+        transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);
+    rotate = Object(_rotation_js__WEBPACK_IMPORTED_MODULE_6__["rotateRadians"])(deltaLambda, deltaPhi, deltaGamma);
+    projectTransform = Object(_compose_js__WEBPACK_IMPORTED_MODULE_3__["default"])(project, transform);
+    projectRotateTransform = Object(_compose_js__WEBPACK_IMPORTED_MODULE_3__["default"])(rotate, projectTransform);
+    projectResample = Object(_resample_js__WEBPACK_IMPORTED_MODULE_9__["default"])(projectTransform, delta2);
+    return reset();
+  }
+
+  function reset() {
+    cache = cacheStream = null;
+    return projection;
+  }
+
+  return function() {
+    project = projectAt.apply(this, arguments);
+    projection.invert = project.invert && invert;
+    return recenter();
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/mercator.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/mercator.js ***!
+  \********************************************************/
+/*! exports provided: mercatorRaw, default, mercatorProjection */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mercatorRaw", function() { return mercatorRaw; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mercatorProjection", function() { return mercatorProjection; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rotation.js */ "./node_modules/d3-geo/src/rotation.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+
+
+function mercatorRaw(lambda, phi) {
+  return [lambda, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["log"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["tan"])((_math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + phi) / 2))];
+}
+
+mercatorRaw.invert = function(x, y) {
+  return [x, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["exp"])(y)) - _math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"]];
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return mercatorProjection(mercatorRaw)
+      .scale(961 / _math_js__WEBPACK_IMPORTED_MODULE_0__["tau"]);
+});
+
+function mercatorProjection(project) {
+  var m = Object(_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(project),
+      center = m.center,
+      scale = m.scale,
+      translate = m.translate,
+      clipExtent = m.clipExtent,
+      x0 = null, y0, x1, y1; // clip extent
+
+  m.scale = function(_) {
+    return arguments.length ? (scale(_), reclip()) : scale();
+  };
+
+  m.translate = function(_) {
+    return arguments.length ? (translate(_), reclip()) : translate();
+  };
+
+  m.center = function(_) {
+    return arguments.length ? (center(_), reclip()) : center();
+  };
+
+  m.clipExtent = function(_) {
+    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];
+  };
+
+  function reclip() {
+    var k = _math_js__WEBPACK_IMPORTED_MODULE_0__["pi"] * scale(),
+        t = m(Object(_rotation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(m.rotate()).invert([0, 0]));
+    return clipExtent(x0 == null
+        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw
+        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]
+        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);
+  }
+
+  return reclip();
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/naturalEarth1.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/naturalEarth1.js ***!
+  \*************************************************************/
+/*! exports provided: naturalEarth1Raw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "naturalEarth1Raw", function() { return naturalEarth1Raw; });
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+
+function naturalEarth1Raw(lambda, phi) {
+  var phi2 = phi * phi, phi4 = phi2 * phi2;
+  return [
+    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),
+    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))
+  ];
+}
+
+naturalEarth1Raw.invert = function(x, y) {
+  var phi = y, i = 25, delta;
+  do {
+    var phi2 = phi * phi, phi4 = phi2 * phi2;
+    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /
+        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));
+  } while (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(delta) > _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && --i > 0);
+  return [
+    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),
+    phi
+  ];
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(naturalEarth1Raw)
+      .scale(175.295);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/orthographic.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/orthographic.js ***!
+  \************************************************************/
+/*! exports provided: orthographicRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "orthographicRaw", function() { return orthographicRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ "./node_modules/d3-geo/src/projection/azimuthal.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+
+
+function orthographicRaw(x, y) {
+  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(x), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y)];
+}
+
+orthographicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__["azimuthalInvert"])(_math_js__WEBPACK_IMPORTED_MODULE_0__["asin"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(orthographicRaw)
+      .scale(249.5)
+      .clipAngle(90 + _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/resample.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/resample.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cartesian.js */ "./node_modules/d3-geo/src/cartesian.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transform.js */ "./node_modules/d3-geo/src/transform.js");
+
+
+
+
+var maxDepth = 16, // maximum depth of subdivision
+    cosMinDistance = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(30 * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"]); // cos(minimum angular distance)
+
+/* harmony default export */ __webpack_exports__["default"] = (function(project, delta2) {
+  return +delta2 ? resample(project, delta2) : resampleNone(project);
+});
+
+function resampleNone(project) {
+  return Object(_transform_js__WEBPACK_IMPORTED_MODULE_2__["transformer"])({
+    point: function(x, y) {
+      x = project(x, y);
+      this.stream.point(x[0], x[1]);
+    }
+  });
+}
+
+function resample(project, delta2) {
+
+  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {
+    var dx = x1 - x0,
+        dy = y1 - y0,
+        d2 = dx * dx + dy * dy;
+    if (d2 > 4 * delta2 && depth--) {
+      var a = a0 + a1,
+          b = b0 + b1,
+          c = c0 + c1,
+          m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sqrt"])(a * a + b * b + c * c),
+          phi2 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["asin"])(c /= m),
+          lambda2 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(c) - 1) < _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"] || Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda0 - lambda1) < _math_js__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? (lambda0 + lambda1) / 2 : Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["atan2"])(b, a),
+          p = project(lambda2, phi2),
+          x2 = p[0],
+          y2 = p[1],
+          dx2 = x2 - x0,
+          dy2 = y2 - y0,
+          dz = dy * dx2 - dx * dy2;
+      if (dz * dz / d2 > delta2 // perpendicular projected distance
+          || Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end
+          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance
+        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);
+        stream.point(x2, y2);
+        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);
+      }
+    }
+  }
+  return function(stream) {
+    var lambda00, x00, y00, a00, b00, c00, // first point
+        lambda0, x0, y0, a0, b0, c0; // previous point
+
+    var resampleStream = {
+      point: point,
+      lineStart: lineStart,
+      lineEnd: lineEnd,
+      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },
+      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }
+    };
+
+    function point(x, y) {
+      x = project(x, y);
+      stream.point(x[0], x[1]);
+    }
+
+    function lineStart() {
+      x0 = NaN;
+      resampleStream.point = linePoint;
+      stream.lineStart();
+    }
+
+    function linePoint(lambda, phi) {
+      var c = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__["cartesian"])([lambda, phi]), p = project(lambda, phi);
+      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
+      stream.point(x0, y0);
+    }
+
+    function lineEnd() {
+      resampleStream.point = point;
+      stream.lineEnd();
+    }
+
+    function ringStart() {
+      lineStart();
+      resampleStream.point = ringPoint;
+      resampleStream.lineEnd = ringEnd;
+    }
+
+    function ringPoint(lambda, phi) {
+      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
+      resampleStream.point = linePoint;
+    }
+
+    function ringEnd() {
+      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);
+      resampleStream.lineEnd = lineEnd;
+      lineEnd();
+    }
+
+    return resampleStream;
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/stereographic.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/stereographic.js ***!
+  \*************************************************************/
+/*! exports provided: stereographicRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stereographicRaw", function() { return stereographicRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ "./node_modules/d3-geo/src/projection/azimuthal.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-geo/src/projection/index.js");
+
+
+
+
+function stereographicRaw(x, y) {
+  var cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(y), k = 1 + Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["cos"])(x) * cy;
+  return [cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(x) / k, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["sin"])(y) / k];
+}
+
+stereographicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__["azimuthalInvert"])(function(z) {
+  return 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan"])(z);
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(stereographicRaw)
+      .scale(250)
+      .clipAngle(142);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/projection/transverseMercator.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/d3-geo/src/projection/transverseMercator.js ***!
+  \******************************************************************/
+/*! exports provided: transverseMercatorRaw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transverseMercatorRaw", function() { return transverseMercatorRaw; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-geo/src/math.js");
+/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mercator.js */ "./node_modules/d3-geo/src/projection/mercator.js");
+
+
+
+function transverseMercatorRaw(lambda, phi) {
+  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["log"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["tan"])((_math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + phi) / 2)), -lambda];
+}
+
+transverseMercatorRaw.invert = function(x, y) {
+  return [-y, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["atan"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["exp"])(x)) - _math_js__WEBPACK_IMPORTED_MODULE_0__["halfPi"]];
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var m = Object(_mercator_js__WEBPACK_IMPORTED_MODULE_1__["mercatorProjection"])(transverseMercatorRaw),
+      center = m.center,
+      rotate = m.rotate;
+
+  m.center = function(_) {
+    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);
+  };
+
+  m.rotate = function(_) {
+    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);
+  };
+
+  return rotate([0, 0, 90])
+      .scale(159.155);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/rotation.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-geo/src/rotation.js ***!
+  \*********************************************/
+/*! exports provided: rotateRadians, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rotateRadians", function() { return rotateRadians; });
+/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./compose.js */ "./node_modules/d3-geo/src/compose.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-geo/src/math.js");
+
+
+
+function rotationIdentity(lambda, phi) {
+  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda) > _math_js__WEBPACK_IMPORTED_MODULE_1__["pi"] ? lambda + Math.round(-lambda / _math_js__WEBPACK_IMPORTED_MODULE_1__["tau"]) * _math_js__WEBPACK_IMPORTED_MODULE_1__["tau"] : lambda, phi];
+}
+
+rotationIdentity.invert = rotationIdentity;
+
+function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {
+  return (deltaLambda %= _math_js__WEBPACK_IMPORTED_MODULE_1__["tau"]) ? (deltaPhi || deltaGamma ? Object(_compose_js__WEBPACK_IMPORTED_MODULE_0__["default"])(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))
+    : rotationLambda(deltaLambda))
+    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)
+    : rotationIdentity);
+}
+
+function forwardRotationLambda(deltaLambda) {
+  return function(lambda, phi) {
+    return lambda += deltaLambda, [lambda > _math_js__WEBPACK_IMPORTED_MODULE_1__["pi"] ? lambda - _math_js__WEBPACK_IMPORTED_MODULE_1__["tau"] : lambda < -_math_js__WEBPACK_IMPORTED_MODULE_1__["pi"] ? lambda + _math_js__WEBPACK_IMPORTED_MODULE_1__["tau"] : lambda, phi];
+  };
+}
+
+function rotationLambda(deltaLambda) {
+  var rotation = forwardRotationLambda(deltaLambda);
+  rotation.invert = forwardRotationLambda(-deltaLambda);
+  return rotation;
+}
+
+function rotationPhiGamma(deltaPhi, deltaGamma) {
+  var cosDeltaPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(deltaPhi),
+      sinDeltaPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(deltaPhi),
+      cosDeltaGamma = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(deltaGamma),
+      sinDeltaGamma = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(deltaGamma);
+
+  function rotation(lambda, phi) {
+    var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
+        x = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(lambda) * cosPhi,
+        y = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda) * cosPhi,
+        z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
+        k = z * cosDeltaPhi + x * sinDeltaPhi;
+    return [
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["atan2"])(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["asin"])(k * cosDeltaGamma + y * sinDeltaGamma)
+    ];
+  }
+
+  rotation.invert = function(lambda, phi) {
+    var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
+        x = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["cos"])(lambda) * cosPhi,
+        y = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda) * cosPhi,
+        z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
+        k = z * cosDeltaGamma - y * sinDeltaGamma;
+    return [
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["atan2"])(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),
+      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__["asin"])(k * cosDeltaPhi - x * sinDeltaPhi)
+    ];
+  };
+
+  return rotation;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(rotate) {
+  rotate = rotateRadians(rotate[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], rotate[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], rotate.length > 2 ? rotate[2] * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"] : 0);
+
+  function forward(coordinates) {
+    coordinates = rotate(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"]);
+    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates;
+  }
+
+  forward.invert = function(coordinates) {
+    coordinates = rotate.invert(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"], coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__["radians"]);
+    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates;
+  };
+
+  return forward;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/stream.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-geo/src/stream.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function streamGeometry(geometry, stream) {
+  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {
+    streamGeometryType[geometry.type](geometry, stream);
+  }
+}
+
+var streamObjectType = {
+  Feature: function(object, stream) {
+    streamGeometry(object.geometry, stream);
+  },
+  FeatureCollection: function(object, stream) {
+    var features = object.features, i = -1, n = features.length;
+    while (++i < n) streamGeometry(features[i].geometry, stream);
+  }
+};
+
+var streamGeometryType = {
+  Sphere: function(object, stream) {
+    stream.sphere();
+  },
+  Point: function(object, stream) {
+    object = object.coordinates;
+    stream.point(object[0], object[1], object[2]);
+  },
+  MultiPoint: function(object, stream) {
+    var coordinates = object.coordinates, i = -1, n = coordinates.length;
+    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);
+  },
+  LineString: function(object, stream) {
+    streamLine(object.coordinates, stream, 0);
+  },
+  MultiLineString: function(object, stream) {
+    var coordinates = object.coordinates, i = -1, n = coordinates.length;
+    while (++i < n) streamLine(coordinates[i], stream, 0);
+  },
+  Polygon: function(object, stream) {
+    streamPolygon(object.coordinates, stream);
+  },
+  MultiPolygon: function(object, stream) {
+    var coordinates = object.coordinates, i = -1, n = coordinates.length;
+    while (++i < n) streamPolygon(coordinates[i], stream);
+  },
+  GeometryCollection: function(object, stream) {
+    var geometries = object.geometries, i = -1, n = geometries.length;
+    while (++i < n) streamGeometry(geometries[i], stream);
+  }
+};
+
+function streamLine(coordinates, stream, closed) {
+  var i = -1, n = coordinates.length - closed, coordinate;
+  stream.lineStart();
+  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);
+  stream.lineEnd();
+}
+
+function streamPolygon(coordinates, stream) {
+  var i = -1, n = coordinates.length;
+  stream.polygonStart();
+  while (++i < n) streamLine(coordinates[i], stream, 1);
+  stream.polygonEnd();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(object, stream) {
+  if (object && streamObjectType.hasOwnProperty(object.type)) {
+    streamObjectType[object.type](object, stream);
+  } else {
+    streamGeometry(object, stream);
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-geo/src/transform.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-geo/src/transform.js ***!
+  \**********************************************/
+/*! exports provided: default, transformer */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transformer", function() { return transformer; });
+/* harmony default export */ __webpack_exports__["default"] = (function(methods) {
+  return {
+    stream: transformer(methods)
+  };
+});
+
+function transformer(methods) {
+  return function(stream) {
+    var s = new TransformStream;
+    for (var key in methods) s[key] = methods[key];
+    s.stream = stream;
+    return s;
+  };
+}
+
+function TransformStream() {}
+
+TransformStream.prototype = {
+  constructor: TransformStream,
+  point: function(x, y) { this.stream.point(x, y); },
+  sphere: function() { this.stream.sphere(); },
+  lineStart: function() { this.stream.lineStart(); },
+  lineEnd: function() { this.stream.lineEnd(); },
+  polygonStart: function() { this.stream.polygonStart(); },
+  polygonEnd: function() { this.stream.polygonEnd(); }
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/accessors.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/accessors.js ***!
+  \****************************************************/
+/*! exports provided: optional, required */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "optional", function() { return optional; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "required", function() { return required; });
+function optional(f) {
+  return f == null ? null : required(f);
+}
+
+function required(f) {
+  if (typeof f !== "function") throw new Error;
+  return f;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/array.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/array.js ***!
+  \************************************************/
+/*! exports provided: slice, shuffle */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return shuffle; });
+var slice = Array.prototype.slice;
+
+function shuffle(array) {
+  var m = array.length,
+      t,
+      i;
+
+  while (m) {
+    i = Math.random() * m-- | 0;
+    t = array[m];
+    array[m] = array[i];
+    array[i] = t;
+  }
+
+  return array;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/cluster.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/cluster.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function defaultSeparation(a, b) {
+  return a.parent === b.parent ? 1 : 2;
+}
+
+function meanX(children) {
+  return children.reduce(meanXReduce, 0) / children.length;
+}
+
+function meanXReduce(x, c) {
+  return x + c.x;
+}
+
+function maxY(children) {
+  return 1 + children.reduce(maxYReduce, 0);
+}
+
+function maxYReduce(y, c) {
+  return Math.max(y, c.y);
+}
+
+function leafLeft(node) {
+  var children;
+  while (children = node.children) node = children[0];
+  return node;
+}
+
+function leafRight(node) {
+  var children;
+  while (children = node.children) node = children[children.length - 1];
+  return node;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var separation = defaultSeparation,
+      dx = 1,
+      dy = 1,
+      nodeSize = false;
+
+  function cluster(root) {
+    var previousNode,
+        x = 0;
+
+    // First walk, computing the initial x & y values.
+    root.eachAfter(function(node) {
+      var children = node.children;
+      if (children) {
+        node.x = meanX(children);
+        node.y = maxY(children);
+      } else {
+        node.x = previousNode ? x += separation(node, previousNode) : 0;
+        node.y = 0;
+        previousNode = node;
+      }
+    });
+
+    var left = leafLeft(root),
+        right = leafRight(root),
+        x0 = left.x - separation(left, right) / 2,
+        x1 = right.x + separation(right, left) / 2;
+
+    // Second walk, normalizing x & y to the desired size.
+    return root.eachAfter(nodeSize ? function(node) {
+      node.x = (node.x - root.x) * dx;
+      node.y = (root.y - node.y) * dy;
+    } : function(node) {
+      node.x = (node.x - x0) / (x1 - x0) * dx;
+      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;
+    });
+  }
+
+  cluster.separation = function(x) {
+    return arguments.length ? (separation = x, cluster) : separation;
+  };
+
+  cluster.size = function(x) {
+    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);
+  };
+
+  cluster.nodeSize = function(x) {
+    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);
+  };
+
+  return cluster;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/constant.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/constant.js ***!
+  \***************************************************/
+/*! exports provided: constantZero, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "constantZero", function() { return constantZero; });
+function constantZero() {
+  return 0;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/ancestors.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/ancestors.js ***!
+  \**************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var node = this, nodes = [node];
+  while (node = node.parent) {
+    nodes.push(node);
+  }
+  return nodes;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/count.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/count.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function count(node) {
+  var sum = 0,
+      children = node.children,
+      i = children && children.length;
+  if (!i) sum = 1;
+  else while (--i >= 0) sum += children[i].value;
+  node.value = sum;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return this.eachAfter(count);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/descendants.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/descendants.js ***!
+  \****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var nodes = [];
+  this.each(function(node) {
+    nodes.push(node);
+  });
+  return nodes;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/each.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/each.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(callback) {
+  var node = this, current, next = [node], children, i, n;
+  do {
+    current = next.reverse(), next = [];
+    while (node = current.pop()) {
+      callback(node), children = node.children;
+      if (children) for (i = 0, n = children.length; i < n; ++i) {
+        next.push(children[i]);
+      }
+    }
+  } while (next.length);
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js ***!
+  \**************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(callback) {
+  var node = this, nodes = [node], next = [], children, i, n;
+  while (node = nodes.pop()) {
+    next.push(node), children = node.children;
+    if (children) for (i = 0, n = children.length; i < n; ++i) {
+      nodes.push(children[i]);
+    }
+  }
+  while (node = next.pop()) {
+    callback(node);
+  }
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js ***!
+  \***************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(callback) {
+  var node = this, nodes = [node], children, i;
+  while (node = nodes.pop()) {
+    callback(node), children = node.children;
+    if (children) for (i = children.length - 1; i >= 0; --i) {
+      nodes.push(children[i]);
+    }
+  }
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/index.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/index.js ***!
+  \**********************************************************/
+/*! exports provided: default, computeHeight, Node */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return hierarchy; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "computeHeight", function() { return computeHeight; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Node", function() { return Node; });
+/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./count.js */ "./node_modules/d3-hierarchy/src/hierarchy/count.js");
+/* harmony import */ var _each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./each.js */ "./node_modules/d3-hierarchy/src/hierarchy/each.js");
+/* harmony import */ var _eachBefore_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./eachBefore.js */ "./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js");
+/* harmony import */ var _eachAfter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eachAfter.js */ "./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js");
+/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sum.js */ "./node_modules/d3-hierarchy/src/hierarchy/sum.js");
+/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sort.js */ "./node_modules/d3-hierarchy/src/hierarchy/sort.js");
+/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path.js */ "./node_modules/d3-hierarchy/src/hierarchy/path.js");
+/* harmony import */ var _ancestors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ancestors.js */ "./node_modules/d3-hierarchy/src/hierarchy/ancestors.js");
+/* harmony import */ var _descendants_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./descendants.js */ "./node_modules/d3-hierarchy/src/hierarchy/descendants.js");
+/* harmony import */ var _leaves_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./leaves.js */ "./node_modules/d3-hierarchy/src/hierarchy/leaves.js");
+/* harmony import */ var _links_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./links.js */ "./node_modules/d3-hierarchy/src/hierarchy/links.js");
+
+
+
+
+
+
+
+
+
+
+
+
+function hierarchy(data, children) {
+  var root = new Node(data),
+      valued = +data.value && (root.value = data.value),
+      node,
+      nodes = [root],
+      child,
+      childs,
+      i,
+      n;
+
+  if (children == null) children = defaultChildren;
+
+  while (node = nodes.pop()) {
+    if (valued) node.value = +node.data.value;
+    if ((childs = children(node.data)) && (n = childs.length)) {
+      node.children = new Array(n);
+      for (i = n - 1; i >= 0; --i) {
+        nodes.push(child = node.children[i] = new Node(childs[i]));
+        child.parent = node;
+        child.depth = node.depth + 1;
+      }
+    }
+  }
+
+  return root.eachBefore(computeHeight);
+}
+
+function node_copy() {
+  return hierarchy(this).eachBefore(copyData);
+}
+
+function defaultChildren(d) {
+  return d.children;
+}
+
+function copyData(node) {
+  node.data = node.data.data;
+}
+
+function computeHeight(node) {
+  var height = 0;
+  do node.height = height;
+  while ((node = node.parent) && (node.height < ++height));
+}
+
+function Node(data) {
+  this.data = data;
+  this.depth =
+  this.height = 0;
+  this.parent = null;
+}
+
+Node.prototype = hierarchy.prototype = {
+  constructor: Node,
+  count: _count_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  each: _each_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  eachAfter: _eachAfter_js__WEBPACK_IMPORTED_MODULE_3__["default"],
+  eachBefore: _eachBefore_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  sum: _sum_js__WEBPACK_IMPORTED_MODULE_4__["default"],
+  sort: _sort_js__WEBPACK_IMPORTED_MODULE_5__["default"],
+  path: _path_js__WEBPACK_IMPORTED_MODULE_6__["default"],
+  ancestors: _ancestors_js__WEBPACK_IMPORTED_MODULE_7__["default"],
+  descendants: _descendants_js__WEBPACK_IMPORTED_MODULE_8__["default"],
+  leaves: _leaves_js__WEBPACK_IMPORTED_MODULE_9__["default"],
+  links: _links_js__WEBPACK_IMPORTED_MODULE_10__["default"],
+  copy: node_copy
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/leaves.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/leaves.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var leaves = [];
+  this.eachBefore(function(node) {
+    if (!node.children) {
+      leaves.push(node);
+    }
+  });
+  return leaves;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/links.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/links.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var root = this, links = [];
+  root.each(function(node) {
+    if (node !== root) { // Don’t include the root’s parent, if any.
+      links.push({source: node.parent, target: node});
+    }
+  });
+  return links;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/path.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/path.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(end) {
+  var start = this,
+      ancestor = leastCommonAncestor(start, end),
+      nodes = [start];
+  while (start !== ancestor) {
+    start = start.parent;
+    nodes.push(start);
+  }
+  var k = nodes.length;
+  while (end !== ancestor) {
+    nodes.splice(k, 0, end);
+    end = end.parent;
+  }
+  return nodes;
+});
+
+function leastCommonAncestor(a, b) {
+  if (a === b) return a;
+  var aNodes = a.ancestors(),
+      bNodes = b.ancestors(),
+      c = null;
+  a = aNodes.pop();
+  b = bNodes.pop();
+  while (a === b) {
+    c = a;
+    a = aNodes.pop();
+    b = bNodes.pop();
+  }
+  return c;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/sort.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/sort.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(compare) {
+  return this.eachBefore(function(node) {
+    if (node.children) {
+      node.children.sort(compare);
+    }
+  });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/hierarchy/sum.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/hierarchy/sum.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  return this.eachAfter(function(node) {
+    var sum = +value(node.data) || 0,
+        children = node.children,
+        i = children && children.length;
+    while (--i >= 0) sum += children[i].value;
+    node.value = sum;
+  });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/index.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/index.js ***!
+  \************************************************/
+/*! exports provided: cluster, hierarchy, pack, packSiblings, packEnclose, partition, stratify, tree, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cluster_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cluster.js */ "./node_modules/d3-hierarchy/src/cluster.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cluster", function() { return _cluster_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hierarchy/index.js */ "./node_modules/d3-hierarchy/src/hierarchy/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hierarchy", function() { return _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _pack_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pack/index.js */ "./node_modules/d3-hierarchy/src/pack/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pack", function() { return _pack_index_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _pack_siblings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pack/siblings.js */ "./node_modules/d3-hierarchy/src/pack/siblings.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "packSiblings", function() { return _pack_siblings_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _pack_enclose_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pack/enclose.js */ "./node_modules/d3-hierarchy/src/pack/enclose.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "packEnclose", function() { return _pack_enclose_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _partition_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./partition.js */ "./node_modules/d3-hierarchy/src/partition.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _partition_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _stratify_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stratify.js */ "./node_modules/d3-hierarchy/src/stratify.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stratify", function() { return _stratify_js__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tree.js */ "./node_modules/d3-hierarchy/src/tree.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tree", function() { return _tree_js__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _treemap_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./treemap/index.js */ "./node_modules/d3-hierarchy/src/treemap/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemap", function() { return _treemap_index_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony import */ var _treemap_binary_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./treemap/binary.js */ "./node_modules/d3-hierarchy/src/treemap/binary.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapBinary", function() { return _treemap_binary_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _treemap_dice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./treemap/dice.js */ "./node_modules/d3-hierarchy/src/treemap/dice.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapDice", function() { return _treemap_dice_js__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony import */ var _treemap_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./treemap/slice.js */ "./node_modules/d3-hierarchy/src/treemap/slice.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapSlice", function() { return _treemap_slice_js__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony import */ var _treemap_sliceDice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./treemap/sliceDice.js */ "./node_modules/d3-hierarchy/src/treemap/sliceDice.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapSliceDice", function() { return _treemap_sliceDice_js__WEBPACK_IMPORTED_MODULE_12__["default"]; });
+
+/* harmony import */ var _treemap_squarify_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./treemap/squarify.js */ "./node_modules/d3-hierarchy/src/treemap/squarify.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapSquarify", function() { return _treemap_squarify_js__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony import */ var _treemap_resquarify_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./treemap/resquarify.js */ "./node_modules/d3-hierarchy/src/treemap/resquarify.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapResquarify", function() { return _treemap_resquarify_js__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/pack/enclose.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/pack/enclose.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../array.js */ "./node_modules/d3-hierarchy/src/array.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(circles) {
+  var i = 0, n = (circles = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__["shuffle"])(_array_js__WEBPACK_IMPORTED_MODULE_0__["slice"].call(circles))).length, B = [], p, e;
+
+  while (i < n) {
+    p = circles[i];
+    if (e && enclosesWeak(e, p)) ++i;
+    else e = encloseBasis(B = extendBasis(B, p)), i = 0;
+  }
+
+  return e;
+});
+
+function extendBasis(B, p) {
+  var i, j;
+
+  if (enclosesWeakAll(p, B)) return [p];
+
+  // If we get here then B must have at least one element.
+  for (i = 0; i < B.length; ++i) {
+    if (enclosesNot(p, B[i])
+        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {
+      return [B[i], p];
+    }
+  }
+
+  // If we get here then B must have at least two elements.
+  for (i = 0; i < B.length - 1; ++i) {
+    for (j = i + 1; j < B.length; ++j) {
+      if (enclosesNot(encloseBasis2(B[i], B[j]), p)
+          && enclosesNot(encloseBasis2(B[i], p), B[j])
+          && enclosesNot(encloseBasis2(B[j], p), B[i])
+          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {
+        return [B[i], B[j], p];
+      }
+    }
+  }
+
+  // If we get here then something is very wrong.
+  throw new Error;
+}
+
+function enclosesNot(a, b) {
+  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;
+  return dr < 0 || dr * dr < dx * dx + dy * dy;
+}
+
+function enclosesWeak(a, b) {
+  var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;
+  return dr > 0 && dr * dr > dx * dx + dy * dy;
+}
+
+function enclosesWeakAll(a, B) {
+  for (var i = 0; i < B.length; ++i) {
+    if (!enclosesWeak(a, B[i])) {
+      return false;
+    }
+  }
+  return true;
+}
+
+function encloseBasis(B) {
+  switch (B.length) {
+    case 1: return encloseBasis1(B[0]);
+    case 2: return encloseBasis2(B[0], B[1]);
+    case 3: return encloseBasis3(B[0], B[1], B[2]);
+  }
+}
+
+function encloseBasis1(a) {
+  return {
+    x: a.x,
+    y: a.y,
+    r: a.r
+  };
+}
+
+function encloseBasis2(a, b) {
+  var x1 = a.x, y1 = a.y, r1 = a.r,
+      x2 = b.x, y2 = b.y, r2 = b.r,
+      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,
+      l = Math.sqrt(x21 * x21 + y21 * y21);
+  return {
+    x: (x1 + x2 + x21 / l * r21) / 2,
+    y: (y1 + y2 + y21 / l * r21) / 2,
+    r: (l + r1 + r2) / 2
+  };
+}
+
+function encloseBasis3(a, b, c) {
+  var x1 = a.x, y1 = a.y, r1 = a.r,
+      x2 = b.x, y2 = b.y, r2 = b.r,
+      x3 = c.x, y3 = c.y, r3 = c.r,
+      a2 = x1 - x2,
+      a3 = x1 - x3,
+      b2 = y1 - y2,
+      b3 = y1 - y3,
+      c2 = r2 - r1,
+      c3 = r3 - r1,
+      d1 = x1 * x1 + y1 * y1 - r1 * r1,
+      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,
+      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,
+      ab = a3 * b2 - a2 * b3,
+      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,
+      xb = (b3 * c2 - b2 * c3) / ab,
+      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,
+      yb = (a2 * c3 - a3 * c2) / ab,
+      A = xb * xb + yb * yb - 1,
+      B = 2 * (r1 + xa * xb + ya * yb),
+      C = xa * xa + ya * ya - r1 * r1,
+      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);
+  return {
+    x: x1 + xa + xb * r,
+    y: y1 + ya + yb * r,
+    r: r
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/pack/index.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/pack/index.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _siblings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./siblings.js */ "./node_modules/d3-hierarchy/src/pack/siblings.js");
+/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../accessors.js */ "./node_modules/d3-hierarchy/src/accessors.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant.js */ "./node_modules/d3-hierarchy/src/constant.js");
+
+
+
+
+function defaultRadius(d) {
+  return Math.sqrt(d.value);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var radius = null,
+      dx = 1,
+      dy = 1,
+      padding = _constant_js__WEBPACK_IMPORTED_MODULE_2__["constantZero"];
+
+  function pack(root) {
+    root.x = dx / 2, root.y = dy / 2;
+    if (radius) {
+      root.eachBefore(radiusLeaf(radius))
+          .eachAfter(packChildren(padding, 0.5))
+          .eachBefore(translateChild(1));
+    } else {
+      root.eachBefore(radiusLeaf(defaultRadius))
+          .eachAfter(packChildren(_constant_js__WEBPACK_IMPORTED_MODULE_2__["constantZero"], 1))
+          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))
+          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));
+    }
+    return root;
+  }
+
+  pack.radius = function(x) {
+    return arguments.length ? (radius = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_1__["optional"])(x), pack) : radius;
+  };
+
+  pack.size = function(x) {
+    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];
+  };
+
+  pack.padding = function(x) {
+    return arguments.length ? (padding = typeof x === "function" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__["default"])(+x), pack) : padding;
+  };
+
+  return pack;
+});
+
+function radiusLeaf(radius) {
+  return function(node) {
+    if (!node.children) {
+      node.r = Math.max(0, +radius(node) || 0);
+    }
+  };
+}
+
+function packChildren(padding, k) {
+  return function(node) {
+    if (children = node.children) {
+      var children,
+          i,
+          n = children.length,
+          r = padding(node) * k || 0,
+          e;
+
+      if (r) for (i = 0; i < n; ++i) children[i].r += r;
+      e = Object(_siblings_js__WEBPACK_IMPORTED_MODULE_0__["packEnclose"])(children);
+      if (r) for (i = 0; i < n; ++i) children[i].r -= r;
+      node.r = e + r;
+    }
+  };
+}
+
+function translateChild(k) {
+  return function(node) {
+    var parent = node.parent;
+    node.r *= k;
+    if (parent) {
+      node.x = parent.x + k * node.x;
+      node.y = parent.y + k * node.y;
+    }
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/pack/siblings.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/pack/siblings.js ***!
+  \********************************************************/
+/*! exports provided: packEnclose, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "packEnclose", function() { return packEnclose; });
+/* harmony import */ var _enclose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enclose.js */ "./node_modules/d3-hierarchy/src/pack/enclose.js");
+
+
+function place(b, a, c) {
+  var dx = b.x - a.x, x, a2,
+      dy = b.y - a.y, y, b2,
+      d2 = dx * dx + dy * dy;
+  if (d2) {
+    a2 = a.r + c.r, a2 *= a2;
+    b2 = b.r + c.r, b2 *= b2;
+    if (a2 > b2) {
+      x = (d2 + b2 - a2) / (2 * d2);
+      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));
+      c.x = b.x - x * dx - y * dy;
+      c.y = b.y - x * dy + y * dx;
+    } else {
+      x = (d2 + a2 - b2) / (2 * d2);
+      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));
+      c.x = a.x + x * dx - y * dy;
+      c.y = a.y + x * dy + y * dx;
+    }
+  } else {
+    c.x = a.x + c.r;
+    c.y = a.y;
+  }
+}
+
+function intersects(a, b) {
+  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;
+  return dr > 0 && dr * dr > dx * dx + dy * dy;
+}
+
+function score(node) {
+  var a = node._,
+      b = node.next._,
+      ab = a.r + b.r,
+      dx = (a.x * b.r + b.x * a.r) / ab,
+      dy = (a.y * b.r + b.y * a.r) / ab;
+  return dx * dx + dy * dy;
+}
+
+function Node(circle) {
+  this._ = circle;
+  this.next = null;
+  this.previous = null;
+}
+
+function packEnclose(circles) {
+  if (!(n = circles.length)) return 0;
+
+  var a, b, c, n, aa, ca, i, j, k, sj, sk;
+
+  // Place the first circle.
+  a = circles[0], a.x = 0, a.y = 0;
+  if (!(n > 1)) return a.r;
+
+  // Place the second circle.
+  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;
+  if (!(n > 2)) return a.r + b.r;
+
+  // Place the third circle.
+  place(b, a, c = circles[2]);
+
+  // Initialize the front-chain using the first three circles a, b and c.
+  a = new Node(a), b = new Node(b), c = new Node(c);
+  a.next = c.previous = b;
+  b.next = a.previous = c;
+  c.next = b.previous = a;
+
+  // Attempt to place each remaining circle…
+  pack: for (i = 3; i < n; ++i) {
+    place(a._, b._, c = circles[i]), c = new Node(c);
+
+    // Find the closest intersecting circle on the front-chain, if any.
+    // “Closeness” is determined by linear distance along the front-chain.
+    // “Ahead” or “behind” is likewise determined by linear distance.
+    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;
+    do {
+      if (sj <= sk) {
+        if (intersects(j._, c._)) {
+          b = j, a.next = b, b.previous = a, --i;
+          continue pack;
+        }
+        sj += j._.r, j = j.next;
+      } else {
+        if (intersects(k._, c._)) {
+          a = k, a.next = b, b.previous = a, --i;
+          continue pack;
+        }
+        sk += k._.r, k = k.previous;
+      }
+    } while (j !== k.next);
+
+    // Success! Insert the new circle c between a and b.
+    c.previous = a, c.next = b, a.next = b.previous = b = c;
+
+    // Compute the new closest circle pair to the centroid.
+    aa = score(a);
+    while ((c = c.next) !== b) {
+      if ((ca = score(c)) < aa) {
+        a = c, aa = ca;
+      }
+    }
+    b = a.next;
+  }
+
+  // Compute the enclosing circle of the front chain.
+  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = Object(_enclose_js__WEBPACK_IMPORTED_MODULE_0__["default"])(a);
+
+  // Translate the circles to put the enclosing circle around the origin.
+  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;
+
+  return c.r;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(circles) {
+  packEnclose(circles);
+  return circles;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/partition.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/partition.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _treemap_round_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./treemap/round.js */ "./node_modules/d3-hierarchy/src/treemap/round.js");
+/* harmony import */ var _treemap_dice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./treemap/dice.js */ "./node_modules/d3-hierarchy/src/treemap/dice.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var dx = 1,
+      dy = 1,
+      padding = 0,
+      round = false;
+
+  function partition(root) {
+    var n = root.height + 1;
+    root.x0 =
+    root.y0 = padding;
+    root.x1 = dx;
+    root.y1 = dy / n;
+    root.eachBefore(positionNode(dy, n));
+    if (round) root.eachBefore(_treemap_round_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+    return root;
+  }
+
+  function positionNode(dy, n) {
+    return function(node) {
+      if (node.children) {
+        Object(_treemap_dice_js__WEBPACK_IMPORTED_MODULE_1__["default"])(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);
+      }
+      var x0 = node.x0,
+          y0 = node.y0,
+          x1 = node.x1 - padding,
+          y1 = node.y1 - padding;
+      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
+      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
+      node.x0 = x0;
+      node.y0 = y0;
+      node.x1 = x1;
+      node.y1 = y1;
+    };
+  }
+
+  partition.round = function(x) {
+    return arguments.length ? (round = !!x, partition) : round;
+  };
+
+  partition.size = function(x) {
+    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];
+  };
+
+  partition.padding = function(x) {
+    return arguments.length ? (padding = +x, partition) : padding;
+  };
+
+  return partition;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/stratify.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/stratify.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accessors.js */ "./node_modules/d3-hierarchy/src/accessors.js");
+/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hierarchy/index.js */ "./node_modules/d3-hierarchy/src/hierarchy/index.js");
+
+
+
+var keyPrefix = "$", // Protect against keys like “__proto__”.
+    preroot = {depth: -1},
+    ambiguous = {};
+
+function defaultId(d) {
+  return d.id;
+}
+
+function defaultParentId(d) {
+  return d.parentId;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var id = defaultId,
+      parentId = defaultParentId;
+
+  function stratify(data) {
+    var d,
+        i,
+        n = data.length,
+        root,
+        parent,
+        node,
+        nodes = new Array(n),
+        nodeId,
+        nodeKey,
+        nodeByKey = {};
+
+    for (i = 0; i < n; ++i) {
+      d = data[i], node = nodes[i] = new _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__["Node"](d);
+      if ((nodeId = id(d, i, data)) != null && (nodeId += "")) {
+        nodeKey = keyPrefix + (node.id = nodeId);
+        nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;
+      }
+    }
+
+    for (i = 0; i < n; ++i) {
+      node = nodes[i], nodeId = parentId(data[i], i, data);
+      if (nodeId == null || !(nodeId += "")) {
+        if (root) throw new Error("multiple roots");
+        root = node;
+      } else {
+        parent = nodeByKey[keyPrefix + nodeId];
+        if (!parent) throw new Error("missing: " + nodeId);
+        if (parent === ambiguous) throw new Error("ambiguous: " + nodeId);
+        if (parent.children) parent.children.push(node);
+        else parent.children = [node];
+        node.parent = parent;
+      }
+    }
+
+    if (!root) throw new Error("no root");
+    root.parent = preroot;
+    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(_hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__["computeHeight"]);
+    root.parent = null;
+    if (n > 0) throw new Error("cycle");
+
+    return root;
+  }
+
+  stratify.id = function(x) {
+    return arguments.length ? (id = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_0__["required"])(x), stratify) : id;
+  };
+
+  stratify.parentId = function(x) {
+    return arguments.length ? (parentId = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_0__["required"])(x), stratify) : parentId;
+  };
+
+  return stratify;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/tree.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/tree.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hierarchy/index.js */ "./node_modules/d3-hierarchy/src/hierarchy/index.js");
+
+
+function defaultSeparation(a, b) {
+  return a.parent === b.parent ? 1 : 2;
+}
+
+// function radialSeparation(a, b) {
+//   return (a.parent === b.parent ? 1 : 2) / a.depth;
+// }
+
+// This function is used to traverse the left contour of a subtree (or
+// subforest). It returns the successor of v on this contour. This successor is
+// either given by the leftmost child of v or by the thread of v. The function
+// returns null if and only if v is on the highest level of its subtree.
+function nextLeft(v) {
+  var children = v.children;
+  return children ? children[0] : v.t;
+}
+
+// This function works analogously to nextLeft.
+function nextRight(v) {
+  var children = v.children;
+  return children ? children[children.length - 1] : v.t;
+}
+
+// Shifts the current subtree rooted at w+. This is done by increasing
+// prelim(w+) and mod(w+) by shift.
+function moveSubtree(wm, wp, shift) {
+  var change = shift / (wp.i - wm.i);
+  wp.c -= change;
+  wp.s += shift;
+  wm.c += change;
+  wp.z += shift;
+  wp.m += shift;
+}
+
+// All other shifts, applied to the smaller subtrees between w- and w+, are
+// performed by this function. To prepare the shifts, we have to adjust
+// change(w+), shift(w+), and change(w-).
+function executeShifts(v) {
+  var shift = 0,
+      change = 0,
+      children = v.children,
+      i = children.length,
+      w;
+  while (--i >= 0) {
+    w = children[i];
+    w.z += shift;
+    w.m += shift;
+    shift += w.s + (change += w.c);
+  }
+}
+
+// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,
+// returns the specified (default) ancestor.
+function nextAncestor(vim, v, ancestor) {
+  return vim.a.parent === v.parent ? vim.a : ancestor;
+}
+
+function TreeNode(node, i) {
+  this._ = node;
+  this.parent = null;
+  this.children = null;
+  this.A = null; // default ancestor
+  this.a = this; // ancestor
+  this.z = 0; // prelim
+  this.m = 0; // mod
+  this.c = 0; // change
+  this.s = 0; // shift
+  this.t = null; // thread
+  this.i = i; // number
+}
+
+TreeNode.prototype = Object.create(_hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__["Node"].prototype);
+
+function treeRoot(root) {
+  var tree = new TreeNode(root, 0),
+      node,
+      nodes = [tree],
+      child,
+      children,
+      i,
+      n;
+
+  while (node = nodes.pop()) {
+    if (children = node._.children) {
+      node.children = new Array(n = children.length);
+      for (i = n - 1; i >= 0; --i) {
+        nodes.push(child = node.children[i] = new TreeNode(children[i], i));
+        child.parent = node;
+      }
+    }
+  }
+
+  (tree.parent = new TreeNode(null, 0)).children = [tree];
+  return tree;
+}
+
+// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var separation = defaultSeparation,
+      dx = 1,
+      dy = 1,
+      nodeSize = null;
+
+  function tree(root) {
+    var t = treeRoot(root);
+
+    // Compute the layout using Buchheim et al.’s algorithm.
+    t.eachAfter(firstWalk), t.parent.m = -t.z;
+    t.eachBefore(secondWalk);
+
+    // If a fixed node size is specified, scale x and y.
+    if (nodeSize) root.eachBefore(sizeNode);
+
+    // If a fixed tree size is specified, scale x and y based on the extent.
+    // Compute the left-most, right-most, and depth-most nodes for extents.
+    else {
+      var left = root,
+          right = root,
+          bottom = root;
+      root.eachBefore(function(node) {
+        if (node.x < left.x) left = node;
+        if (node.x > right.x) right = node;
+        if (node.depth > bottom.depth) bottom = node;
+      });
+      var s = left === right ? 1 : separation(left, right) / 2,
+          tx = s - left.x,
+          kx = dx / (right.x + s + tx),
+          ky = dy / (bottom.depth || 1);
+      root.eachBefore(function(node) {
+        node.x = (node.x + tx) * kx;
+        node.y = node.depth * ky;
+      });
+    }
+
+    return root;
+  }
+
+  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is
+  // applied recursively to the children of v, as well as the function
+  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the
+  // node v is placed to the midpoint of its outermost children.
+  function firstWalk(v) {
+    var children = v.children,
+        siblings = v.parent.children,
+        w = v.i ? siblings[v.i - 1] : null;
+    if (children) {
+      executeShifts(v);
+      var midpoint = (children[0].z + children[children.length - 1].z) / 2;
+      if (w) {
+        v.z = w.z + separation(v._, w._);
+        v.m = v.z - midpoint;
+      } else {
+        v.z = midpoint;
+      }
+    } else if (w) {
+      v.z = w.z + separation(v._, w._);
+    }
+    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
+  }
+
+  // Computes all real x-coordinates by summing up the modifiers recursively.
+  function secondWalk(v) {
+    v._.x = v.z + v.parent.m;
+    v.m += v.parent.m;
+  }
+
+  // The core of the algorithm. Here, a new subtree is combined with the
+  // previous subtrees. Threads are used to traverse the inside and outside
+  // contours of the left and right subtree up to the highest common level. The
+  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the
+  // superscript o means outside and i means inside, the subscript - means left
+  // subtree and + means right subtree. For summing up the modifiers along the
+  // contour, we use respective variables si+, si-, so-, and so+. Whenever two
+  // nodes of the inside contours conflict, we compute the left one of the
+  // greatest uncommon ancestors using the function ANCESTOR and call MOVE
+  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.
+  // Finally, we add a new thread (if necessary).
+  function apportion(v, w, ancestor) {
+    if (w) {
+      var vip = v,
+          vop = v,
+          vim = w,
+          vom = vip.parent.children[0],
+          sip = vip.m,
+          sop = vop.m,
+          sim = vim.m,
+          som = vom.m,
+          shift;
+      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {
+        vom = nextLeft(vom);
+        vop = nextRight(vop);
+        vop.a = v;
+        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
+        if (shift > 0) {
+          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);
+          sip += shift;
+          sop += shift;
+        }
+        sim += vim.m;
+        sip += vip.m;
+        som += vom.m;
+        sop += vop.m;
+      }
+      if (vim && !nextRight(vop)) {
+        vop.t = vim;
+        vop.m += sim - sop;
+      }
+      if (vip && !nextLeft(vom)) {
+        vom.t = vip;
+        vom.m += sip - som;
+        ancestor = v;
+      }
+    }
+    return ancestor;
+  }
+
+  function sizeNode(node) {
+    node.x *= dx;
+    node.y = node.depth * dy;
+  }
+
+  tree.separation = function(x) {
+    return arguments.length ? (separation = x, tree) : separation;
+  };
+
+  tree.size = function(x) {
+    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);
+  };
+
+  tree.nodeSize = function(x) {
+    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);
+  };
+
+  return tree;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/binary.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/binary.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(parent, x0, y0, x1, y1) {
+  var nodes = parent.children,
+      i, n = nodes.length,
+      sum, sums = new Array(n + 1);
+
+  for (sums[0] = sum = i = 0; i < n; ++i) {
+    sums[i + 1] = sum += nodes[i].value;
+  }
+
+  partition(0, n, parent.value, x0, y0, x1, y1);
+
+  function partition(i, j, value, x0, y0, x1, y1) {
+    if (i >= j - 1) {
+      var node = nodes[i];
+      node.x0 = x0, node.y0 = y0;
+      node.x1 = x1, node.y1 = y1;
+      return;
+    }
+
+    var valueOffset = sums[i],
+        valueTarget = (value / 2) + valueOffset,
+        k = i + 1,
+        hi = j - 1;
+
+    while (k < hi) {
+      var mid = k + hi >>> 1;
+      if (sums[mid] < valueTarget) k = mid + 1;
+      else hi = mid;
+    }
+
+    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;
+
+    var valueLeft = sums[k] - valueOffset,
+        valueRight = value - valueLeft;
+
+    if ((x1 - x0) > (y1 - y0)) {
+      var xk = (x0 * valueRight + x1 * valueLeft) / value;
+      partition(i, k, valueLeft, x0, y0, xk, y1);
+      partition(k, j, valueRight, xk, y0, x1, y1);
+    } else {
+      var yk = (y0 * valueRight + y1 * valueLeft) / value;
+      partition(i, k, valueLeft, x0, y0, x1, yk);
+      partition(k, j, valueRight, x0, yk, x1, y1);
+    }
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/dice.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/dice.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(parent, x0, y0, x1, y1) {
+  var nodes = parent.children,
+      node,
+      i = -1,
+      n = nodes.length,
+      k = parent.value && (x1 - x0) / parent.value;
+
+  while (++i < n) {
+    node = nodes[i], node.y0 = y0, node.y1 = y1;
+    node.x0 = x0, node.x1 = x0 += node.value * k;
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/index.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/index.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./round.js */ "./node_modules/d3-hierarchy/src/treemap/round.js");
+/* harmony import */ var _squarify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./squarify.js */ "./node_modules/d3-hierarchy/src/treemap/squarify.js");
+/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../accessors.js */ "./node_modules/d3-hierarchy/src/accessors.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant.js */ "./node_modules/d3-hierarchy/src/constant.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var tile = _squarify_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+      round = false,
+      dx = 1,
+      dy = 1,
+      paddingStack = [0],
+      paddingInner = _constant_js__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
+      paddingTop = _constant_js__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
+      paddingRight = _constant_js__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
+      paddingBottom = _constant_js__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
+      paddingLeft = _constant_js__WEBPACK_IMPORTED_MODULE_3__["constantZero"];
+
+  function treemap(root) {
+    root.x0 =
+    root.y0 = 0;
+    root.x1 = dx;
+    root.y1 = dy;
+    root.eachBefore(positionNode);
+    paddingStack = [0];
+    if (round) root.eachBefore(_round_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+    return root;
+  }
+
+  function positionNode(node) {
+    var p = paddingStack[node.depth],
+        x0 = node.x0 + p,
+        y0 = node.y0 + p,
+        x1 = node.x1 - p,
+        y1 = node.y1 - p;
+    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
+    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
+    node.x0 = x0;
+    node.y0 = y0;
+    node.x1 = x1;
+    node.y1 = y1;
+    if (node.children) {
+      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;
+      x0 += paddingLeft(node) - p;
+      y0 += paddingTop(node) - p;
+      x1 -= paddingRight(node) - p;
+      y1 -= paddingBottom(node) - p;
+      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
+      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
+      tile(node, x0, y0, x1, y1);
+    }
+  }
+
+  treemap.round = function(x) {
+    return arguments.length ? (round = !!x, treemap) : round;
+  };
+
+  treemap.size = function(x) {
+    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];
+  };
+
+  treemap.tile = function(x) {
+    return arguments.length ? (tile = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_2__["required"])(x), treemap) : tile;
+  };
+
+  treemap.padding = function(x) {
+    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();
+  };
+
+  treemap.paddingInner = function(x) {
+    return arguments.length ? (paddingInner = typeof x === "function" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingInner;
+  };
+
+  treemap.paddingOuter = function(x) {
+    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();
+  };
+
+  treemap.paddingTop = function(x) {
+    return arguments.length ? (paddingTop = typeof x === "function" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingTop;
+  };
+
+  treemap.paddingRight = function(x) {
+    return arguments.length ? (paddingRight = typeof x === "function" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingRight;
+  };
+
+  treemap.paddingBottom = function(x) {
+    return arguments.length ? (paddingBottom = typeof x === "function" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingBottom;
+  };
+
+  treemap.paddingLeft = function(x) {
+    return arguments.length ? (paddingLeft = typeof x === "function" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingLeft;
+  };
+
+  return treemap;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/resquarify.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/resquarify.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ "./node_modules/d3-hierarchy/src/treemap/dice.js");
+/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ "./node_modules/d3-hierarchy/src/treemap/slice.js");
+/* harmony import */ var _squarify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./squarify.js */ "./node_modules/d3-hierarchy/src/treemap/squarify.js");
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(ratio) {
+
+  function resquarify(parent, x0, y0, x1, y1) {
+    if ((rows = parent._squarify) && (rows.ratio === ratio)) {
+      var rows,
+          row,
+          nodes,
+          i,
+          j = -1,
+          n,
+          m = rows.length,
+          value = parent.value;
+
+      while (++j < m) {
+        row = rows[j], nodes = row.children;
+        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
+        if (row.dice) Object(_dice_js__WEBPACK_IMPORTED_MODULE_0__["default"])(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);
+        else Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__["default"])(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);
+        value -= row.value;
+      }
+    } else {
+      parent._squarify = rows = Object(_squarify_js__WEBPACK_IMPORTED_MODULE_2__["squarifyRatio"])(ratio, parent, x0, y0, x1, y1);
+      rows.ratio = ratio;
+    }
+  }
+
+  resquarify.ratio = function(x) {
+    return custom((x = +x) > 1 ? x : 1);
+  };
+
+  return resquarify;
+})(_squarify_js__WEBPACK_IMPORTED_MODULE_2__["phi"]));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/round.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/round.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(node) {
+  node.x0 = Math.round(node.x0);
+  node.y0 = Math.round(node.y0);
+  node.x1 = Math.round(node.x1);
+  node.y1 = Math.round(node.y1);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/slice.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/slice.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(parent, x0, y0, x1, y1) {
+  var nodes = parent.children,
+      node,
+      i = -1,
+      n = nodes.length,
+      k = parent.value && (y1 - y0) / parent.value;
+
+  while (++i < n) {
+    node = nodes[i], node.x0 = x0, node.x1 = x1;
+    node.y0 = y0, node.y1 = y0 += node.value * k;
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/sliceDice.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/sliceDice.js ***!
+  \************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ "./node_modules/d3-hierarchy/src/treemap/dice.js");
+/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ "./node_modules/d3-hierarchy/src/treemap/slice.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(parent, x0, y0, x1, y1) {
+  (parent.depth & 1 ? _slice_js__WEBPACK_IMPORTED_MODULE_1__["default"] : _dice_js__WEBPACK_IMPORTED_MODULE_0__["default"])(parent, x0, y0, x1, y1);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-hierarchy/src/treemap/squarify.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-hierarchy/src/treemap/squarify.js ***!
+  \***********************************************************/
+/*! exports provided: phi, squarifyRatio, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "phi", function() { return phi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "squarifyRatio", function() { return squarifyRatio; });
+/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ "./node_modules/d3-hierarchy/src/treemap/dice.js");
+/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ "./node_modules/d3-hierarchy/src/treemap/slice.js");
+
+
+
+var phi = (1 + Math.sqrt(5)) / 2;
+
+function squarifyRatio(ratio, parent, x0, y0, x1, y1) {
+  var rows = [],
+      nodes = parent.children,
+      row,
+      nodeValue,
+      i0 = 0,
+      i1 = 0,
+      n = nodes.length,
+      dx, dy,
+      value = parent.value,
+      sumValue,
+      minValue,
+      maxValue,
+      newRatio,
+      minRatio,
+      alpha,
+      beta;
+
+  while (i0 < n) {
+    dx = x1 - x0, dy = y1 - y0;
+
+    // Find the next non-empty node.
+    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);
+    minValue = maxValue = sumValue;
+    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);
+    beta = sumValue * sumValue * alpha;
+    minRatio = Math.max(maxValue / beta, beta / minValue);
+
+    // Keep adding nodes while the aspect ratio maintains or improves.
+    for (; i1 < n; ++i1) {
+      sumValue += nodeValue = nodes[i1].value;
+      if (nodeValue < minValue) minValue = nodeValue;
+      if (nodeValue > maxValue) maxValue = nodeValue;
+      beta = sumValue * sumValue * alpha;
+      newRatio = Math.max(maxValue / beta, beta / minValue);
+      if (newRatio > minRatio) { sumValue -= nodeValue; break; }
+      minRatio = newRatio;
+    }
+
+    // Position and record the row orientation.
+    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});
+    if (row.dice) Object(_dice_js__WEBPACK_IMPORTED_MODULE_0__["default"])(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);
+    else Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__["default"])(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);
+    value -= sumValue, i0 = i1;
+  }
+
+  return rows;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(ratio) {
+
+  function squarify(parent, x0, y0, x1, y1) {
+    squarifyRatio(ratio, parent, x0, y0, x1, y1);
+  }
+
+  squarify.ratio = function(x) {
+    return custom((x = +x) > 1 ? x : 1);
+  };
+
+  return squarify;
+})(phi));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/array.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/array.js ***!
+  \**************************************************/
+/*! exports provided: default, genericArray */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "genericArray", function() { return genericArray; });
+/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ "./node_modules/d3-interpolate/src/value.js");
+/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./numberArray.js */ "./node_modules/d3-interpolate/src/numberArray.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return (Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_1__["isNumberArray"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_1__["default"] : genericArray)(a, b);
+});
+
+function genericArray(a, b) {
+  var nb = b ? b.length : 0,
+      na = a ? Math.min(nb, a.length) : 0,
+      x = new Array(na),
+      c = new Array(nb),
+      i;
+
+  for (i = 0; i < na; ++i) x[i] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__["default"])(a[i], b[i]);
+  for (; i < nb; ++i) c[i] = b[i];
+
+  return function(t) {
+    for (i = 0; i < na; ++i) c[i] = x[i](t);
+    return c;
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/basis.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/basis.js ***!
+  \**************************************************/
+/*! exports provided: basis, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "basis", function() { return basis; });
+function basis(t1, v0, v1, v2, v3) {
+  var t2 = t1 * t1, t3 = t2 * t1;
+  return ((1 - 3 * t1 + 3 * t2 - t3) * v0
+      + (4 - 6 * t2 + 3 * t3) * v1
+      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2
+      + t3 * v3) / 6;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values) {
+  var n = values.length - 1;
+  return function(t) {
+    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),
+        v1 = values[i],
+        v2 = values[i + 1],
+        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,
+        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;
+    return basis((t - i / n) * n, v0, v1, v2, v3);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/basisClosed.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/basisClosed.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ "./node_modules/d3-interpolate/src/basis.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(values) {
+  var n = values.length;
+  return function(t) {
+    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),
+        v0 = values[(i + n - 1) % n],
+        v1 = values[i % n],
+        v2 = values[(i + 1) % n],
+        v3 = values[(i + 2) % n];
+    return Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__["basis"])((t - i / n) * n, v0, v1, v2, v3);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/color.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/color.js ***!
+  \**************************************************/
+/*! exports provided: hue, gamma, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hue", function() { return hue; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gamma", function() { return gamma; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return nogamma; });
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-interpolate/src/constant.js");
+
+
+function linear(a, d) {
+  return function(t) {
+    return a + t * d;
+  };
+}
+
+function exponential(a, b, y) {
+  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {
+    return Math.pow(a + t * b, y);
+  };
+}
+
+function hue(a, b) {
+  var d = b - a;
+  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(isNaN(a) ? b : a);
+}
+
+function gamma(y) {
+  return (y = +y) === 1 ? nogamma : function(a, b) {
+    return b - a ? exponential(a, b, y) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(isNaN(a) ? b : a);
+  };
+}
+
+function nogamma(a, b) {
+  var d = b - a;
+  return d ? linear(a, d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(isNaN(a) ? b : a);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/constant.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/constant.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/cubehelix.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/cubehelix.js ***!
+  \******************************************************/
+/*! exports provided: default, cubehelixLong */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cubehelixLong", function() { return cubehelixLong; });
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-interpolate/src/color.js");
+
+
+
+function cubehelix(hue) {
+  return (function cubehelixGamma(y) {
+    y = +y;
+
+    function cubehelix(start, end) {
+      var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(end)).h),
+          s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.s, end.s),
+          l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.l, end.l),
+          opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
+      return function(t) {
+        start.h = h(t);
+        start.s = s(t);
+        start.l = l(Math.pow(t, y));
+        start.opacity = opacity(t);
+        return start + "";
+      };
+    }
+
+    cubehelix.gamma = cubehelixGamma;
+
+    return cubehelix;
+  })(1);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__["hue"]));
+var cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"]);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/date.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/date.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  var d = new Date;
+  return a = +a, b = +b, function(t) {
+    return d.setTime(a * (1 - t) + b * t), d;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/discrete.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/discrete.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(range) {
+  var n = range.length;
+  return function(t) {
+    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/hcl.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/hcl.js ***!
+  \************************************************/
+/*! exports provided: default, hclLong */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hclLong", function() { return hclLong; });
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-interpolate/src/color.js");
+
+
+
+function hcl(hue) {
+  return function(start, end) {
+    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hcl"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hcl"])(end)).h),
+        c = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.c, end.c),
+        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.l, end.l),
+        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
+    return function(t) {
+      start.h = h(t);
+      start.c = c(t);
+      start.l = l(t);
+      start.opacity = opacity(t);
+      return start + "";
+    };
+  }
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__["hue"]));
+var hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"]);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/hsl.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/hsl.js ***!
+  \************************************************/
+/*! exports provided: default, hslLong */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hslLong", function() { return hslLong; });
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-interpolate/src/color.js");
+
+
+
+function hsl(hue) {
+  return function(start, end) {
+    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hsl"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hsl"])(end)).h),
+        s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.s, end.s),
+        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.l, end.l),
+        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
+    return function(t) {
+      start.h = h(t);
+      start.s = s(t);
+      start.l = l(t);
+      start.opacity = opacity(t);
+      return start + "";
+    };
+  }
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__["hue"]));
+var hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"]);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/hue.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/hue.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-interpolate/src/color.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  var i = Object(_color_js__WEBPACK_IMPORTED_MODULE_0__["hue"])(+a, +b);
+  return function(t) {
+    var x = i(t);
+    return x - 360 * Math.floor(x / 360);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/index.js ***!
+  \**************************************************/
+/*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ "./node_modules/d3-interpolate/src/value.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolate", function() { return _value_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ "./node_modules/d3-interpolate/src/array.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateArray", function() { return _array_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ "./node_modules/d3-interpolate/src/basis.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBasis", function() { return _basis_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ "./node_modules/d3-interpolate/src/basisClosed.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBasisClosed", function() { return _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ "./node_modules/d3-interpolate/src/date.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateDate", function() { return _date_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ "./node_modules/d3-interpolate/src/discrete.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateDiscrete", function() { return _discrete_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ "./node_modules/d3-interpolate/src/hue.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHue", function() { return _hue_js__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ "./node_modules/d3-interpolate/src/number.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateNumber", function() { return _number_js__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ "./node_modules/d3-interpolate/src/numberArray.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateNumberArray", function() { return _numberArray_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ "./node_modules/d3-interpolate/src/object.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateObject", function() { return _object_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ "./node_modules/d3-interpolate/src/round.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRound", function() { return _round_js__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ "./node_modules/d3-interpolate/src/string.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateString", function() { return _string_js__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ "./node_modules/d3-interpolate/src/transform/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformCss", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__["interpolateTransformCss"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformSvg", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__["interpolateTransformSvg"]; });
+
+/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ "./node_modules/d3-interpolate/src/zoom.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateZoom", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ "./node_modules/d3-interpolate/src/rgb.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRgb", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRgbBasis", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__["rgbBasis"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRgbBasisClosed", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__["rgbBasisClosed"]; });
+
+/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ "./node_modules/d3-interpolate/src/hsl.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHsl", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHslLong", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__["hslLong"]; });
+
+/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ "./node_modules/d3-interpolate/src/lab.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateLab", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_16__["default"]; });
+
+/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ "./node_modules/d3-interpolate/src/hcl.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHcl", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHclLong", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__["hclLong"]; });
+
+/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ "./node_modules/d3-interpolate/src/cubehelix.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelix", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelixLong", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__["cubehelixLong"]; });
+
+/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ "./node_modules/d3-interpolate/src/piecewise.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "piecewise", function() { return _piecewise_js__WEBPACK_IMPORTED_MODULE_19__["default"]; });
+
+/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ "./node_modules/d3-interpolate/src/quantize.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "quantize", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_20__["default"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/lab.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/lab.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return lab; });
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-interpolate/src/color.js");
+
+
+
+function lab(start, end) {
+  var l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["lab"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["lab"])(end)).l),
+      a = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.a, end.a),
+      b = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.b, end.b),
+      opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
+  return function(t) {
+    start.l = l(t);
+    start.a = a(t);
+    start.b = b(t);
+    start.opacity = opacity(t);
+    return start + "";
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/number.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/number.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return a = +a, b = +b, function(t) {
+    return a * (1 - t) + b * t;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/numberArray.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/numberArray.js ***!
+  \********************************************************/
+/*! exports provided: default, isNumberArray */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumberArray", function() { return isNumberArray; });
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  if (!b) b = [];
+  var n = a ? Math.min(b.length, a.length) : 0,
+      c = b.slice(),
+      i;
+  return function(t) {
+    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;
+    return c;
+  };
+});
+
+function isNumberArray(x) {
+  return ArrayBuffer.isView(x) && !(x instanceof DataView);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/object.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/object.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ "./node_modules/d3-interpolate/src/value.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  var i = {},
+      c = {},
+      k;
+
+  if (a === null || typeof a !== "object") a = {};
+  if (b === null || typeof b !== "object") b = {};
+
+  for (k in b) {
+    if (k in a) {
+      i[k] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__["default"])(a[k], b[k]);
+    } else {
+      c[k] = b[k];
+    }
+  }
+
+  return function(t) {
+    for (k in i) c[k] = i[k](t);
+    return c;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/piecewise.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/piecewise.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return piecewise; });
+function piecewise(interpolate, values) {
+  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);
+  while (i < n) I[i] = interpolate(v, v = values[++i]);
+  return function(t) {
+    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));
+    return I[i](t - i);
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/quantize.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/quantize.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(interpolator, n) {
+  var samples = new Array(n);
+  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));
+  return samples;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/rgb.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/rgb.js ***!
+  \************************************************/
+/*! exports provided: default, rgbBasis, rgbBasisClosed */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rgbBasis", function() { return rgbBasis; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rgbBasisClosed", function() { return rgbBasisClosed; });
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ "./node_modules/d3-interpolate/src/basis.js");
+/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basisClosed.js */ "./node_modules/d3-interpolate/src/basisClosed.js");
+/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./color.js */ "./node_modules/d3-interpolate/src/color.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function rgbGamma(y) {
+  var color = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__["gamma"])(y);
+
+  function rgb(start, end) {
+    var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["rgb"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["rgb"])(end)).r),
+        g = color(start.g, end.g),
+        b = color(start.b, end.b),
+        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__["default"])(start.opacity, end.opacity);
+    return function(t) {
+      start.r = r(t);
+      start.g = g(t);
+      start.b = b(t);
+      start.opacity = opacity(t);
+      return start + "";
+    };
+  }
+
+  rgb.gamma = rgbGamma;
+
+  return rgb;
+})(1));
+
+function rgbSpline(spline) {
+  return function(colors) {
+    var n = colors.length,
+        r = new Array(n),
+        g = new Array(n),
+        b = new Array(n),
+        i, color;
+    for (i = 0; i < n; ++i) {
+      color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["rgb"])(colors[i]);
+      r[i] = color.r || 0;
+      g[i] = color.g || 0;
+      b[i] = color.b || 0;
+    }
+    r = spline(r);
+    g = spline(g);
+    b = spline(b);
+    color.opacity = 1;
+    return function(t) {
+      color.r = r(t);
+      color.g = g(t);
+      color.b = b(t);
+      return color + "";
+    };
+  };
+}
+
+var rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_1__["default"]);
+var rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_2__["default"]);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/round.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/round.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return a = +a, b = +b, function(t) {
+    return Math.round(a * (1 - t) + b * t);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/string.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/string.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ "./node_modules/d3-interpolate/src/number.js");
+
+
+var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
+    reB = new RegExp(reA.source, "g");
+
+function zero(b) {
+  return function() {
+    return b;
+  };
+}
+
+function one(b) {
+  return function(t) {
+    return b(t) + "";
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b
+      am, // current match in a
+      bm, // current match in b
+      bs, // string preceding current number in b, if any
+      i = -1, // index in s
+      s = [], // string constants and placeholders
+      q = []; // number interpolators
+
+  // Coerce inputs to strings.
+  a = a + "", b = b + "";
+
+  // Interpolate pairs of numbers in a & b.
+  while ((am = reA.exec(a))
+      && (bm = reB.exec(b))) {
+    if ((bs = bm.index) > bi) { // a string precedes the next number in b
+      bs = b.slice(bi, bs);
+      if (s[i]) s[i] += bs; // coalesce with previous string
+      else s[++i] = bs;
+    }
+    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
+      if (s[i]) s[i] += bm; // coalesce with previous string
+      else s[++i] = bm;
+    } else { // interpolate non-matching numbers
+      s[++i] = null;
+      q.push({i: i, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__["default"])(am, bm)});
+    }
+    bi = reB.lastIndex;
+  }
+
+  // Add remains of b.
+  if (bi < b.length) {
+    bs = b.slice(bi);
+    if (s[i]) s[i] += bs; // coalesce with previous string
+    else s[++i] = bs;
+  }
+
+  // Special optimization for only a single match.
+  // Otherwise, interpolate each of the numbers and rejoin the string.
+  return s.length < 2 ? (q[0]
+      ? one(q[0].x)
+      : zero(b))
+      : (b = q.length, function(t) {
+          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
+          return s.join("");
+        });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/transform/decompose.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/transform/decompose.js ***!
+  \****************************************************************/
+/*! exports provided: identity, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; });
+var degrees = 180 / Math.PI;
+
+var identity = {
+  translateX: 0,
+  translateY: 0,
+  rotate: 0,
+  skewX: 0,
+  scaleX: 1,
+  scaleY: 1
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b, c, d, e, f) {
+  var scaleX, scaleY, skewX;
+  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;
+  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;
+  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;
+  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;
+  return {
+    translateX: e,
+    translateY: f,
+    rotate: Math.atan2(b, a) * degrees,
+    skewX: Math.atan(skewX) * degrees,
+    scaleX: scaleX,
+    scaleY: scaleY
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/transform/index.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/transform/index.js ***!
+  \************************************************************/
+/*! exports provided: interpolateTransformCss, interpolateTransformSvg */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformCss", function() { return interpolateTransformCss; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformSvg", function() { return interpolateTransformSvg; });
+/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ "./node_modules/d3-interpolate/src/number.js");
+/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ "./node_modules/d3-interpolate/src/transform/parse.js");
+
+
+
+function interpolateTransform(parse, pxComma, pxParen, degParen) {
+
+  function pop(s) {
+    return s.length ? s.pop() + " " : "";
+  }
+
+  function translate(xa, ya, xb, yb, s, q) {
+    if (xa !== xb || ya !== yb) {
+      var i = s.push("translate(", null, pxComma, null, pxParen);
+      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__["default"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__["default"])(ya, yb)});
+    } else if (xb || yb) {
+      s.push("translate(" + xb + pxComma + yb + pxParen);
+    }
+  }
+
+  function rotate(a, b, s, q) {
+    if (a !== b) {
+      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path
+      q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__["default"])(a, b)});
+    } else if (b) {
+      s.push(pop(s) + "rotate(" + b + degParen);
+    }
+  }
+
+  function skewX(a, b, s, q) {
+    if (a !== b) {
+      q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__["default"])(a, b)});
+    } else if (b) {
+      s.push(pop(s) + "skewX(" + b + degParen);
+    }
+  }
+
+  function scale(xa, ya, xb, yb, s, q) {
+    if (xa !== xb || ya !== yb) {
+      var i = s.push(pop(s) + "scale(", null, ",", null, ")");
+      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__["default"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__["default"])(ya, yb)});
+    } else if (xb !== 1 || yb !== 1) {
+      s.push(pop(s) + "scale(" + xb + "," + yb + ")");
+    }
+  }
+
+  return function(a, b) {
+    var s = [], // string constants and placeholders
+        q = []; // number interpolators
+    a = parse(a), b = parse(b);
+    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);
+    rotate(a.rotate, b.rotate, s, q);
+    skewX(a.skewX, b.skewX, s, q);
+    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);
+    a = b = null; // gc
+    return function(t) {
+      var i = -1, n = q.length, o;
+      while (++i < n) s[(o = q[i]).i] = o.x(t);
+      return s.join("");
+    };
+  };
+}
+
+var interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__["parseCss"], "px, ", "px)", "deg)");
+var interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__["parseSvg"], ", ", ")", ")");
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/transform/parse.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/transform/parse.js ***!
+  \************************************************************/
+/*! exports provided: parseCss, parseSvg */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseCss", function() { return parseCss; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseSvg", function() { return parseSvg; });
+/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ "./node_modules/d3-interpolate/src/transform/decompose.js");
+
+
+var cssNode,
+    cssRoot,
+    cssView,
+    svgNode;
+
+function parseCss(value) {
+  if (value === "none") return _decompose_js__WEBPACK_IMPORTED_MODULE_0__["identity"];
+  if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView;
+  cssNode.style.transform = value;
+  value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform");
+  cssRoot.removeChild(cssNode);
+  value = value.slice(7, -1).split(",");
+  return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__["default"])(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);
+}
+
+function parseSvg(value) {
+  if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__["identity"];
+  if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g");
+  svgNode.setAttribute("transform", value);
+  if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__["identity"];
+  value = value.matrix;
+  return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value.a, value.b, value.c, value.d, value.e, value.f);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/value.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/value.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgb.js */ "./node_modules/d3-interpolate/src/rgb.js");
+/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ "./node_modules/d3-interpolate/src/array.js");
+/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./date.js */ "./node_modules/d3-interpolate/src/date.js");
+/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ "./node_modules/d3-interpolate/src/number.js");
+/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./object.js */ "./node_modules/d3-interpolate/src/object.js");
+/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ "./node_modules/d3-interpolate/src/string.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-interpolate/src/constant.js");
+/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ "./node_modules/d3-interpolate/src/numberArray.js");
+
+
+
+
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  var t = typeof b, c;
+  return b == null || t === "boolean" ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_7__["default"])(b)
+      : (t === "number" ? _number_js__WEBPACK_IMPORTED_MODULE_4__["default"]
+      : t === "string" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["color"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_1__["default"]) : _string_js__WEBPACK_IMPORTED_MODULE_6__["default"])
+      : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__["color"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_1__["default"]
+      : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_3__["default"]
+      : Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_8__["isNumberArray"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_8__["default"]
+      : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_2__["genericArray"]
+      : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_5__["default"]
+      : _number_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a, b);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-interpolate/src/zoom.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-interpolate/src/zoom.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var rho = Math.SQRT2,
+    rho2 = 2,
+    rho4 = 4,
+    epsilon2 = 1e-12;
+
+function cosh(x) {
+  return ((x = Math.exp(x)) + 1 / x) / 2;
+}
+
+function sinh(x) {
+  return ((x = Math.exp(x)) - 1 / x) / 2;
+}
+
+function tanh(x) {
+  return ((x = Math.exp(2 * x)) - 1) / (x + 1);
+}
+
+// p0 = [ux0, uy0, w0]
+// p1 = [ux1, uy1, w1]
+/* harmony default export */ __webpack_exports__["default"] = (function(p0, p1) {
+  var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
+      ux1 = p1[0], uy1 = p1[1], w1 = p1[2],
+      dx = ux1 - ux0,
+      dy = uy1 - uy0,
+      d2 = dx * dx + dy * dy,
+      i,
+      S;
+
+  // Special case for u0 ≅ u1.
+  if (d2 < epsilon2) {
+    S = Math.log(w1 / w0) / rho;
+    i = function(t) {
+      return [
+        ux0 + t * dx,
+        uy0 + t * dy,
+        w0 * Math.exp(rho * t * S)
+      ];
+    }
+  }
+
+  // General case.
+  else {
+    var d1 = Math.sqrt(d2),
+        b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),
+        b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),
+        r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
+        r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
+    S = (r1 - r0) / rho;
+    i = function(t) {
+      var s = t * S,
+          coshr0 = cosh(r0),
+          u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));
+      return [
+        ux0 + u * dx,
+        uy0 + u * dy,
+        w0 * coshr0 / cosh(rho * s + r0)
+      ];
+    }
+  }
+
+  i.duration = S * 1000;
+
+  return i;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-path/src/index.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-path/src/index.js ***!
+  \*******************************************/
+/*! exports provided: path */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ "./node_modules/d3-path/src/path.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "path", function() { return _path_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-path/src/path.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-path/src/path.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var pi = Math.PI,
+    tau = 2 * pi,
+    epsilon = 1e-6,
+    tauEpsilon = tau - epsilon;
+
+function Path() {
+  this._x0 = this._y0 = // start of current subpath
+  this._x1 = this._y1 = null; // end of current subpath
+  this._ = "";
+}
+
+function path() {
+  return new Path;
+}
+
+Path.prototype = path.prototype = {
+  constructor: Path,
+  moveTo: function(x, y) {
+    this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y);
+  },
+  closePath: function() {
+    if (this._x1 !== null) {
+      this._x1 = this._x0, this._y1 = this._y0;
+      this._ += "Z";
+    }
+  },
+  lineTo: function(x, y) {
+    this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y);
+  },
+  quadraticCurveTo: function(x1, y1, x, y) {
+    this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y);
+  },
+  bezierCurveTo: function(x1, y1, x2, y2, x, y) {
+    this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y);
+  },
+  arcTo: function(x1, y1, x2, y2, r) {
+    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;
+    var x0 = this._x1,
+        y0 = this._y1,
+        x21 = x2 - x1,
+        y21 = y2 - y1,
+        x01 = x0 - x1,
+        y01 = y0 - y1,
+        l01_2 = x01 * x01 + y01 * y01;
+
+    // Is the radius negative? Error.
+    if (r < 0) throw new Error("negative radius: " + r);
+
+    // Is this path empty? Move to (x1,y1).
+    if (this._x1 === null) {
+      this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1);
+    }
+
+    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.
+    else if (!(l01_2 > epsilon));
+
+    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?
+    // Equivalently, is (x1,y1) coincident with (x2,y2)?
+    // Or, is the radius zero? Line to (x1,y1).
+    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {
+      this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1);
+    }
+
+    // Otherwise, draw an arc!
+    else {
+      var x20 = x2 - x0,
+          y20 = y2 - y0,
+          l21_2 = x21 * x21 + y21 * y21,
+          l20_2 = x20 * x20 + y20 * y20,
+          l21 = Math.sqrt(l21_2),
+          l01 = Math.sqrt(l01_2),
+          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),
+          t01 = l / l01,
+          t21 = l / l21;
+
+      // If the start tangent is not coincident with (x0,y0), line to.
+      if (Math.abs(t01 - 1) > epsilon) {
+        this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01);
+      }
+
+      this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21);
+    }
+  },
+  arc: function(x, y, r, a0, a1, ccw) {
+    x = +x, y = +y, r = +r, ccw = !!ccw;
+    var dx = r * Math.cos(a0),
+        dy = r * Math.sin(a0),
+        x0 = x + dx,
+        y0 = y + dy,
+        cw = 1 ^ ccw,
+        da = ccw ? a0 - a1 : a1 - a0;
+
+    // Is the radius negative? Error.
+    if (r < 0) throw new Error("negative radius: " + r);
+
+    // Is this path empty? Move to (x0,y0).
+    if (this._x1 === null) {
+      this._ += "M" + x0 + "," + y0;
+    }
+
+    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).
+    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {
+      this._ += "L" + x0 + "," + y0;
+    }
+
+    // Is this arc empty? We’re done.
+    if (!r) return;
+
+    // Does the angle go the wrong way? Flip the direction.
+    if (da < 0) da = da % tau + tau;
+
+    // Is this a complete circle? Draw two arcs to complete the circle.
+    if (da > tauEpsilon) {
+      this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0);
+    }
+
+    // Is this arc non-empty? Draw an arc!
+    else if (da > epsilon) {
+      this._ += "A" + r + "," + r + ",0," + (+(da >= pi)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1));
+    }
+  },
+  rect: function(x, y, w, h) {
+    this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z";
+  },
+  toString: function() {
+    return this._;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (path);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-polygon/src/area.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-polygon/src/area.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(polygon) {
+  var i = -1,
+      n = polygon.length,
+      a,
+      b = polygon[n - 1],
+      area = 0;
+
+  while (++i < n) {
+    a = b;
+    b = polygon[i];
+    area += a[1] * b[0] - a[0] * b[1];
+  }
+
+  return area / 2;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-polygon/src/centroid.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-polygon/src/centroid.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(polygon) {
+  var i = -1,
+      n = polygon.length,
+      x = 0,
+      y = 0,
+      a,
+      b = polygon[n - 1],
+      c,
+      k = 0;
+
+  while (++i < n) {
+    a = b;
+    b = polygon[i];
+    k += c = a[0] * b[1] - b[0] * a[1];
+    x += (a[0] + b[0]) * c;
+    y += (a[1] + b[1]) * c;
+  }
+
+  return k *= 3, [x / k, y / k];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-polygon/src/contains.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-polygon/src/contains.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(polygon, point) {
+  var n = polygon.length,
+      p = polygon[n - 1],
+      x = point[0], y = point[1],
+      x0 = p[0], y0 = p[1],
+      x1, y1,
+      inside = false;
+
+  for (var i = 0; i < n; ++i) {
+    p = polygon[i], x1 = p[0], y1 = p[1];
+    if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;
+    x0 = x1, y0 = y1;
+  }
+
+  return inside;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-polygon/src/cross.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-polygon/src/cross.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of
+// the 3D cross product in a quadrant I Cartesian coordinate system (+x is
+// right, +y is up). Returns a positive value if ABC is counter-clockwise,
+// negative if clockwise, and zero if the points are collinear.
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b, c) {
+  return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-polygon/src/hull.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-polygon/src/hull.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cross_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cross.js */ "./node_modules/d3-polygon/src/cross.js");
+
+
+function lexicographicOrder(a, b) {
+  return a[0] - b[0] || a[1] - b[1];
+}
+
+// Computes the upper convex hull per the monotone chain algorithm.
+// Assumes points.length >= 3, is sorted by x, unique in y.
+// Returns an array of indices into points in left-to-right order.
+function computeUpperHullIndexes(points) {
+  var n = points.length,
+      indexes = [0, 1],
+      size = 2;
+
+  for (var i = 2; i < n; ++i) {
+    while (size > 1 && Object(_cross_js__WEBPACK_IMPORTED_MODULE_0__["default"])(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;
+    indexes[size++] = i;
+  }
+
+  return indexes.slice(0, size); // remove popped points
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(points) {
+  if ((n = points.length) < 3) return null;
+
+  var i,
+      n,
+      sortedPoints = new Array(n),
+      flippedPoints = new Array(n);
+
+  for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];
+  sortedPoints.sort(lexicographicOrder);
+  for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];
+
+  var upperIndexes = computeUpperHullIndexes(sortedPoints),
+      lowerIndexes = computeUpperHullIndexes(flippedPoints);
+
+  // Construct the hull polygon, removing possible duplicate endpoints.
+  var skipLeft = lowerIndexes[0] === upperIndexes[0],
+      skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],
+      hull = [];
+
+  // Add upper hull in right-to-l order.
+  // Then add lower hull in left-to-right order.
+  for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);
+  for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);
+
+  return hull;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-polygon/src/index.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-polygon/src/index.js ***!
+  \**********************************************/
+/*! exports provided: polygonArea, polygonCentroid, polygonHull, polygonContains, polygonLength */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ "./node_modules/d3-polygon/src/area.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonArea", function() { return _area_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./centroid.js */ "./node_modules/d3-polygon/src/centroid.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonCentroid", function() { return _centroid_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _hull_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hull.js */ "./node_modules/d3-polygon/src/hull.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonHull", function() { return _hull_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./contains.js */ "./node_modules/d3-polygon/src/contains.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonContains", function() { return _contains_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./length.js */ "./node_modules/d3-polygon/src/length.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonLength", function() { return _length_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-polygon/src/length.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-polygon/src/length.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(polygon) {
+  var i = -1,
+      n = polygon.length,
+      b = polygon[n - 1],
+      xa,
+      ya,
+      xb = b[0],
+      yb = b[1],
+      perimeter = 0;
+
+  while (++i < n) {
+    xa = xb;
+    ya = yb;
+    b = polygon[i];
+    xb = b[0];
+    yb = b[1];
+    xa -= xb;
+    ya -= yb;
+    perimeter += Math.sqrt(xa * xa + ya * ya);
+  }
+
+  return perimeter;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/add.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/add.js ***!
+  \*********************************************/
+/*! exports provided: default, addAll */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addAll", function() { return addAll; });
+/* harmony default export */ __webpack_exports__["default"] = (function(d) {
+  var x = +this._x.call(null, d),
+      y = +this._y.call(null, d);
+  return add(this.cover(x, y), x, y, d);
+});
+
+function add(tree, x, y, d) {
+  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points
+
+  var parent,
+      node = tree._root,
+      leaf = {data: d},
+      x0 = tree._x0,
+      y0 = tree._y0,
+      x1 = tree._x1,
+      y1 = tree._y1,
+      xm,
+      ym,
+      xp,
+      yp,
+      right,
+      bottom,
+      i,
+      j;
+
+  // If the tree is empty, initialize the root as a leaf.
+  if (!node) return tree._root = leaf, tree;
+
+  // Find the existing leaf for the new point, or add it.
+  while (node.length) {
+    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
+    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
+    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;
+  }
+
+  // Is the new point is exactly coincident with the existing point?
+  xp = +tree._x.call(null, node.data);
+  yp = +tree._y.call(null, node.data);
+  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;
+
+  // Otherwise, split the leaf node until the old and new point are separated.
+  do {
+    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);
+    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
+    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
+  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));
+  return parent[j] = node, parent[i] = leaf, tree;
+}
+
+function addAll(data) {
+  var d, i, n = data.length,
+      x,
+      y,
+      xz = new Array(n),
+      yz = new Array(n),
+      x0 = Infinity,
+      y0 = Infinity,
+      x1 = -Infinity,
+      y1 = -Infinity;
+
+  // Compute the points and their extent.
+  for (i = 0; i < n; ++i) {
+    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;
+    xz[i] = x;
+    yz[i] = y;
+    if (x < x0) x0 = x;
+    if (x > x1) x1 = x;
+    if (y < y0) y0 = y;
+    if (y > y1) y1 = y;
+  }
+
+  // If there were no (valid) points, abort.
+  if (x0 > x1 || y0 > y1) return this;
+
+  // Expand the tree to cover the new points.
+  this.cover(x0, y0).cover(x1, y1);
+
+  // Add the new points.
+  for (i = 0; i < n; ++i) {
+    add(this, xz[i], yz[i], data[i]);
+  }
+
+  return this;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/cover.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/cover.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x, y) {
+  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points
+
+  var x0 = this._x0,
+      y0 = this._y0,
+      x1 = this._x1,
+      y1 = this._y1;
+
+  // If the quadtree has no extent, initialize them.
+  // Integer extent are necessary so that if we later double the extent,
+  // the existing quadrant boundaries don’t change due to floating point error!
+  if (isNaN(x0)) {
+    x1 = (x0 = Math.floor(x)) + 1;
+    y1 = (y0 = Math.floor(y)) + 1;
+  }
+
+  // Otherwise, double repeatedly to cover.
+  else {
+    var z = x1 - x0,
+        node = this._root,
+        parent,
+        i;
+
+    while (x0 > x || x >= x1 || y0 > y || y >= y1) {
+      i = (y < y0) << 1 | (x < x0);
+      parent = new Array(4), parent[i] = node, node = parent, z *= 2;
+      switch (i) {
+        case 0: x1 = x0 + z, y1 = y0 + z; break;
+        case 1: x0 = x1 - z, y1 = y0 + z; break;
+        case 2: x1 = x0 + z, y0 = y1 - z; break;
+        case 3: x0 = x1 - z, y0 = y1 - z; break;
+      }
+    }
+
+    if (this._root && this._root.length) this._root = node;
+  }
+
+  this._x0 = x0;
+  this._y0 = y0;
+  this._x1 = x1;
+  this._y1 = y1;
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/data.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/data.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var data = [];
+  this.visit(function(node) {
+    if (!node.length) do data.push(node.data); while (node = node.next)
+  });
+  return data;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/extent.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-quadtree/src/extent.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(_) {
+  return arguments.length
+      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])
+      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/find.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/find.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ "./node_modules/d3-quadtree/src/quad.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(x, y, radius) {
+  var data,
+      x0 = this._x0,
+      y0 = this._y0,
+      x1,
+      y1,
+      x2,
+      y2,
+      x3 = this._x1,
+      y3 = this._y1,
+      quads = [],
+      node = this._root,
+      q,
+      i;
+
+  if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](node, x0, y0, x3, y3));
+  if (radius == null) radius = Infinity;
+  else {
+    x0 = x - radius, y0 = y - radius;
+    x3 = x + radius, y3 = y + radius;
+    radius *= radius;
+  }
+
+  while (q = quads.pop()) {
+
+    // Stop searching if this quadrant can’t contain a closer node.
+    if (!(node = q.node)
+        || (x1 = q.x0) > x3
+        || (y1 = q.y0) > y3
+        || (x2 = q.x1) < x0
+        || (y2 = q.y1) < y0) continue;
+
+    // Bisect the current quadrant.
+    if (node.length) {
+      var xm = (x1 + x2) / 2,
+          ym = (y1 + y2) / 2;
+
+      quads.push(
+        new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](node[3], xm, ym, x2, y2),
+        new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](node[2], x1, ym, xm, y2),
+        new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](node[1], xm, y1, x2, ym),
+        new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](node[0], x1, y1, xm, ym)
+      );
+
+      // Visit the closest quadrant first.
+      if (i = (y >= ym) << 1 | (x >= xm)) {
+        q = quads[quads.length - 1];
+        quads[quads.length - 1] = quads[quads.length - 1 - i];
+        quads[quads.length - 1 - i] = q;
+      }
+    }
+
+    // Visit this point. (Visiting coincident points isn’t necessary!)
+    else {
+      var dx = x - +this._x.call(null, node.data),
+          dy = y - +this._y.call(null, node.data),
+          d2 = dx * dx + dy * dy;
+      if (d2 < radius) {
+        var d = Math.sqrt(radius = d2);
+        x0 = x - d, y0 = y - d;
+        x3 = x + d, y3 = y + d;
+        data = node.data;
+      }
+    }
+  }
+
+  return data;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/index.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/index.js ***!
+  \***********************************************/
+/*! exports provided: quadtree */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _quadtree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadtree.js */ "./node_modules/d3-quadtree/src/quadtree.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "quadtree", function() { return _quadtree_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/quad.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/quad.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(node, x0, y0, x1, y1) {
+  this.node = node;
+  this.x0 = x0;
+  this.y0 = y0;
+  this.x1 = x1;
+  this.y1 = y1;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/quadtree.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-quadtree/src/quadtree.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return quadtree; });
+/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ "./node_modules/d3-quadtree/src/add.js");
+/* harmony import */ var _cover_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cover.js */ "./node_modules/d3-quadtree/src/cover.js");
+/* harmony import */ var _data_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data.js */ "./node_modules/d3-quadtree/src/data.js");
+/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./extent.js */ "./node_modules/d3-quadtree/src/extent.js");
+/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./find.js */ "./node_modules/d3-quadtree/src/find.js");
+/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./remove.js */ "./node_modules/d3-quadtree/src/remove.js");
+/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./root.js */ "./node_modules/d3-quadtree/src/root.js");
+/* harmony import */ var _size_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./size.js */ "./node_modules/d3-quadtree/src/size.js");
+/* harmony import */ var _visit_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./visit.js */ "./node_modules/d3-quadtree/src/visit.js");
+/* harmony import */ var _visitAfter_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./visitAfter.js */ "./node_modules/d3-quadtree/src/visitAfter.js");
+/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./x.js */ "./node_modules/d3-quadtree/src/x.js");
+/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./y.js */ "./node_modules/d3-quadtree/src/y.js");
+
+
+
+
+
+
+
+
+
+
+
+
+
+function quadtree(nodes, x, y) {
+  var tree = new Quadtree(x == null ? _x_js__WEBPACK_IMPORTED_MODULE_10__["defaultX"] : x, y == null ? _y_js__WEBPACK_IMPORTED_MODULE_11__["defaultY"] : y, NaN, NaN, NaN, NaN);
+  return nodes == null ? tree : tree.addAll(nodes);
+}
+
+function Quadtree(x, y, x0, y0, x1, y1) {
+  this._x = x;
+  this._y = y;
+  this._x0 = x0;
+  this._y0 = y0;
+  this._x1 = x1;
+  this._y1 = y1;
+  this._root = undefined;
+}
+
+function leaf_copy(leaf) {
+  var copy = {data: leaf.data}, next = copy;
+  while (leaf = leaf.next) next = next.next = {data: leaf.data};
+  return copy;
+}
+
+var treeProto = quadtree.prototype = Quadtree.prototype;
+
+treeProto.copy = function() {
+  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),
+      node = this._root,
+      nodes,
+      child;
+
+  if (!node) return copy;
+
+  if (!node.length) return copy._root = leaf_copy(node), copy;
+
+  nodes = [{source: node, target: copy._root = new Array(4)}];
+  while (node = nodes.pop()) {
+    for (var i = 0; i < 4; ++i) {
+      if (child = node.source[i]) {
+        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});
+        else node.target[i] = leaf_copy(child);
+      }
+    }
+  }
+
+  return copy;
+};
+
+treeProto.add = _add_js__WEBPACK_IMPORTED_MODULE_0__["default"];
+treeProto.addAll = _add_js__WEBPACK_IMPORTED_MODULE_0__["addAll"];
+treeProto.cover = _cover_js__WEBPACK_IMPORTED_MODULE_1__["default"];
+treeProto.data = _data_js__WEBPACK_IMPORTED_MODULE_2__["default"];
+treeProto.extent = _extent_js__WEBPACK_IMPORTED_MODULE_3__["default"];
+treeProto.find = _find_js__WEBPACK_IMPORTED_MODULE_4__["default"];
+treeProto.remove = _remove_js__WEBPACK_IMPORTED_MODULE_5__["default"];
+treeProto.removeAll = _remove_js__WEBPACK_IMPORTED_MODULE_5__["removeAll"];
+treeProto.root = _root_js__WEBPACK_IMPORTED_MODULE_6__["default"];
+treeProto.size = _size_js__WEBPACK_IMPORTED_MODULE_7__["default"];
+treeProto.visit = _visit_js__WEBPACK_IMPORTED_MODULE_8__["default"];
+treeProto.visitAfter = _visitAfter_js__WEBPACK_IMPORTED_MODULE_9__["default"];
+treeProto.x = _x_js__WEBPACK_IMPORTED_MODULE_10__["default"];
+treeProto.y = _y_js__WEBPACK_IMPORTED_MODULE_11__["default"];
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/remove.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-quadtree/src/remove.js ***!
+  \************************************************/
+/*! exports provided: default, removeAll */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAll", function() { return removeAll; });
+/* harmony default export */ __webpack_exports__["default"] = (function(d) {
+  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points
+
+  var parent,
+      node = this._root,
+      retainer,
+      previous,
+      next,
+      x0 = this._x0,
+      y0 = this._y0,
+      x1 = this._x1,
+      y1 = this._y1,
+      x,
+      y,
+      xm,
+      ym,
+      right,
+      bottom,
+      i,
+      j;
+
+  // If the tree is empty, initialize the root as a leaf.
+  if (!node) return this;
+
+  // Find the leaf node for the point.
+  // While descending, also retain the deepest parent with a non-removed sibling.
+  if (node.length) while (true) {
+    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
+    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
+    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;
+    if (!node.length) break;
+    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;
+  }
+
+  // Find the point to remove.
+  while (node.data !== d) if (!(previous = node, node = node.next)) return this;
+  if (next = node.next) delete node.next;
+
+  // If there are multiple coincident points, remove just the point.
+  if (previous) return (next ? previous.next = next : delete previous.next), this;
+
+  // If this is the root point, remove it.
+  if (!parent) return this._root = next, this;
+
+  // Remove this leaf.
+  next ? parent[i] = next : delete parent[i];
+
+  // If the parent now contains exactly one leaf, collapse superfluous parents.
+  if ((node = parent[0] || parent[1] || parent[2] || parent[3])
+      && node === (parent[3] || parent[2] || parent[1] || parent[0])
+      && !node.length) {
+    if (retainer) retainer[j] = node;
+    else this._root = node;
+  }
+
+  return this;
+});
+
+function removeAll(data) {
+  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);
+  return this;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/root.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/root.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return this._root;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/size.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/size.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var size = 0;
+  this.visit(function(node) {
+    if (!node.length) do ++size; while (node = node.next)
+  });
+  return size;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/visit.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-quadtree/src/visit.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ "./node_modules/d3-quadtree/src/quad.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(callback) {
+  var quads = [], q, node = this._root, child, x0, y0, x1, y1;
+  if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](node, this._x0, this._y0, this._x1, this._y1));
+  while (q = quads.pop()) {
+    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {
+      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
+      if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, ym, x1, y1));
+      if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, ym, xm, y1));
+      if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, y0, x1, ym));
+      if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, y0, xm, ym));
+    }
+  }
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/visitAfter.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-quadtree/src/visitAfter.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ "./node_modules/d3-quadtree/src/quad.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(callback) {
+  var quads = [], next = [], q;
+  if (this._root) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](this._root, this._x0, this._y0, this._x1, this._y1));
+  while (q = quads.pop()) {
+    var node = q.node;
+    if (node.length) {
+      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
+      if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, y0, xm, ym));
+      if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, y0, x1, ym));
+      if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, ym, xm, y1));
+      if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, ym, x1, y1));
+    }
+    next.push(q);
+  }
+  while (q = next.pop()) {
+    callback(q.node, q.x0, q.y0, q.x1, q.y1);
+  }
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/x.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-quadtree/src/x.js ***!
+  \*******************************************/
+/*! exports provided: defaultX, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultX", function() { return defaultX; });
+function defaultX(d) {
+  return d[0];
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(_) {
+  return arguments.length ? (this._x = _, this) : this._x;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-quadtree/src/y.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-quadtree/src/y.js ***!
+  \*******************************************/
+/*! exports provided: defaultY, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultY", function() { return defaultY; });
+function defaultY(d) {
+  return d[1];
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(_) {
+  return arguments.length ? (this._y = _, this) : this._y;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/bates.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-random/src/bates.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource */ "./node_modules/d3-random/src/defaultSource.js");
+/* harmony import */ var _irwinHall__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./irwinHall */ "./node_modules/d3-random/src/irwinHall.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function sourceRandomBates(source) {
+  function randomBates(n) {
+    var randomIrwinHall = _irwinHall__WEBPACK_IMPORTED_MODULE_1__["default"].source(source)(n);
+    return function() {
+      return randomIrwinHall() / n;
+    };
+  }
+
+  randomBates.source = sourceRandomBates;
+
+  return randomBates;
+})(_defaultSource__WEBPACK_IMPORTED_MODULE_0__["default"]));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/defaultSource.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-random/src/defaultSource.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return Math.random();
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/exponential.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-random/src/exponential.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource */ "./node_modules/d3-random/src/defaultSource.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function sourceRandomExponential(source) {
+  function randomExponential(lambda) {
+    return function() {
+      return -Math.log(1 - source()) / lambda;
+    };
+  }
+
+  randomExponential.source = sourceRandomExponential;
+
+  return randomExponential;
+})(_defaultSource__WEBPACK_IMPORTED_MODULE_0__["default"]));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/index.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-random/src/index.js ***!
+  \*********************************************/
+/*! exports provided: randomUniform, randomNormal, randomLogNormal, randomBates, randomIrwinHall, randomExponential */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _uniform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uniform */ "./node_modules/d3-random/src/uniform.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomUniform", function() { return _uniform__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _normal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./normal */ "./node_modules/d3-random/src/normal.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomNormal", function() { return _normal__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _logNormal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logNormal */ "./node_modules/d3-random/src/logNormal.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomLogNormal", function() { return _logNormal__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _bates__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bates */ "./node_modules/d3-random/src/bates.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomBates", function() { return _bates__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _irwinHall__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./irwinHall */ "./node_modules/d3-random/src/irwinHall.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomIrwinHall", function() { return _irwinHall__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _exponential__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exponential */ "./node_modules/d3-random/src/exponential.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomExponential", function() { return _exponential__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/irwinHall.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-random/src/irwinHall.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource */ "./node_modules/d3-random/src/defaultSource.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function sourceRandomIrwinHall(source) {
+  function randomIrwinHall(n) {
+    return function() {
+      for (var sum = 0, i = 0; i < n; ++i) sum += source();
+      return sum;
+    };
+  }
+
+  randomIrwinHall.source = sourceRandomIrwinHall;
+
+  return randomIrwinHall;
+})(_defaultSource__WEBPACK_IMPORTED_MODULE_0__["default"]));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/logNormal.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-random/src/logNormal.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource */ "./node_modules/d3-random/src/defaultSource.js");
+/* harmony import */ var _normal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./normal */ "./node_modules/d3-random/src/normal.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function sourceRandomLogNormal(source) {
+  function randomLogNormal() {
+    var randomNormal = _normal__WEBPACK_IMPORTED_MODULE_1__["default"].source(source).apply(this, arguments);
+    return function() {
+      return Math.exp(randomNormal());
+    };
+  }
+
+  randomLogNormal.source = sourceRandomLogNormal;
+
+  return randomLogNormal;
+})(_defaultSource__WEBPACK_IMPORTED_MODULE_0__["default"]));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/normal.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-random/src/normal.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource */ "./node_modules/d3-random/src/defaultSource.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function sourceRandomNormal(source) {
+  function randomNormal(mu, sigma) {
+    var x, r;
+    mu = mu == null ? 0 : +mu;
+    sigma = sigma == null ? 1 : +sigma;
+    return function() {
+      var y;
+
+      // If available, use the second previously-generated uniform random.
+      if (x != null) y = x, x = null;
+
+      // Otherwise, generate a new x and y.
+      else do {
+        x = source() * 2 - 1;
+        y = source() * 2 - 1;
+        r = x * x + y * y;
+      } while (!r || r > 1);
+
+      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);
+    };
+  }
+
+  randomNormal.source = sourceRandomNormal;
+
+  return randomNormal;
+})(_defaultSource__WEBPACK_IMPORTED_MODULE_0__["default"]));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-random/src/uniform.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-random/src/uniform.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource */ "./node_modules/d3-random/src/defaultSource.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = ((function sourceRandomUniform(source) {
+  function randomUniform(min, max) {
+    min = min == null ? 0 : +min;
+    max = max == null ? 1 : +max;
+    if (arguments.length === 1) max = min, min = 0;
+    else max -= min;
+    return function() {
+      return source() * max + min;
+    };
+  }
+
+  randomUniform.source = sourceRandomUniform;
+
+  return randomUniform;
+})(_defaultSource__WEBPACK_IMPORTED_MODULE_0__["default"]));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Accent.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Accent.js ***!
+  \*******************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Dark2.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Dark2.js ***!
+  \******************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Paired.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Paired.js ***!
+  \*******************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js ***!
+  \********************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js ***!
+  \********************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Set1.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Set1.js ***!
+  \*****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Set2.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Set2.js ***!
+  \*****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Set3.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Set3.js ***!
+  \*****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js ***!
+  \**********************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/categorical/category10.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/categorical/category10.js ***!
+  \***********************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/colors.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/colors.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(specifier) {
+  var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;
+  while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6);
+  return colors;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/BrBG.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/BrBG.js ***!
+  \***************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "d8b365f5f5f55ab4ac",
+  "a6611adfc27d80cdc1018571",
+  "a6611adfc27df5f5f580cdc1018571",
+  "8c510ad8b365f6e8c3c7eae55ab4ac01665e",
+  "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e",
+  "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e",
+  "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e",
+  "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30",
+  "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/PRGn.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/PRGn.js ***!
+  \***************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "af8dc3f7f7f77fbf7b",
+  "7b3294c2a5cfa6dba0008837",
+  "7b3294c2a5cff7f7f7a6dba0008837",
+  "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837",
+  "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837",
+  "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837",
+  "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837",
+  "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b",
+  "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/PiYG.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/PiYG.js ***!
+  \***************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "e9a3c9f7f7f7a1d76a",
+  "d01c8bf1b6dab8e1864dac26",
+  "d01c8bf1b6daf7f7f7b8e1864dac26",
+  "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221",
+  "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221",
+  "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221",
+  "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221",
+  "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419",
+  "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/PuOr.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/PuOr.js ***!
+  \***************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "998ec3f7f7f7f1a340",
+  "5e3c99b2abd2fdb863e66101",
+  "5e3c99b2abd2f7f7f7fdb863e66101",
+  "542788998ec3d8daebfee0b6f1a340b35806",
+  "542788998ec3d8daebf7f7f7fee0b6f1a340b35806",
+  "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806",
+  "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806",
+  "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08",
+  "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/RdBu.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/RdBu.js ***!
+  \***************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "ef8a62f7f7f767a9cf",
+  "ca0020f4a58292c5de0571b0",
+  "ca0020f4a582f7f7f792c5de0571b0",
+  "b2182bef8a62fddbc7d1e5f067a9cf2166ac",
+  "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac",
+  "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac",
+  "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac",
+  "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061",
+  "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/RdGy.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/RdGy.js ***!
+  \***************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "ef8a62ffffff999999",
+  "ca0020f4a582bababa404040",
+  "ca0020f4a582ffffffbababa404040",
+  "b2182bef8a62fddbc7e0e0e09999994d4d4d",
+  "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d",
+  "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d",
+  "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d",
+  "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a",
+  "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js ***!
+  \*****************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fc8d59ffffbf91bfdb",
+  "d7191cfdae61abd9e92c7bb6",
+  "d7191cfdae61ffffbfabd9e92c7bb6",
+  "d73027fc8d59fee090e0f3f891bfdb4575b4",
+  "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4",
+  "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4",
+  "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4",
+  "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695",
+  "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js ***!
+  \*****************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fc8d59ffffbf91cf60",
+  "d7191cfdae61a6d96a1a9641",
+  "d7191cfdae61ffffbfa6d96a1a9641",
+  "d73027fc8d59fee08bd9ef8b91cf601a9850",
+  "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850",
+  "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850",
+  "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850",
+  "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837",
+  "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/diverging/Spectral.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/diverging/Spectral.js ***!
+  \*******************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fc8d59ffffbf99d594",
+  "d7191cfdae61abdda42b83ba",
+  "d7191cfdae61ffffbfabdda42b83ba",
+  "d53e4ffc8d59fee08be6f59899d5943288bd",
+  "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd",
+  "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd",
+  "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd",
+  "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2",
+  "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/index.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/index.js ***!
+  \******************************************************/
+/*! exports provided: schemeCategory10, schemeAccent, schemeDark2, schemePaired, schemePastel1, schemePastel2, schemeSet1, schemeSet2, schemeSet3, schemeTableau10, interpolateBrBG, schemeBrBG, interpolatePRGn, schemePRGn, interpolatePiYG, schemePiYG, interpolatePuOr, schemePuOr, interpolateRdBu, schemeRdBu, interpolateRdGy, schemeRdGy, interpolateRdYlBu, schemeRdYlBu, interpolateRdYlGn, schemeRdYlGn, interpolateSpectral, schemeSpectral, interpolateBuGn, schemeBuGn, interpolateBuPu, schemeBuPu, interpolateGnBu, schemeGnBu, interpolateOrRd, schemeOrRd, interpolatePuBuGn, schemePuBuGn, interpolatePuBu, schemePuBu, interpolatePuRd, schemePuRd, interpolateRdPu, schemeRdPu, interpolateYlGnBu, schemeYlGnBu, interpolateYlGn, schemeYlGn, interpolateYlOrBr, schemeYlOrBr, interpolateYlOrRd, schemeYlOrRd, interpolateBlues, schemeBlues, interpolateGreens, schemeGreens, interpolateGreys, schemeGreys, interpolatePurples, schemePurples, interpolateReds, schemeReds, interpolateOranges, schemeOranges, interpolateCividis, interpolateCubehelixDefault, interpolateRainbow, interpolateWarm, interpolateCool, interpolateSinebow, interpolateTurbo, interpolateViridis, interpolateMagma, interpolateInferno, interpolatePlasma */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _categorical_category10_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./categorical/category10.js */ "./node_modules/d3-scale-chromatic/src/categorical/category10.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeCategory10", function() { return _categorical_category10_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _categorical_Accent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./categorical/Accent.js */ "./node_modules/d3-scale-chromatic/src/categorical/Accent.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeAccent", function() { return _categorical_Accent_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _categorical_Dark2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./categorical/Dark2.js */ "./node_modules/d3-scale-chromatic/src/categorical/Dark2.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeDark2", function() { return _categorical_Dark2_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _categorical_Paired_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./categorical/Paired.js */ "./node_modules/d3-scale-chromatic/src/categorical/Paired.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePaired", function() { return _categorical_Paired_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _categorical_Pastel1_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./categorical/Pastel1.js */ "./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePastel1", function() { return _categorical_Pastel1_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _categorical_Pastel2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./categorical/Pastel2.js */ "./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePastel2", function() { return _categorical_Pastel2_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _categorical_Set1_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./categorical/Set1.js */ "./node_modules/d3-scale-chromatic/src/categorical/Set1.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSet1", function() { return _categorical_Set1_js__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _categorical_Set2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./categorical/Set2.js */ "./node_modules/d3-scale-chromatic/src/categorical/Set2.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSet2", function() { return _categorical_Set2_js__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _categorical_Set3_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./categorical/Set3.js */ "./node_modules/d3-scale-chromatic/src/categorical/Set3.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSet3", function() { return _categorical_Set3_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony import */ var _categorical_Tableau10_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./categorical/Tableau10.js */ "./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeTableau10", function() { return _categorical_Tableau10_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _diverging_BrBG_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./diverging/BrBG.js */ "./node_modules/d3-scale-chromatic/src/diverging/BrBG.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBrBG", function() { return _diverging_BrBG_js__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBrBG", function() { return _diverging_BrBG_js__WEBPACK_IMPORTED_MODULE_10__["scheme"]; });
+
+/* harmony import */ var _diverging_PRGn_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./diverging/PRGn.js */ "./node_modules/d3-scale-chromatic/src/diverging/PRGn.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePRGn", function() { return _diverging_PRGn_js__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePRGn", function() { return _diverging_PRGn_js__WEBPACK_IMPORTED_MODULE_11__["scheme"]; });
+
+/* harmony import */ var _diverging_PiYG_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./diverging/PiYG.js */ "./node_modules/d3-scale-chromatic/src/diverging/PiYG.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePiYG", function() { return _diverging_PiYG_js__WEBPACK_IMPORTED_MODULE_12__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePiYG", function() { return _diverging_PiYG_js__WEBPACK_IMPORTED_MODULE_12__["scheme"]; });
+
+/* harmony import */ var _diverging_PuOr_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./diverging/PuOr.js */ "./node_modules/d3-scale-chromatic/src/diverging/PuOr.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuOr", function() { return _diverging_PuOr_js__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuOr", function() { return _diverging_PuOr_js__WEBPACK_IMPORTED_MODULE_13__["scheme"]; });
+
+/* harmony import */ var _diverging_RdBu_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./diverging/RdBu.js */ "./node_modules/d3-scale-chromatic/src/diverging/RdBu.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdBu", function() { return _diverging_RdBu_js__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdBu", function() { return _diverging_RdBu_js__WEBPACK_IMPORTED_MODULE_14__["scheme"]; });
+
+/* harmony import */ var _diverging_RdGy_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diverging/RdGy.js */ "./node_modules/d3-scale-chromatic/src/diverging/RdGy.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdGy", function() { return _diverging_RdGy_js__WEBPACK_IMPORTED_MODULE_15__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdGy", function() { return _diverging_RdGy_js__WEBPACK_IMPORTED_MODULE_15__["scheme"]; });
+
+/* harmony import */ var _diverging_RdYlBu_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./diverging/RdYlBu.js */ "./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdYlBu", function() { return _diverging_RdYlBu_js__WEBPACK_IMPORTED_MODULE_16__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdYlBu", function() { return _diverging_RdYlBu_js__WEBPACK_IMPORTED_MODULE_16__["scheme"]; });
+
+/* harmony import */ var _diverging_RdYlGn_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./diverging/RdYlGn.js */ "./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdYlGn", function() { return _diverging_RdYlGn_js__WEBPACK_IMPORTED_MODULE_17__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdYlGn", function() { return _diverging_RdYlGn_js__WEBPACK_IMPORTED_MODULE_17__["scheme"]; });
+
+/* harmony import */ var _diverging_Spectral_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./diverging/Spectral.js */ "./node_modules/d3-scale-chromatic/src/diverging/Spectral.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateSpectral", function() { return _diverging_Spectral_js__WEBPACK_IMPORTED_MODULE_18__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSpectral", function() { return _diverging_Spectral_js__WEBPACK_IMPORTED_MODULE_18__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_BuGn_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./sequential-multi/BuGn.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBuGn", function() { return _sequential_multi_BuGn_js__WEBPACK_IMPORTED_MODULE_19__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBuGn", function() { return _sequential_multi_BuGn_js__WEBPACK_IMPORTED_MODULE_19__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_BuPu_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./sequential-multi/BuPu.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBuPu", function() { return _sequential_multi_BuPu_js__WEBPACK_IMPORTED_MODULE_20__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBuPu", function() { return _sequential_multi_BuPu_js__WEBPACK_IMPORTED_MODULE_20__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_GnBu_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./sequential-multi/GnBu.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateGnBu", function() { return _sequential_multi_GnBu_js__WEBPACK_IMPORTED_MODULE_21__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeGnBu", function() { return _sequential_multi_GnBu_js__WEBPACK_IMPORTED_MODULE_21__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_OrRd_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./sequential-multi/OrRd.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateOrRd", function() { return _sequential_multi_OrRd_js__WEBPACK_IMPORTED_MODULE_22__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeOrRd", function() { return _sequential_multi_OrRd_js__WEBPACK_IMPORTED_MODULE_22__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_PuBuGn_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./sequential-multi/PuBuGn.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuBuGn", function() { return _sequential_multi_PuBuGn_js__WEBPACK_IMPORTED_MODULE_23__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuBuGn", function() { return _sequential_multi_PuBuGn_js__WEBPACK_IMPORTED_MODULE_23__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_PuBu_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./sequential-multi/PuBu.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuBu", function() { return _sequential_multi_PuBu_js__WEBPACK_IMPORTED_MODULE_24__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuBu", function() { return _sequential_multi_PuBu_js__WEBPACK_IMPORTED_MODULE_24__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_PuRd_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sequential-multi/PuRd.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuRd", function() { return _sequential_multi_PuRd_js__WEBPACK_IMPORTED_MODULE_25__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuRd", function() { return _sequential_multi_PuRd_js__WEBPACK_IMPORTED_MODULE_25__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_RdPu_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./sequential-multi/RdPu.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdPu", function() { return _sequential_multi_RdPu_js__WEBPACK_IMPORTED_MODULE_26__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdPu", function() { return _sequential_multi_RdPu_js__WEBPACK_IMPORTED_MODULE_26__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_YlGnBu_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./sequential-multi/YlGnBu.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlGnBu", function() { return _sequential_multi_YlGnBu_js__WEBPACK_IMPORTED_MODULE_27__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlGnBu", function() { return _sequential_multi_YlGnBu_js__WEBPACK_IMPORTED_MODULE_27__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_YlGn_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./sequential-multi/YlGn.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlGn", function() { return _sequential_multi_YlGn_js__WEBPACK_IMPORTED_MODULE_28__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlGn", function() { return _sequential_multi_YlGn_js__WEBPACK_IMPORTED_MODULE_28__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_YlOrBr_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./sequential-multi/YlOrBr.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlOrBr", function() { return _sequential_multi_YlOrBr_js__WEBPACK_IMPORTED_MODULE_29__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlOrBr", function() { return _sequential_multi_YlOrBr_js__WEBPACK_IMPORTED_MODULE_29__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_YlOrRd_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./sequential-multi/YlOrRd.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlOrRd", function() { return _sequential_multi_YlOrRd_js__WEBPACK_IMPORTED_MODULE_30__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlOrRd", function() { return _sequential_multi_YlOrRd_js__WEBPACK_IMPORTED_MODULE_30__["scheme"]; });
+
+/* harmony import */ var _sequential_single_Blues_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./sequential-single/Blues.js */ "./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBlues", function() { return _sequential_single_Blues_js__WEBPACK_IMPORTED_MODULE_31__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBlues", function() { return _sequential_single_Blues_js__WEBPACK_IMPORTED_MODULE_31__["scheme"]; });
+
+/* harmony import */ var _sequential_single_Greens_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./sequential-single/Greens.js */ "./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateGreens", function() { return _sequential_single_Greens_js__WEBPACK_IMPORTED_MODULE_32__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeGreens", function() { return _sequential_single_Greens_js__WEBPACK_IMPORTED_MODULE_32__["scheme"]; });
+
+/* harmony import */ var _sequential_single_Greys_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./sequential-single/Greys.js */ "./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateGreys", function() { return _sequential_single_Greys_js__WEBPACK_IMPORTED_MODULE_33__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeGreys", function() { return _sequential_single_Greys_js__WEBPACK_IMPORTED_MODULE_33__["scheme"]; });
+
+/* harmony import */ var _sequential_single_Purples_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./sequential-single/Purples.js */ "./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePurples", function() { return _sequential_single_Purples_js__WEBPACK_IMPORTED_MODULE_34__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePurples", function() { return _sequential_single_Purples_js__WEBPACK_IMPORTED_MODULE_34__["scheme"]; });
+
+/* harmony import */ var _sequential_single_Reds_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./sequential-single/Reds.js */ "./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateReds", function() { return _sequential_single_Reds_js__WEBPACK_IMPORTED_MODULE_35__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeReds", function() { return _sequential_single_Reds_js__WEBPACK_IMPORTED_MODULE_35__["scheme"]; });
+
+/* harmony import */ var _sequential_single_Oranges_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./sequential-single/Oranges.js */ "./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateOranges", function() { return _sequential_single_Oranges_js__WEBPACK_IMPORTED_MODULE_36__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeOranges", function() { return _sequential_single_Oranges_js__WEBPACK_IMPORTED_MODULE_36__["scheme"]; });
+
+/* harmony import */ var _sequential_multi_cividis_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./sequential-multi/cividis.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCividis", function() { return _sequential_multi_cividis_js__WEBPACK_IMPORTED_MODULE_37__["default"]; });
+
+/* harmony import */ var _sequential_multi_cubehelix_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./sequential-multi/cubehelix.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelixDefault", function() { return _sequential_multi_cubehelix_js__WEBPACK_IMPORTED_MODULE_38__["default"]; });
+
+/* harmony import */ var _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./sequential-multi/rainbow.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRainbow", function() { return _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateWarm", function() { return _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__["warm"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCool", function() { return _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__["cool"]; });
+
+/* harmony import */ var _sequential_multi_sinebow_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./sequential-multi/sinebow.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateSinebow", function() { return _sequential_multi_sinebow_js__WEBPACK_IMPORTED_MODULE_40__["default"]; });
+
+/* harmony import */ var _sequential_multi_turbo_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./sequential-multi/turbo.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateTurbo", function() { return _sequential_multi_turbo_js__WEBPACK_IMPORTED_MODULE_41__["default"]; });
+
+/* harmony import */ var _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./sequential-multi/viridis.js */ "./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateViridis", function() { return _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateMagma", function() { return _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__["magma"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateInferno", function() { return _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__["inferno"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePlasma", function() { return _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__["plasma"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/ramp.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/ramp.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(scheme) {
+  return Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__["interpolateRgbBasis"])(scheme[scheme.length - 1]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "e5f5f999d8c92ca25f",
+  "edf8fbb2e2e266c2a4238b45",
+  "edf8fbb2e2e266c2a42ca25f006d2c",
+  "edf8fbccece699d8c966c2a42ca25f006d2c",
+  "edf8fbccece699d8c966c2a441ae76238b45005824",
+  "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824",
+  "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "e0ecf49ebcda8856a7",
+  "edf8fbb3cde38c96c688419d",
+  "edf8fbb3cde38c96c68856a7810f7c",
+  "edf8fbbfd3e69ebcda8c96c68856a7810f7c",
+  "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b",
+  "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b",
+  "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "e0f3dba8ddb543a2ca",
+  "f0f9e8bae4bc7bccc42b8cbe",
+  "f0f9e8bae4bc7bccc443a2ca0868ac",
+  "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac",
+  "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e",
+  "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e",
+  "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fee8c8fdbb84e34a33",
+  "fef0d9fdcc8afc8d59d7301f",
+  "fef0d9fdcc8afc8d59e34a33b30000",
+  "fef0d9fdd49efdbb84fc8d59e34a33b30000",
+  "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000",
+  "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000",
+  "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "ece7f2a6bddb2b8cbe",
+  "f1eef6bdc9e174a9cf0570b0",
+  "f1eef6bdc9e174a9cf2b8cbe045a8d",
+  "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d",
+  "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b",
+  "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b",
+  "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js ***!
+  \************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "ece2f0a6bddb1c9099",
+  "f6eff7bdc9e167a9cf02818a",
+  "f6eff7bdc9e167a9cf1c9099016c59",
+  "f6eff7d0d1e6a6bddb67a9cf1c9099016c59",
+  "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450",
+  "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450",
+  "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "e7e1efc994c7dd1c77",
+  "f1eef6d7b5d8df65b0ce1256",
+  "f1eef6d7b5d8df65b0dd1c77980043",
+  "f1eef6d4b9dac994c7df65b0dd1c77980043",
+  "f1eef6d4b9dac994c7df65b0e7298ace125691003f",
+  "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f",
+  "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fde0ddfa9fb5c51b8a",
+  "feebe2fbb4b9f768a1ae017e",
+  "feebe2fbb4b9f768a1c51b8a7a0177",
+  "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177",
+  "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177",
+  "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177",
+  "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js ***!
+  \**********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "f7fcb9addd8e31a354",
+  "ffffccc2e69978c679238443",
+  "ffffccc2e69978c67931a354006837",
+  "ffffccd9f0a3addd8e78c67931a354006837",
+  "ffffccd9f0a3addd8e78c67941ab5d238443005a32",
+  "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32",
+  "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js ***!
+  \************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "edf8b17fcdbb2c7fb8",
+  "ffffcca1dab441b6c4225ea8",
+  "ffffcca1dab441b6c42c7fb8253494",
+  "ffffccc7e9b47fcdbb41b6c42c7fb8253494",
+  "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84",
+  "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84",
+  "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js ***!
+  \************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fff7bcfec44fd95f0e",
+  "ffffd4fed98efe9929cc4c02",
+  "ffffd4fed98efe9929d95f0e993404",
+  "ffffd4fee391fec44ffe9929d95f0e993404",
+  "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04",
+  "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04",
+  "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js ***!
+  \************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "ffeda0feb24cf03b20",
+  "ffffb2fecc5cfd8d3ce31a1c",
+  "ffffb2fecc5cfd8d3cf03b20bd0026",
+  "ffffb2fed976feb24cfd8d3cf03b20bd0026",
+  "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026",
+  "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026",
+  "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js ***!
+  \*************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(t) {
+  t = Math.max(0, Math.min(1, t));
+  return "rgb("
+      + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", "
+      + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", "
+      + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))
+      + ")";
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js":
+/*!***************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js ***!
+  \***************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateCubehelixLong"])(Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(300, 0.5, 0.0), Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(-240, 0.5, 1.0)));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js ***!
+  \*************************************************************************/
+/*! exports provided: warm, cool, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "warm", function() { return warm; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cool", function() { return cool; });
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+
+
+
+var warm = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateCubehelixLong"])(Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(-100, 0.75, 0.35), Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(80, 1.50, 0.8));
+
+var cool = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateCubehelixLong"])(Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(260, 0.75, 0.35), Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(80, 1.50, 0.8));
+
+var c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])();
+
+/* harmony default export */ __webpack_exports__["default"] = (function(t) {
+  if (t < 0 || t > 1) t -= Math.floor(t);
+  var ts = Math.abs(t - 0.5);
+  c.h = 360 * t - 100;
+  c.s = 1.5 - 1.5 * ts;
+  c.l = 0.8 - 0.9 * ts;
+  return c + "";
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js ***!
+  \*************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+
+
+var c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["rgb"])(),
+    pi_1_3 = Math.PI / 3,
+    pi_2_3 = Math.PI * 2 / 3;
+
+/* harmony default export */ __webpack_exports__["default"] = (function(t) {
+  var x;
+  t = (0.5 - t) * Math.PI;
+  c.r = 255 * (x = Math.sin(t)) * x;
+  c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;
+  c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;
+  return c + "";
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js ***!
+  \***********************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(t) {
+  t = Math.max(0, Math.min(1, t));
+  return "rgb("
+      + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", "
+      + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", "
+      + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))
+      + ")";
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js ***!
+  \*************************************************************************/
+/*! exports provided: default, magma, inferno, plasma */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "magma", function() { return magma; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inferno", function() { return inferno; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "plasma", function() { return plasma; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+
+
+function ramp(range) {
+  var n = range.length;
+  return function(t) {
+    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (ramp(Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")));
+
+var magma = ramp(Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf"));
+
+var inferno = ramp(Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4"));
+
+var plasma = ramp(Object(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"])("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js ***!
+  \************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "deebf79ecae13182bd",
+  "eff3ffbdd7e76baed62171b5",
+  "eff3ffbdd7e76baed63182bd08519c",
+  "eff3ffc6dbef9ecae16baed63182bd08519c",
+  "eff3ffc6dbef9ecae16baed64292c62171b5084594",
+  "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594",
+  "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js ***!
+  \*************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "e5f5e0a1d99b31a354",
+  "edf8e9bae4b374c476238b45",
+  "edf8e9bae4b374c47631a354006d2c",
+  "edf8e9c7e9c0a1d99b74c47631a354006d2c",
+  "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32",
+  "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32",
+  "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js ***!
+  \************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "f0f0f0bdbdbd636363",
+  "f7f7f7cccccc969696525252",
+  "f7f7f7cccccc969696636363252525",
+  "f7f7f7d9d9d9bdbdbd969696636363252525",
+  "f7f7f7d9d9d9bdbdbd969696737373525252252525",
+  "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525",
+  "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js ***!
+  \**************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fee6cefdae6be6550d",
+  "feeddefdbe85fd8d3cd94701",
+  "feeddefdbe85fd8d3ce6550da63603",
+  "feeddefdd0a2fdae6bfd8d3ce6550da63603",
+  "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04",
+  "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04",
+  "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js ***!
+  \**************************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "efedf5bcbddc756bb1",
+  "f2f0f7cbc9e29e9ac86a51a3",
+  "f2f0f7cbc9e29e9ac8756bb154278f",
+  "f2f0f7dadaebbcbddc9e9ac8756bb154278f",
+  "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486",
+  "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486",
+  "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js ***!
+  \***********************************************************************/
+/*! exports provided: scheme, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheme", function() { return scheme; });
+/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ "./node_modules/d3-scale-chromatic/src/colors.js");
+/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ "./node_modules/d3-scale-chromatic/src/ramp.js");
+
+
+
+var scheme = new Array(3).concat(
+  "fee0d2fc9272de2d26",
+  "fee5d9fcae91fb6a4acb181d",
+  "fee5d9fcae91fb6a4ade2d26a50f15",
+  "fee5d9fcbba1fc9272fb6a4ade2d26a50f15",
+  "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d",
+  "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d",
+  "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d"
+).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (Object(_ramp_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scheme));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/array.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-scale/src/array.js ***!
+  \********************************************/
+/*! exports provided: map, slice */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; });
+var array = Array.prototype;
+
+var map = array.map;
+var slice = array.slice;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/band.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-scale/src/band.js ***!
+  \*******************************************/
+/*! exports provided: default, point */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return band; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "point", function() { return point; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+/* harmony import */ var _ordinal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ordinal */ "./node_modules/d3-scale/src/ordinal.js");
+
+
+
+
+function band() {
+  var scale = Object(_ordinal__WEBPACK_IMPORTED_MODULE_2__["default"])().unknown(undefined),
+      domain = scale.domain,
+      ordinalRange = scale.range,
+      range = [0, 1],
+      step,
+      bandwidth,
+      round = false,
+      paddingInner = 0,
+      paddingOuter = 0,
+      align = 0.5;
+
+  delete scale.unknown;
+
+  function rescale() {
+    var n = domain().length,
+        reverse = range[1] < range[0],
+        start = range[reverse - 0],
+        stop = range[1 - reverse];
+    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
+    if (round) step = Math.floor(step);
+    start += (stop - start - step * (n - paddingInner)) * align;
+    bandwidth = step * (1 - paddingInner);
+    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);
+    var values = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(n).map(function(i) { return start + step * i; });
+    return ordinalRange(reverse ? values.reverse() : values);
+  }
+
+  scale.domain = function(_) {
+    return arguments.length ? (domain(_), rescale()) : domain();
+  };
+
+  scale.range = function(_) {
+    return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();
+  };
+
+  scale.rangeRound = function(_) {
+    return range = [+_[0], +_[1]], round = true, rescale();
+  };
+
+  scale.bandwidth = function() {
+    return bandwidth;
+  };
+
+  scale.step = function() {
+    return step;
+  };
+
+  scale.round = function(_) {
+    return arguments.length ? (round = !!_, rescale()) : round;
+  };
+
+  scale.padding = function(_) {
+    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;
+  };
+
+  scale.paddingInner = function(_) {
+    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;
+  };
+
+  scale.paddingOuter = function(_) {
+    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;
+  };
+
+  scale.align = function(_) {
+    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;
+  };
+
+  scale.copy = function() {
+    return band(domain(), range)
+        .round(round)
+        .paddingInner(paddingInner)
+        .paddingOuter(paddingOuter)
+        .align(align);
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initRange"].apply(rescale(), arguments);
+}
+
+function pointish(scale) {
+  var copy = scale.copy;
+
+  scale.padding = scale.paddingOuter;
+  delete scale.paddingInner;
+  delete scale.paddingOuter;
+
+  scale.copy = function() {
+    return pointish(copy());
+  };
+
+  return scale;
+}
+
+function point() {
+  return pointish(band.apply(null, arguments).paddingInner(1));
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/constant.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-scale/src/constant.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/continuous.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-scale/src/continuous.js ***!
+  \*************************************************/
+/*! exports provided: identity, copy, transformer, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copy", function() { return copy; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transformer", function() { return transformer; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return continuous; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array */ "./node_modules/d3-scale/src/array.js");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-scale/src/constant.js");
+/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number */ "./node_modules/d3-scale/src/number.js");
+
+
+
+
+
+
+var unit = [0, 1];
+
+function identity(x) {
+  return x;
+}
+
+function normalize(a, b) {
+  return (b -= (a = +a))
+      ? function(x) { return (x - a) / b; }
+      : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(isNaN(b) ? NaN : 0.5);
+}
+
+function clamper(domain) {
+  var a = domain[0], b = domain[domain.length - 1], t;
+  if (a > b) t = a, a = b, b = t;
+  return function(x) { return Math.max(a, Math.min(b, x)); };
+}
+
+// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
+// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].
+function bimap(domain, range, interpolate) {
+  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];
+  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);
+  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);
+  return function(x) { return r0(d0(x)); };
+}
+
+function polymap(domain, range, interpolate) {
+  var j = Math.min(domain.length, range.length) - 1,
+      d = new Array(j),
+      r = new Array(j),
+      i = -1;
+
+  // Reverse descending domains.
+  if (domain[j] < domain[0]) {
+    domain = domain.slice().reverse();
+    range = range.slice().reverse();
+  }
+
+  while (++i < j) {
+    d[i] = normalize(domain[i], domain[i + 1]);
+    r[i] = interpolate(range[i], range[i + 1]);
+  }
+
+  return function(x) {
+    var i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(domain, x, 1, j) - 1;
+    return r[i](d[i](x));
+  };
+}
+
+function copy(source, target) {
+  return target
+      .domain(source.domain())
+      .range(source.range())
+      .interpolate(source.interpolate())
+      .clamp(source.clamp())
+      .unknown(source.unknown());
+}
+
+function transformer() {
+  var domain = unit,
+      range = unit,
+      interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolate"],
+      transform,
+      untransform,
+      unknown,
+      clamp = identity,
+      piecewise,
+      output,
+      input;
+
+  function rescale() {
+    piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;
+    output = input = null;
+    return scale;
+  }
+
+  function scale(x) {
+    return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));
+  }
+
+  scale.invert = function(y) {
+    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateNumber"])))(y)));
+  };
+
+  scale.domain = function(_) {
+    return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_2__["map"].call(_, _number__WEBPACK_IMPORTED_MODULE_4__["default"]), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();
+  };
+
+  scale.range = function(_) {
+    return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_2__["slice"].call(_), rescale()) : range.slice();
+  };
+
+  scale.rangeRound = function(_) {
+    return range = _array__WEBPACK_IMPORTED_MODULE_2__["slice"].call(_), interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateRound"], rescale();
+  };
+
+  scale.clamp = function(_) {
+    return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;
+  };
+
+  scale.interpolate = function(_) {
+    return arguments.length ? (interpolate = _, rescale()) : interpolate;
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : unknown;
+  };
+
+  return function(t, u) {
+    transform = t, untransform = u;
+    return rescale();
+  };
+}
+
+function continuous(transform, untransform) {
+  return transformer()(transform, untransform);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/diverging.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-scale/src/diverging.js ***!
+  \************************************************/
+/*! exports provided: default, divergingLog, divergingSymlog, divergingPow, divergingSqrt */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return diverging; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "divergingLog", function() { return divergingLog; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "divergingSymlog", function() { return divergingSymlog; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "divergingPow", function() { return divergingPow; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "divergingSqrt", function() { return divergingSqrt; });
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ "./node_modules/d3-scale/src/linear.js");
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ "./node_modules/d3-scale/src/log.js");
+/* harmony import */ var _sequential__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sequential */ "./node_modules/d3-scale/src/sequential.js");
+/* harmony import */ var _symlog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symlog */ "./node_modules/d3-scale/src/symlog.js");
+/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow */ "./node_modules/d3-scale/src/pow.js");
+
+
+
+
+
+
+
+
+function transformer() {
+  var x0 = 0,
+      x1 = 0.5,
+      x2 = 1,
+      t0,
+      t1,
+      t2,
+      k10,
+      k21,
+      interpolator = _continuous__WEBPACK_IMPORTED_MODULE_0__["identity"],
+      transform,
+      clamp = false,
+      unknown;
+
+  function scale(x) {
+    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));
+  }
+
+  scale.domain = function(_) {
+    return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];
+  };
+
+  scale.clamp = function(_) {
+    return arguments.length ? (clamp = !!_, scale) : clamp;
+  };
+
+  scale.interpolator = function(_) {
+    return arguments.length ? (interpolator = _, scale) : interpolator;
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : unknown;
+  };
+
+  return function(t) {
+    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);
+    return scale;
+  };
+}
+
+function diverging() {
+  var scale = Object(_linear__WEBPACK_IMPORTED_MODULE_2__["linearish"])(transformer()(_continuous__WEBPACK_IMPORTED_MODULE_0__["identity"]));
+
+  scale.copy = function() {
+    return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__["copy"])(scale, diverging());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function divergingLog() {
+  var scale = Object(_log__WEBPACK_IMPORTED_MODULE_3__["loggish"])(transformer()).domain([0.1, 1, 10]);
+
+  scale.copy = function() {
+    return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__["copy"])(scale, divergingLog()).base(scale.base());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function divergingSymlog() {
+  var scale = Object(_symlog__WEBPACK_IMPORTED_MODULE_5__["symlogish"])(transformer());
+
+  scale.copy = function() {
+    return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__["copy"])(scale, divergingSymlog()).constant(scale.constant());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function divergingPow() {
+  var scale = Object(_pow__WEBPACK_IMPORTED_MODULE_6__["powish"])(transformer());
+
+  scale.copy = function() {
+    return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__["copy"])(scale, divergingPow()).exponent(scale.exponent());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function divergingSqrt() {
+  return divergingPow.apply(null, arguments).exponent(0.5);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/identity.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-scale/src/identity.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return identity; });
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ "./node_modules/d3-scale/src/array.js");
+/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./linear */ "./node_modules/d3-scale/src/linear.js");
+/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./number */ "./node_modules/d3-scale/src/number.js");
+
+
+
+
+function identity(domain) {
+  var unknown;
+
+  function scale(x) {
+    return isNaN(x = +x) ? unknown : x;
+  }
+
+  scale.invert = scale;
+
+  scale.domain = scale.range = function(_) {
+    return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_0__["map"].call(_, _number__WEBPACK_IMPORTED_MODULE_2__["default"]), scale) : domain.slice();
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : unknown;
+  };
+
+  scale.copy = function() {
+    return identity(domain).unknown(unknown);
+  };
+
+  domain = arguments.length ? _array__WEBPACK_IMPORTED_MODULE_0__["map"].call(domain, _number__WEBPACK_IMPORTED_MODULE_2__["default"]) : [0, 1];
+
+  return Object(_linear__WEBPACK_IMPORTED_MODULE_1__["linearish"])(scale);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-scale/src/index.js ***!
+  \********************************************/
+/*! exports provided: scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleSymlog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, scaleSequential, scaleSequentialLog, scaleSequentialPow, scaleSequentialSqrt, scaleSequentialSymlog, scaleSequentialQuantile, scaleDiverging, scaleDivergingLog, scaleDivergingPow, scaleDivergingSqrt, scaleDivergingSymlog, tickFormat */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _band__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./band */ "./node_modules/d3-scale/src/band.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleBand", function() { return _band__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scalePoint", function() { return _band__WEBPACK_IMPORTED_MODULE_0__["point"]; });
+
+/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity */ "./node_modules/d3-scale/src/identity.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleIdentity", function() { return _identity__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ "./node_modules/d3-scale/src/linear.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleLinear", function() { return _linear__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ "./node_modules/d3-scale/src/log.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleLog", function() { return _log__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _symlog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog */ "./node_modules/d3-scale/src/symlog.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSymlog", function() { return _symlog__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _ordinal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ordinal */ "./node_modules/d3-scale/src/ordinal.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleOrdinal", function() { return _ordinal__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleImplicit", function() { return _ordinal__WEBPACK_IMPORTED_MODULE_5__["implicit"]; });
+
+/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow */ "./node_modules/d3-scale/src/pow.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scalePow", function() { return _pow__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSqrt", function() { return _pow__WEBPACK_IMPORTED_MODULE_6__["sqrt"]; });
+
+/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./quantile */ "./node_modules/d3-scale/src/quantile.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleQuantile", function() { return _quantile__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _quantize__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./quantize */ "./node_modules/d3-scale/src/quantize.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleQuantize", function() { return _quantize__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony import */ var _threshold__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./threshold */ "./node_modules/d3-scale/src/threshold.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleThreshold", function() { return _threshold__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./time */ "./node_modules/d3-scale/src/time.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleTime", function() { return _time__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony import */ var _utcTime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcTime */ "./node_modules/d3-scale/src/utcTime.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleUtc", function() { return _utcTime__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony import */ var _sequential__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sequential */ "./node_modules/d3-scale/src/sequential.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequential", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialLog", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__["sequentialLog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialPow", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__["sequentialPow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialSqrt", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__["sequentialSqrt"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialSymlog", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__["sequentialSymlog"]; });
+
+/* harmony import */ var _sequentialQuantile__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sequentialQuantile */ "./node_modules/d3-scale/src/sequentialQuantile.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialQuantile", function() { return _sequentialQuantile__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony import */ var _diverging__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./diverging */ "./node_modules/d3-scale/src/diverging.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDiverging", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingLog", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__["divergingLog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingPow", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__["divergingPow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingSqrt", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__["divergingSqrt"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingSymlog", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__["divergingSymlog"]; });
+
+/* harmony import */ var _tickFormat__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./tickFormat */ "./node_modules/d3-scale/src/tickFormat.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tickFormat", function() { return _tickFormat__WEBPACK_IMPORTED_MODULE_15__["default"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/init.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-scale/src/init.js ***!
+  \*******************************************/
+/*! exports provided: initRange, initInterpolator */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initRange", function() { return initRange; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initInterpolator", function() { return initInterpolator; });
+function initRange(domain, range) {
+  switch (arguments.length) {
+    case 0: break;
+    case 1: this.range(domain); break;
+    default: this.range(range).domain(domain); break;
+  }
+  return this;
+}
+
+function initInterpolator(domain, interpolator) {
+  switch (arguments.length) {
+    case 0: break;
+    case 1: this.interpolator(domain); break;
+    default: this.interpolator(interpolator).domain(domain); break;
+  }
+  return this;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/linear.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-scale/src/linear.js ***!
+  \*********************************************/
+/*! exports provided: linearish, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linearish", function() { return linearish; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return linear; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+/* harmony import */ var _tickFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickFormat */ "./node_modules/d3-scale/src/tickFormat.js");
+
+
+
+
+
+function linearish(scale) {
+  var domain = scale.domain;
+
+  scale.ticks = function(count) {
+    var d = domain();
+    return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["ticks"])(d[0], d[d.length - 1], count == null ? 10 : count);
+  };
+
+  scale.tickFormat = function(count, specifier) {
+    var d = domain();
+    return Object(_tickFormat__WEBPACK_IMPORTED_MODULE_3__["default"])(d[0], d[d.length - 1], count == null ? 10 : count, specifier);
+  };
+
+  scale.nice = function(count) {
+    if (count == null) count = 10;
+
+    var d = domain(),
+        i0 = 0,
+        i1 = d.length - 1,
+        start = d[i0],
+        stop = d[i1],
+        step;
+
+    if (stop < start) {
+      step = start, start = stop, stop = step;
+      step = i0, i0 = i1, i1 = step;
+    }
+
+    step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickIncrement"])(start, stop, count);
+
+    if (step > 0) {
+      start = Math.floor(start / step) * step;
+      stop = Math.ceil(stop / step) * step;
+      step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickIncrement"])(start, stop, count);
+    } else if (step < 0) {
+      start = Math.ceil(start * step) / step;
+      stop = Math.floor(stop * step) / step;
+      step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickIncrement"])(start, stop, count);
+    }
+
+    if (step > 0) {
+      d[i0] = Math.floor(start / step) * step;
+      d[i1] = Math.ceil(stop / step) * step;
+      domain(d);
+    } else if (step < 0) {
+      d[i0] = Math.ceil(start * step) / step;
+      d[i1] = Math.floor(stop * step) / step;
+      domain(d);
+    }
+
+    return scale;
+  };
+
+  return scale;
+}
+
+function linear() {
+  var scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_1__["default"])(_continuous__WEBPACK_IMPORTED_MODULE_1__["identity"], _continuous__WEBPACK_IMPORTED_MODULE_1__["identity"]);
+
+  scale.copy = function() {
+    return Object(_continuous__WEBPACK_IMPORTED_MODULE_1__["copy"])(scale, linear());
+  };
+
+  _init__WEBPACK_IMPORTED_MODULE_2__["initRange"].apply(scale, arguments);
+
+  return linearish(scale);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/log.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-scale/src/log.js ***!
+  \******************************************/
+/*! exports provided: loggish, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loggish", function() { return loggish; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return log; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ "./node_modules/d3-format/src/index.js");
+/* harmony import */ var _nice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nice */ "./node_modules/d3-scale/src/nice.js");
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+
+
+function transformLog(x) {
+  return Math.log(x);
+}
+
+function transformExp(x) {
+  return Math.exp(x);
+}
+
+function transformLogn(x) {
+  return -Math.log(-x);
+}
+
+function transformExpn(x) {
+  return -Math.exp(-x);
+}
+
+function pow10(x) {
+  return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x;
+}
+
+function powp(base) {
+  return base === 10 ? pow10
+      : base === Math.E ? Math.exp
+      : function(x) { return Math.pow(base, x); };
+}
+
+function logp(base) {
+  return base === Math.E ? Math.log
+      : base === 10 && Math.log10
+      || base === 2 && Math.log2
+      || (base = Math.log(base), function(x) { return Math.log(x) / base; });
+}
+
+function reflect(f) {
+  return function(x) {
+    return -f(-x);
+  };
+}
+
+function loggish(transform) {
+  var scale = transform(transformLog, transformExp),
+      domain = scale.domain,
+      base = 10,
+      logs,
+      pows;
+
+  function rescale() {
+    logs = logp(base), pows = powp(base);
+    if (domain()[0] < 0) {
+      logs = reflect(logs), pows = reflect(pows);
+      transform(transformLogn, transformExpn);
+    } else {
+      transform(transformLog, transformExp);
+    }
+    return scale;
+  }
+
+  scale.base = function(_) {
+    return arguments.length ? (base = +_, rescale()) : base;
+  };
+
+  scale.domain = function(_) {
+    return arguments.length ? (domain(_), rescale()) : domain();
+  };
+
+  scale.ticks = function(count) {
+    var d = domain(),
+        u = d[0],
+        v = d[d.length - 1],
+        r;
+
+    if (r = v < u) i = u, u = v, v = i;
+
+    var i = logs(u),
+        j = logs(v),
+        p,
+        k,
+        t,
+        n = count == null ? 10 : +count,
+        z = [];
+
+    if (!(base % 1) && j - i < n) {
+      i = Math.round(i) - 1, j = Math.round(j) + 1;
+      if (u > 0) for (; i < j; ++i) {
+        for (k = 1, p = pows(i); k < base; ++k) {
+          t = p * k;
+          if (t < u) continue;
+          if (t > v) break;
+          z.push(t);
+        }
+      } else for (; i < j; ++i) {
+        for (k = base - 1, p = pows(i); k >= 1; --k) {
+          t = p * k;
+          if (t < u) continue;
+          if (t > v) break;
+          z.push(t);
+        }
+      }
+    } else {
+      z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["ticks"])(i, j, Math.min(j - i, n)).map(pows);
+    }
+
+    return r ? z.reverse() : z;
+  };
+
+  scale.tickFormat = function(count, specifier) {
+    if (specifier == null) specifier = base === 10 ? ".0e" : ",";
+    if (typeof specifier !== "function") specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["format"])(specifier);
+    if (count === Infinity) return specifier;
+    if (count == null) count = 10;
+    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?
+    return function(d) {
+      var i = d / pows(Math.round(logs(d)));
+      if (i * base < base - 0.5) i *= base;
+      return i <= k ? specifier(d) : "";
+    };
+  };
+
+  scale.nice = function() {
+    return domain(Object(_nice__WEBPACK_IMPORTED_MODULE_2__["default"])(domain(), {
+      floor: function(x) { return pows(Math.floor(logs(x))); },
+      ceil: function(x) { return pows(Math.ceil(logs(x))); }
+    }));
+  };
+
+  return scale;
+}
+
+function log() {
+  var scale = loggish(Object(_continuous__WEBPACK_IMPORTED_MODULE_3__["transformer"])()).domain([1, 10]);
+
+  scale.copy = function() {
+    return Object(_continuous__WEBPACK_IMPORTED_MODULE_3__["copy"])(scale, log()).base(scale.base());
+  };
+
+  _init__WEBPACK_IMPORTED_MODULE_4__["initRange"].apply(scale, arguments);
+
+  return scale;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/nice.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-scale/src/nice.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(domain, interval) {
+  domain = domain.slice();
+
+  var i0 = 0,
+      i1 = domain.length - 1,
+      x0 = domain[i0],
+      x1 = domain[i1],
+      t;
+
+  if (x1 < x0) {
+    t = i0, i0 = i1, i1 = t;
+    t = x0, x0 = x1, x1 = t;
+  }
+
+  domain[i0] = interval.floor(x0);
+  domain[i1] = interval.ceil(x1);
+  return domain;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/number.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-scale/src/number.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return +x;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/ordinal.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-scale/src/ordinal.js ***!
+  \**********************************************/
+/*! exports provided: implicit, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "implicit", function() { return implicit; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ordinal; });
+/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-collection */ "./node_modules/d3-collection/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ "./node_modules/d3-scale/src/array.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+var implicit = {name: "implicit"};
+
+function ordinal() {
+  var index = Object(d3_collection__WEBPACK_IMPORTED_MODULE_0__["map"])(),
+      domain = [],
+      range = [],
+      unknown = implicit;
+
+  function scale(d) {
+    var key = d + "", i = index.get(key);
+    if (!i) {
+      if (unknown !== implicit) return unknown;
+      index.set(key, i = domain.push(d));
+    }
+    return range[(i - 1) % range.length];
+  }
+
+  scale.domain = function(_) {
+    if (!arguments.length) return domain.slice();
+    domain = [], index = Object(d3_collection__WEBPACK_IMPORTED_MODULE_0__["map"])();
+    var i = -1, n = _.length, d, key;
+    while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d));
+    return scale;
+  };
+
+  scale.range = function(_) {
+    return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), scale) : range.slice();
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : unknown;
+  };
+
+  scale.copy = function() {
+    return ordinal(domain, range).unknown(unknown);
+  };
+
+  _init__WEBPACK_IMPORTED_MODULE_2__["initRange"].apply(scale, arguments);
+
+  return scale;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/pow.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-scale/src/pow.js ***!
+  \******************************************/
+/*! exports provided: powish, default, sqrt */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "powish", function() { return powish; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return pow; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sqrt", function() { return sqrt; });
+/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear */ "./node_modules/d3-scale/src/linear.js");
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+function transformPow(exponent) {
+  return function(x) {
+    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);
+  };
+}
+
+function transformSqrt(x) {
+  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);
+}
+
+function transformSquare(x) {
+  return x < 0 ? -x * x : x * x;
+}
+
+function powish(transform) {
+  var scale = transform(_continuous__WEBPACK_IMPORTED_MODULE_1__["identity"], _continuous__WEBPACK_IMPORTED_MODULE_1__["identity"]),
+      exponent = 1;
+
+  function rescale() {
+    return exponent === 1 ? transform(_continuous__WEBPACK_IMPORTED_MODULE_1__["identity"], _continuous__WEBPACK_IMPORTED_MODULE_1__["identity"])
+        : exponent === 0.5 ? transform(transformSqrt, transformSquare)
+        : transform(transformPow(exponent), transformPow(1 / exponent));
+  }
+
+  scale.exponent = function(_) {
+    return arguments.length ? (exponent = +_, rescale()) : exponent;
+  };
+
+  return Object(_linear__WEBPACK_IMPORTED_MODULE_0__["linearish"])(scale);
+}
+
+function pow() {
+  var scale = powish(Object(_continuous__WEBPACK_IMPORTED_MODULE_1__["transformer"])());
+
+  scale.copy = function() {
+    return Object(_continuous__WEBPACK_IMPORTED_MODULE_1__["copy"])(scale, pow()).exponent(scale.exponent());
+  };
+
+  _init__WEBPACK_IMPORTED_MODULE_2__["initRange"].apply(scale, arguments);
+
+  return scale;
+}
+
+function sqrt() {
+  return pow.apply(null, arguments).exponent(0.5);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/quantile.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-scale/src/quantile.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return quantile; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ "./node_modules/d3-scale/src/array.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+function quantile() {
+  var domain = [],
+      range = [],
+      thresholds = [],
+      unknown;
+
+  function rescale() {
+    var i = 0, n = Math.max(1, range.length);
+    thresholds = new Array(n - 1);
+    while (++i < n) thresholds[i - 1] = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["quantile"])(domain, i / n);
+    return scale;
+  }
+
+  function scale(x) {
+    return isNaN(x = +x) ? unknown : range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(thresholds, x)];
+  }
+
+  scale.invertExtent = function(y) {
+    var i = range.indexOf(y);
+    return i < 0 ? [NaN, NaN] : [
+      i > 0 ? thresholds[i - 1] : domain[0],
+      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]
+    ];
+  };
+
+  scale.domain = function(_) {
+    if (!arguments.length) return domain.slice();
+    domain = [];
+    for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);
+    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__["ascending"]);
+    return rescale();
+  };
+
+  scale.range = function(_) {
+    return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), rescale()) : range.slice();
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : unknown;
+  };
+
+  scale.quantiles = function() {
+    return thresholds.slice();
+  };
+
+  scale.copy = function() {
+    return quantile()
+        .domain(domain)
+        .range(range)
+        .unknown(unknown);
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_2__["initRange"].apply(scale, arguments);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/quantize.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-scale/src/quantize.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return quantize; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ "./node_modules/d3-scale/src/array.js");
+/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ "./node_modules/d3-scale/src/linear.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+
+function quantize() {
+  var x0 = 0,
+      x1 = 1,
+      n = 1,
+      domain = [0.5],
+      range = [0, 1],
+      unknown;
+
+  function scale(x) {
+    return x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(domain, x, 0, n)] : unknown;
+  }
+
+  function rescale() {
+    var i = -1;
+    domain = new Array(n);
+    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);
+    return scale;
+  }
+
+  scale.domain = function(_) {
+    return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];
+  };
+
+  scale.range = function(_) {
+    return arguments.length ? (n = (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_)).length - 1, rescale()) : range.slice();
+  };
+
+  scale.invertExtent = function(y) {
+    var i = range.indexOf(y);
+    return i < 0 ? [NaN, NaN]
+        : i < 1 ? [x0, domain[0]]
+        : i >= n ? [domain[n - 1], x1]
+        : [domain[i - 1], domain[i]];
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : scale;
+  };
+
+  scale.thresholds = function() {
+    return domain.slice();
+  };
+
+  scale.copy = function() {
+    return quantize()
+        .domain([x0, x1])
+        .range(range)
+        .unknown(unknown);
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_3__["initRange"].apply(Object(_linear__WEBPACK_IMPORTED_MODULE_2__["linearish"])(scale), arguments);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/sequential.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-scale/src/sequential.js ***!
+  \*************************************************/
+/*! exports provided: copy, default, sequentialLog, sequentialSymlog, sequentialPow, sequentialSqrt */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copy", function() { return copy; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return sequential; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequentialLog", function() { return sequentialLog; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequentialSymlog", function() { return sequentialSymlog; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequentialPow", function() { return sequentialPow; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequentialSqrt", function() { return sequentialSqrt; });
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ "./node_modules/d3-scale/src/linear.js");
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ "./node_modules/d3-scale/src/log.js");
+/* harmony import */ var _symlog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog */ "./node_modules/d3-scale/src/symlog.js");
+/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pow */ "./node_modules/d3-scale/src/pow.js");
+
+
+
+
+
+
+
+function transformer() {
+  var x0 = 0,
+      x1 = 1,
+      t0,
+      t1,
+      k10,
+      transform,
+      interpolator = _continuous__WEBPACK_IMPORTED_MODULE_0__["identity"],
+      clamp = false,
+      unknown;
+
+  function scale(x) {
+    return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));
+  }
+
+  scale.domain = function(_) {
+    return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];
+  };
+
+  scale.clamp = function(_) {
+    return arguments.length ? (clamp = !!_, scale) : clamp;
+  };
+
+  scale.interpolator = function(_) {
+    return arguments.length ? (interpolator = _, scale) : interpolator;
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : unknown;
+  };
+
+  return function(t) {
+    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);
+    return scale;
+  };
+}
+
+function copy(source, target) {
+  return target
+      .domain(source.domain())
+      .interpolator(source.interpolator())
+      .clamp(source.clamp())
+      .unknown(source.unknown());
+}
+
+function sequential() {
+  var scale = Object(_linear__WEBPACK_IMPORTED_MODULE_2__["linearish"])(transformer()(_continuous__WEBPACK_IMPORTED_MODULE_0__["identity"]));
+
+  scale.copy = function() {
+    return copy(scale, sequential());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function sequentialLog() {
+  var scale = Object(_log__WEBPACK_IMPORTED_MODULE_3__["loggish"])(transformer()).domain([1, 10]);
+
+  scale.copy = function() {
+    return copy(scale, sequentialLog()).base(scale.base());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function sequentialSymlog() {
+  var scale = Object(_symlog__WEBPACK_IMPORTED_MODULE_4__["symlogish"])(transformer());
+
+  scale.copy = function() {
+    return copy(scale, sequentialSymlog()).constant(scale.constant());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function sequentialPow() {
+  var scale = Object(_pow__WEBPACK_IMPORTED_MODULE_5__["powish"])(transformer());
+
+  scale.copy = function() {
+    return copy(scale, sequentialPow()).exponent(scale.exponent());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_1__["initInterpolator"].apply(scale, arguments);
+}
+
+function sequentialSqrt() {
+  return sequentialPow.apply(null, arguments).exponent(0.5);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/sequentialQuantile.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-scale/src/sequentialQuantile.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return sequentialQuantile; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+function sequentialQuantile() {
+  var domain = [],
+      interpolator = _continuous__WEBPACK_IMPORTED_MODULE_1__["identity"];
+
+  function scale(x) {
+    if (!isNaN(x = +x)) return interpolator((Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(domain, x) - 1) / (domain.length - 1));
+  }
+
+  scale.domain = function(_) {
+    if (!arguments.length) return domain.slice();
+    domain = [];
+    for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);
+    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__["ascending"]);
+    return scale;
+  };
+
+  scale.interpolator = function(_) {
+    return arguments.length ? (interpolator = _, scale) : interpolator;
+  };
+
+  scale.copy = function() {
+    return sequentialQuantile(interpolator).domain(domain);
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_2__["initInterpolator"].apply(scale, arguments);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/symlog.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-scale/src/symlog.js ***!
+  \*********************************************/
+/*! exports provided: symlogish, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "symlogish", function() { return symlogish; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symlog; });
+/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear */ "./node_modules/d3-scale/src/linear.js");
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+function transformSymlog(c) {
+  return function(x) {
+    return Math.sign(x) * Math.log1p(Math.abs(x / c));
+  };
+}
+
+function transformSymexp(c) {
+  return function(x) {
+    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;
+  };
+}
+
+function symlogish(transform) {
+  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));
+
+  scale.constant = function(_) {
+    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;
+  };
+
+  return Object(_linear__WEBPACK_IMPORTED_MODULE_0__["linearish"])(scale);
+}
+
+function symlog() {
+  var scale = symlogish(Object(_continuous__WEBPACK_IMPORTED_MODULE_1__["transformer"])());
+
+  scale.copy = function() {
+    return Object(_continuous__WEBPACK_IMPORTED_MODULE_1__["copy"])(scale, symlog()).constant(scale.constant());
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_2__["initRange"].apply(scale, arguments);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/threshold.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-scale/src/threshold.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return threshold; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ "./node_modules/d3-scale/src/array.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+function threshold() {
+  var domain = [0.5],
+      range = [0, 1],
+      unknown,
+      n = 1;
+
+  function scale(x) {
+    return x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(domain, x, 0, n)] : unknown;
+  }
+
+  scale.domain = function(_) {
+    return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();
+  };
+
+  scale.range = function(_) {
+    return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();
+  };
+
+  scale.invertExtent = function(y) {
+    var i = range.indexOf(y);
+    return [domain[i - 1], domain[i]];
+  };
+
+  scale.unknown = function(_) {
+    return arguments.length ? (unknown = _, scale) : unknown;
+  };
+
+  scale.copy = function() {
+    return threshold()
+        .domain(domain)
+        .range(range)
+        .unknown(unknown);
+  };
+
+  return _init__WEBPACK_IMPORTED_MODULE_2__["initRange"].apply(scale, arguments);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/tickFormat.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-scale/src/tickFormat.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ "./node_modules/d3-format/src/index.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(start, stop, count, specifier) {
+  var step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(start, stop, count),
+      precision;
+  specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["formatSpecifier"])(specifier == null ? ",f" : specifier);
+  switch (specifier.type) {
+    case "s": {
+      var value = Math.max(Math.abs(start), Math.abs(stop));
+      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["precisionPrefix"])(step, value))) specifier.precision = precision;
+      return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["formatPrefix"])(specifier, value);
+    }
+    case "":
+    case "e":
+    case "g":
+    case "p":
+    case "r": {
+      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["precisionRound"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e");
+      break;
+    }
+    case "f":
+    case "%": {
+      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["precisionFixed"])(step))) specifier.precision = precision - (specifier.type === "%") * 2;
+      break;
+    }
+  }
+  return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["format"])(specifier);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/time.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-scale/src/time.js ***!
+  \*******************************************/
+/*! exports provided: calendar, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "calendar", function() { return calendar; });
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time */ "./node_modules/d3-time/src/index.js");
+/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-time-format */ "./node_modules/d3-time-format/src/index.js");
+/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./array */ "./node_modules/d3-scale/src/array.js");
+/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./continuous */ "./node_modules/d3-scale/src/continuous.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+/* harmony import */ var _nice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./nice */ "./node_modules/d3-scale/src/nice.js");
+
+
+
+
+
+
+
+
+var durationSecond = 1000,
+    durationMinute = durationSecond * 60,
+    durationHour = durationMinute * 60,
+    durationDay = durationHour * 24,
+    durationWeek = durationDay * 7,
+    durationMonth = durationDay * 30,
+    durationYear = durationDay * 365;
+
+function date(t) {
+  return new Date(t);
+}
+
+function number(t) {
+  return t instanceof Date ? +t : +new Date(+t);
+}
+
+function calendar(year, month, week, day, hour, minute, second, millisecond, format) {
+  var scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_4__["default"])(_continuous__WEBPACK_IMPORTED_MODULE_4__["identity"], _continuous__WEBPACK_IMPORTED_MODULE_4__["identity"]),
+      invert = scale.invert,
+      domain = scale.domain;
+
+  var formatMillisecond = format(".%L"),
+      formatSecond = format(":%S"),
+      formatMinute = format("%I:%M"),
+      formatHour = format("%I %p"),
+      formatDay = format("%a %d"),
+      formatWeek = format("%b %d"),
+      formatMonth = format("%B"),
+      formatYear = format("%Y");
+
+  var tickIntervals = [
+    [second,  1,      durationSecond],
+    [second,  5,  5 * durationSecond],
+    [second, 15, 15 * durationSecond],
+    [second, 30, 30 * durationSecond],
+    [minute,  1,      durationMinute],
+    [minute,  5,  5 * durationMinute],
+    [minute, 15, 15 * durationMinute],
+    [minute, 30, 30 * durationMinute],
+    [  hour,  1,      durationHour  ],
+    [  hour,  3,  3 * durationHour  ],
+    [  hour,  6,  6 * durationHour  ],
+    [  hour, 12, 12 * durationHour  ],
+    [   day,  1,      durationDay   ],
+    [   day,  2,  2 * durationDay   ],
+    [  week,  1,      durationWeek  ],
+    [ month,  1,      durationMonth ],
+    [ month,  3,  3 * durationMonth ],
+    [  year,  1,      durationYear  ]
+  ];
+
+  function tickFormat(date) {
+    return (second(date) < date ? formatMillisecond
+        : minute(date) < date ? formatSecond
+        : hour(date) < date ? formatMinute
+        : day(date) < date ? formatHour
+        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)
+        : year(date) < date ? formatMonth
+        : formatYear)(date);
+  }
+
+  function tickInterval(interval, start, stop, step) {
+    if (interval == null) interval = 10;
+
+    // If a desired tick count is specified, pick a reasonable tick interval
+    // based on the extent of the domain and a rough estimate of tick size.
+    // Otherwise, assume interval is already a time interval and use it.
+    if (typeof interval === "number") {
+      var target = Math.abs(stop - start) / interval,
+          i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisector"])(function(i) { return i[2]; }).right(tickIntervals, target);
+      if (i === tickIntervals.length) {
+        step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(start / durationYear, stop / durationYear, interval);
+        interval = year;
+      } else if (i) {
+        i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
+        step = i[1];
+        interval = i[0];
+      } else {
+        step = Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(start, stop, interval), 1);
+        interval = millisecond;
+      }
+    }
+
+    return step == null ? interval : interval.every(step);
+  }
+
+  scale.invert = function(y) {
+    return new Date(invert(y));
+  };
+
+  scale.domain = function(_) {
+    return arguments.length ? domain(_array__WEBPACK_IMPORTED_MODULE_3__["map"].call(_, number)) : domain().map(date);
+  };
+
+  scale.ticks = function(interval, step) {
+    var d = domain(),
+        t0 = d[0],
+        t1 = d[d.length - 1],
+        r = t1 < t0,
+        t;
+    if (r) t = t0, t0 = t1, t1 = t;
+    t = tickInterval(interval, t0, t1, step);
+    t = t ? t.range(t0, t1 + 1) : []; // inclusive stop
+    return r ? t.reverse() : t;
+  };
+
+  scale.tickFormat = function(count, specifier) {
+    return specifier == null ? tickFormat : format(specifier);
+  };
+
+  scale.nice = function(interval, step) {
+    var d = domain();
+    return (interval = tickInterval(interval, d[0], d[d.length - 1], step))
+        ? domain(Object(_nice__WEBPACK_IMPORTED_MODULE_6__["default"])(d, interval))
+        : scale;
+  };
+
+  scale.copy = function() {
+    return Object(_continuous__WEBPACK_IMPORTED_MODULE_4__["copy"])(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));
+  };
+
+  return scale;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return _init__WEBPACK_IMPORTED_MODULE_5__["initRange"].apply(calendar(d3_time__WEBPACK_IMPORTED_MODULE_1__["timeYear"], d3_time__WEBPACK_IMPORTED_MODULE_1__["timeMonth"], d3_time__WEBPACK_IMPORTED_MODULE_1__["timeWeek"], d3_time__WEBPACK_IMPORTED_MODULE_1__["timeDay"], d3_time__WEBPACK_IMPORTED_MODULE_1__["timeHour"], d3_time__WEBPACK_IMPORTED_MODULE_1__["timeMinute"], d3_time__WEBPACK_IMPORTED_MODULE_1__["timeSecond"], d3_time__WEBPACK_IMPORTED_MODULE_1__["timeMillisecond"], d3_time_format__WEBPACK_IMPORTED_MODULE_2__["timeFormat"]).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-scale/src/utcTime.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-scale/src/utcTime.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./time */ "./node_modules/d3-scale/src/time.js");
+/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ "./node_modules/d3-time-format/src/index.js");
+/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-time */ "./node_modules/d3-time/src/index.js");
+/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init */ "./node_modules/d3-scale/src/init.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return _init__WEBPACK_IMPORTED_MODULE_3__["initRange"].apply(Object(_time__WEBPACK_IMPORTED_MODULE_0__["calendar"])(d3_time__WEBPACK_IMPORTED_MODULE_2__["utcYear"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcMonth"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcWeek"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcDay"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcHour"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcMinute"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcSecond"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcMillisecond"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__["utcFormat"]).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/constant.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-selection/src/constant.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/create.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-selection/src/create.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./creator */ "./node_modules/d3-selection/src/creator.js");
+/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./select */ "./node_modules/d3-selection/src/select.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name) {
+  return Object(_select__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_creator__WEBPACK_IMPORTED_MODULE_0__["default"])(name).call(document.documentElement));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/creator.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-selection/src/creator.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespace */ "./node_modules/d3-selection/src/namespace.js");
+/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./namespaces */ "./node_modules/d3-selection/src/namespaces.js");
+
+
+
+function creatorInherit(name) {
+  return function() {
+    var document = this.ownerDocument,
+        uri = this.namespaceURI;
+    return uri === _namespaces__WEBPACK_IMPORTED_MODULE_1__["xhtml"] && document.documentElement.namespaceURI === _namespaces__WEBPACK_IMPORTED_MODULE_1__["xhtml"]
+        ? document.createElement(name)
+        : document.createElementNS(uri, name);
+  };
+}
+
+function creatorFixed(fullname) {
+  return function() {
+    return this.ownerDocument.createElementNS(fullname.space, fullname.local);
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name) {
+  var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__["default"])(name);
+  return (fullname.local
+      ? creatorFixed
+      : creatorInherit)(fullname);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/index.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-selection/src/index.js ***!
+  \************************************************/
+/*! exports provided: create, creator, local, matcher, mouse, namespace, namespaces, clientPoint, select, selectAll, selection, selector, selectorAll, style, touch, touches, window, event, customEvent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _create__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./create */ "./node_modules/d3-selection/src/create.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "create", function() { return _create__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./creator */ "./node_modules/d3-selection/src/creator.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "creator", function() { return _creator__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _local__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./local */ "./node_modules/d3-selection/src/local.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "local", function() { return _local__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _matcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./matcher */ "./node_modules/d3-selection/src/matcher.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "matcher", function() { return _matcher__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _mouse__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mouse */ "./node_modules/d3-selection/src/mouse.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mouse", function() { return _mouse__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./namespace */ "./node_modules/d3-selection/src/namespace.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "namespace", function() { return _namespace__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./namespaces */ "./node_modules/d3-selection/src/namespaces.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "namespaces", function() { return _namespaces__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./point */ "./node_modules/d3-selection/src/point.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clientPoint", function() { return _point__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./select */ "./node_modules/d3-selection/src/select.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "select", function() { return _select__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony import */ var _selectAll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./selectAll */ "./node_modules/d3-selection/src/selectAll.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selectAll", function() { return _selectAll__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./selection/index */ "./node_modules/d3-selection/src/selection/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selection", function() { return _selection_index__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./selector */ "./node_modules/d3-selection/src/selector.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selector", function() { return _selector__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony import */ var _selectorAll__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./selectorAll */ "./node_modules/d3-selection/src/selectorAll.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selectorAll", function() { return _selectorAll__WEBPACK_IMPORTED_MODULE_12__["default"]; });
+
+/* harmony import */ var _selection_style__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./selection/style */ "./node_modules/d3-selection/src/selection/style.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "style", function() { return _selection_style__WEBPACK_IMPORTED_MODULE_13__["styleValue"]; });
+
+/* harmony import */ var _touch__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./touch */ "./node_modules/d3-selection/src/touch.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "touch", function() { return _touch__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony import */ var _touches__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./touches */ "./node_modules/d3-selection/src/touches.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "touches", function() { return _touches__WEBPACK_IMPORTED_MODULE_15__["default"]; });
+
+/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./window */ "./node_modules/d3-selection/src/window.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _window__WEBPACK_IMPORTED_MODULE_16__["default"]; });
+
+/* harmony import */ var _selection_on__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./selection/on */ "./node_modules/d3-selection/src/selection/on.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "event", function() { return _selection_on__WEBPACK_IMPORTED_MODULE_17__["event"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "customEvent", function() { return _selection_on__WEBPACK_IMPORTED_MODULE_17__["customEvent"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/local.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-selection/src/local.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return local; });
+var nextId = 0;
+
+function local() {
+  return new Local;
+}
+
+function Local() {
+  this._ = "@" + (++nextId).toString(36);
+}
+
+Local.prototype = local.prototype = {
+  constructor: Local,
+  get: function(node) {
+    var id = this._;
+    while (!(id in node)) if (!(node = node.parentNode)) return;
+    return node[id];
+  },
+  set: function(node, value) {
+    return node[this._] = value;
+  },
+  remove: function(node) {
+    return this._ in node && delete node[this._];
+  },
+  toString: function() {
+    return this._;
+  }
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/matcher.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-selection/src/matcher.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(selector) {
+  return function() {
+    return this.matches(selector);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/mouse.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-selection/src/mouse.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ "./node_modules/d3-selection/src/sourceEvent.js");
+/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ "./node_modules/d3-selection/src/point.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(node) {
+  var event = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__["default"])();
+  if (event.changedTouches) event = event.changedTouches[0];
+  return Object(_point__WEBPACK_IMPORTED_MODULE_1__["default"])(node, event);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/namespace.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-selection/src/namespace.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespaces */ "./node_modules/d3-selection/src/namespaces.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name) {
+  var prefix = name += "", i = prefix.indexOf(":");
+  if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
+  return _namespaces__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProperty(prefix) ? {space: _namespaces__WEBPACK_IMPORTED_MODULE_0__["default"][prefix], local: name} : name;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/namespaces.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-selection/src/namespaces.js ***!
+  \*****************************************************/
+/*! exports provided: xhtml, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "xhtml", function() { return xhtml; });
+var xhtml = "http://www.w3.org/1999/xhtml";
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  svg: "http://www.w3.org/2000/svg",
+  xhtml: xhtml,
+  xlink: "http://www.w3.org/1999/xlink",
+  xml: "http://www.w3.org/XML/1998/namespace",
+  xmlns: "http://www.w3.org/2000/xmlns/"
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/point.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-selection/src/point.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(node, event) {
+  var svg = node.ownerSVGElement || node;
+
+  if (svg.createSVGPoint) {
+    var point = svg.createSVGPoint();
+    point.x = event.clientX, point.y = event.clientY;
+    point = point.matrixTransform(node.getScreenCTM().inverse());
+    return [point.x, point.y];
+  }
+
+  var rect = node.getBoundingClientRect();
+  return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/select.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-selection/src/select.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index */ "./node_modules/d3-selection/src/selection/index.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(selector) {
+  return typeof selector === "string"
+      ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([[document.querySelector(selector)]], [document.documentElement])
+      : new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([[selector]], _selection_index__WEBPACK_IMPORTED_MODULE_0__["root"]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selectAll.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-selection/src/selectAll.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index */ "./node_modules/d3-selection/src/selection/index.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(selector) {
+  return typeof selector === "string"
+      ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([document.querySelectorAll(selector)], [document.documentElement])
+      : new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([selector == null ? [] : selector], _selection_index__WEBPACK_IMPORTED_MODULE_0__["root"]);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/append.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/append.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator */ "./node_modules/d3-selection/src/creator.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name) {
+  var create = typeof name === "function" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__["default"])(name);
+  return this.select(function() {
+    return this.appendChild(create.apply(this, arguments));
+  });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/attr.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/attr.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../namespace */ "./node_modules/d3-selection/src/namespace.js");
+
+
+function attrRemove(name) {
+  return function() {
+    this.removeAttribute(name);
+  };
+}
+
+function attrRemoveNS(fullname) {
+  return function() {
+    this.removeAttributeNS(fullname.space, fullname.local);
+  };
+}
+
+function attrConstant(name, value) {
+  return function() {
+    this.setAttribute(name, value);
+  };
+}
+
+function attrConstantNS(fullname, value) {
+  return function() {
+    this.setAttributeNS(fullname.space, fullname.local, value);
+  };
+}
+
+function attrFunction(name, value) {
+  return function() {
+    var v = value.apply(this, arguments);
+    if (v == null) this.removeAttribute(name);
+    else this.setAttribute(name, v);
+  };
+}
+
+function attrFunctionNS(fullname, value) {
+  return function() {
+    var v = value.apply(this, arguments);
+    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
+    else this.setAttributeNS(fullname.space, fullname.local, v);
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value) {
+  var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__["default"])(name);
+
+  if (arguments.length < 2) {
+    var node = this.node();
+    return fullname.local
+        ? node.getAttributeNS(fullname.space, fullname.local)
+        : node.getAttribute(fullname);
+  }
+
+  return this.each((value == null
+      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
+      ? (fullname.local ? attrFunctionNS : attrFunction)
+      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/call.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/call.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var callback = arguments[0];
+  arguments[0] = this;
+  callback.apply(null, arguments);
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/classed.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/classed.js ***!
+  \************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function classArray(string) {
+  return string.trim().split(/^|\s+/);
+}
+
+function classList(node) {
+  return node.classList || new ClassList(node);
+}
+
+function ClassList(node) {
+  this._node = node;
+  this._names = classArray(node.getAttribute("class") || "");
+}
+
+ClassList.prototype = {
+  add: function(name) {
+    var i = this._names.indexOf(name);
+    if (i < 0) {
+      this._names.push(name);
+      this._node.setAttribute("class", this._names.join(" "));
+    }
+  },
+  remove: function(name) {
+    var i = this._names.indexOf(name);
+    if (i >= 0) {
+      this._names.splice(i, 1);
+      this._node.setAttribute("class", this._names.join(" "));
+    }
+  },
+  contains: function(name) {
+    return this._names.indexOf(name) >= 0;
+  }
+};
+
+function classedAdd(node, names) {
+  var list = classList(node), i = -1, n = names.length;
+  while (++i < n) list.add(names[i]);
+}
+
+function classedRemove(node, names) {
+  var list = classList(node), i = -1, n = names.length;
+  while (++i < n) list.remove(names[i]);
+}
+
+function classedTrue(names) {
+  return function() {
+    classedAdd(this, names);
+  };
+}
+
+function classedFalse(names) {
+  return function() {
+    classedRemove(this, names);
+  };
+}
+
+function classedFunction(names, value) {
+  return function() {
+    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value) {
+  var names = classArray(name + "");
+
+  if (arguments.length < 2) {
+    var list = classList(this.node()), i = -1, n = names.length;
+    while (++i < n) if (!list.contains(names[i])) return false;
+    return true;
+  }
+
+  return this.each((typeof value === "function"
+      ? classedFunction : value
+      ? classedTrue
+      : classedFalse)(names, value));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/clone.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/clone.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function selection_cloneShallow() {
+  var clone = this.cloneNode(false), parent = this.parentNode;
+  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
+}
+
+function selection_cloneDeep() {
+  var clone = this.cloneNode(true), parent = this.parentNode;
+  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(deep) {
+  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/data.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/data.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+/* harmony import */ var _enter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enter */ "./node_modules/d3-selection/src/selection/enter.js");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ "./node_modules/d3-selection/src/constant.js");
+
+
+
+
+var keyPrefix = "$"; // Protect against keys like “__proto__”.
+
+function bindIndex(parent, group, enter, update, exit, data) {
+  var i = 0,
+      node,
+      groupLength = group.length,
+      dataLength = data.length;
+
+  // Put any non-null nodes that fit into update.
+  // Put any null nodes into enter.
+  // Put any remaining data into enter.
+  for (; i < dataLength; ++i) {
+    if (node = group[i]) {
+      node.__data__ = data[i];
+      update[i] = node;
+    } else {
+      enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__["EnterNode"](parent, data[i]);
+    }
+  }
+
+  // Put any non-null nodes that don’t fit into exit.
+  for (; i < groupLength; ++i) {
+    if (node = group[i]) {
+      exit[i] = node;
+    }
+  }
+}
+
+function bindKey(parent, group, enter, update, exit, data, key) {
+  var i,
+      node,
+      nodeByKeyValue = {},
+      groupLength = group.length,
+      dataLength = data.length,
+      keyValues = new Array(groupLength),
+      keyValue;
+
+  // Compute the key for each node.
+  // If multiple nodes have the same key, the duplicates are added to exit.
+  for (i = 0; i < groupLength; ++i) {
+    if (node = group[i]) {
+      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
+      if (keyValue in nodeByKeyValue) {
+        exit[i] = node;
+      } else {
+        nodeByKeyValue[keyValue] = node;
+      }
+    }
+  }
+
+  // Compute the key for each datum.
+  // If there a node associated with this key, join and add it to update.
+  // If there is not (or the key is a duplicate), add it to enter.
+  for (i = 0; i < dataLength; ++i) {
+    keyValue = keyPrefix + key.call(parent, data[i], i, data);
+    if (node = nodeByKeyValue[keyValue]) {
+      update[i] = node;
+      node.__data__ = data[i];
+      nodeByKeyValue[keyValue] = null;
+    } else {
+      enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__["EnterNode"](parent, data[i]);
+    }
+  }
+
+  // Add any remaining nodes that were not bound to data to exit.
+  for (i = 0; i < groupLength; ++i) {
+    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
+      exit[i] = node;
+    }
+  }
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value, key) {
+  if (!value) {
+    data = new Array(this.size()), j = -1;
+    this.each(function(d) { data[++j] = d; });
+    return data;
+  }
+
+  var bind = key ? bindKey : bindIndex,
+      parents = this._parents,
+      groups = this._groups;
+
+  if (typeof value !== "function") value = Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
+
+  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
+    var parent = parents[j],
+        group = groups[j],
+        groupLength = group.length,
+        data = value.call(parent, parent && parent.__data__, j, parents),
+        dataLength = data.length,
+        enterGroup = enter[j] = new Array(dataLength),
+        updateGroup = update[j] = new Array(dataLength),
+        exitGroup = exit[j] = new Array(groupLength);
+
+    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
+
+    // Now connect the enter nodes to their following update node, such that
+    // appendChild can insert the materialized enter node before this node,
+    // rather than at the end of the parent node.
+    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
+      if (previous = enterGroup[i0]) {
+        if (i0 >= i1) i1 = i0 + 1;
+        while (!(next = updateGroup[i1]) && ++i1 < dataLength);
+        previous._next = next || null;
+      }
+    }
+  }
+
+  update = new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](update, parents);
+  update._enter = enter;
+  update._exit = exit;
+  return update;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/datum.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/datum.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  return arguments.length
+      ? this.property("__data__", value)
+      : this.node().__data__;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/dispatch.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/dispatch.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window */ "./node_modules/d3-selection/src/window.js");
+
+
+function dispatchEvent(node, type, params) {
+  var window = Object(_window__WEBPACK_IMPORTED_MODULE_0__["default"])(node),
+      event = window.CustomEvent;
+
+  if (typeof event === "function") {
+    event = new event(type, params);
+  } else {
+    event = window.document.createEvent("Event");
+    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
+    else event.initEvent(type, false, false);
+  }
+
+  node.dispatchEvent(event);
+}
+
+function dispatchConstant(type, params) {
+  return function() {
+    return dispatchEvent(this, type, params);
+  };
+}
+
+function dispatchFunction(type, params) {
+  return function() {
+    return dispatchEvent(this, type, params.apply(this, arguments));
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(type, params) {
+  return this.each((typeof params === "function"
+      ? dispatchFunction
+      : dispatchConstant)(type, params));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/each.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/each.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(callback) {
+
+  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
+      if (node = group[i]) callback.call(node, node.__data__, i, group);
+    }
+  }
+
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/empty.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/empty.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return !this.node();
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/enter.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/enter.js ***!
+  \**********************************************************/
+/*! exports provided: default, EnterNode */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EnterNode", function() { return EnterNode; });
+/* harmony import */ var _sparse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sparse */ "./node_modules/d3-selection/src/selection/sparse.js");
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return new _index__WEBPACK_IMPORTED_MODULE_1__["Selection"](this._enter || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__["default"]), this._parents);
+});
+
+function EnterNode(parent, datum) {
+  this.ownerDocument = parent.ownerDocument;
+  this.namespaceURI = parent.namespaceURI;
+  this._next = null;
+  this._parent = parent;
+  this.__data__ = datum;
+}
+
+EnterNode.prototype = {
+  constructor: EnterNode,
+  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
+  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
+  querySelector: function(selector) { return this._parent.querySelector(selector); },
+  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/exit.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/exit.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _sparse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sparse */ "./node_modules/d3-selection/src/selection/sparse.js");
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return new _index__WEBPACK_IMPORTED_MODULE_1__["Selection"](this._exit || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__["default"]), this._parents);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/filter.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/filter.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+/* harmony import */ var _matcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../matcher */ "./node_modules/d3-selection/src/matcher.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(match) {
+  if (typeof match !== "function") match = Object(_matcher__WEBPACK_IMPORTED_MODULE_1__["default"])(match);
+
+  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
+      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
+        subgroup.push(node);
+      }
+    }
+  }
+
+  return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](subgroups, this._parents);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/html.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/html.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function htmlRemove() {
+  this.innerHTML = "";
+}
+
+function htmlConstant(value) {
+  return function() {
+    this.innerHTML = value;
+  };
+}
+
+function htmlFunction(value) {
+  return function() {
+    var v = value.apply(this, arguments);
+    this.innerHTML = v == null ? "" : v;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  return arguments.length
+      ? this.each(value == null
+          ? htmlRemove : (typeof value === "function"
+          ? htmlFunction
+          : htmlConstant)(value))
+      : this.node().innerHTML;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/index.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/index.js ***!
+  \**********************************************************/
+/*! exports provided: root, Selection, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "root", function() { return root; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Selection", function() { return Selection; });
+/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select */ "./node_modules/d3-selection/src/selection/select.js");
+/* harmony import */ var _selectAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectAll */ "./node_modules/d3-selection/src/selection/selectAll.js");
+/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./filter */ "./node_modules/d3-selection/src/selection/filter.js");
+/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./data */ "./node_modules/d3-selection/src/selection/data.js");
+/* harmony import */ var _enter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./enter */ "./node_modules/d3-selection/src/selection/enter.js");
+/* harmony import */ var _exit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exit */ "./node_modules/d3-selection/src/selection/exit.js");
+/* harmony import */ var _join__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./join */ "./node_modules/d3-selection/src/selection/join.js");
+/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./merge */ "./node_modules/d3-selection/src/selection/merge.js");
+/* harmony import */ var _order__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./order */ "./node_modules/d3-selection/src/selection/order.js");
+/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./sort */ "./node_modules/d3-selection/src/selection/sort.js");
+/* harmony import */ var _call__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./call */ "./node_modules/d3-selection/src/selection/call.js");
+/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./nodes */ "./node_modules/d3-selection/src/selection/nodes.js");
+/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./node */ "./node_modules/d3-selection/src/selection/node.js");
+/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./size */ "./node_modules/d3-selection/src/selection/size.js");
+/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./empty */ "./node_modules/d3-selection/src/selection/empty.js");
+/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./each */ "./node_modules/d3-selection/src/selection/each.js");
+/* harmony import */ var _attr__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./attr */ "./node_modules/d3-selection/src/selection/attr.js");
+/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./style */ "./node_modules/d3-selection/src/selection/style.js");
+/* harmony import */ var _property__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./property */ "./node_modules/d3-selection/src/selection/property.js");
+/* harmony import */ var _classed__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./classed */ "./node_modules/d3-selection/src/selection/classed.js");
+/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./text */ "./node_modules/d3-selection/src/selection/text.js");
+/* harmony import */ var _html__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./html */ "./node_modules/d3-selection/src/selection/html.js");
+/* harmony import */ var _raise__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./raise */ "./node_modules/d3-selection/src/selection/raise.js");
+/* harmony import */ var _lower__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./lower */ "./node_modules/d3-selection/src/selection/lower.js");
+/* harmony import */ var _append__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./append */ "./node_modules/d3-selection/src/selection/append.js");
+/* harmony import */ var _insert__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./insert */ "./node_modules/d3-selection/src/selection/insert.js");
+/* harmony import */ var _remove__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./remove */ "./node_modules/d3-selection/src/selection/remove.js");
+/* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./clone */ "./node_modules/d3-selection/src/selection/clone.js");
+/* harmony import */ var _datum__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./datum */ "./node_modules/d3-selection/src/selection/datum.js");
+/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./on */ "./node_modules/d3-selection/src/selection/on.js");
+/* harmony import */ var _dispatch__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./dispatch */ "./node_modules/d3-selection/src/selection/dispatch.js");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var root = [null];
+
+function Selection(groups, parents) {
+  this._groups = groups;
+  this._parents = parents;
+}
+
+function selection() {
+  return new Selection([[document.documentElement]], root);
+}
+
+Selection.prototype = selection.prototype = {
+  constructor: Selection,
+  select: _select__WEBPACK_IMPORTED_MODULE_0__["default"],
+  selectAll: _selectAll__WEBPACK_IMPORTED_MODULE_1__["default"],
+  filter: _filter__WEBPACK_IMPORTED_MODULE_2__["default"],
+  data: _data__WEBPACK_IMPORTED_MODULE_3__["default"],
+  enter: _enter__WEBPACK_IMPORTED_MODULE_4__["default"],
+  exit: _exit__WEBPACK_IMPORTED_MODULE_5__["default"],
+  join: _join__WEBPACK_IMPORTED_MODULE_6__["default"],
+  merge: _merge__WEBPACK_IMPORTED_MODULE_7__["default"],
+  order: _order__WEBPACK_IMPORTED_MODULE_8__["default"],
+  sort: _sort__WEBPACK_IMPORTED_MODULE_9__["default"],
+  call: _call__WEBPACK_IMPORTED_MODULE_10__["default"],
+  nodes: _nodes__WEBPACK_IMPORTED_MODULE_11__["default"],
+  node: _node__WEBPACK_IMPORTED_MODULE_12__["default"],
+  size: _size__WEBPACK_IMPORTED_MODULE_13__["default"],
+  empty: _empty__WEBPACK_IMPORTED_MODULE_14__["default"],
+  each: _each__WEBPACK_IMPORTED_MODULE_15__["default"],
+  attr: _attr__WEBPACK_IMPORTED_MODULE_16__["default"],
+  style: _style__WEBPACK_IMPORTED_MODULE_17__["default"],
+  property: _property__WEBPACK_IMPORTED_MODULE_18__["default"],
+  classed: _classed__WEBPACK_IMPORTED_MODULE_19__["default"],
+  text: _text__WEBPACK_IMPORTED_MODULE_20__["default"],
+  html: _html__WEBPACK_IMPORTED_MODULE_21__["default"],
+  raise: _raise__WEBPACK_IMPORTED_MODULE_22__["default"],
+  lower: _lower__WEBPACK_IMPORTED_MODULE_23__["default"],
+  append: _append__WEBPACK_IMPORTED_MODULE_24__["default"],
+  insert: _insert__WEBPACK_IMPORTED_MODULE_25__["default"],
+  remove: _remove__WEBPACK_IMPORTED_MODULE_26__["default"],
+  clone: _clone__WEBPACK_IMPORTED_MODULE_27__["default"],
+  datum: _datum__WEBPACK_IMPORTED_MODULE_28__["default"],
+  on: _on__WEBPACK_IMPORTED_MODULE_29__["default"],
+  dispatch: _dispatch__WEBPACK_IMPORTED_MODULE_30__["default"]
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (selection);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/insert.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/insert.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator */ "./node_modules/d3-selection/src/creator.js");
+/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selector */ "./node_modules/d3-selection/src/selector.js");
+
+
+
+function constantNull() {
+  return null;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, before) {
+  var create = typeof name === "function" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__["default"])(name),
+      select = before == null ? constantNull : typeof before === "function" ? before : Object(_selector__WEBPACK_IMPORTED_MODULE_1__["default"])(before);
+  return this.select(function() {
+    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
+  });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/join.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/join.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(onenter, onupdate, onexit) {
+  var enter = this.enter(), update = this, exit = this.exit();
+  enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + "");
+  if (onupdate != null) update = onupdate(update);
+  if (onexit == null) exit.remove(); else onexit(exit);
+  return enter && update ? enter.merge(update).order() : update;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/lower.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/lower.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function lower() {
+  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return this.each(lower);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/merge.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/merge.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(selection) {
+
+  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
+    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
+      if (node = group0[i] || group1[i]) {
+        merge[i] = node;
+      }
+    }
+  }
+
+  for (; j < m0; ++j) {
+    merges[j] = groups0[j];
+  }
+
+  return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](merges, this._parents);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/node.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/node.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+
+  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
+      var node = group[i];
+      if (node) return node;
+    }
+  }
+
+  return null;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/nodes.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/nodes.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var nodes = new Array(this.size()), i = -1;
+  this.each(function() { nodes[++i] = this; });
+  return nodes;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/on.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/on.js ***!
+  \*******************************************************/
+/*! exports provided: event, default, customEvent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "event", function() { return event; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "customEvent", function() { return customEvent; });
+var filterEvents = {};
+
+var event = null;
+
+if (typeof document !== "undefined") {
+  var element = document.documentElement;
+  if (!("onmouseenter" in element)) {
+    filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
+  }
+}
+
+function filterContextListener(listener, index, group) {
+  listener = contextListener(listener, index, group);
+  return function(event) {
+    var related = event.relatedTarget;
+    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
+      listener.call(this, event);
+    }
+  };
+}
+
+function contextListener(listener, index, group) {
+  return function(event1) {
+    var event0 = event; // Events can be reentrant (e.g., focus).
+    event = event1;
+    try {
+      listener.call(this, this.__data__, index, group);
+    } finally {
+      event = event0;
+    }
+  };
+}
+
+function parseTypenames(typenames) {
+  return typenames.trim().split(/^|\s+/).map(function(t) {
+    var name = "", i = t.indexOf(".");
+    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+    return {type: t, name: name};
+  });
+}
+
+function onRemove(typename) {
+  return function() {
+    var on = this.__on;
+    if (!on) return;
+    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
+      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
+        this.removeEventListener(o.type, o.listener, o.capture);
+      } else {
+        on[++i] = o;
+      }
+    }
+    if (++i) on.length = i;
+    else delete this.__on;
+  };
+}
+
+function onAdd(typename, value, capture) {
+  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
+  return function(d, i, group) {
+    var on = this.__on, o, listener = wrap(value, i, group);
+    if (on) for (var j = 0, m = on.length; j < m; ++j) {
+      if ((o = on[j]).type === typename.type && o.name === typename.name) {
+        this.removeEventListener(o.type, o.listener, o.capture);
+        this.addEventListener(o.type, o.listener = listener, o.capture = capture);
+        o.value = value;
+        return;
+      }
+    }
+    this.addEventListener(typename.type, listener, capture);
+    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
+    if (!on) this.__on = [o];
+    else on.push(o);
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(typename, value, capture) {
+  var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
+
+  if (arguments.length < 2) {
+    var on = this.node().__on;
+    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
+      for (i = 0, o = on[j]; i < n; ++i) {
+        if ((t = typenames[i]).type === o.type && t.name === o.name) {
+          return o.value;
+        }
+      }
+    }
+    return;
+  }
+
+  on = value ? onAdd : onRemove;
+  if (capture == null) capture = false;
+  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
+  return this;
+});
+
+function customEvent(event1, listener, that, args) {
+  var event0 = event;
+  event1.sourceEvent = event;
+  event = event1;
+  try {
+    return listener.apply(that, args);
+  } finally {
+    event = event0;
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/order.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/order.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+
+  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
+    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
+      if (node = group[i]) {
+        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);
+        next = node;
+      }
+    }
+  }
+
+  return this;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/property.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/property.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function propertyRemove(name) {
+  return function() {
+    delete this[name];
+  };
+}
+
+function propertyConstant(name, value) {
+  return function() {
+    this[name] = value;
+  };
+}
+
+function propertyFunction(name, value) {
+  return function() {
+    var v = value.apply(this, arguments);
+    if (v == null) delete this[name];
+    else this[name] = v;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value) {
+  return arguments.length > 1
+      ? this.each((value == null
+          ? propertyRemove : typeof value === "function"
+          ? propertyFunction
+          : propertyConstant)(name, value))
+      : this.node()[name];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/raise.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/raise.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function raise() {
+  if (this.nextSibling) this.parentNode.appendChild(this);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return this.each(raise);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/remove.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/remove.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function remove() {
+  var parent = this.parentNode;
+  if (parent) parent.removeChild(this);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return this.each(remove);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/select.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/select.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selector */ "./node_modules/d3-selection/src/selector.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(select) {
+  if (typeof select !== "function") select = Object(_selector__WEBPACK_IMPORTED_MODULE_1__["default"])(select);
+
+  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
+      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
+        if ("__data__" in node) subnode.__data__ = node.__data__;
+        subgroup[i] = subnode;
+      }
+    }
+  }
+
+  return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](subgroups, this._parents);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/selectAll.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/selectAll.js ***!
+  \**************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+/* harmony import */ var _selectorAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selectorAll */ "./node_modules/d3-selection/src/selectorAll.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(select) {
+  if (typeof select !== "function") select = Object(_selectorAll__WEBPACK_IMPORTED_MODULE_1__["default"])(select);
+
+  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+      if (node = group[i]) {
+        subgroups.push(select.call(node, node.__data__, i, group));
+        parents.push(node);
+      }
+    }
+  }
+
+  return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](subgroups, parents);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/size.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/size.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var size = 0;
+  this.each(function() { ++size; });
+  return size;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/sort.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/sort.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./node_modules/d3-selection/src/selection/index.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(compare) {
+  if (!compare) compare = ascending;
+
+  function compareNode(a, b) {
+    return a && b ? compare(a.__data__, b.__data__) : !a - !b;
+  }
+
+  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
+      if (node = group[i]) {
+        sortgroup[i] = node;
+      }
+    }
+    sortgroup.sort(compareNode);
+  }
+
+  return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](sortgroups, this._parents).order();
+});
+
+function ascending(a, b) {
+  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/sparse.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/sparse.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(update) {
+  return new Array(update.length);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/style.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/style.js ***!
+  \**********************************************************/
+/*! exports provided: default, styleValue */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "styleValue", function() { return styleValue; });
+/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window */ "./node_modules/d3-selection/src/window.js");
+
+
+function styleRemove(name) {
+  return function() {
+    this.style.removeProperty(name);
+  };
+}
+
+function styleConstant(name, value, priority) {
+  return function() {
+    this.style.setProperty(name, value, priority);
+  };
+}
+
+function styleFunction(name, value, priority) {
+  return function() {
+    var v = value.apply(this, arguments);
+    if (v == null) this.style.removeProperty(name);
+    else this.style.setProperty(name, v, priority);
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value, priority) {
+  return arguments.length > 1
+      ? this.each((value == null
+            ? styleRemove : typeof value === "function"
+            ? styleFunction
+            : styleConstant)(name, value, priority == null ? "" : priority))
+      : styleValue(this.node(), name);
+});
+
+function styleValue(node, name) {
+  return node.style.getPropertyValue(name)
+      || Object(_window__WEBPACK_IMPORTED_MODULE_0__["default"])(node).getComputedStyle(node, null).getPropertyValue(name);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selection/text.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-selection/src/selection/text.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function textRemove() {
+  this.textContent = "";
+}
+
+function textConstant(value) {
+  return function() {
+    this.textContent = value;
+  };
+}
+
+function textFunction(value) {
+  return function() {
+    var v = value.apply(this, arguments);
+    this.textContent = v == null ? "" : v;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  return arguments.length
+      ? this.each(value == null
+          ? textRemove : (typeof value === "function"
+          ? textFunction
+          : textConstant)(value))
+      : this.node().textContent;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selector.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-selection/src/selector.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function none() {}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(selector) {
+  return selector == null ? none : function() {
+    return this.querySelector(selector);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/selectorAll.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-selection/src/selectorAll.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function empty() {
+  return [];
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(selector) {
+  return selector == null ? empty : function() {
+    return this.querySelectorAll(selector);
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/sourceEvent.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-selection/src/sourceEvent.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _selection_on__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/on */ "./node_modules/d3-selection/src/selection/on.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var current = _selection_on__WEBPACK_IMPORTED_MODULE_0__["event"], source;
+  while (source = current.sourceEvent) current = source;
+  return current;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/touch.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-selection/src/touch.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ "./node_modules/d3-selection/src/sourceEvent.js");
+/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ "./node_modules/d3-selection/src/point.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(node, touches, identifier) {
+  if (arguments.length < 3) identifier = touches, touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__["default"])().changedTouches;
+
+  for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {
+    if ((touch = touches[i]).identifier === identifier) {
+      return Object(_point__WEBPACK_IMPORTED_MODULE_1__["default"])(node, touch);
+    }
+  }
+
+  return null;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/touches.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-selection/src/touches.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ "./node_modules/d3-selection/src/sourceEvent.js");
+/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ "./node_modules/d3-selection/src/point.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(node, touches) {
+  if (touches == null) touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__["default"])().touches;
+
+  for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {
+    points[i] = Object(_point__WEBPACK_IMPORTED_MODULE_1__["default"])(node, touches[i]);
+  }
+
+  return points;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-selection/src/window.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-selection/src/window.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(node) {
+  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
+      || (node.document && node) // node is a Window
+      || node.defaultView; // node is a Document
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/arc.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-shape/src/arc.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ "./node_modules/d3-path/src/index.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-shape/src/constant.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-shape/src/math.js");
+
+
+
+
+function arcInnerRadius(d) {
+  return d.innerRadius;
+}
+
+function arcOuterRadius(d) {
+  return d.outerRadius;
+}
+
+function arcStartAngle(d) {
+  return d.startAngle;
+}
+
+function arcEndAngle(d) {
+  return d.endAngle;
+}
+
+function arcPadAngle(d) {
+  return d && d.padAngle; // Note: optional!
+}
+
+function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
+  var x10 = x1 - x0, y10 = y1 - y0,
+      x32 = x3 - x2, y32 = y3 - y2,
+      t = y32 * x10 - x32 * y10;
+  if (t * t < _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) return;
+  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;
+  return [x0 + t * x10, y0 + t * y10];
+}
+
+// Compute perpendicular offset line of length rc.
+// http://mathworld.wolfram.com/Circle-LineIntersection.html
+function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {
+  var x01 = x0 - x1,
+      y01 = y0 - y1,
+      lo = (cw ? rc : -rc) / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(x01 * x01 + y01 * y01),
+      ox = lo * y01,
+      oy = -lo * x01,
+      x11 = x0 + ox,
+      y11 = y0 + oy,
+      x10 = x1 + ox,
+      y10 = y1 + oy,
+      x00 = (x11 + x10) / 2,
+      y00 = (y11 + y10) / 2,
+      dx = x10 - x11,
+      dy = y10 - y11,
+      d2 = dx * dx + dy * dy,
+      r = r1 - rc,
+      D = x11 * y10 - x10 * y11,
+      d = (dy < 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["max"])(0, r * r * d2 - D * D)),
+      cx0 = (D * dy - dx * d) / d2,
+      cy0 = (-D * dx - dy * d) / d2,
+      cx1 = (D * dy + dx * d) / d2,
+      cy1 = (-D * dx + dy * d) / d2,
+      dx0 = cx0 - x00,
+      dy0 = cy0 - y00,
+      dx1 = cx1 - x00,
+      dy1 = cy1 - y00;
+
+  // Pick the closer of the two intersection points.
+  // TODO Is there a faster way to determine which intersection to use?
+  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;
+
+  return {
+    cx: cx0,
+    cy: cy0,
+    x01: -ox,
+    y01: -oy,
+    x11: cx0 * (r1 / r - 1),
+    y11: cy0 * (r1 / r - 1)
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var innerRadius = arcInnerRadius,
+      outerRadius = arcOuterRadius,
+      cornerRadius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(0),
+      padRadius = null,
+      startAngle = arcStartAngle,
+      endAngle = arcEndAngle,
+      padAngle = arcPadAngle,
+      context = null;
+
+  function arc() {
+    var buffer,
+        r,
+        r0 = +innerRadius.apply(this, arguments),
+        r1 = +outerRadius.apply(this, arguments),
+        a0 = startAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
+        a1 = endAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
+        da = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["abs"])(a1 - a0),
+        cw = a1 > a0;
+
+    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])();
+
+    // Ensure that the outer radius is always larger than the inner radius.
+    if (r1 < r0) r = r1, r1 = r0, r0 = r;
+
+    // Is it a point?
+    if (!(r1 > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"])) context.moveTo(0, 0);
+
+    // Or is it a circle or annulus?
+    else if (da > _math_js__WEBPACK_IMPORTED_MODULE_2__["tau"] - _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
+      context.moveTo(r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(a0), r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(a0));
+      context.arc(0, 0, r1, a0, a1, !cw);
+      if (r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
+        context.moveTo(r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(a1), r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(a1));
+        context.arc(0, 0, r0, a1, a0, cw);
+      }
+    }
+
+    // Or is it a circular or annular sector?
+    else {
+      var a01 = a0,
+          a11 = a1,
+          a00 = a0,
+          a10 = a1,
+          da0 = da,
+          da1 = da,
+          ap = padAngle.apply(this, arguments) / 2,
+          rp = (ap > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) && (padRadius ? +padRadius.apply(this, arguments) : Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(r0 * r0 + r1 * r1)),
+          rc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["min"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["abs"])(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),
+          rc0 = rc,
+          rc1 = rc,
+          t0,
+          t1;
+
+      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.
+      if (rp > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
+        var p0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["asin"])(rp / r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(ap)),
+            p1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["asin"])(rp / r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(ap));
+        if ((da0 -= p0 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;
+        else da0 = 0, a00 = a10 = (a0 + a1) / 2;
+        if ((da1 -= p1 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;
+        else da1 = 0, a01 = a11 = (a0 + a1) / 2;
+      }
+
+      var x01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(a01),
+          y01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(a01),
+          x10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(a10),
+          y10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(a10);
+
+      // Apply rounded corners?
+      if (rc > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
+        var x11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(a11),
+            y11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(a11),
+            x00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(a00),
+            y00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(a00),
+            oc;
+
+        // Restrict the corner radius according to the sector angle.
+        if (da < _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"] && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {
+          var ax = x01 - oc[0],
+              ay = y01 - oc[1],
+              bx = x11 - oc[0],
+              by = y11 - oc[1],
+              kc = 1 / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["acos"])((ax * bx + ay * by) / (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(ax * ax + ay * ay) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(bx * bx + by * by))) / 2),
+              lc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(oc[0] * oc[0] + oc[1] * oc[1]);
+          rc0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["min"])(rc, (r0 - lc) / (kc - 1));
+          rc1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["min"])(rc, (r1 - lc) / (kc + 1));
+        }
+      }
+
+      // Is the sector collapsed to a line?
+      if (!(da1 > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"])) context.moveTo(x01, y01);
+
+      // Does the sector’s outer ring have rounded corners?
+      else if (rc1 > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
+        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);
+        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);
+
+        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);
+
+        // Have the corners merged?
+        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);
+
+        // Otherwise, draw the two corners and the ring.
+        else {
+          context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y11, t0.x11), !cw);
+          context.arc(0, 0, r1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.cy + t1.y11, t1.cx + t1.x11), !cw);
+          context.arc(t1.cx, t1.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);
+        }
+      }
+
+      // Or is the outer ring just a circular arc?
+      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);
+
+      // Is there no inner ring, and it’s a circular sector?
+      // Or perhaps it’s an annular sector collapsed due to padding?
+      if (!(r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) || !(da0 > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"])) context.lineTo(x10, y10);
+
+      // Does the sector’s inner ring (or point) have rounded corners?
+      else if (rc0 > _math_js__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
+        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);
+        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);
+
+        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);
+
+        // Have the corners merged?
+        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);
+
+        // Otherwise, draw the two corners and the ring.
+        else {
+          context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y11, t0.x11), !cw);
+          context.arc(0, 0, r0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.cy + t1.y11, t1.cx + t1.x11), cw);
+          context.arc(t1.cx, t1.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);
+        }
+      }
+
+      // Or is the inner ring just a circular arc?
+      else context.arc(0, 0, r0, a10, a00, cw);
+    }
+
+    context.closePath();
+
+    if (buffer) return context = null, buffer + "" || null;
+  }
+
+  arc.centroid = function() {
+    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,
+        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math_js__WEBPACK_IMPORTED_MODULE_2__["pi"] / 2;
+    return [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["cos"])(a) * r, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__["sin"])(a) * r];
+  };
+
+  arc.innerRadius = function(_) {
+    return arguments.length ? (innerRadius = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : innerRadius;
+  };
+
+  arc.outerRadius = function(_) {
+    return arguments.length ? (outerRadius = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : outerRadius;
+  };
+
+  arc.cornerRadius = function(_) {
+    return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : cornerRadius;
+  };
+
+  arc.padRadius = function(_) {
+    return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : padRadius;
+  };
+
+  arc.startAngle = function(_) {
+    return arguments.length ? (startAngle = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : startAngle;
+  };
+
+  arc.endAngle = function(_) {
+    return arguments.length ? (endAngle = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : endAngle;
+  };
+
+  arc.padAngle = function(_) {
+    return arguments.length ? (padAngle = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : padAngle;
+  };
+
+  arc.context = function(_) {
+    return arguments.length ? ((context = _ == null ? null : _), arc) : context;
+  };
+
+  return arc;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/area.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-shape/src/area.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ "./node_modules/d3-path/src/index.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-shape/src/constant.js");
+/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curve/linear.js */ "./node_modules/d3-shape/src/curve/linear.js");
+/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./line.js */ "./node_modules/d3-shape/src/line.js");
+/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./point.js */ "./node_modules/d3-shape/src/point.js");
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var x0 = _point_js__WEBPACK_IMPORTED_MODULE_4__["x"],
+      x1 = null,
+      y0 = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(0),
+      y1 = _point_js__WEBPACK_IMPORTED_MODULE_4__["y"],
+      defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(true),
+      context = null,
+      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+      output = null;
+
+  function area(data) {
+    var i,
+        j,
+        k,
+        n = data.length,
+        d,
+        defined0 = false,
+        buffer,
+        x0z = new Array(n),
+        y0z = new Array(n);
+
+    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])());
+
+    for (i = 0; i <= n; ++i) {
+      if (!(i < n && defined(d = data[i], i, data)) === defined0) {
+        if (defined0 = !defined0) {
+          j = i;
+          output.areaStart();
+          output.lineStart();
+        } else {
+          output.lineEnd();
+          output.lineStart();
+          for (k = i - 1; k >= j; --k) {
+            output.point(x0z[k], y0z[k]);
+          }
+          output.lineEnd();
+          output.areaEnd();
+        }
+      }
+      if (defined0) {
+        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);
+        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);
+      }
+    }
+
+    if (buffer) return output = null, buffer + "" || null;
+  }
+
+  function arealine() {
+    return Object(_line_js__WEBPACK_IMPORTED_MODULE_3__["default"])().defined(defined).curve(curve).context(context);
+  }
+
+  area.x = function(_) {
+    return arguments.length ? (x0 = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), x1 = null, area) : x0;
+  };
+
+  area.x0 = function(_) {
+    return arguments.length ? (x0 = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : x0;
+  };
+
+  area.x1 = function(_) {
+    return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : x1;
+  };
+
+  area.y = function(_) {
+    return arguments.length ? (y0 = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), y1 = null, area) : y0;
+  };
+
+  area.y0 = function(_) {
+    return arguments.length ? (y0 = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : y0;
+  };
+
+  area.y1 = function(_) {
+    return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : y1;
+  };
+
+  area.lineX0 =
+  area.lineY0 = function() {
+    return arealine().x(x0).y(y0);
+  };
+
+  area.lineY1 = function() {
+    return arealine().x(x0).y(y1);
+  };
+
+  area.lineX1 = function() {
+    return arealine().x(x1).y(y0);
+  };
+
+  area.defined = function(_) {
+    return arguments.length ? (defined = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(!!_), area) : defined;
+  };
+
+  area.curve = function(_) {
+    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;
+  };
+
+  area.context = function(_) {
+    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;
+  };
+
+  return area;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/areaRadial.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-shape/src/areaRadial.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ "./node_modules/d3-shape/src/curve/radial.js");
+/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ "./node_modules/d3-shape/src/area.js");
+/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lineRadial.js */ "./node_modules/d3-shape/src/lineRadial.js");
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var a = Object(_area_js__WEBPACK_IMPORTED_MODULE_1__["default"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__["curveRadialLinear"]),
+      c = a.curve,
+      x0 = a.lineX0,
+      x1 = a.lineX1,
+      y0 = a.lineY0,
+      y1 = a.lineY1;
+
+  a.angle = a.x, delete a.x;
+  a.startAngle = a.x0, delete a.x0;
+  a.endAngle = a.x1, delete a.x1;
+  a.radius = a.y, delete a.y;
+  a.innerRadius = a.y0, delete a.y0;
+  a.outerRadius = a.y1, delete a.y1;
+  a.lineStartAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(x0()); }, delete a.lineX0;
+  a.lineEndAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(x1()); }, delete a.lineX1;
+  a.lineInnerRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(y0()); }, delete a.lineY0;
+  a.lineOuterRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(y1()); }, delete a.lineY1;
+
+  a.curve = function(_) {
+    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_)) : c()._curve;
+  };
+
+  return a;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/array.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-shape/src/array.js ***!
+  \********************************************/
+/*! exports provided: slice */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; });
+var slice = Array.prototype.slice;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/constant.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-shape/src/constant.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function constant() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/basis.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/basis.js ***!
+  \**************************************************/
+/*! exports provided: point, Basis, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "point", function() { return point; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Basis", function() { return Basis; });
+function point(that, x, y) {
+  that._context.bezierCurveTo(
+    (2 * that._x0 + that._x1) / 3,
+    (2 * that._y0 + that._y1) / 3,
+    (that._x0 + 2 * that._x1) / 3,
+    (that._y0 + 2 * that._y1) / 3,
+    (that._x0 + 4 * that._x1 + x) / 6,
+    (that._y0 + 4 * that._y1 + y) / 6
+  );
+}
+
+function Basis(context) {
+  this._context = context;
+}
+
+Basis.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x0 = this._x1 =
+    this._y0 = this._y1 = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    switch (this._point) {
+      case 3: point(this, this._x1, this._y1); // proceed
+      case 2: this._context.lineTo(this._x1, this._y1); break;
+    }
+    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
+      case 1: this._point = 2; break;
+      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed
+      default: point(this, x, y); break;
+    }
+    this._x0 = this._x1, this._x1 = x;
+    this._y0 = this._y1, this._y1 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(context) {
+  return new Basis(context);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/basisClosed.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/basisClosed.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-shape/src/noop.js");
+/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ "./node_modules/d3-shape/src/curve/basis.js");
+
+
+
+function BasisClosed(context) {
+  this._context = context;
+}
+
+BasisClosed.prototype = {
+  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  lineStart: function() {
+    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =
+    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    switch (this._point) {
+      case 1: {
+        this._context.moveTo(this._x2, this._y2);
+        this._context.closePath();
+        break;
+      }
+      case 2: {
+        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);
+        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);
+        this._context.closePath();
+        break;
+      }
+      case 3: {
+        this.point(this._x2, this._y2);
+        this.point(this._x3, this._y3);
+        this.point(this._x4, this._y4);
+        break;
+      }
+    }
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;
+      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;
+      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;
+      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_1__["point"])(this, x, y); break;
+    }
+    this._x0 = this._x1, this._x1 = x;
+    this._y0 = this._y1, this._y1 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(context) {
+  return new BasisClosed(context);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/basisOpen.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/basisOpen.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ "./node_modules/d3-shape/src/curve/basis.js");
+
+
+function BasisOpen(context) {
+  this._context = context;
+}
+
+BasisOpen.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x0 = this._x1 =
+    this._y0 = this._y1 = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; break;
+      case 1: this._point = 2; break;
+      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;
+      case 3: this._point = 4; // proceed
+      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__["point"])(this, x, y); break;
+    }
+    this._x0 = this._x1, this._x1 = x;
+    this._y0 = this._y1, this._y1 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(context) {
+  return new BasisOpen(context);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/bundle.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/bundle.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ "./node_modules/d3-shape/src/curve/basis.js");
+
+
+function Bundle(context, beta) {
+  this._basis = new _basis_js__WEBPACK_IMPORTED_MODULE_0__["Basis"](context);
+  this._beta = beta;
+}
+
+Bundle.prototype = {
+  lineStart: function() {
+    this._x = [];
+    this._y = [];
+    this._basis.lineStart();
+  },
+  lineEnd: function() {
+    var x = this._x,
+        y = this._y,
+        j = x.length - 1;
+
+    if (j > 0) {
+      var x0 = x[0],
+          y0 = y[0],
+          dx = x[j] - x0,
+          dy = y[j] - y0,
+          i = -1,
+          t;
+
+      while (++i <= j) {
+        t = i / j;
+        this._basis.point(
+          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),
+          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)
+        );
+      }
+    }
+
+    this._x = this._y = null;
+    this._basis.lineEnd();
+  },
+  point: function(x, y) {
+    this._x.push(+x);
+    this._y.push(+y);
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(beta) {
+
+  function bundle(context) {
+    return beta === 1 ? new _basis_js__WEBPACK_IMPORTED_MODULE_0__["Basis"](context) : new Bundle(context, beta);
+  }
+
+  bundle.beta = function(beta) {
+    return custom(+beta);
+  };
+
+  return bundle;
+})(0.85));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/cardinal.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/cardinal.js ***!
+  \*****************************************************/
+/*! exports provided: point, Cardinal, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "point", function() { return point; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Cardinal", function() { return Cardinal; });
+function point(that, x, y) {
+  that._context.bezierCurveTo(
+    that._x1 + that._k * (that._x2 - that._x0),
+    that._y1 + that._k * (that._y2 - that._y0),
+    that._x2 + that._k * (that._x1 - x),
+    that._y2 + that._k * (that._y1 - y),
+    that._x2,
+    that._y2
+  );
+}
+
+function Cardinal(context, tension) {
+  this._context = context;
+  this._k = (1 - tension) / 6;
+}
+
+Cardinal.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x0 = this._x1 = this._x2 =
+    this._y0 = this._y1 = this._y2 = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    switch (this._point) {
+      case 2: this._context.lineTo(this._x2, this._y2); break;
+      case 3: point(this, this._x1, this._y1); break;
+    }
+    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
+      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;
+      case 2: this._point = 3; // proceed
+      default: point(this, x, y); break;
+    }
+    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
+    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(tension) {
+
+  function cardinal(context) {
+    return new Cardinal(context, tension);
+  }
+
+  cardinal.tension = function(tension) {
+    return custom(+tension);
+  };
+
+  return cardinal;
+})(0));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/cardinalClosed.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/cardinalClosed.js ***!
+  \***********************************************************/
+/*! exports provided: CardinalClosed, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CardinalClosed", function() { return CardinalClosed; });
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-shape/src/noop.js");
+/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ "./node_modules/d3-shape/src/curve/cardinal.js");
+
+
+
+function CardinalClosed(context, tension) {
+  this._context = context;
+  this._k = (1 - tension) / 6;
+}
+
+CardinalClosed.prototype = {
+  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  lineStart: function() {
+    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =
+    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    switch (this._point) {
+      case 1: {
+        this._context.moveTo(this._x3, this._y3);
+        this._context.closePath();
+        break;
+      }
+      case 2: {
+        this._context.lineTo(this._x3, this._y3);
+        this._context.closePath();
+        break;
+      }
+      case 3: {
+        this.point(this._x3, this._y3);
+        this.point(this._x4, this._y4);
+        this.point(this._x5, this._y5);
+        break;
+      }
+    }
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;
+      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;
+      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;
+      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_1__["point"])(this, x, y); break;
+    }
+    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
+    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(tension) {
+
+  function cardinal(context) {
+    return new CardinalClosed(context, tension);
+  }
+
+  cardinal.tension = function(tension) {
+    return custom(+tension);
+  };
+
+  return cardinal;
+})(0));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/cardinalOpen.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/cardinalOpen.js ***!
+  \*********************************************************/
+/*! exports provided: CardinalOpen, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CardinalOpen", function() { return CardinalOpen; });
+/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinal.js */ "./node_modules/d3-shape/src/curve/cardinal.js");
+
+
+function CardinalOpen(context, tension) {
+  this._context = context;
+  this._k = (1 - tension) / 6;
+}
+
+CardinalOpen.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x0 = this._x1 = this._x2 =
+    this._y0 = this._y1 = this._y2 = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; break;
+      case 1: this._point = 2; break;
+      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;
+      case 3: this._point = 4; // proceed
+      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_0__["point"])(this, x, y); break;
+    }
+    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
+    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(tension) {
+
+  function cardinal(context) {
+    return new CardinalOpen(context, tension);
+  }
+
+  cardinal.tension = function(tension) {
+    return custom(+tension);
+  };
+
+  return cardinal;
+})(0));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/catmullRom.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/catmullRom.js ***!
+  \*******************************************************/
+/*! exports provided: point, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "point", function() { return point; });
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-shape/src/math.js");
+/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ "./node_modules/d3-shape/src/curve/cardinal.js");
+
+
+
+function point(that, x, y) {
+  var x1 = that._x1,
+      y1 = that._y1,
+      x2 = that._x2,
+      y2 = that._y2;
+
+  if (that._l01_a > _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) {
+    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,
+        n = 3 * that._l01_a * (that._l01_a + that._l12_a);
+    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;
+    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;
+  }
+
+  if (that._l23_a > _math_js__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) {
+    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,
+        m = 3 * that._l23_a * (that._l23_a + that._l12_a);
+    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;
+    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;
+  }
+
+  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);
+}
+
+function CatmullRom(context, alpha) {
+  this._context = context;
+  this._alpha = alpha;
+}
+
+CatmullRom.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x0 = this._x1 = this._x2 =
+    this._y0 = this._y1 = this._y2 = NaN;
+    this._l01_a = this._l12_a = this._l23_a =
+    this._l01_2a = this._l12_2a = this._l23_2a =
+    this._point = 0;
+  },
+  lineEnd: function() {
+    switch (this._point) {
+      case 2: this._context.lineTo(this._x2, this._y2); break;
+      case 3: this.point(this._x2, this._y2); break;
+    }
+    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+
+    if (this._point) {
+      var x23 = this._x2 - x,
+          y23 = this._y2 - y;
+      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
+    }
+
+    switch (this._point) {
+      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
+      case 1: this._point = 2; break;
+      case 2: this._point = 3; // proceed
+      default: point(this, x, y); break;
+    }
+
+    this._l01_a = this._l12_a, this._l12_a = this._l23_a;
+    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;
+    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
+    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(alpha) {
+
+  function catmullRom(context) {
+    return alpha ? new CatmullRom(context, alpha) : new _cardinal_js__WEBPACK_IMPORTED_MODULE_1__["Cardinal"](context, 0);
+  }
+
+  catmullRom.alpha = function(alpha) {
+    return custom(+alpha);
+  };
+
+  return catmullRom;
+})(0.5));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/catmullRomClosed.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/catmullRomClosed.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalClosed.js */ "./node_modules/d3-shape/src/curve/cardinalClosed.js");
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-shape/src/noop.js");
+/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./catmullRom.js */ "./node_modules/d3-shape/src/curve/catmullRom.js");
+
+
+
+
+function CatmullRomClosed(context, alpha) {
+  this._context = context;
+  this._alpha = alpha;
+}
+
+CatmullRomClosed.prototype = {
+  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  lineStart: function() {
+    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =
+    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;
+    this._l01_a = this._l12_a = this._l23_a =
+    this._l01_2a = this._l12_2a = this._l23_2a =
+    this._point = 0;
+  },
+  lineEnd: function() {
+    switch (this._point) {
+      case 1: {
+        this._context.moveTo(this._x3, this._y3);
+        this._context.closePath();
+        break;
+      }
+      case 2: {
+        this._context.lineTo(this._x3, this._y3);
+        this._context.closePath();
+        break;
+      }
+      case 3: {
+        this.point(this._x3, this._y3);
+        this.point(this._x4, this._y4);
+        this.point(this._x5, this._y5);
+        break;
+      }
+    }
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+
+    if (this._point) {
+      var x23 = this._x2 - x,
+          y23 = this._y2 - y;
+      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
+    }
+
+    switch (this._point) {
+      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;
+      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;
+      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;
+      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_2__["point"])(this, x, y); break;
+    }
+
+    this._l01_a = this._l12_a, this._l12_a = this._l23_a;
+    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;
+    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
+    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(alpha) {
+
+  function catmullRom(context) {
+    return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__["CardinalClosed"](context, 0);
+  }
+
+  catmullRom.alpha = function(alpha) {
+    return custom(+alpha);
+  };
+
+  return catmullRom;
+})(0.5));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/catmullRomOpen.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/catmullRomOpen.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalOpen.js */ "./node_modules/d3-shape/src/curve/cardinalOpen.js");
+/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./catmullRom.js */ "./node_modules/d3-shape/src/curve/catmullRom.js");
+
+
+
+function CatmullRomOpen(context, alpha) {
+  this._context = context;
+  this._alpha = alpha;
+}
+
+CatmullRomOpen.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x0 = this._x1 = this._x2 =
+    this._y0 = this._y1 = this._y2 = NaN;
+    this._l01_a = this._l12_a = this._l23_a =
+    this._l01_2a = this._l12_2a = this._l23_2a =
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+
+    if (this._point) {
+      var x23 = this._x2 - x,
+          y23 = this._y2 - y;
+      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
+    }
+
+    switch (this._point) {
+      case 0: this._point = 1; break;
+      case 1: this._point = 2; break;
+      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;
+      case 3: this._point = 4; // proceed
+      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_1__["point"])(this, x, y); break;
+    }
+
+    this._l01_a = this._l12_a, this._l12_a = this._l23_a;
+    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;
+    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
+    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ((function custom(alpha) {
+
+  function catmullRom(context) {
+    return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__["CardinalOpen"](context, 0);
+  }
+
+  catmullRom.alpha = function(alpha) {
+    return custom(+alpha);
+  };
+
+  return catmullRom;
+})(0.5));
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/linear.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/linear.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function Linear(context) {
+  this._context = context;
+}
+
+Linear.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
+      case 1: this._point = 2; // proceed
+      default: this._context.lineTo(x, y); break;
+    }
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(context) {
+  return new Linear(context);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/linearClosed.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/linearClosed.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ "./node_modules/d3-shape/src/noop.js");
+
+
+function LinearClosed(context) {
+  this._context = context;
+}
+
+LinearClosed.prototype = {
+  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__["default"],
+  lineStart: function() {
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (this._point) this._context.closePath();
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    if (this._point) this._context.lineTo(x, y);
+    else this._point = 1, this._context.moveTo(x, y);
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(context) {
+  return new LinearClosed(context);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/monotone.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/monotone.js ***!
+  \*****************************************************/
+/*! exports provided: monotoneX, monotoneY */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "monotoneX", function() { return monotoneX; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "monotoneY", function() { return monotoneY; });
+function sign(x) {
+  return x < 0 ? -1 : 1;
+}
+
+// Calculate the slopes of the tangents (Hermite-type interpolation) based on
+// the following paper: Steffen, M. 1990. A Simple Method for Monotonic
+// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.
+// NOV(II), P. 443, 1990.
+function slope3(that, x2, y2) {
+  var h0 = that._x1 - that._x0,
+      h1 = x2 - that._x1,
+      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),
+      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),
+      p = (s0 * h1 + s1 * h0) / (h0 + h1);
+  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;
+}
+
+// Calculate a one-sided slope.
+function slope2(that, t) {
+  var h = that._x1 - that._x0;
+  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;
+}
+
+// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations
+// "you can express cubic Hermite interpolation in terms of cubic Bézier curves
+// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1".
+function point(that, t0, t1) {
+  var x0 = that._x0,
+      y0 = that._y0,
+      x1 = that._x1,
+      y1 = that._y1,
+      dx = (x1 - x0) / 3;
+  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);
+}
+
+function MonotoneX(context) {
+  this._context = context;
+}
+
+MonotoneX.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x0 = this._x1 =
+    this._y0 = this._y1 =
+    this._t0 = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    switch (this._point) {
+      case 2: this._context.lineTo(this._x1, this._y1); break;
+      case 3: point(this, this._t0, slope2(this, this._t0)); break;
+    }
+    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
+    this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    var t1 = NaN;
+
+    x = +x, y = +y;
+    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.
+    switch (this._point) {
+      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
+      case 1: this._point = 2; break;
+      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;
+      default: point(this, this._t0, t1 = slope3(this, x, y)); break;
+    }
+
+    this._x0 = this._x1, this._x1 = x;
+    this._y0 = this._y1, this._y1 = y;
+    this._t0 = t1;
+  }
+}
+
+function MonotoneY(context) {
+  this._context = new ReflectContext(context);
+}
+
+(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {
+  MonotoneX.prototype.point.call(this, y, x);
+};
+
+function ReflectContext(context) {
+  this._context = context;
+}
+
+ReflectContext.prototype = {
+  moveTo: function(x, y) { this._context.moveTo(y, x); },
+  closePath: function() { this._context.closePath(); },
+  lineTo: function(x, y) { this._context.lineTo(y, x); },
+  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }
+};
+
+function monotoneX(context) {
+  return new MonotoneX(context);
+}
+
+function monotoneY(context) {
+  return new MonotoneY(context);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/natural.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/natural.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function Natural(context) {
+  this._context = context;
+}
+
+Natural.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x = [];
+    this._y = [];
+  },
+  lineEnd: function() {
+    var x = this._x,
+        y = this._y,
+        n = x.length;
+
+    if (n) {
+      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);
+      if (n === 2) {
+        this._context.lineTo(x[1], y[1]);
+      } else {
+        var px = controlPoints(x),
+            py = controlPoints(y);
+        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {
+          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);
+        }
+      }
+    }
+
+    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();
+    this._line = 1 - this._line;
+    this._x = this._y = null;
+  },
+  point: function(x, y) {
+    this._x.push(+x);
+    this._y.push(+y);
+  }
+};
+
+// See https://www.particleincell.com/2012/bezier-splines/ for derivation.
+function controlPoints(x) {
+  var i,
+      n = x.length - 1,
+      m,
+      a = new Array(n),
+      b = new Array(n),
+      r = new Array(n);
+  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];
+  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];
+  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];
+  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];
+  a[n - 1] = r[n - 1] / b[n - 1];
+  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];
+  b[n - 1] = (x[n] + a[n - 1]) / 2;
+  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];
+  return [a, b];
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(context) {
+  return new Natural(context);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/radial.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/radial.js ***!
+  \***************************************************/
+/*! exports provided: curveRadialLinear, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "curveRadialLinear", function() { return curveRadialLinear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return curveRadial; });
+/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ "./node_modules/d3-shape/src/curve/linear.js");
+
+
+var curveRadialLinear = curveRadial(_linear_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+function Radial(curve) {
+  this._curve = curve;
+}
+
+Radial.prototype = {
+  areaStart: function() {
+    this._curve.areaStart();
+  },
+  areaEnd: function() {
+    this._curve.areaEnd();
+  },
+  lineStart: function() {
+    this._curve.lineStart();
+  },
+  lineEnd: function() {
+    this._curve.lineEnd();
+  },
+  point: function(a, r) {
+    this._curve.point(r * Math.sin(a), r * -Math.cos(a));
+  }
+};
+
+function curveRadial(curve) {
+
+  function radial(context) {
+    return new Radial(curve(context));
+  }
+
+  radial._curve = curve;
+
+  return radial;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/curve/step.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-shape/src/curve/step.js ***!
+  \*************************************************/
+/*! exports provided: default, stepBefore, stepAfter */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stepBefore", function() { return stepBefore; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stepAfter", function() { return stepAfter; });
+function Step(context, t) {
+  this._context = context;
+  this._t = t;
+}
+
+Step.prototype = {
+  areaStart: function() {
+    this._line = 0;
+  },
+  areaEnd: function() {
+    this._line = NaN;
+  },
+  lineStart: function() {
+    this._x = this._y = NaN;
+    this._point = 0;
+  },
+  lineEnd: function() {
+    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);
+    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
+    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;
+  },
+  point: function(x, y) {
+    x = +x, y = +y;
+    switch (this._point) {
+      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
+      case 1: this._point = 2; // proceed
+      default: {
+        if (this._t <= 0) {
+          this._context.lineTo(this._x, y);
+          this._context.lineTo(x, y);
+        } else {
+          var x1 = this._x * (1 - this._t) + x * this._t;
+          this._context.lineTo(x1, this._y);
+          this._context.lineTo(x1, y);
+        }
+        break;
+      }
+    }
+    this._x = x, this._y = y;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (function(context) {
+  return new Step(context, 0.5);
+});
+
+function stepBefore(context) {
+  return new Step(context, 0);
+}
+
+function stepAfter(context) {
+  return new Step(context, 1);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/descending.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-shape/src/descending.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/identity.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-shape/src/identity.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(d) {
+  return d;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-shape/src/index.js ***!
+  \********************************************/
+/*! exports provided: arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _arc_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc.js */ "./node_modules/d3-shape/src/arc.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "arc", function() { return _arc_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ "./node_modules/d3-shape/src/area.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "area", function() { return _area_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ "./node_modules/d3-shape/src/line.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "line", function() { return _line_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _pie_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pie.js */ "./node_modules/d3-shape/src/pie.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pie", function() { return _pie_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony import */ var _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./areaRadial.js */ "./node_modules/d3-shape/src/areaRadial.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "areaRadial", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "radialArea", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lineRadial.js */ "./node_modules/d3-shape/src/lineRadial.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lineRadial", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "radialLine", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pointRadial.js */ "./node_modules/d3-shape/src/pointRadial.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pointRadial", function() { return _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__["default"]; });
+
+/* harmony import */ var _link_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./link/index.js */ "./node_modules/d3-shape/src/link/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "linkHorizontal", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__["linkHorizontal"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "linkVertical", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__["linkVertical"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "linkRadial", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__["linkRadial"]; });
+
+/* harmony import */ var _symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./symbol.js */ "./node_modules/d3-shape/src/symbol.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbol", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbols", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__["symbols"]; });
+
+/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./symbol/circle.js */ "./node_modules/d3-shape/src/symbol/circle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolCircle", function() { return _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./symbol/cross.js */ "./node_modules/d3-shape/src/symbol/cross.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolCross", function() { return _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./symbol/diamond.js */ "./node_modules/d3-shape/src/symbol/diamond.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolDiamond", function() { return _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./symbol/square.js */ "./node_modules/d3-shape/src/symbol/square.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolSquare", function() { return _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__["default"]; });
+
+/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./symbol/star.js */ "./node_modules/d3-shape/src/symbol/star.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolStar", function() { return _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./symbol/triangle.js */ "./node_modules/d3-shape/src/symbol/triangle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolTriangle", function() { return _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./symbol/wye.js */ "./node_modules/d3-shape/src/symbol/wye.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolWye", function() { return _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__["default"]; });
+
+/* harmony import */ var _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./curve/basisClosed.js */ "./node_modules/d3-shape/src/curve/basisClosed.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBasisClosed", function() { return _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__["default"]; });
+
+/* harmony import */ var _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./curve/basisOpen.js */ "./node_modules/d3-shape/src/curve/basisOpen.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBasisOpen", function() { return _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__["default"]; });
+
+/* harmony import */ var _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./curve/basis.js */ "./node_modules/d3-shape/src/curve/basis.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBasis", function() { return _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__["default"]; });
+
+/* harmony import */ var _curve_bundle_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./curve/bundle.js */ "./node_modules/d3-shape/src/curve/bundle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBundle", function() { return _curve_bundle_js__WEBPACK_IMPORTED_MODULE_19__["default"]; });
+
+/* harmony import */ var _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./curve/cardinalClosed.js */ "./node_modules/d3-shape/src/curve/cardinalClosed.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCardinalClosed", function() { return _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_20__["default"]; });
+
+/* harmony import */ var _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./curve/cardinalOpen.js */ "./node_modules/d3-shape/src/curve/cardinalOpen.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCardinalOpen", function() { return _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_21__["default"]; });
+
+/* harmony import */ var _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./curve/cardinal.js */ "./node_modules/d3-shape/src/curve/cardinal.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCardinal", function() { return _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_22__["default"]; });
+
+/* harmony import */ var _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./curve/catmullRomClosed.js */ "./node_modules/d3-shape/src/curve/catmullRomClosed.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCatmullRomClosed", function() { return _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_23__["default"]; });
+
+/* harmony import */ var _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./curve/catmullRomOpen.js */ "./node_modules/d3-shape/src/curve/catmullRomOpen.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCatmullRomOpen", function() { return _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_24__["default"]; });
+
+/* harmony import */ var _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./curve/catmullRom.js */ "./node_modules/d3-shape/src/curve/catmullRom.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCatmullRom", function() { return _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_25__["default"]; });
+
+/* harmony import */ var _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./curve/linearClosed.js */ "./node_modules/d3-shape/src/curve/linearClosed.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveLinearClosed", function() { return _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_26__["default"]; });
+
+/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./curve/linear.js */ "./node_modules/d3-shape/src/curve/linear.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveLinear", function() { return _curve_linear_js__WEBPACK_IMPORTED_MODULE_27__["default"]; });
+
+/* harmony import */ var _curve_monotone_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./curve/monotone.js */ "./node_modules/d3-shape/src/curve/monotone.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveMonotoneX", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_28__["monotoneX"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveMonotoneY", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_28__["monotoneY"]; });
+
+/* harmony import */ var _curve_natural_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./curve/natural.js */ "./node_modules/d3-shape/src/curve/natural.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveNatural", function() { return _curve_natural_js__WEBPACK_IMPORTED_MODULE_29__["default"]; });
+
+/* harmony import */ var _curve_step_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./curve/step.js */ "./node_modules/d3-shape/src/curve/step.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveStep", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_30__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveStepAfter", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_30__["stepAfter"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveStepBefore", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_30__["stepBefore"]; });
+
+/* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./stack.js */ "./node_modules/d3-shape/src/stack.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stack", function() { return _stack_js__WEBPACK_IMPORTED_MODULE_31__["default"]; });
+
+/* harmony import */ var _offset_expand_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./offset/expand.js */ "./node_modules/d3-shape/src/offset/expand.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetExpand", function() { return _offset_expand_js__WEBPACK_IMPORTED_MODULE_32__["default"]; });
+
+/* harmony import */ var _offset_diverging_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./offset/diverging.js */ "./node_modules/d3-shape/src/offset/diverging.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetDiverging", function() { return _offset_diverging_js__WEBPACK_IMPORTED_MODULE_33__["default"]; });
+
+/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./offset/none.js */ "./node_modules/d3-shape/src/offset/none.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetNone", function() { return _offset_none_js__WEBPACK_IMPORTED_MODULE_34__["default"]; });
+
+/* harmony import */ var _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./offset/silhouette.js */ "./node_modules/d3-shape/src/offset/silhouette.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetSilhouette", function() { return _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_35__["default"]; });
+
+/* harmony import */ var _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./offset/wiggle.js */ "./node_modules/d3-shape/src/offset/wiggle.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetWiggle", function() { return _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_36__["default"]; });
+
+/* harmony import */ var _order_appearance_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./order/appearance.js */ "./node_modules/d3-shape/src/order/appearance.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderAppearance", function() { return _order_appearance_js__WEBPACK_IMPORTED_MODULE_37__["default"]; });
+
+/* harmony import */ var _order_ascending_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./order/ascending.js */ "./node_modules/d3-shape/src/order/ascending.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderAscending", function() { return _order_ascending_js__WEBPACK_IMPORTED_MODULE_38__["default"]; });
+
+/* harmony import */ var _order_descending_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./order/descending.js */ "./node_modules/d3-shape/src/order/descending.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderDescending", function() { return _order_descending_js__WEBPACK_IMPORTED_MODULE_39__["default"]; });
+
+/* harmony import */ var _order_insideOut_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./order/insideOut.js */ "./node_modules/d3-shape/src/order/insideOut.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderInsideOut", function() { return _order_insideOut_js__WEBPACK_IMPORTED_MODULE_40__["default"]; });
+
+/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./order/none.js */ "./node_modules/d3-shape/src/order/none.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderNone", function() { return _order_none_js__WEBPACK_IMPORTED_MODULE_41__["default"]; });
+
+/* harmony import */ var _order_reverse_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./order/reverse.js */ "./node_modules/d3-shape/src/order/reverse.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderReverse", function() { return _order_reverse_js__WEBPACK_IMPORTED_MODULE_42__["default"]; });
+
+
+
+
+
+ // Note: radialArea is deprecated!
+ // Note: radialLine is deprecated!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/line.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-shape/src/line.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ "./node_modules/d3-path/src/index.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-shape/src/constant.js");
+/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curve/linear.js */ "./node_modules/d3-shape/src/curve/linear.js");
+/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./point.js */ "./node_modules/d3-shape/src/point.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var x = _point_js__WEBPACK_IMPORTED_MODULE_3__["x"],
+      y = _point_js__WEBPACK_IMPORTED_MODULE_3__["y"],
+      defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(true),
+      context = null,
+      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+      output = null;
+
+  function line(data) {
+    var i,
+        n = data.length,
+        d,
+        defined0 = false,
+        buffer;
+
+    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])());
+
+    for (i = 0; i <= n; ++i) {
+      if (!(i < n && defined(d = data[i], i, data)) === defined0) {
+        if (defined0 = !defined0) output.lineStart();
+        else output.lineEnd();
+      }
+      if (defined0) output.point(+x(d, i, data), +y(d, i, data));
+    }
+
+    if (buffer) return output = null, buffer + "" || null;
+  }
+
+  line.x = function(_) {
+    return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), line) : x;
+  };
+
+  line.y = function(_) {
+    return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), line) : y;
+  };
+
+  line.defined = function(_) {
+    return arguments.length ? (defined = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(!!_), line) : defined;
+  };
+
+  line.curve = function(_) {
+    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;
+  };
+
+  line.context = function(_) {
+    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;
+  };
+
+  return line;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/lineRadial.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-shape/src/lineRadial.js ***!
+  \*************************************************/
+/*! exports provided: lineRadial, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lineRadial", function() { return lineRadial; });
+/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ "./node_modules/d3-shape/src/curve/radial.js");
+/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line.js */ "./node_modules/d3-shape/src/line.js");
+
+
+
+function lineRadial(l) {
+  var c = l.curve;
+
+  l.angle = l.x, delete l.x;
+  l.radius = l.y, delete l.y;
+
+  l.curve = function(_) {
+    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_)) : c()._curve;
+  };
+
+  return l;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return lineRadial(Object(_line_js__WEBPACK_IMPORTED_MODULE_1__["default"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__["curveRadialLinear"]));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/link/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-shape/src/link/index.js ***!
+  \*************************************************/
+/*! exports provided: linkHorizontal, linkVertical, linkRadial */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linkHorizontal", function() { return linkHorizontal; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linkVertical", function() { return linkVertical; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linkRadial", function() { return linkRadial; });
+/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ "./node_modules/d3-path/src/index.js");
+/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../array.js */ "./node_modules/d3-shape/src/array.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant.js */ "./node_modules/d3-shape/src/constant.js");
+/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../point.js */ "./node_modules/d3-shape/src/point.js");
+/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../pointRadial.js */ "./node_modules/d3-shape/src/pointRadial.js");
+
+
+
+
+
+
+function linkSource(d) {
+  return d.source;
+}
+
+function linkTarget(d) {
+  return d.target;
+}
+
+function link(curve) {
+  var source = linkSource,
+      target = linkTarget,
+      x = _point_js__WEBPACK_IMPORTED_MODULE_3__["x"],
+      y = _point_js__WEBPACK_IMPORTED_MODULE_3__["y"],
+      context = null;
+
+  function link() {
+    var buffer, argv = _array_js__WEBPACK_IMPORTED_MODULE_1__["slice"].call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);
+    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])();
+    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));
+    if (buffer) return context = null, buffer + "" || null;
+  }
+
+  link.source = function(_) {
+    return arguments.length ? (source = _, link) : source;
+  };
+
+  link.target = function(_) {
+    return arguments.length ? (target = _, link) : target;
+  };
+
+  link.x = function(_) {
+    return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__["default"])(+_), link) : x;
+  };
+
+  link.y = function(_) {
+    return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__["default"])(+_), link) : y;
+  };
+
+  link.context = function(_) {
+    return arguments.length ? ((context = _ == null ? null : _), link) : context;
+  };
+
+  return link;
+}
+
+function curveHorizontal(context, x0, y0, x1, y1) {
+  context.moveTo(x0, y0);
+  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);
+}
+
+function curveVertical(context, x0, y0, x1, y1) {
+  context.moveTo(x0, y0);
+  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);
+}
+
+function curveRadial(context, x0, y0, x1, y1) {
+  var p0 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x0, y0),
+      p1 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x0, y0 = (y0 + y1) / 2),
+      p2 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x1, y0),
+      p3 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x1, y1);
+  context.moveTo(p0[0], p0[1]);
+  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);
+}
+
+function linkHorizontal() {
+  return link(curveHorizontal);
+}
+
+function linkVertical() {
+  return link(curveVertical);
+}
+
+function linkRadial() {
+  var l = link(curveRadial);
+  l.angle = l.x, delete l.x;
+  l.radius = l.y, delete l.y;
+  return l;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/math.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-shape/src/math.js ***!
+  \*******************************************/
+/*! exports provided: abs, atan2, cos, max, min, sin, sqrt, epsilon, pi, halfPi, tau, acos, asin */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "abs", function() { return abs; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "atan2", function() { return atan2; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cos", function() { return cos; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sin", function() { return sin; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sqrt", function() { return sqrt; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "epsilon", function() { return epsilon; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pi", function() { return pi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "halfPi", function() { return halfPi; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tau", function() { return tau; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "acos", function() { return acos; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asin", function() { return asin; });
+var abs = Math.abs;
+var atan2 = Math.atan2;
+var cos = Math.cos;
+var max = Math.max;
+var min = Math.min;
+var sin = Math.sin;
+var sqrt = Math.sqrt;
+
+var epsilon = 1e-12;
+var pi = Math.PI;
+var halfPi = pi / 2;
+var tau = 2 * pi;
+
+function acos(x) {
+  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);
+}
+
+function asin(x) {
+  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/noop.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-shape/src/noop.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function() {});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/offset/diverging.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-shape/src/offset/diverging.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(series, order) {
+  if (!((n = series.length) > 0)) return;
+  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {
+    for (yp = yn = 0, i = 0; i < n; ++i) {
+      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {
+        d[0] = yp, d[1] = yp += dy;
+      } else if (dy < 0) {
+        d[1] = yn, d[0] = yn += dy;
+      } else {
+        d[0] = 0, d[1] = dy;
+      }
+    }
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/offset/expand.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-shape/src/offset/expand.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ "./node_modules/d3-shape/src/offset/none.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series, order) {
+  if (!((n = series.length) > 0)) return;
+  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {
+    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;
+    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;
+  }
+  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series, order);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/offset/none.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-shape/src/offset/none.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(series, order) {
+  if (!((n = series.length) > 1)) return;
+  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {
+    s0 = s1, s1 = series[order[i]];
+    for (j = 0; j < m; ++j) {
+      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];
+    }
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/offset/silhouette.js":
+/*!********************************************************!*\
+  !*** ./node_modules/d3-shape/src/offset/silhouette.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ "./node_modules/d3-shape/src/offset/none.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series, order) {
+  if (!((n = series.length) > 0)) return;
+  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {
+    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;
+    s0[j][1] += s0[j][0] = -y / 2;
+  }
+  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series, order);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/offset/wiggle.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-shape/src/offset/wiggle.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ "./node_modules/d3-shape/src/offset/none.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series, order) {
+  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;
+  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {
+    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {
+      var si = series[order[i]],
+          sij0 = si[j][1] || 0,
+          sij1 = si[j - 1][1] || 0,
+          s3 = (sij0 - sij1) / 2;
+      for (var k = 0; k < i; ++k) {
+        var sk = series[order[k]],
+            skj0 = sk[j][1] || 0,
+            skj1 = sk[j - 1][1] || 0;
+        s3 += skj0 - skj1;
+      }
+      s1 += sij0, s2 += s3 * sij0;
+    }
+    s0[j - 1][1] += s0[j - 1][0] = y;
+    if (s1) y -= s2 / s1;
+  }
+  s0[j - 1][1] += s0[j - 1][0] = y;
+  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series, order);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/order/appearance.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-shape/src/order/appearance.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ "./node_modules/d3-shape/src/order/none.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series) {
+  var peaks = series.map(peak);
+  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series).sort(function(a, b) { return peaks[a] - peaks[b]; });
+});
+
+function peak(series) {
+  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;
+  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;
+  return j;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/order/ascending.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-shape/src/order/ascending.js ***!
+  \******************************************************/
+/*! exports provided: default, sum */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return sum; });
+/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ "./node_modules/d3-shape/src/order/none.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series) {
+  var sums = series.map(sum);
+  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series).sort(function(a, b) { return sums[a] - sums[b]; });
+});
+
+function sum(series) {
+  var s = 0, i = -1, n = series.length, v;
+  while (++i < n) if (v = +series[i][1]) s += v;
+  return s;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/order/descending.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/d3-shape/src/order/descending.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ "./node_modules/d3-shape/src/order/ascending.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series) {
+  return Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series).reverse();
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/order/insideOut.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-shape/src/order/insideOut.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _appearance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appearance.js */ "./node_modules/d3-shape/src/order/appearance.js");
+/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ "./node_modules/d3-shape/src/order/ascending.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series) {
+  var n = series.length,
+      i,
+      j,
+      sums = series.map(_ascending_js__WEBPACK_IMPORTED_MODULE_1__["sum"]),
+      order = Object(_appearance_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series),
+      top = 0,
+      bottom = 0,
+      tops = [],
+      bottoms = [];
+
+  for (i = 0; i < n; ++i) {
+    j = order[i];
+    if (top < bottom) {
+      top += sums[j];
+      tops.push(j);
+    } else {
+      bottom += sums[j];
+      bottoms.push(j);
+    }
+  }
+
+  return bottoms.reverse().concat(tops);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/order/none.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-shape/src/order/none.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(series) {
+  var n = series.length, o = new Array(n);
+  while (--n >= 0) o[n] = n;
+  return o;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/order/reverse.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-shape/src/order/reverse.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ "./node_modules/d3-shape/src/order/none.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(series) {
+  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__["default"])(series).reverse();
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/pie.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-shape/src/pie.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-shape/src/constant.js");
+/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./descending.js */ "./node_modules/d3-shape/src/descending.js");
+/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./identity.js */ "./node_modules/d3-shape/src/identity.js");
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math.js */ "./node_modules/d3-shape/src/math.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var value = _identity_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+      sortValues = _descending_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+      sort = null,
+      startAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0),
+      endAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_math_js__WEBPACK_IMPORTED_MODULE_3__["tau"]),
+      padAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0);
+
+  function pie(data) {
+    var i,
+        n = data.length,
+        j,
+        k,
+        sum = 0,
+        index = new Array(n),
+        arcs = new Array(n),
+        a0 = +startAngle.apply(this, arguments),
+        da = Math.min(_math_js__WEBPACK_IMPORTED_MODULE_3__["tau"], Math.max(-_math_js__WEBPACK_IMPORTED_MODULE_3__["tau"], endAngle.apply(this, arguments) - a0)),
+        a1,
+        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),
+        pa = p * (da < 0 ? -1 : 1),
+        v;
+
+    for (i = 0; i < n; ++i) {
+      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {
+        sum += v;
+      }
+    }
+
+    // Optionally sort the arcs by previously-computed values or by data.
+    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });
+    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });
+
+    // Compute the arcs! They are stored in the original data's order.
+    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {
+      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {
+        data: data[j],
+        index: i,
+        value: v,
+        startAngle: a0,
+        endAngle: a1,
+        padAngle: p
+      };
+    }
+
+    return arcs;
+  }
+
+  pie.value = function(_) {
+    return arguments.length ? (value = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : value;
+  };
+
+  pie.sortValues = function(_) {
+    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;
+  };
+
+  pie.sort = function(_) {
+    return arguments.length ? (sort = _, sortValues = null, pie) : sort;
+  };
+
+  pie.startAngle = function(_) {
+    return arguments.length ? (startAngle = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : startAngle;
+  };
+
+  pie.endAngle = function(_) {
+    return arguments.length ? (endAngle = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : endAngle;
+  };
+
+  pie.padAngle = function(_) {
+    return arguments.length ? (padAngle = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : padAngle;
+  };
+
+  return pie;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/point.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-shape/src/point.js ***!
+  \********************************************/
+/*! exports provided: x, y */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return x; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return y; });
+function x(p) {
+  return p[0];
+}
+
+function y(p) {
+  return p[1];
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/pointRadial.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-shape/src/pointRadial.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x, y) {
+  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/stack.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-shape/src/stack.js ***!
+  \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ "./node_modules/d3-shape/src/array.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-shape/src/constant.js");
+/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offset/none.js */ "./node_modules/d3-shape/src/offset/none.js");
+/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./order/none.js */ "./node_modules/d3-shape/src/order/none.js");
+
+
+
+
+
+function stackValue(d, key) {
+  return d[key];
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var keys = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])([]),
+      order = _order_none_js__WEBPACK_IMPORTED_MODULE_3__["default"],
+      offset = _offset_none_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+      value = stackValue;
+
+  function stack(data) {
+    var kz = keys.apply(this, arguments),
+        i,
+        m = data.length,
+        n = kz.length,
+        sz = new Array(n),
+        oz;
+
+    for (i = 0; i < n; ++i) {
+      for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {
+        si[j] = sij = [0, +value(data[j], ki, j, data)];
+        sij.data = data[j];
+      }
+      si.key = ki;
+    }
+
+    for (i = 0, oz = order(sz); i < n; ++i) {
+      sz[oz[i]].index = i;
+    }
+
+    offset(sz, oz);
+    return sz;
+  }
+
+  stack.keys = function(_) {
+    return arguments.length ? (keys = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_array_js__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_)), stack) : keys;
+  };
+
+  stack.value = function(_) {
+    return arguments.length ? (value = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), stack) : value;
+  };
+
+  stack.order = function(_) {
+    return arguments.length ? (order = _ == null ? _order_none_js__WEBPACK_IMPORTED_MODULE_3__["default"] : typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_array_js__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_)), stack) : order;
+  };
+
+  stack.offset = function(_) {
+    return arguments.length ? (offset = _ == null ? _offset_none_js__WEBPACK_IMPORTED_MODULE_2__["default"] : _, stack) : offset;
+  };
+
+  return stack;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol.js ***!
+  \*********************************************/
+/*! exports provided: symbols, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "symbols", function() { return symbols; });
+/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ "./node_modules/d3-path/src/index.js");
+/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./symbol/circle.js */ "./node_modules/d3-shape/src/symbol/circle.js");
+/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/cross.js */ "./node_modules/d3-shape/src/symbol/cross.js");
+/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbol/diamond.js */ "./node_modules/d3-shape/src/symbol/diamond.js");
+/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symbol/star.js */ "./node_modules/d3-shape/src/symbol/star.js");
+/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symbol/square.js */ "./node_modules/d3-shape/src/symbol/square.js");
+/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symbol/triangle.js */ "./node_modules/d3-shape/src/symbol/triangle.js");
+/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./symbol/wye.js */ "./node_modules/d3-shape/src/symbol/wye.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-shape/src/constant.js");
+
+
+
+
+
+
+
+
+
+
+var symbols = [
+  _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__["default"],
+  _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__["default"],
+  _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__["default"],
+  _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__["default"],
+  _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__["default"]
+];
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var type = Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__["default"])(_symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__["default"]),
+      size = Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__["default"])(64),
+      context = null;
+
+  function symbol() {
+    var buffer;
+    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])();
+    type.apply(this, arguments).draw(context, +size.apply(this, arguments));
+    if (buffer) return context = null, buffer + "" || null;
+  }
+
+  symbol.type = function(_) {
+    return arguments.length ? (type = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__["default"])(_), symbol) : type;
+  };
+
+  symbol.size = function(_) {
+    return arguments.length ? (size = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__["default"])(+_), symbol) : size;
+  };
+
+  symbol.context = function(_) {
+    return arguments.length ? (context = _ == null ? null : _, symbol) : context;
+  };
+
+  return symbol;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol/circle.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol/circle.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-shape/src/math.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  draw: function(context, size) {
+    var r = Math.sqrt(size / _math_js__WEBPACK_IMPORTED_MODULE_0__["pi"]);
+    context.moveTo(r, 0);
+    context.arc(0, 0, r, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__["tau"]);
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol/cross.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol/cross.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = ({
+  draw: function(context, size) {
+    var r = Math.sqrt(size / 5) / 2;
+    context.moveTo(-3 * r, -r);
+    context.lineTo(-r, -r);
+    context.lineTo(-r, -3 * r);
+    context.lineTo(r, -3 * r);
+    context.lineTo(r, -r);
+    context.lineTo(3 * r, -r);
+    context.lineTo(3 * r, r);
+    context.lineTo(r, r);
+    context.lineTo(r, 3 * r);
+    context.lineTo(-r, 3 * r);
+    context.lineTo(-r, r);
+    context.lineTo(-3 * r, r);
+    context.closePath();
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol/diamond.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol/diamond.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var tan30 = Math.sqrt(1 / 3),
+    tan30_2 = tan30 * 2;
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  draw: function(context, size) {
+    var y = Math.sqrt(size / tan30_2),
+        x = y * tan30;
+    context.moveTo(0, -y);
+    context.lineTo(x, 0);
+    context.lineTo(0, y);
+    context.lineTo(-x, 0);
+    context.closePath();
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol/square.js":
+/*!****************************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol/square.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = ({
+  draw: function(context, size) {
+    var w = Math.sqrt(size),
+        x = -w / 2;
+    context.rect(x, x, w, w);
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol/star.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol/star.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ "./node_modules/d3-shape/src/math.js");
+
+
+var ka = 0.89081309152928522810,
+    kr = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__["pi"] / 10) / Math.sin(7 * _math_js__WEBPACK_IMPORTED_MODULE_0__["pi"] / 10),
+    kx = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__["tau"] / 10) * kr,
+    ky = -Math.cos(_math_js__WEBPACK_IMPORTED_MODULE_0__["tau"] / 10) * kr;
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  draw: function(context, size) {
+    var r = Math.sqrt(size * ka),
+        x = kx * r,
+        y = ky * r;
+    context.moveTo(0, -r);
+    context.lineTo(x, y);
+    for (var i = 1; i < 5; ++i) {
+      var a = _math_js__WEBPACK_IMPORTED_MODULE_0__["tau"] * i / 5,
+          c = Math.cos(a),
+          s = Math.sin(a);
+      context.lineTo(s * r, -c * r);
+      context.lineTo(c * x - s * y, s * x + c * y);
+    }
+    context.closePath();
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol/triangle.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol/triangle.js ***!
+  \******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var sqrt3 = Math.sqrt(3);
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  draw: function(context, size) {
+    var y = -Math.sqrt(size / (sqrt3 * 3));
+    context.moveTo(0, y * 2);
+    context.lineTo(-sqrt3 * y, -y);
+    context.lineTo(sqrt3 * y, -y);
+    context.closePath();
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-shape/src/symbol/wye.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-shape/src/symbol/wye.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var c = -0.5,
+    s = Math.sqrt(3) / 2,
+    k = 1 / Math.sqrt(12),
+    a = (k / 2 + 1) * 3;
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  draw: function(context, size) {
+    var r = Math.sqrt(size / a),
+        x0 = r / 2,
+        y0 = r * k,
+        x1 = x0,
+        y1 = r * k + r,
+        x2 = -x1,
+        y2 = y1;
+    context.moveTo(x0, y0);
+    context.lineTo(x1, y1);
+    context.lineTo(x2, y2);
+    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);
+    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);
+    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);
+    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);
+    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);
+    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);
+    context.closePath();
+  }
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time-format/src/defaultLocale.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-time-format/src/defaultLocale.js ***!
+  \**********************************************************/
+/*! exports provided: timeFormat, timeParse, utcFormat, utcParse, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeFormat", function() { return timeFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeParse", function() { return timeParse; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcFormat", function() { return utcFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcParse", function() { return utcParse; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return defaultLocale; });
+/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ "./node_modules/d3-time-format/src/locale.js");
+
+
+var locale;
+var timeFormat;
+var timeParse;
+var utcFormat;
+var utcParse;
+
+defaultLocale({
+  dateTime: "%x, %X",
+  date: "%-m/%-d/%Y",
+  time: "%-I:%M:%S %p",
+  periods: ["AM", "PM"],
+  days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+  shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+  months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+  shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
+});
+
+function defaultLocale(definition) {
+  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__["default"])(definition);
+  timeFormat = locale.format;
+  timeParse = locale.parse;
+  utcFormat = locale.utcFormat;
+  utcParse = locale.utcParse;
+  return locale;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time-format/src/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-time-format/src/index.js ***!
+  \**************************************************/
+/*! exports provided: timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ "./node_modules/d3-time-format/src/defaultLocale.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFormatDefaultLocale", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFormat", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["timeFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeParse", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["timeParse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcFormat", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["utcFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcParse", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["utcParse"]; });
+
+/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ "./node_modules/d3-time-format/src/locale.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFormatLocale", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isoFormat.js */ "./node_modules/d3-time-format/src/isoFormat.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isoFormat", function() { return _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _isoParse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isoParse.js */ "./node_modules/d3-time-format/src/isoParse.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isoParse", function() { return _isoParse_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time-format/src/isoFormat.js":
+/*!******************************************************!*\
+  !*** ./node_modules/d3-time-format/src/isoFormat.js ***!
+  \******************************************************/
+/*! exports provided: isoSpecifier, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isoSpecifier", function() { return isoSpecifier; });
+/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ "./node_modules/d3-time-format/src/defaultLocale.js");
+
+
+var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ";
+
+function formatIsoNative(date) {
+  return date.toISOString();
+}
+
+var formatIso = Date.prototype.toISOString
+    ? formatIsoNative
+    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__["utcFormat"])(isoSpecifier);
+
+/* harmony default export */ __webpack_exports__["default"] = (formatIso);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time-format/src/isoParse.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-time-format/src/isoParse.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isoFormat.js */ "./node_modules/d3-time-format/src/isoFormat.js");
+/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultLocale.js */ "./node_modules/d3-time-format/src/defaultLocale.js");
+
+
+
+function parseIsoNative(string) {
+  var date = new Date(string);
+  return isNaN(date) ? null : date;
+}
+
+var parseIso = +new Date("2000-01-01T00:00:00.000Z")
+    ? parseIsoNative
+    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__["utcParse"])(_isoFormat_js__WEBPACK_IMPORTED_MODULE_0__["isoSpecifier"]);
+
+/* harmony default export */ __webpack_exports__["default"] = (parseIso);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time-format/src/locale.js":
+/*!***************************************************!*\
+  !*** ./node_modules/d3-time-format/src/locale.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLocale; });
+/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ "./node_modules/d3-time/src/index.js");
+
+
+function localDate(d) {
+  if (0 <= d.y && d.y < 100) {
+    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
+    date.setFullYear(d.y);
+    return date;
+  }
+  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);
+}
+
+function utcDate(d) {
+  if (0 <= d.y && d.y < 100) {
+    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));
+    date.setUTCFullYear(d.y);
+    return date;
+  }
+  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));
+}
+
+function newDate(y, m, d) {
+  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};
+}
+
+function formatLocale(locale) {
+  var locale_dateTime = locale.dateTime,
+      locale_date = locale.date,
+      locale_time = locale.time,
+      locale_periods = locale.periods,
+      locale_weekdays = locale.days,
+      locale_shortWeekdays = locale.shortDays,
+      locale_months = locale.months,
+      locale_shortMonths = locale.shortMonths;
+
+  var periodRe = formatRe(locale_periods),
+      periodLookup = formatLookup(locale_periods),
+      weekdayRe = formatRe(locale_weekdays),
+      weekdayLookup = formatLookup(locale_weekdays),
+      shortWeekdayRe = formatRe(locale_shortWeekdays),
+      shortWeekdayLookup = formatLookup(locale_shortWeekdays),
+      monthRe = formatRe(locale_months),
+      monthLookup = formatLookup(locale_months),
+      shortMonthRe = formatRe(locale_shortMonths),
+      shortMonthLookup = formatLookup(locale_shortMonths);
+
+  var formats = {
+    "a": formatShortWeekday,
+    "A": formatWeekday,
+    "b": formatShortMonth,
+    "B": formatMonth,
+    "c": null,
+    "d": formatDayOfMonth,
+    "e": formatDayOfMonth,
+    "f": formatMicroseconds,
+    "H": formatHour24,
+    "I": formatHour12,
+    "j": formatDayOfYear,
+    "L": formatMilliseconds,
+    "m": formatMonthNumber,
+    "M": formatMinutes,
+    "p": formatPeriod,
+    "q": formatQuarter,
+    "Q": formatUnixTimestamp,
+    "s": formatUnixTimestampSeconds,
+    "S": formatSeconds,
+    "u": formatWeekdayNumberMonday,
+    "U": formatWeekNumberSunday,
+    "V": formatWeekNumberISO,
+    "w": formatWeekdayNumberSunday,
+    "W": formatWeekNumberMonday,
+    "x": null,
+    "X": null,
+    "y": formatYear,
+    "Y": formatFullYear,
+    "Z": formatZone,
+    "%": formatLiteralPercent
+  };
+
+  var utcFormats = {
+    "a": formatUTCShortWeekday,
+    "A": formatUTCWeekday,
+    "b": formatUTCShortMonth,
+    "B": formatUTCMonth,
+    "c": null,
+    "d": formatUTCDayOfMonth,
+    "e": formatUTCDayOfMonth,
+    "f": formatUTCMicroseconds,
+    "H": formatUTCHour24,
+    "I": formatUTCHour12,
+    "j": formatUTCDayOfYear,
+    "L": formatUTCMilliseconds,
+    "m": formatUTCMonthNumber,
+    "M": formatUTCMinutes,
+    "p": formatUTCPeriod,
+    "q": formatUTCQuarter,
+    "Q": formatUnixTimestamp,
+    "s": formatUnixTimestampSeconds,
+    "S": formatUTCSeconds,
+    "u": formatUTCWeekdayNumberMonday,
+    "U": formatUTCWeekNumberSunday,
+    "V": formatUTCWeekNumberISO,
+    "w": formatUTCWeekdayNumberSunday,
+    "W": formatUTCWeekNumberMonday,
+    "x": null,
+    "X": null,
+    "y": formatUTCYear,
+    "Y": formatUTCFullYear,
+    "Z": formatUTCZone,
+    "%": formatLiteralPercent
+  };
+
+  var parses = {
+    "a": parseShortWeekday,
+    "A": parseWeekday,
+    "b": parseShortMonth,
+    "B": parseMonth,
+    "c": parseLocaleDateTime,
+    "d": parseDayOfMonth,
+    "e": parseDayOfMonth,
+    "f": parseMicroseconds,
+    "H": parseHour24,
+    "I": parseHour24,
+    "j": parseDayOfYear,
+    "L": parseMilliseconds,
+    "m": parseMonthNumber,
+    "M": parseMinutes,
+    "p": parsePeriod,
+    "q": parseQuarter,
+    "Q": parseUnixTimestamp,
+    "s": parseUnixTimestampSeconds,
+    "S": parseSeconds,
+    "u": parseWeekdayNumberMonday,
+    "U": parseWeekNumberSunday,
+    "V": parseWeekNumberISO,
+    "w": parseWeekdayNumberSunday,
+    "W": parseWeekNumberMonday,
+    "x": parseLocaleDate,
+    "X": parseLocaleTime,
+    "y": parseYear,
+    "Y": parseFullYear,
+    "Z": parseZone,
+    "%": parseLiteralPercent
+  };
+
+  // These recursive directive definitions must be deferred.
+  formats.x = newFormat(locale_date, formats);
+  formats.X = newFormat(locale_time, formats);
+  formats.c = newFormat(locale_dateTime, formats);
+  utcFormats.x = newFormat(locale_date, utcFormats);
+  utcFormats.X = newFormat(locale_time, utcFormats);
+  utcFormats.c = newFormat(locale_dateTime, utcFormats);
+
+  function newFormat(specifier, formats) {
+    return function(date) {
+      var string = [],
+          i = -1,
+          j = 0,
+          n = specifier.length,
+          c,
+          pad,
+          format;
+
+      if (!(date instanceof Date)) date = new Date(+date);
+
+      while (++i < n) {
+        if (specifier.charCodeAt(i) === 37) {
+          string.push(specifier.slice(j, i));
+          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);
+          else pad = c === "e" ? " " : "0";
+          if (format = formats[c]) c = format(date, pad);
+          string.push(c);
+          j = i + 1;
+        }
+      }
+
+      string.push(specifier.slice(j, i));
+      return string.join("");
+    };
+  }
+
+  function newParse(specifier, Z) {
+    return function(string) {
+      var d = newDate(1900, undefined, 1),
+          i = parseSpecifier(d, specifier, string += "", 0),
+          week, day;
+      if (i != string.length) return null;
+
+      // If a UNIX timestamp is specified, return it.
+      if ("Q" in d) return new Date(d.Q);
+      if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0));
+
+      // If this is utcParse, never use the local timezone.
+      if (Z && !("Z" in d)) d.Z = 0;
+
+      // The am-pm flag is 0 for AM, and 1 for PM.
+      if ("p" in d) d.H = d.H % 12 + d.p * 12;
+
+      // If the month was not specified, inherit from the quarter.
+      if (d.m === undefined) d.m = "q" in d ? d.q : 0;
+
+      // Convert day-of-week and week-of-year to day-of-year.
+      if ("V" in d) {
+        if (d.V < 1 || d.V > 53) return null;
+        if (!("w" in d)) d.w = 1;
+        if ("Z" in d) {
+          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();
+          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__["utcMonday"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcMonday"])(week);
+          week = d3_time__WEBPACK_IMPORTED_MODULE_0__["utcDay"].offset(week, (d.V - 1) * 7);
+          d.y = week.getUTCFullYear();
+          d.m = week.getUTCMonth();
+          d.d = week.getUTCDate() + (d.w + 6) % 7;
+        } else {
+          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();
+          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__["timeMonday"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeMonday"])(week);
+          week = d3_time__WEBPACK_IMPORTED_MODULE_0__["timeDay"].offset(week, (d.V - 1) * 7);
+          d.y = week.getFullYear();
+          d.m = week.getMonth();
+          d.d = week.getDate() + (d.w + 6) % 7;
+        }
+      } else if ("W" in d || "U" in d) {
+        if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0;
+        day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();
+        d.m = 0;
+        d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;
+      }
+
+      // If a time zone is specified, all fields are interpreted as UTC and then
+      // offset according to the specified time zone.
+      if ("Z" in d) {
+        d.H += d.Z / 100 | 0;
+        d.M += d.Z % 100;
+        return utcDate(d);
+      }
+
+      // Otherwise, all fields are in local time.
+      return localDate(d);
+    };
+  }
+
+  function parseSpecifier(d, specifier, string, j) {
+    var i = 0,
+        n = specifier.length,
+        m = string.length,
+        c,
+        parse;
+
+    while (i < n) {
+      if (j >= m) return -1;
+      c = specifier.charCodeAt(i++);
+      if (c === 37) {
+        c = specifier.charAt(i++);
+        parse = parses[c in pads ? specifier.charAt(i++) : c];
+        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;
+      } else if (c != string.charCodeAt(j++)) {
+        return -1;
+      }
+    }
+
+    return j;
+  }
+
+  function parsePeriod(d, string, i) {
+    var n = periodRe.exec(string.slice(i));
+    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+  }
+
+  function parseShortWeekday(d, string, i) {
+    var n = shortWeekdayRe.exec(string.slice(i));
+    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+  }
+
+  function parseWeekday(d, string, i) {
+    var n = weekdayRe.exec(string.slice(i));
+    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+  }
+
+  function parseShortMonth(d, string, i) {
+    var n = shortMonthRe.exec(string.slice(i));
+    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+  }
+
+  function parseMonth(d, string, i) {
+    var n = monthRe.exec(string.slice(i));
+    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+  }
+
+  function parseLocaleDateTime(d, string, i) {
+    return parseSpecifier(d, locale_dateTime, string, i);
+  }
+
+  function parseLocaleDate(d, string, i) {
+    return parseSpecifier(d, locale_date, string, i);
+  }
+
+  function parseLocaleTime(d, string, i) {
+    return parseSpecifier(d, locale_time, string, i);
+  }
+
+  function formatShortWeekday(d) {
+    return locale_shortWeekdays[d.getDay()];
+  }
+
+  function formatWeekday(d) {
+    return locale_weekdays[d.getDay()];
+  }
+
+  function formatShortMonth(d) {
+    return locale_shortMonths[d.getMonth()];
+  }
+
+  function formatMonth(d) {
+    return locale_months[d.getMonth()];
+  }
+
+  function formatPeriod(d) {
+    return locale_periods[+(d.getHours() >= 12)];
+  }
+
+  function formatQuarter(d) {
+    return 1 + ~~(d.getMonth() / 3);
+  }
+
+  function formatUTCShortWeekday(d) {
+    return locale_shortWeekdays[d.getUTCDay()];
+  }
+
+  function formatUTCWeekday(d) {
+    return locale_weekdays[d.getUTCDay()];
+  }
+
+  function formatUTCShortMonth(d) {
+    return locale_shortMonths[d.getUTCMonth()];
+  }
+
+  function formatUTCMonth(d) {
+    return locale_months[d.getUTCMonth()];
+  }
+
+  function formatUTCPeriod(d) {
+    return locale_periods[+(d.getUTCHours() >= 12)];
+  }
+
+  function formatUTCQuarter(d) {
+    return 1 + ~~(d.getUTCMonth() / 3);
+  }
+
+  return {
+    format: function(specifier) {
+      var f = newFormat(specifier += "", formats);
+      f.toString = function() { return specifier; };
+      return f;
+    },
+    parse: function(specifier) {
+      var p = newParse(specifier += "", false);
+      p.toString = function() { return specifier; };
+      return p;
+    },
+    utcFormat: function(specifier) {
+      var f = newFormat(specifier += "", utcFormats);
+      f.toString = function() { return specifier; };
+      return f;
+    },
+    utcParse: function(specifier) {
+      var p = newParse(specifier += "", true);
+      p.toString = function() { return specifier; };
+      return p;
+    }
+  };
+}
+
+var pads = {"-": "", "_": " ", "0": "0"},
+    numberRe = /^\s*\d+/, // note: ignores next directive
+    percentRe = /^%/,
+    requoteRe = /[\\^$*+?|[\]().{}]/g;
+
+function pad(value, fill, width) {
+  var sign = value < 0 ? "-" : "",
+      string = (sign ? -value : value) + "",
+      length = string.length;
+  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
+}
+
+function requote(s) {
+  return s.replace(requoteRe, "\\$&");
+}
+
+function formatRe(names) {
+  return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i");
+}
+
+function formatLookup(names) {
+  var map = {}, i = -1, n = names.length;
+  while (++i < n) map[names[i].toLowerCase()] = i;
+  return map;
+}
+
+function parseWeekdayNumberSunday(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 1));
+  return n ? (d.w = +n[0], i + n[0].length) : -1;
+}
+
+function parseWeekdayNumberMonday(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 1));
+  return n ? (d.u = +n[0], i + n[0].length) : -1;
+}
+
+function parseWeekNumberSunday(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.U = +n[0], i + n[0].length) : -1;
+}
+
+function parseWeekNumberISO(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.V = +n[0], i + n[0].length) : -1;
+}
+
+function parseWeekNumberMonday(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.W = +n[0], i + n[0].length) : -1;
+}
+
+function parseFullYear(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 4));
+  return n ? (d.y = +n[0], i + n[0].length) : -1;
+}
+
+function parseYear(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;
+}
+
+function parseZone(d, string, i) {
+  var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6));
+  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;
+}
+
+function parseQuarter(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 1));
+  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;
+}
+
+function parseMonthNumber(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;
+}
+
+function parseDayOfMonth(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.d = +n[0], i + n[0].length) : -1;
+}
+
+function parseDayOfYear(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 3));
+  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;
+}
+
+function parseHour24(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.H = +n[0], i + n[0].length) : -1;
+}
+
+function parseMinutes(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.M = +n[0], i + n[0].length) : -1;
+}
+
+function parseSeconds(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 2));
+  return n ? (d.S = +n[0], i + n[0].length) : -1;
+}
+
+function parseMilliseconds(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 3));
+  return n ? (d.L = +n[0], i + n[0].length) : -1;
+}
+
+function parseMicroseconds(d, string, i) {
+  var n = numberRe.exec(string.slice(i, i + 6));
+  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;
+}
+
+function parseLiteralPercent(d, string, i) {
+  var n = percentRe.exec(string.slice(i, i + 1));
+  return n ? i + n[0].length : -1;
+}
+
+function parseUnixTimestamp(d, string, i) {
+  var n = numberRe.exec(string.slice(i));
+  return n ? (d.Q = +n[0], i + n[0].length) : -1;
+}
+
+function parseUnixTimestampSeconds(d, string, i) {
+  var n = numberRe.exec(string.slice(i));
+  return n ? (d.s = +n[0], i + n[0].length) : -1;
+}
+
+function formatDayOfMonth(d, p) {
+  return pad(d.getDate(), p, 2);
+}
+
+function formatHour24(d, p) {
+  return pad(d.getHours(), p, 2);
+}
+
+function formatHour12(d, p) {
+  return pad(d.getHours() % 12 || 12, p, 2);
+}
+
+function formatDayOfYear(d, p) {
+  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__["timeDay"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d), d), p, 3);
+}
+
+function formatMilliseconds(d, p) {
+  return pad(d.getMilliseconds(), p, 3);
+}
+
+function formatMicroseconds(d, p) {
+  return formatMilliseconds(d, p) + "000";
+}
+
+function formatMonthNumber(d, p) {
+  return pad(d.getMonth() + 1, p, 2);
+}
+
+function formatMinutes(d, p) {
+  return pad(d.getMinutes(), p, 2);
+}
+
+function formatSeconds(d, p) {
+  return pad(d.getSeconds(), p, 2);
+}
+
+function formatWeekdayNumberMonday(d) {
+  var day = d.getDay();
+  return day === 0 ? 7 : day;
+}
+
+function formatWeekNumberSunday(d, p) {
+  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeSunday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d) - 1, d), p, 2);
+}
+
+function formatWeekNumberISO(d, p) {
+  var day = d.getDay();
+  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeThursday"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__["timeThursday"].ceil(d);
+  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeThursday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d).getDay() === 4), p, 2);
+}
+
+function formatWeekdayNumberSunday(d) {
+  return d.getDay();
+}
+
+function formatWeekNumberMonday(d, p) {
+  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeMonday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d) - 1, d), p, 2);
+}
+
+function formatYear(d, p) {
+  return pad(d.getFullYear() % 100, p, 2);
+}
+
+function formatFullYear(d, p) {
+  return pad(d.getFullYear() % 10000, p, 4);
+}
+
+function formatZone(d) {
+  var z = d.getTimezoneOffset();
+  return (z > 0 ? "-" : (z *= -1, "+"))
+      + pad(z / 60 | 0, "0", 2)
+      + pad(z % 60, "0", 2);
+}
+
+function formatUTCDayOfMonth(d, p) {
+  return pad(d.getUTCDate(), p, 2);
+}
+
+function formatUTCHour24(d, p) {
+  return pad(d.getUTCHours(), p, 2);
+}
+
+function formatUTCHour12(d, p) {
+  return pad(d.getUTCHours() % 12 || 12, p, 2);
+}
+
+function formatUTCDayOfYear(d, p) {
+  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__["utcDay"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d), d), p, 3);
+}
+
+function formatUTCMilliseconds(d, p) {
+  return pad(d.getUTCMilliseconds(), p, 3);
+}
+
+function formatUTCMicroseconds(d, p) {
+  return formatUTCMilliseconds(d, p) + "000";
+}
+
+function formatUTCMonthNumber(d, p) {
+  return pad(d.getUTCMonth() + 1, p, 2);
+}
+
+function formatUTCMinutes(d, p) {
+  return pad(d.getUTCMinutes(), p, 2);
+}
+
+function formatUTCSeconds(d, p) {
+  return pad(d.getUTCSeconds(), p, 2);
+}
+
+function formatUTCWeekdayNumberMonday(d) {
+  var dow = d.getUTCDay();
+  return dow === 0 ? 7 : dow;
+}
+
+function formatUTCWeekNumberSunday(d, p) {
+  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcSunday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d) - 1, d), p, 2);
+}
+
+function formatUTCWeekNumberISO(d, p) {
+  var day = d.getUTCDay();
+  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcThursday"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__["utcThursday"].ceil(d);
+  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcThursday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d).getUTCDay() === 4), p, 2);
+}
+
+function formatUTCWeekdayNumberSunday(d) {
+  return d.getUTCDay();
+}
+
+function formatUTCWeekNumberMonday(d, p) {
+  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcMonday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d) - 1, d), p, 2);
+}
+
+function formatUTCYear(d, p) {
+  return pad(d.getUTCFullYear() % 100, p, 2);
+}
+
+function formatUTCFullYear(d, p) {
+  return pad(d.getUTCFullYear() % 10000, p, 4);
+}
+
+function formatUTCZone() {
+  return "+0000";
+}
+
+function formatLiteralPercent() {
+  return "%";
+}
+
+function formatUnixTimestamp(d) {
+  return +d;
+}
+
+function formatUnixTimestampSeconds(d) {
+  return Math.floor(+d / 1000);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/day.js":
+/*!*****************************************!*\
+  !*** ./node_modules/d3-time/src/day.js ***!
+  \*****************************************/
+/*! exports provided: default, days */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "days", function() { return days; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+var day = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setHours(0, 0, 0, 0);
+}, function(date, step) {
+  date.setDate(date.getDate() + step);
+}, function(start, end) {
+  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationDay"];
+}, function(date) {
+  return date.getDate() - 1;
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (day);
+var days = day.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/duration.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-time/src/duration.js ***!
+  \**********************************************/
+/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "durationSecond", function() { return durationSecond; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "durationMinute", function() { return durationMinute; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "durationHour", function() { return durationHour; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "durationDay", function() { return durationDay; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "durationWeek", function() { return durationWeek; });
+var durationSecond = 1e3;
+var durationMinute = 6e4;
+var durationHour = 36e5;
+var durationDay = 864e5;
+var durationWeek = 6048e5;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/hour.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-time/src/hour.js ***!
+  \******************************************/
+/*! exports provided: default, hours */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hours", function() { return hours; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+var hour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationSecond"] - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]);
+}, function(date, step) {
+  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationHour"]);
+}, function(start, end) {
+  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationHour"];
+}, function(date) {
+  return date.getHours();
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (hour);
+var hours = hour.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/index.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-time/src/index.js ***!
+  \*******************************************/
+/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ "./node_modules/d3-time/src/millisecond.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMillisecond", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMilliseconds", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__["milliseconds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMillisecond", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMilliseconds", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__["milliseconds"]; });
+
+/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ "./node_modules/d3-time/src/second.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSecond", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSeconds", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__["seconds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSecond", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSeconds", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__["seconds"]; });
+
+/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ "./node_modules/d3-time/src/minute.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMinute", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMinutes", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__["minutes"]; });
+
+/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ "./node_modules/d3-time/src/hour.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeHour", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeHours", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__["hours"]; });
+
+/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ "./node_modules/d3-time/src/day.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeDay", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeDays", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__["days"]; });
+
+/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ "./node_modules/d3-time/src/week.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWeek", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["sunday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWeeks", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["sundays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSunday", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["sunday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSundays", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["sundays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMonday", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["monday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMondays", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["mondays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeTuesday", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["tuesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeTuesdays", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["tuesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWednesday", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["wednesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWednesdays", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["wednesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeThursday", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["thursday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeThursdays", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["thursdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFriday", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["friday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFridays", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["fridays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSaturday", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["saturday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSaturdays", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__["saturdays"]; });
+
+/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ "./node_modules/d3-time/src/month.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMonth", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMonths", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__["months"]; });
+
+/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ "./node_modules/d3-time/src/year.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeYear", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeYears", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__["years"]; });
+
+/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utcMinute.js */ "./node_modules/d3-time/src/utcMinute.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMinute", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMinutes", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__["utcMinutes"]; });
+
+/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcHour.js */ "./node_modules/d3-time/src/utcHour.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcHour", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcHours", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__["utcHours"]; });
+
+/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcDay.js */ "./node_modules/d3-time/src/utcDay.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcDay", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcDays", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__["utcDays"]; });
+
+/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcWeek.js */ "./node_modules/d3-time/src/utcWeek.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWeek", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcSunday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWeeks", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcSundays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSunday", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcSunday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSundays", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcSundays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMonday", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcMonday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMondays", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcMondays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcTuesday", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcTuesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcTuesdays", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcTuesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWednesday", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcWednesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWednesdays", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcWednesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcThursday", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcThursday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcThursdays", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcThursdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcFriday", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcFriday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcFridays", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcFridays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSaturday", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcSaturday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSaturdays", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__["utcSaturdays"]; });
+
+/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcMonth.js */ "./node_modules/d3-time/src/utcMonth.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMonth", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMonths", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__["utcMonths"]; });
+
+/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcYear.js */ "./node_modules/d3-time/src/utcYear.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcYear", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcYears", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__["utcYears"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/interval.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-time/src/interval.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return newInterval; });
+var t0 = new Date,
+    t1 = new Date;
+
+function newInterval(floori, offseti, count, field) {
+
+  function interval(date) {
+    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;
+  }
+
+  interval.floor = function(date) {
+    return floori(date = new Date(+date)), date;
+  };
+
+  interval.ceil = function(date) {
+    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
+  };
+
+  interval.round = function(date) {
+    var d0 = interval(date),
+        d1 = interval.ceil(date);
+    return date - d0 < d1 - date ? d0 : d1;
+  };
+
+  interval.offset = function(date, step) {
+    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;
+  };
+
+  interval.range = function(start, stop, step) {
+    var range = [], previous;
+    start = interval.ceil(start);
+    step = step == null ? 1 : Math.floor(step);
+    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date
+    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);
+    while (previous < start && start < stop);
+    return range;
+  };
+
+  interval.filter = function(test) {
+    return newInterval(function(date) {
+      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
+    }, function(date, step) {
+      if (date >= date) {
+        if (step < 0) while (++step <= 0) {
+          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty
+        } else while (--step >= 0) {
+          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty
+        }
+      }
+    });
+  };
+
+  if (count) {
+    interval.count = function(start, end) {
+      t0.setTime(+start), t1.setTime(+end);
+      floori(t0), floori(t1);
+      return Math.floor(count(t0, t1));
+    };
+
+    interval.every = function(step) {
+      step = Math.floor(step);
+      return !isFinite(step) || !(step > 0) ? null
+          : !(step > 1) ? interval
+          : interval.filter(field
+              ? function(d) { return field(d) % step === 0; }
+              : function(d) { return interval.count(0, d) % step === 0; });
+    };
+  }
+
+  return interval;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/millisecond.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-time/src/millisecond.js ***!
+  \*************************************************/
+/*! exports provided: default, milliseconds */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "milliseconds", function() { return milliseconds; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+
+
+var millisecond = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function() {
+  // noop
+}, function(date, step) {
+  date.setTime(+date + step);
+}, function(start, end) {
+  return end - start;
+});
+
+// An optimized implementation for this simple case.
+millisecond.every = function(k) {
+  k = Math.floor(k);
+  if (!isFinite(k) || !(k > 0)) return null;
+  if (!(k > 1)) return millisecond;
+  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+    date.setTime(Math.floor(date / k) * k);
+  }, function(date, step) {
+    date.setTime(+date + step * k);
+  }, function(start, end) {
+    return (end - start) / k;
+  });
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (millisecond);
+var milliseconds = millisecond.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/minute.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-time/src/minute.js ***!
+  \********************************************/
+/*! exports provided: default, minutes */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "minutes", function() { return minutes; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+var minute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationSecond"]);
+}, function(date, step) {
+  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]);
+}, function(start, end) {
+  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationMinute"];
+}, function(date) {
+  return date.getMinutes();
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (minute);
+var minutes = minute.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/month.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-time/src/month.js ***!
+  \*******************************************/
+/*! exports provided: default, months */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "months", function() { return months; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+
+
+var month = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setDate(1);
+  date.setHours(0, 0, 0, 0);
+}, function(date, step) {
+  date.setMonth(date.getMonth() + step);
+}, function(start, end) {
+  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;
+}, function(date) {
+  return date.getMonth();
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (month);
+var months = month.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/second.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-time/src/second.js ***!
+  \********************************************/
+/*! exports provided: default, seconds */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "seconds", function() { return seconds; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+var second = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setTime(date - date.getMilliseconds());
+}, function(date, step) {
+  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationSecond"]);
+}, function(start, end) {
+  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationSecond"];
+}, function(date) {
+  return date.getUTCSeconds();
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (second);
+var seconds = second.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/utcDay.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-time/src/utcDay.js ***!
+  \********************************************/
+/*! exports provided: default, utcDays */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcDays", function() { return utcDays; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+var utcDay = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setUTCHours(0, 0, 0, 0);
+}, function(date, step) {
+  date.setUTCDate(date.getUTCDate() + step);
+}, function(start, end) {
+  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationDay"];
+}, function(date) {
+  return date.getUTCDate() - 1;
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (utcDay);
+var utcDays = utcDay.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/utcHour.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-time/src/utcHour.js ***!
+  \*********************************************/
+/*! exports provided: default, utcHours */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcHours", function() { return utcHours; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+var utcHour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setUTCMinutes(0, 0, 0);
+}, function(date, step) {
+  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationHour"]);
+}, function(start, end) {
+  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationHour"];
+}, function(date) {
+  return date.getUTCHours();
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (utcHour);
+var utcHours = utcHour.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/utcMinute.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-time/src/utcMinute.js ***!
+  \***********************************************/
+/*! exports provided: default, utcMinutes */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcMinutes", function() { return utcMinutes; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+var utcMinute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setUTCSeconds(0, 0);
+}, function(date, step) {
+  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]);
+}, function(start, end) {
+  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationMinute"];
+}, function(date) {
+  return date.getUTCMinutes();
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (utcMinute);
+var utcMinutes = utcMinute.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/utcMonth.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-time/src/utcMonth.js ***!
+  \**********************************************/
+/*! exports provided: default, utcMonths */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcMonths", function() { return utcMonths; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+
+
+var utcMonth = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setUTCDate(1);
+  date.setUTCHours(0, 0, 0, 0);
+}, function(date, step) {
+  date.setUTCMonth(date.getUTCMonth() + step);
+}, function(start, end) {
+  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;
+}, function(date) {
+  return date.getUTCMonth();
+});
+
+/* harmony default export */ __webpack_exports__["default"] = (utcMonth);
+var utcMonths = utcMonth.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/utcWeek.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-time/src/utcWeek.js ***!
+  \*********************************************/
+/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcSunday", function() { return utcSunday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcMonday", function() { return utcMonday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcTuesday", function() { return utcTuesday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcWednesday", function() { return utcWednesday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcThursday", function() { return utcThursday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcFriday", function() { return utcFriday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcSaturday", function() { return utcSaturday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcSundays", function() { return utcSundays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcMondays", function() { return utcMondays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcTuesdays", function() { return utcTuesdays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcWednesdays", function() { return utcWednesdays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcThursdays", function() { return utcThursdays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcFridays", function() { return utcFridays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcSaturdays", function() { return utcSaturdays; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+function utcWeekday(i) {
+  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);
+    date.setUTCHours(0, 0, 0, 0);
+  }, function(date, step) {
+    date.setUTCDate(date.getUTCDate() + step * 7);
+  }, function(start, end) {
+    return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationWeek"];
+  });
+}
+
+var utcSunday = utcWeekday(0);
+var utcMonday = utcWeekday(1);
+var utcTuesday = utcWeekday(2);
+var utcWednesday = utcWeekday(3);
+var utcThursday = utcWeekday(4);
+var utcFriday = utcWeekday(5);
+var utcSaturday = utcWeekday(6);
+
+var utcSundays = utcSunday.range;
+var utcMondays = utcMonday.range;
+var utcTuesdays = utcTuesday.range;
+var utcWednesdays = utcWednesday.range;
+var utcThursdays = utcThursday.range;
+var utcFridays = utcFriday.range;
+var utcSaturdays = utcSaturday.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/utcYear.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-time/src/utcYear.js ***!
+  \*********************************************/
+/*! exports provided: default, utcYears */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utcYears", function() { return utcYears; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+
+
+var utcYear = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setUTCMonth(0, 1);
+  date.setUTCHours(0, 0, 0, 0);
+}, function(date, step) {
+  date.setUTCFullYear(date.getUTCFullYear() + step);
+}, function(start, end) {
+  return end.getUTCFullYear() - start.getUTCFullYear();
+}, function(date) {
+  return date.getUTCFullYear();
+});
+
+// An optimized implementation for this simple case.
+utcYear.every = function(k) {
+  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);
+    date.setUTCMonth(0, 1);
+    date.setUTCHours(0, 0, 0, 0);
+  }, function(date, step) {
+    date.setUTCFullYear(date.getUTCFullYear() + step * k);
+  });
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (utcYear);
+var utcYears = utcYear.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/week.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-time/src/week.js ***!
+  \******************************************/
+/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sunday", function() { return sunday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "monday", function() { return monday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tuesday", function() { return tuesday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "wednesday", function() { return wednesday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "thursday", function() { return thursday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "friday", function() { return friday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "saturday", function() { return saturday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sundays", function() { return sundays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mondays", function() { return mondays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tuesdays", function() { return tuesdays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "wednesdays", function() { return wednesdays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "thursdays", function() { return thursdays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fridays", function() { return fridays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "saturdays", function() { return saturdays; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-time/src/duration.js");
+
+
+
+function weekday(i) {
+  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);
+    date.setHours(0, 0, 0, 0);
+  }, function(date, step) {
+    date.setDate(date.getDate() + step * 7);
+  }, function(start, end) {
+    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__["durationWeek"];
+  });
+}
+
+var sunday = weekday(0);
+var monday = weekday(1);
+var tuesday = weekday(2);
+var wednesday = weekday(3);
+var thursday = weekday(4);
+var friday = weekday(5);
+var saturday = weekday(6);
+
+var sundays = sunday.range;
+var mondays = monday.range;
+var tuesdays = tuesday.range;
+var wednesdays = wednesday.range;
+var thursdays = thursday.range;
+var fridays = friday.range;
+var saturdays = saturday.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-time/src/year.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-time/src/year.js ***!
+  \******************************************/
+/*! exports provided: default, years */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "years", function() { return years; });
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-time/src/interval.js");
+
+
+var year = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+  date.setMonth(0, 1);
+  date.setHours(0, 0, 0, 0);
+}, function(date, step) {
+  date.setFullYear(date.getFullYear() + step);
+}, function(start, end) {
+  return end.getFullYear() - start.getFullYear();
+}, function(date) {
+  return date.getFullYear();
+});
+
+// An optimized implementation for this simple case.
+year.every = function(k) {
+  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
+    date.setFullYear(Math.floor(date.getFullYear() / k) * k);
+    date.setMonth(0, 1);
+    date.setHours(0, 0, 0, 0);
+  }, function(date, step) {
+    date.setFullYear(date.getFullYear() + step * k);
+  });
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (year);
+var years = year.range;
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-timer/src/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-timer/src/index.js ***!
+  \********************************************/
+/*! exports provided: now, timer, timerFlush, timeout, interval */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ "./node_modules/d3-timer/src/timer.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "now", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__["now"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__["timer"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timerFlush", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__["timerFlush"]; });
+
+/* harmony import */ var _timeout_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timeout.js */ "./node_modules/d3-timer/src/timeout.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _timeout_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interval.js */ "./node_modules/d3-timer/src/interval.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-timer/src/interval.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-timer/src/interval.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ "./node_modules/d3-timer/src/timer.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(callback, delay, time) {
+  var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__["Timer"], total = delay;
+  if (delay == null) return t.restart(callback, delay, time), t;
+  delay = +delay, time = time == null ? Object(_timer_js__WEBPACK_IMPORTED_MODULE_0__["now"])() : +time;
+  t.restart(function tick(elapsed) {
+    elapsed += total;
+    t.restart(tick, total += delay, time);
+    callback(elapsed);
+  }, delay, time);
+  return t;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-timer/src/timeout.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-timer/src/timeout.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ "./node_modules/d3-timer/src/timer.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(callback, delay, time) {
+  var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__["Timer"];
+  delay = delay == null ? 0 : +delay;
+  t.restart(function(elapsed) {
+    t.stop();
+    callback(elapsed + delay);
+  }, delay, time);
+  return t;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-timer/src/timer.js":
+/*!********************************************!*\
+  !*** ./node_modules/d3-timer/src/timer.js ***!
+  \********************************************/
+/*! exports provided: now, Timer, timer, timerFlush */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "now", function() { return now; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return timer; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timerFlush", function() { return timerFlush; });
+var frame = 0, // is an animation frame pending?
+    timeout = 0, // is a timeout pending?
+    interval = 0, // are any timers active?
+    pokeDelay = 1000, // how frequently we check for clock skew
+    taskHead,
+    taskTail,
+    clockLast = 0,
+    clockNow = 0,
+    clockSkew = 0,
+    clock = typeof performance === "object" && performance.now ? performance : Date,
+    setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };
+
+function now() {
+  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
+}
+
+function clearNow() {
+  clockNow = 0;
+}
+
+function Timer() {
+  this._call =
+  this._time =
+  this._next = null;
+}
+
+Timer.prototype = timer.prototype = {
+  constructor: Timer,
+  restart: function(callback, delay, time) {
+    if (typeof callback !== "function") throw new TypeError("callback is not a function");
+    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);
+    if (!this._next && taskTail !== this) {
+      if (taskTail) taskTail._next = this;
+      else taskHead = this;
+      taskTail = this;
+    }
+    this._call = callback;
+    this._time = time;
+    sleep();
+  },
+  stop: function() {
+    if (this._call) {
+      this._call = null;
+      this._time = Infinity;
+      sleep();
+    }
+  }
+};
+
+function timer(callback, delay, time) {
+  var t = new Timer;
+  t.restart(callback, delay, time);
+  return t;
+}
+
+function timerFlush() {
+  now(); // Get the current time, if not already set.
+  ++frame; // Pretend we’ve set an alarm, if we haven’t already.
+  var t = taskHead, e;
+  while (t) {
+    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);
+    t = t._next;
+  }
+  --frame;
+}
+
+function wake() {
+  clockNow = (clockLast = clock.now()) + clockSkew;
+  frame = timeout = 0;
+  try {
+    timerFlush();
+  } finally {
+    frame = 0;
+    nap();
+    clockNow = 0;
+  }
+}
+
+function poke() {
+  var now = clock.now(), delay = now - clockLast;
+  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;
+}
+
+function nap() {
+  var t0, t1 = taskHead, t2, time = Infinity;
+  while (t1) {
+    if (t1._call) {
+      if (time > t1._time) time = t1._time;
+      t0 = t1, t1 = t1._next;
+    } else {
+      t2 = t1._next, t1._next = null;
+      t1 = t0 ? t0._next = t2 : taskHead = t2;
+    }
+  }
+  taskTail = t0;
+  sleep(time);
+}
+
+function sleep(time) {
+  if (frame) return; // Soonest alarm already set, or will be.
+  if (timeout) timeout = clearTimeout(timeout);
+  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.
+  if (delay > 24) {
+    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);
+    if (interval) interval = clearInterval(interval);
+  } else {
+    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);
+    frame = 1, setFrame(wake);
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/active.js":
+/*!**************************************************!*\
+  !*** ./node_modules/d3-transition/src/active.js ***!
+  \**************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/d3-transition/src/transition/index.js");
+/* harmony import */ var _transition_schedule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition/schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+
+var root = [null];
+
+/* harmony default export */ __webpack_exports__["default"] = (function(node, name) {
+  var schedules = node.__transition,
+      schedule,
+      i;
+
+  if (schedules) {
+    name = name == null ? null : name + "";
+    for (i in schedules) {
+      if ((schedule = schedules[i]).state > _transition_schedule_js__WEBPACK_IMPORTED_MODULE_1__["SCHEDULED"] && schedule.name === name) {
+        return new _transition_index_js__WEBPACK_IMPORTED_MODULE_0__["Transition"]([[node]], root, name, +i);
+      }
+    }
+  }
+
+  return null;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-transition/src/index.js ***!
+  \*************************************************/
+/*! exports provided: transition, active, interrupt */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _selection_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index.js */ "./node_modules/d3-transition/src/selection/index.js");
+/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/d3-transition/src/transition/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return _transition_index_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var _active_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./active.js */ "./node_modules/d3-transition/src/active.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "active", function() { return _active_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+
+/* harmony import */ var _interrupt_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interrupt.js */ "./node_modules/d3-transition/src/interrupt.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interrupt", function() { return _interrupt_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/interrupt.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-transition/src/interrupt.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition/schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(node, name) {
+  var schedules = node.__transition,
+      schedule,
+      active,
+      empty = true,
+      i;
+
+  if (!schedules) return;
+
+  name = name == null ? null : name + "";
+
+  for (i in schedules) {
+    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
+    active = schedule.state > _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__["STARTING"] && schedule.state < _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__["ENDING"];
+    schedule.state = _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__["ENDED"];
+    schedule.timer.stop();
+    schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group);
+    delete schedules[i];
+  }
+
+  if (empty) delete node.__transition;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/selection/index.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-transition/src/selection/index.js ***!
+  \***********************************************************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _interrupt_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interrupt.js */ "./node_modules/d3-transition/src/selection/interrupt.js");
+/* harmony import */ var _transition_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transition.js */ "./node_modules/d3-transition/src/selection/transition.js");
+
+
+
+
+d3_selection__WEBPACK_IMPORTED_MODULE_0__["selection"].prototype.interrupt = _interrupt_js__WEBPACK_IMPORTED_MODULE_1__["default"];
+d3_selection__WEBPACK_IMPORTED_MODULE_0__["selection"].prototype.transition = _transition_js__WEBPACK_IMPORTED_MODULE_2__["default"];
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/selection/interrupt.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-transition/src/selection/interrupt.js ***!
+  \***************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _interrupt_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interrupt.js */ "./node_modules/d3-transition/src/interrupt.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name) {
+  return this.each(function() {
+    Object(_interrupt_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this, name);
+  });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/selection/transition.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-transition/src/selection/transition.js ***!
+  \****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transition/index.js */ "./node_modules/d3-transition/src/transition/index.js");
+/* harmony import */ var _transition_schedule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transition/schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-ease */ "./node_modules/d3-ease/src/index.js");
+/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-timer */ "./node_modules/d3-timer/src/index.js");
+
+
+
+
+
+var defaultTiming = {
+  time: null, // Set on use.
+  delay: 0,
+  duration: 250,
+  ease: d3_ease__WEBPACK_IMPORTED_MODULE_2__["easeCubicInOut"]
+};
+
+function inherit(node, id) {
+  var timing;
+  while (!(timing = node.__transition) || !(timing = timing[id])) {
+    if (!(node = node.parentNode)) {
+      return defaultTiming.time = Object(d3_timer__WEBPACK_IMPORTED_MODULE_3__["now"])(), defaultTiming;
+    }
+  }
+  return timing;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name) {
+  var id,
+      timing;
+
+  if (name instanceof _transition_index_js__WEBPACK_IMPORTED_MODULE_0__["Transition"]) {
+    id = name._id, name = name._name;
+  } else {
+    id = Object(_transition_index_js__WEBPACK_IMPORTED_MODULE_0__["newId"])(), (timing = defaultTiming).time = Object(d3_timer__WEBPACK_IMPORTED_MODULE_3__["now"])(), name = name == null ? null : name + "";
+  }
+
+  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+      if (node = group[i]) {
+        Object(_transition_schedule_js__WEBPACK_IMPORTED_MODULE_1__["default"])(node, name, id, i, group, timing || inherit(node, id));
+      }
+    }
+  }
+
+  return new _transition_index_js__WEBPACK_IMPORTED_MODULE_0__["Transition"](groups, this._parents, name, id);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/attr.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/attr.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tween.js */ "./node_modules/d3-transition/src/transition/tween.js");
+/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interpolate.js */ "./node_modules/d3-transition/src/transition/interpolate.js");
+
+
+
+
+
+function attrRemove(name) {
+  return function() {
+    this.removeAttribute(name);
+  };
+}
+
+function attrRemoveNS(fullname) {
+  return function() {
+    this.removeAttributeNS(fullname.space, fullname.local);
+  };
+}
+
+function attrConstant(name, interpolate, value1) {
+  var string00,
+      string1 = value1 + "",
+      interpolate0;
+  return function() {
+    var string0 = this.getAttribute(name);
+    return string0 === string1 ? null
+        : string0 === string00 ? interpolate0
+        : interpolate0 = interpolate(string00 = string0, value1);
+  };
+}
+
+function attrConstantNS(fullname, interpolate, value1) {
+  var string00,
+      string1 = value1 + "",
+      interpolate0;
+  return function() {
+    var string0 = this.getAttributeNS(fullname.space, fullname.local);
+    return string0 === string1 ? null
+        : string0 === string00 ? interpolate0
+        : interpolate0 = interpolate(string00 = string0, value1);
+  };
+}
+
+function attrFunction(name, interpolate, value) {
+  var string00,
+      string10,
+      interpolate0;
+  return function() {
+    var string0, value1 = value(this), string1;
+    if (value1 == null) return void this.removeAttribute(name);
+    string0 = this.getAttribute(name);
+    string1 = value1 + "";
+    return string0 === string1 ? null
+        : string0 === string00 && string1 === string10 ? interpolate0
+        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
+  };
+}
+
+function attrFunctionNS(fullname, interpolate, value) {
+  var string00,
+      string10,
+      interpolate0;
+  return function() {
+    var string0, value1 = value(this), string1;
+    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);
+    string0 = this.getAttributeNS(fullname.space, fullname.local);
+    string1 = value1 + "";
+    return string0 === string1 ? null
+        : string0 === string00 && string1 === string10 ? interpolate0
+        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value) {
+  var fullname = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["namespace"])(name), i = fullname === "transform" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_0__["interpolateTransformSvg"] : _interpolate_js__WEBPACK_IMPORTED_MODULE_3__["default"];
+  return this.attrTween(name, typeof value === "function"
+      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, Object(_tween_js__WEBPACK_IMPORTED_MODULE_2__["tweenValue"])(this, "attr." + name, value))
+      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)
+      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/attrTween.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/attrTween.js ***!
+  \****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+
+
+function attrInterpolate(name, i) {
+  return function(t) {
+    this.setAttribute(name, i.call(this, t));
+  };
+}
+
+function attrInterpolateNS(fullname, i) {
+  return function(t) {
+    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));
+  };
+}
+
+function attrTweenNS(fullname, value) {
+  var t0, i0;
+  function tween() {
+    var i = value.apply(this, arguments);
+    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);
+    return t0;
+  }
+  tween._value = value;
+  return tween;
+}
+
+function attrTween(name, value) {
+  var t0, i0;
+  function tween() {
+    var i = value.apply(this, arguments);
+    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);
+    return t0;
+  }
+  tween._value = value;
+  return tween;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value) {
+  var key = "attr." + name;
+  if (arguments.length < 2) return (key = this.tween(key)) && key._value;
+  if (value == null) return this.tween(key, null);
+  if (typeof value !== "function") throw new Error;
+  var fullname = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["namespace"])(name);
+  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/delay.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/delay.js ***!
+  \************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+function delayFunction(id, value) {
+  return function() {
+    Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["init"])(this, id).delay = +value.apply(this, arguments);
+  };
+}
+
+function delayConstant(id, value) {
+  return value = +value, function() {
+    Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["init"])(this, id).delay = value;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  var id = this._id;
+
+  return arguments.length
+      ? this.each((typeof value === "function"
+          ? delayFunction
+          : delayConstant)(id, value))
+      : Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).delay;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/duration.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/duration.js ***!
+  \***************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+function durationFunction(id, value) {
+  return function() {
+    Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id).duration = +value.apply(this, arguments);
+  };
+}
+
+function durationConstant(id, value) {
+  return value = +value, function() {
+    Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id).duration = value;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  var id = this._id;
+
+  return arguments.length
+      ? this.each((typeof value === "function"
+          ? durationFunction
+          : durationConstant)(id, value))
+      : Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).duration;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/ease.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/ease.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+function easeConstant(id, value) {
+  if (typeof value !== "function") throw new Error;
+  return function() {
+    Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id).ease = value;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  var id = this._id;
+
+  return arguments.length
+      ? this.each(easeConstant(id, value))
+      : Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).ease;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/end.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/end.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var on0, on1, that = this, id = that._id, size = that.size();
+  return new Promise(function(resolve, reject) {
+    var cancel = {value: reject},
+        end = {value: function() { if (--size === 0) resolve(); }};
+
+    that.each(function() {
+      var schedule = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id),
+          on = schedule.on;
+
+      // If this node shared a dispatch with the previous node,
+      // just assign the updated shared dispatch and we’re done!
+      // Otherwise, copy-on-write.
+      if (on !== on0) {
+        on1 = (on0 = on).copy();
+        on1._.cancel.push(cancel);
+        on1._.interrupt.push(cancel);
+        on1._.end.push(end);
+      }
+
+      schedule.on = on1;
+    });
+  });
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/filter.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/filter.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-transition/src/transition/index.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(match) {
+  if (typeof match !== "function") match = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["matcher"])(match);
+
+  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
+      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
+        subgroup.push(node);
+      }
+    }
+  }
+
+  return new _index_js__WEBPACK_IMPORTED_MODULE_1__["Transition"](subgroups, this._parents, this._name, this._id);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/index.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/index.js ***!
+  \************************************************************/
+/*! exports provided: Transition, default, newId */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Transition", function() { return Transition; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transition; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "newId", function() { return newId; });
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./attr.js */ "./node_modules/d3-transition/src/transition/attr.js");
+/* harmony import */ var _attrTween_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./attrTween.js */ "./node_modules/d3-transition/src/transition/attrTween.js");
+/* harmony import */ var _delay_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./delay.js */ "./node_modules/d3-transition/src/transition/delay.js");
+/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./duration.js */ "./node_modules/d3-transition/src/transition/duration.js");
+/* harmony import */ var _ease_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ease.js */ "./node_modules/d3-transition/src/transition/ease.js");
+/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./filter.js */ "./node_modules/d3-transition/src/transition/filter.js");
+/* harmony import */ var _merge_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./merge.js */ "./node_modules/d3-transition/src/transition/merge.js");
+/* harmony import */ var _on_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./on.js */ "./node_modules/d3-transition/src/transition/on.js");
+/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./remove.js */ "./node_modules/d3-transition/src/transition/remove.js");
+/* harmony import */ var _select_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./select.js */ "./node_modules/d3-transition/src/transition/select.js");
+/* harmony import */ var _selectAll_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./selectAll.js */ "./node_modules/d3-transition/src/transition/selectAll.js");
+/* harmony import */ var _selection_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./selection.js */ "./node_modules/d3-transition/src/transition/selection.js");
+/* harmony import */ var _style_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./style.js */ "./node_modules/d3-transition/src/transition/style.js");
+/* harmony import */ var _styleTween_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./styleTween.js */ "./node_modules/d3-transition/src/transition/styleTween.js");
+/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./text.js */ "./node_modules/d3-transition/src/transition/text.js");
+/* harmony import */ var _textTween_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./textTween.js */ "./node_modules/d3-transition/src/transition/textTween.js");
+/* harmony import */ var _transition_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./transition.js */ "./node_modules/d3-transition/src/transition/transition.js");
+/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./tween.js */ "./node_modules/d3-transition/src/transition/tween.js");
+/* harmony import */ var _end_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./end.js */ "./node_modules/d3-transition/src/transition/end.js");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var id = 0;
+
+function Transition(groups, parents, name, id) {
+  this._groups = groups;
+  this._parents = parents;
+  this._name = name;
+  this._id = id;
+}
+
+function transition(name) {
+  return Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["selection"])().transition(name);
+}
+
+function newId() {
+  return ++id;
+}
+
+var selection_prototype = d3_selection__WEBPACK_IMPORTED_MODULE_0__["selection"].prototype;
+
+Transition.prototype = transition.prototype = {
+  constructor: Transition,
+  select: _select_js__WEBPACK_IMPORTED_MODULE_10__["default"],
+  selectAll: _selectAll_js__WEBPACK_IMPORTED_MODULE_11__["default"],
+  filter: _filter_js__WEBPACK_IMPORTED_MODULE_6__["default"],
+  merge: _merge_js__WEBPACK_IMPORTED_MODULE_7__["default"],
+  selection: _selection_js__WEBPACK_IMPORTED_MODULE_12__["default"],
+  transition: _transition_js__WEBPACK_IMPORTED_MODULE_17__["default"],
+  call: selection_prototype.call,
+  nodes: selection_prototype.nodes,
+  node: selection_prototype.node,
+  size: selection_prototype.size,
+  empty: selection_prototype.empty,
+  each: selection_prototype.each,
+  on: _on_js__WEBPACK_IMPORTED_MODULE_8__["default"],
+  attr: _attr_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  attrTween: _attrTween_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  style: _style_js__WEBPACK_IMPORTED_MODULE_13__["default"],
+  styleTween: _styleTween_js__WEBPACK_IMPORTED_MODULE_14__["default"],
+  text: _text_js__WEBPACK_IMPORTED_MODULE_15__["default"],
+  textTween: _textTween_js__WEBPACK_IMPORTED_MODULE_16__["default"],
+  remove: _remove_js__WEBPACK_IMPORTED_MODULE_9__["default"],
+  tween: _tween_js__WEBPACK_IMPORTED_MODULE_18__["default"],
+  delay: _delay_js__WEBPACK_IMPORTED_MODULE_3__["default"],
+  duration: _duration_js__WEBPACK_IMPORTED_MODULE_4__["default"],
+  ease: _ease_js__WEBPACK_IMPORTED_MODULE_5__["default"],
+  end: _end_js__WEBPACK_IMPORTED_MODULE_19__["default"]
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/interpolate.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/interpolate.js ***!
+  \******************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(a, b) {
+  var c;
+  return (typeof b === "number" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateNumber"]
+      : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__["color"] ? d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateRgb"]
+      : (c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["color"])(b)) ? (b = c, d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateRgb"])
+      : d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateString"])(a, b);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/merge.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/merge.js ***!
+  \************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-transition/src/transition/index.js");
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(transition) {
+  if (transition._id !== this._id) throw new Error;
+
+  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
+    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
+      if (node = group0[i] || group1[i]) {
+        merge[i] = node;
+      }
+    }
+  }
+
+  for (; j < m0; ++j) {
+    merges[j] = groups0[j];
+  }
+
+  return new _index_js__WEBPACK_IMPORTED_MODULE_0__["Transition"](merges, this._parents, this._name, this._id);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/on.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/on.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+function start(name) {
+  return (name + "").trim().split(/^|\s+/).every(function(t) {
+    var i = t.indexOf(".");
+    if (i >= 0) t = t.slice(0, i);
+    return !t || t === "start";
+  });
+}
+
+function onFunction(id, name, listener) {
+  var on0, on1, sit = start(name) ? _schedule_js__WEBPACK_IMPORTED_MODULE_0__["init"] : _schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"];
+  return function() {
+    var schedule = sit(this, id),
+        on = schedule.on;
+
+    // If this node shared a dispatch with the previous node,
+    // just assign the updated shared dispatch and we’re done!
+    // Otherwise, copy-on-write.
+    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
+
+    schedule.on = on1;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, listener) {
+  var id = this._id;
+
+  return arguments.length < 2
+      ? Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).on.on(name)
+      : this.each(onFunction(id, name, listener));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/remove.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/remove.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function removeFunction(id) {
+  return function() {
+    var parent = this.parentNode;
+    for (var i in this.__transition) if (+i !== id) return;
+    if (parent) parent.removeChild(this);
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return this.on("end.remove", removeFunction(this._id));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/schedule.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/schedule.js ***!
+  \***************************************************************/
+/*! exports provided: CREATED, SCHEDULED, STARTING, STARTED, RUNNING, ENDING, ENDED, default, init, set, get */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CREATED", function() { return CREATED; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SCHEDULED", function() { return SCHEDULED; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "STARTING", function() { return STARTING; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "STARTED", function() { return STARTED; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RUNNING", function() { return RUNNING; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ENDING", function() { return ENDING; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ENDED", function() { return ENDED; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "init", function() { return init; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "set", function() { return set; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
+/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ "./node_modules/d3-dispatch/src/index.js");
+/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ "./node_modules/d3-timer/src/index.js");
+
+
+
+var emptyOn = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("start", "end", "cancel", "interrupt");
+var emptyTween = [];
+
+var CREATED = 0;
+var SCHEDULED = 1;
+var STARTING = 2;
+var STARTED = 3;
+var RUNNING = 4;
+var ENDING = 5;
+var ENDED = 6;
+
+/* harmony default export */ __webpack_exports__["default"] = (function(node, name, id, index, group, timing) {
+  var schedules = node.__transition;
+  if (!schedules) node.__transition = {};
+  else if (id in schedules) return;
+  create(node, id, {
+    name: name,
+    index: index, // For context during callback.
+    group: group, // For context during callback.
+    on: emptyOn,
+    tween: emptyTween,
+    time: timing.time,
+    delay: timing.delay,
+    duration: timing.duration,
+    ease: timing.ease,
+    timer: null,
+    state: CREATED
+  });
+});
+
+function init(node, id) {
+  var schedule = get(node, id);
+  if (schedule.state > CREATED) throw new Error("too late; already scheduled");
+  return schedule;
+}
+
+function set(node, id) {
+  var schedule = get(node, id);
+  if (schedule.state > STARTED) throw new Error("too late; already running");
+  return schedule;
+}
+
+function get(node, id) {
+  var schedule = node.__transition;
+  if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found");
+  return schedule;
+}
+
+function create(node, id, self) {
+  var schedules = node.__transition,
+      tween;
+
+  // Initialize the self timer when the transition is created.
+  // Note the actual delay is not known until the first callback!
+  schedules[id] = self;
+  self.timer = Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__["timer"])(schedule, 0, self.time);
+
+  function schedule(elapsed) {
+    self.state = SCHEDULED;
+    self.timer.restart(start, self.delay, self.time);
+
+    // If the elapsed delay is less than our first sleep, start immediately.
+    if (self.delay <= elapsed) start(elapsed - self.delay);
+  }
+
+  function start(elapsed) {
+    var i, j, n, o;
+
+    // If the state is not SCHEDULED, then we previously errored on start.
+    if (self.state !== SCHEDULED) return stop();
+
+    for (i in schedules) {
+      o = schedules[i];
+      if (o.name !== self.name) continue;
+
+      // While this element already has a starting transition during this frame,
+      // defer starting an interrupting transition until that transition has a
+      // chance to tick (and possibly end); see d3/d3-transition#54!
+      if (o.state === STARTED) return Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__["timeout"])(start);
+
+      // Interrupt the active transition, if any.
+      if (o.state === RUNNING) {
+        o.state = ENDED;
+        o.timer.stop();
+        o.on.call("interrupt", node, node.__data__, o.index, o.group);
+        delete schedules[i];
+      }
+
+      // Cancel any pre-empted transitions.
+      else if (+i < id) {
+        o.state = ENDED;
+        o.timer.stop();
+        o.on.call("cancel", node, node.__data__, o.index, o.group);
+        delete schedules[i];
+      }
+    }
+
+    // Defer the first tick to end of the current frame; see d3/d3#1576.
+    // Note the transition may be canceled after start and before the first tick!
+    // Note this must be scheduled before the start event; see d3/d3-transition#16!
+    // Assuming this is successful, subsequent callbacks go straight to tick.
+    Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__["timeout"])(function() {
+      if (self.state === STARTED) {
+        self.state = RUNNING;
+        self.timer.restart(tick, self.delay, self.time);
+        tick(elapsed);
+      }
+    });
+
+    // Dispatch the start event.
+    // Note this must be done before the tween are initialized.
+    self.state = STARTING;
+    self.on.call("start", node, node.__data__, self.index, self.group);
+    if (self.state !== STARTING) return; // interrupted
+    self.state = STARTED;
+
+    // Initialize the tween, deleting null tween.
+    tween = new Array(n = self.tween.length);
+    for (i = 0, j = -1; i < n; ++i) {
+      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {
+        tween[++j] = o;
+      }
+    }
+    tween.length = j + 1;
+  }
+
+  function tick(elapsed) {
+    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),
+        i = -1,
+        n = tween.length;
+
+    while (++i < n) {
+      tween[i].call(node, t);
+    }
+
+    // Dispatch the end event.
+    if (self.state === ENDING) {
+      self.on.call("end", node, node.__data__, self.index, self.group);
+      stop();
+    }
+  }
+
+  function stop() {
+    self.state = ENDED;
+    self.timer.stop();
+    delete schedules[id];
+    for (var i in schedules) return; // eslint-disable-line no-unused-vars
+    delete node.__transition;
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/select.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/select.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-transition/src/transition/index.js");
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(select) {
+  var name = this._name,
+      id = this._id;
+
+  if (typeof select !== "function") select = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["selector"])(select);
+
+  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
+      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
+        if ("__data__" in node) subnode.__data__ = node.__data__;
+        subgroup[i] = subnode;
+        Object(_schedule_js__WEBPACK_IMPORTED_MODULE_2__["default"])(subgroup[i], name, id, i, subgroup, Object(_schedule_js__WEBPACK_IMPORTED_MODULE_2__["get"])(node, id));
+      }
+    }
+  }
+
+  return new _index_js__WEBPACK_IMPORTED_MODULE_1__["Transition"](subgroups, this._parents, name, id);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/selectAll.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/selectAll.js ***!
+  \****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-transition/src/transition/index.js");
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function(select) {
+  var name = this._name,
+      id = this._id;
+
+  if (typeof select !== "function") select = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["selectorAll"])(select);
+
+  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+      if (node = group[i]) {
+        for (var children = select.call(node, node.__data__, i, group), child, inherit = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_2__["get"])(node, id), k = 0, l = children.length; k < l; ++k) {
+          if (child = children[k]) {
+            Object(_schedule_js__WEBPACK_IMPORTED_MODULE_2__["default"])(child, name, id, k, children, inherit);
+          }
+        }
+        subgroups.push(children);
+        parents.push(node);
+      }
+    }
+  }
+
+  return new _index_js__WEBPACK_IMPORTED_MODULE_1__["Transition"](subgroups, parents, name, id);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/selection.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/selection.js ***!
+  \****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+
+
+var Selection = d3_selection__WEBPACK_IMPORTED_MODULE_0__["selection"].prototype.constructor;
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  return new Selection(this._groups, this._parents);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/style.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/style.js ***!
+  \************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tween.js */ "./node_modules/d3-transition/src/transition/tween.js");
+/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./interpolate.js */ "./node_modules/d3-transition/src/transition/interpolate.js");
+
+
+
+
+
+
+function styleNull(name, interpolate) {
+  var string00,
+      string10,
+      interpolate0;
+  return function() {
+    var string0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name),
+        string1 = (this.style.removeProperty(name), Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name));
+    return string0 === string1 ? null
+        : string0 === string00 && string1 === string10 ? interpolate0
+        : interpolate0 = interpolate(string00 = string0, string10 = string1);
+  };
+}
+
+function styleRemove(name) {
+  return function() {
+    this.style.removeProperty(name);
+  };
+}
+
+function styleConstant(name, interpolate, value1) {
+  var string00,
+      string1 = value1 + "",
+      interpolate0;
+  return function() {
+    var string0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name);
+    return string0 === string1 ? null
+        : string0 === string00 ? interpolate0
+        : interpolate0 = interpolate(string00 = string0, value1);
+  };
+}
+
+function styleFunction(name, interpolate, value) {
+  var string00,
+      string10,
+      interpolate0;
+  return function() {
+    var string0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name),
+        value1 = value(this),
+        string1 = value1 + "";
+    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name));
+    return string0 === string1 ? null
+        : string0 === string00 && string1 === string10 ? interpolate0
+        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
+  };
+}
+
+function styleMaybeRemove(id, name) {
+  var on0, on1, listener0, key = "style." + name, event = "end." + key, remove;
+  return function() {
+    var schedule = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_2__["set"])(this, id),
+        on = schedule.on,
+        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;
+
+    // If this node shared a dispatch with the previous node,
+    // just assign the updated shared dispatch and we’re done!
+    // Otherwise, copy-on-write.
+    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);
+
+    schedule.on = on1;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value, priority) {
+  var i = (name += "") === "transform" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_0__["interpolateTransformCss"] : _interpolate_js__WEBPACK_IMPORTED_MODULE_4__["default"];
+  return value == null ? this
+      .styleTween(name, styleNull(name, i))
+      .on("end.style." + name, styleRemove(name))
+    : typeof value === "function" ? this
+      .styleTween(name, styleFunction(name, i, Object(_tween_js__WEBPACK_IMPORTED_MODULE_3__["tweenValue"])(this, "style." + name, value)))
+      .each(styleMaybeRemove(this._id, name))
+    : this
+      .styleTween(name, styleConstant(name, i, value), priority)
+      .on("end.style." + name, null);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/styleTween.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/styleTween.js ***!
+  \*****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function styleInterpolate(name, i, priority) {
+  return function(t) {
+    this.style.setProperty(name, i.call(this, t), priority);
+  };
+}
+
+function styleTween(name, value, priority) {
+  var t, i0;
+  function tween() {
+    var i = value.apply(this, arguments);
+    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);
+    return t;
+  }
+  tween._value = value;
+  return tween;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value, priority) {
+  var key = "style." + (name += "");
+  if (arguments.length < 2) return (key = this.tween(key)) && key._value;
+  if (value == null) return this.tween(key, null);
+  if (typeof value !== "function") throw new Error;
+  return this.tween(key, styleTween(name, value, priority == null ? "" : priority));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/text.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/text.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tween.js */ "./node_modules/d3-transition/src/transition/tween.js");
+
+
+function textConstant(value) {
+  return function() {
+    this.textContent = value;
+  };
+}
+
+function textFunction(value) {
+  return function() {
+    var value1 = value(this);
+    this.textContent = value1 == null ? "" : value1;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  return this.tween("text", typeof value === "function"
+      ? textFunction(Object(_tween_js__WEBPACK_IMPORTED_MODULE_0__["tweenValue"])(this, "text", value))
+      : textConstant(value == null ? "" : value + ""));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/textTween.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/textTween.js ***!
+  \****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function textInterpolate(i) {
+  return function(t) {
+    this.textContent = i.call(this, t);
+  };
+}
+
+function textTween(value) {
+  var t0, i0;
+  function tween() {
+    var i = value.apply(this, arguments);
+    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);
+    return t0;
+  }
+  tween._value = value;
+  return tween;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(value) {
+  var key = "text";
+  if (arguments.length < 1) return (key = this.tween(key)) && key._value;
+  if (value == null) return this.tween(key, null);
+  if (typeof value !== "function") throw new Error;
+  return this.tween(key, textTween(value));
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/transition.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/transition.js ***!
+  \*****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/d3-transition/src/transition/index.js");
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var name = this._name,
+      id0 = this._id,
+      id1 = Object(_index_js__WEBPACK_IMPORTED_MODULE_0__["newId"])();
+
+  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
+    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+      if (node = group[i]) {
+        var inherit = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_1__["get"])(node, id0);
+        Object(_schedule_js__WEBPACK_IMPORTED_MODULE_1__["default"])(node, name, id1, i, group, {
+          time: inherit.time + inherit.delay + inherit.duration,
+          delay: 0,
+          duration: inherit.duration,
+          ease: inherit.ease
+        });
+      }
+    }
+  }
+
+  return new _index_js__WEBPACK_IMPORTED_MODULE_0__["Transition"](groups, this._parents, name, id1);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-transition/src/transition/tween.js":
+/*!************************************************************!*\
+  !*** ./node_modules/d3-transition/src/transition/tween.js ***!
+  \************************************************************/
+/*! exports provided: default, tweenValue */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tweenValue", function() { return tweenValue; });
+/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ "./node_modules/d3-transition/src/transition/schedule.js");
+
+
+function tweenRemove(id, name) {
+  var tween0, tween1;
+  return function() {
+    var schedule = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id),
+        tween = schedule.tween;
+
+    // If this node shared tween with the previous node,
+    // just assign the updated shared tween and we’re done!
+    // Otherwise, copy-on-write.
+    if (tween !== tween0) {
+      tween1 = tween0 = tween;
+      for (var i = 0, n = tween1.length; i < n; ++i) {
+        if (tween1[i].name === name) {
+          tween1 = tween1.slice();
+          tween1.splice(i, 1);
+          break;
+        }
+      }
+    }
+
+    schedule.tween = tween1;
+  };
+}
+
+function tweenFunction(id, name, value) {
+  var tween0, tween1;
+  if (typeof value !== "function") throw new Error;
+  return function() {
+    var schedule = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id),
+        tween = schedule.tween;
+
+    // If this node shared tween with the previous node,
+    // just assign the updated shared tween and we’re done!
+    // Otherwise, copy-on-write.
+    if (tween !== tween0) {
+      tween1 = (tween0 = tween).slice();
+      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {
+        if (tween1[i].name === name) {
+          tween1[i] = t;
+          break;
+        }
+      }
+      if (i === n) tween1.push(t);
+    }
+
+    schedule.tween = tween1;
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function(name, value) {
+  var id = this._id;
+
+  name += "";
+
+  if (arguments.length < 2) {
+    var tween = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).tween;
+    for (var i = 0, n = tween.length, t; i < n; ++i) {
+      if ((t = tween[i]).name === name) {
+        return t.value;
+      }
+    }
+    return null;
+  }
+
+  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));
+});
+
+function tweenValue(transition, name, value) {
+  var id = transition._id;
+
+  transition.each(function() {
+    var schedule = Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id);
+    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
+  });
+
+  return function(node) {
+    return Object(_schedule_js__WEBPACK_IMPORTED_MODULE_0__["get"])(node, id).value[name];
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/Beach.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-voronoi/src/Beach.js ***!
+  \**********************************************/
+/*! exports provided: removeBeach, addBeach */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeBeach", function() { return removeBeach; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addBeach", function() { return addBeach; });
+/* harmony import */ var _RedBlackTree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RedBlackTree */ "./node_modules/d3-voronoi/src/RedBlackTree.js");
+/* harmony import */ var _Cell__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Cell */ "./node_modules/d3-voronoi/src/Cell.js");
+/* harmony import */ var _Circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Circle */ "./node_modules/d3-voronoi/src/Circle.js");
+/* harmony import */ var _Edge__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Edge */ "./node_modules/d3-voronoi/src/Edge.js");
+/* harmony import */ var _Diagram__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Diagram */ "./node_modules/d3-voronoi/src/Diagram.js");
+
+
+
+
+
+
+var beachPool = [];
+
+function Beach() {
+  Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(this);
+  this.edge =
+  this.site =
+  this.circle = null;
+}
+
+function createBeach(site) {
+  var beach = beachPool.pop() || new Beach;
+  beach.site = site;
+  return beach;
+}
+
+function detachBeach(beach) {
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(beach);
+  _Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"].remove(beach);
+  beachPool.push(beach);
+  Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(beach);
+}
+
+function removeBeach(beach) {
+  var circle = beach.circle,
+      x = circle.x,
+      y = circle.cy,
+      vertex = [x, y],
+      previous = beach.P,
+      next = beach.N,
+      disappearing = [beach];
+
+  detachBeach(beach);
+
+  var lArc = previous;
+  while (lArc.circle
+      && Math.abs(x - lArc.circle.x) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]
+      && Math.abs(y - lArc.circle.cy) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
+    previous = lArc.P;
+    disappearing.unshift(lArc);
+    detachBeach(lArc);
+    lArc = previous;
+  }
+
+  disappearing.unshift(lArc);
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(lArc);
+
+  var rArc = next;
+  while (rArc.circle
+      && Math.abs(x - rArc.circle.x) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]
+      && Math.abs(y - rArc.circle.cy) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
+    next = rArc.N;
+    disappearing.push(rArc);
+    detachBeach(rArc);
+    rArc = next;
+  }
+
+  disappearing.push(rArc);
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(rArc);
+
+  var nArcs = disappearing.length,
+      iArc;
+  for (iArc = 1; iArc < nArcs; ++iArc) {
+    rArc = disappearing[iArc];
+    lArc = disappearing[iArc - 1];
+    Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["setEdgeEnd"])(rArc.edge, lArc.site, rArc.site, vertex);
+  }
+
+  lArc = disappearing[0];
+  rArc = disappearing[nArcs - 1];
+  rArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lArc.site, rArc.site, null, vertex);
+
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(lArc);
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(rArc);
+}
+
+function addBeach(site) {
+  var x = site[0],
+      directrix = site[1],
+      lArc,
+      rArc,
+      dxl,
+      dxr,
+      node = _Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"]._;
+
+  while (node) {
+    dxl = leftBreakPoint(node, directrix) - x;
+    if (dxl > _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) node = node.L; else {
+      dxr = x - rightBreakPoint(node, directrix);
+      if (dxr > _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
+        if (!node.R) {
+          lArc = node;
+          break;
+        }
+        node = node.R;
+      } else {
+        if (dxl > -_Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
+          lArc = node.P;
+          rArc = node;
+        } else if (dxr > -_Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
+          lArc = node;
+          rArc = node.N;
+        } else {
+          lArc = rArc = node;
+        }
+        break;
+      }
+    }
+  }
+
+  Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["createCell"])(site);
+  var newArc = createBeach(site);
+  _Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"].insert(lArc, newArc);
+
+  if (!lArc && !rArc) return;
+
+  if (lArc === rArc) {
+    Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(lArc);
+    rArc = createBeach(lArc.site);
+    _Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"].insert(newArc, rArc);
+    newArc.edge = rArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lArc.site, newArc.site);
+    Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(lArc);
+    Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(rArc);
+    return;
+  }
+
+  if (!rArc) { // && lArc
+    newArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lArc.site, newArc.site);
+    return;
+  }
+
+  // else lArc !== rArc
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(lArc);
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(rArc);
+
+  var lSite = lArc.site,
+      ax = lSite[0],
+      ay = lSite[1],
+      bx = site[0] - ax,
+      by = site[1] - ay,
+      rSite = rArc.site,
+      cx = rSite[0] - ax,
+      cy = rSite[1] - ay,
+      d = 2 * (bx * cy - by * cx),
+      hb = bx * bx + by * by,
+      hc = cx * cx + cy * cy,
+      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];
+
+  Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["setEdgeEnd"])(rArc.edge, lSite, rSite, vertex);
+  newArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lSite, site, null, vertex);
+  rArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(site, rSite, null, vertex);
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(lArc);
+  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(rArc);
+}
+
+function leftBreakPoint(arc, directrix) {
+  var site = arc.site,
+      rfocx = site[0],
+      rfocy = site[1],
+      pby2 = rfocy - directrix;
+
+  if (!pby2) return rfocx;
+
+  var lArc = arc.P;
+  if (!lArc) return -Infinity;
+
+  site = lArc.site;
+  var lfocx = site[0],
+      lfocy = site[1],
+      plby2 = lfocy - directrix;
+
+  if (!plby2) return lfocx;
+
+  var hl = lfocx - rfocx,
+      aby2 = 1 / pby2 - 1 / plby2,
+      b = hl / plby2;
+
+  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;
+
+  return (rfocx + lfocx) / 2;
+}
+
+function rightBreakPoint(arc, directrix) {
+  var rArc = arc.N;
+  if (rArc) return leftBreakPoint(rArc, directrix);
+  var site = arc.site;
+  return site[1] === directrix ? site[0] : Infinity;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/Cell.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-voronoi/src/Cell.js ***!
+  \*********************************************/
+/*! exports provided: createCell, cellHalfedgeStart, cellHalfedgeEnd, sortCellHalfedges, clipCells */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createCell", function() { return createCell; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cellHalfedgeStart", function() { return cellHalfedgeStart; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cellHalfedgeEnd", function() { return cellHalfedgeEnd; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortCellHalfedges", function() { return sortCellHalfedges; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clipCells", function() { return clipCells; });
+/* harmony import */ var _Edge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Edge */ "./node_modules/d3-voronoi/src/Edge.js");
+/* harmony import */ var _Diagram__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Diagram */ "./node_modules/d3-voronoi/src/Diagram.js");
+
+
+
+function createCell(site) {
+  return _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][site.index] = {
+    site: site,
+    halfedges: []
+  };
+}
+
+function cellHalfedgeAngle(cell, edge) {
+  var site = cell.site,
+      va = edge.left,
+      vb = edge.right;
+  if (site === vb) vb = va, va = site;
+  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);
+  if (site === va) va = edge[1], vb = edge[0];
+  else va = edge[0], vb = edge[1];
+  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);
+}
+
+function cellHalfedgeStart(cell, edge) {
+  return edge[+(edge.left !== cell.site)];
+}
+
+function cellHalfedgeEnd(cell, edge) {
+  return edge[+(edge.left === cell.site)];
+}
+
+function sortCellHalfedges() {
+  for (var i = 0, n = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"].length, cell, halfedges, j, m; i < n; ++i) {
+    if ((cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][i]) && (m = (halfedges = cell.halfedges).length)) {
+      var index = new Array(m),
+          array = new Array(m);
+      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[j]]);
+      index.sort(function(i, j) { return array[j] - array[i]; });
+      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];
+      for (j = 0; j < m; ++j) halfedges[j] = array[j];
+    }
+  }
+}
+
+function clipCells(x0, y0, x1, y1) {
+  var nCells = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"].length,
+      iCell,
+      cell,
+      site,
+      iHalfedge,
+      halfedges,
+      nHalfedges,
+      start,
+      startX,
+      startY,
+      end,
+      endX,
+      endY,
+      cover = true;
+
+  for (iCell = 0; iCell < nCells; ++iCell) {
+    if (cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell]) {
+      site = cell.site;
+      halfedges = cell.halfedges;
+      iHalfedge = halfedges.length;
+
+      // Remove any dangling clipped edges.
+      while (iHalfedge--) {
+        if (!_Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[iHalfedge]]) {
+          halfedges.splice(iHalfedge, 1);
+        }
+      }
+
+      // Insert any border edges as necessary.
+      iHalfedge = 0, nHalfedges = halfedges.length;
+      while (iHalfedge < nHalfedges) {
+        end = cellHalfedgeEnd(cell, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[iHalfedge]]), endX = end[0], endY = end[1];
+        start = cellHalfedgeStart(cell, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];
+        if (Math.abs(endX - startX) > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] || Math.abs(endY - startY) > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) {
+          halfedges.splice(iHalfedge, 0, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, end,
+              Math.abs(endX - x0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && y1 - endY > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [x0, Math.abs(startX - x0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startY : y1]
+              : Math.abs(endY - y1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && x1 - endX > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [Math.abs(startY - y1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startX : x1, y1]
+              : Math.abs(endX - x1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && endY - y0 > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [x1, Math.abs(startX - x1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startY : y0]
+              : Math.abs(endY - y0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && endX - x0 > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [Math.abs(startY - y0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startX : x0, y0]
+              : null)) - 1);
+          ++nHalfedges;
+        }
+      }
+
+      if (nHalfedges) cover = false;
+    }
+  }
+
+  // If there weren’t any edges, have the closest site cover the extent.
+  // It doesn’t matter which corner of the extent we measure!
+  if (cover) {
+    var dx, dy, d2, dc = Infinity;
+
+    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {
+      if (cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell]) {
+        site = cell.site;
+        dx = site[0] - x0;
+        dy = site[1] - y0;
+        d2 = dx * dx + dy * dy;
+        if (d2 < dc) dc = d2, cover = cell;
+      }
+    }
+
+    if (cover) {
+      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];
+      cover.halfedges.push(
+        _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site = cover.site, v00, v01)) - 1,
+        _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, v01, v11)) - 1,
+        _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, v11, v10)) - 1,
+        _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, v10, v00)) - 1
+      );
+    }
+  }
+
+  // Lastly delete any cells with no edges; these were entirely clipped.
+  for (iCell = 0; iCell < nCells; ++iCell) {
+    if (cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell]) {
+      if (!cell.halfedges.length) {
+        delete _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell];
+      }
+    }
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/Circle.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-voronoi/src/Circle.js ***!
+  \***********************************************/
+/*! exports provided: firstCircle, attachCircle, detachCircle */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "firstCircle", function() { return firstCircle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attachCircle", function() { return attachCircle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detachCircle", function() { return detachCircle; });
+/* harmony import */ var _RedBlackTree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RedBlackTree */ "./node_modules/d3-voronoi/src/RedBlackTree.js");
+/* harmony import */ var _Diagram__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Diagram */ "./node_modules/d3-voronoi/src/Diagram.js");
+
+
+
+var circlePool = [];
+
+var firstCircle;
+
+function Circle() {
+  Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(this);
+  this.x =
+  this.y =
+  this.arc =
+  this.site =
+  this.cy = null;
+}
+
+function attachCircle(arc) {
+  var lArc = arc.P,
+      rArc = arc.N;
+
+  if (!lArc || !rArc) return;
+
+  var lSite = lArc.site,
+      cSite = arc.site,
+      rSite = rArc.site;
+
+  if (lSite === rSite) return;
+
+  var bx = cSite[0],
+      by = cSite[1],
+      ax = lSite[0] - bx,
+      ay = lSite[1] - by,
+      cx = rSite[0] - bx,
+      cy = rSite[1] - by;
+
+  var d = 2 * (ax * cy - ay * cx);
+  if (d >= -_Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon2"]) return;
+
+  var ha = ax * ax + ay * ay,
+      hc = cx * cx + cy * cy,
+      x = (cy * ha - ay * hc) / d,
+      y = (ax * hc - cx * ha) / d;
+
+  var circle = circlePool.pop() || new Circle;
+  circle.arc = arc;
+  circle.site = cSite;
+  circle.x = x + bx;
+  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom
+
+  arc.circle = circle;
+
+  var before = null,
+      node = _Diagram__WEBPACK_IMPORTED_MODULE_1__["circles"]._;
+
+  while (node) {
+    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {
+      if (node.L) node = node.L;
+      else { before = node.P; break; }
+    } else {
+      if (node.R) node = node.R;
+      else { before = node; break; }
+    }
+  }
+
+  _Diagram__WEBPACK_IMPORTED_MODULE_1__["circles"].insert(before, circle);
+  if (!before) firstCircle = circle;
+}
+
+function detachCircle(arc) {
+  var circle = arc.circle;
+  if (circle) {
+    if (!circle.P) firstCircle = circle.N;
+    _Diagram__WEBPACK_IMPORTED_MODULE_1__["circles"].remove(circle);
+    circlePool.push(circle);
+    Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(circle);
+    arc.circle = null;
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/Diagram.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-voronoi/src/Diagram.js ***!
+  \************************************************/
+/*! exports provided: epsilon, epsilon2, beaches, cells, circles, edges, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "epsilon", function() { return epsilon; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "epsilon2", function() { return epsilon2; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "beaches", function() { return beaches; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cells", function() { return cells; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "circles", function() { return circles; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "edges", function() { return edges; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Diagram; });
+/* harmony import */ var _Beach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Beach */ "./node_modules/d3-voronoi/src/Beach.js");
+/* harmony import */ var _Cell__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Cell */ "./node_modules/d3-voronoi/src/Cell.js");
+/* harmony import */ var _Circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Circle */ "./node_modules/d3-voronoi/src/Circle.js");
+/* harmony import */ var _Edge__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Edge */ "./node_modules/d3-voronoi/src/Edge.js");
+/* harmony import */ var _RedBlackTree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RedBlackTree */ "./node_modules/d3-voronoi/src/RedBlackTree.js");
+
+
+
+
+
+
+var epsilon = 1e-6;
+var epsilon2 = 1e-12;
+var beaches;
+var cells;
+var circles;
+var edges;
+
+function triangleArea(a, b, c) {
+  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);
+}
+
+function lexicographic(a, b) {
+  return b[1] - a[1]
+      || b[0] - a[0];
+}
+
+function Diagram(sites, extent) {
+  var site = sites.sort(lexicographic).pop(),
+      x,
+      y,
+      circle;
+
+  edges = [];
+  cells = new Array(sites.length);
+  beaches = new _RedBlackTree__WEBPACK_IMPORTED_MODULE_4__["default"];
+  circles = new _RedBlackTree__WEBPACK_IMPORTED_MODULE_4__["default"];
+
+  while (true) {
+    circle = _Circle__WEBPACK_IMPORTED_MODULE_2__["firstCircle"];
+    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {
+      if (site[0] !== x || site[1] !== y) {
+        Object(_Beach__WEBPACK_IMPORTED_MODULE_0__["addBeach"])(site);
+        x = site[0], y = site[1];
+      }
+      site = sites.pop();
+    } else if (circle) {
+      Object(_Beach__WEBPACK_IMPORTED_MODULE_0__["removeBeach"])(circle.arc);
+    } else {
+      break;
+    }
+  }
+
+  Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["sortCellHalfedges"])();
+
+  if (extent) {
+    var x0 = +extent[0][0],
+        y0 = +extent[0][1],
+        x1 = +extent[1][0],
+        y1 = +extent[1][1];
+    Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["clipEdges"])(x0, y0, x1, y1);
+    Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["clipCells"])(x0, y0, x1, y1);
+  }
+
+  this.edges = edges;
+  this.cells = cells;
+
+  beaches =
+  circles =
+  edges =
+  cells = null;
+}
+
+Diagram.prototype = {
+  constructor: Diagram,
+
+  polygons: function() {
+    var edges = this.edges;
+
+    return this.cells.map(function(cell) {
+      var polygon = cell.halfedges.map(function(i) { return Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["cellHalfedgeStart"])(cell, edges[i]); });
+      polygon.data = cell.site.data;
+      return polygon;
+    });
+  },
+
+  triangles: function() {
+    var triangles = [],
+        edges = this.edges;
+
+    this.cells.forEach(function(cell, i) {
+      if (!(m = (halfedges = cell.halfedges).length)) return;
+      var site = cell.site,
+          halfedges,
+          j = -1,
+          m,
+          s0,
+          e1 = edges[halfedges[m - 1]],
+          s1 = e1.left === site ? e1.right : e1.left;
+
+      while (++j < m) {
+        s0 = s1;
+        e1 = edges[halfedges[j]];
+        s1 = e1.left === site ? e1.right : e1.left;
+        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {
+          triangles.push([site.data, s0.data, s1.data]);
+        }
+      }
+    });
+
+    return triangles;
+  },
+
+  links: function() {
+    return this.edges.filter(function(edge) {
+      return edge.right;
+    }).map(function(edge) {
+      return {
+        source: edge.left.data,
+        target: edge.right.data
+      };
+    });
+  },
+
+  find: function(x, y, radius) {
+    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;
+
+    // Use the previously-found cell, or start with an arbitrary one.
+    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;
+    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;
+
+    // Traverse the half-edges to find a closer cell, if any.
+    do {
+      cell = that.cells[i0 = i1], i1 = null;
+      cell.halfedges.forEach(function(e) {
+        var edge = that.edges[e], v = edge.left;
+        if ((v === cell.site || !v) && !(v = edge.right)) return;
+        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;
+        if (v2 < d2) d2 = v2, i1 = v.index;
+      });
+    } while (i1 !== null);
+
+    that._found = i0;
+
+    return radius == null || d2 <= radius * radius ? cell.site : null;
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/Edge.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-voronoi/src/Edge.js ***!
+  \*********************************************/
+/*! exports provided: createEdge, createBorderEdge, setEdgeEnd, clipEdges */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createEdge", function() { return createEdge; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createBorderEdge", function() { return createBorderEdge; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setEdgeEnd", function() { return setEdgeEnd; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clipEdges", function() { return clipEdges; });
+/* harmony import */ var _Diagram__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Diagram */ "./node_modules/d3-voronoi/src/Diagram.js");
+
+
+function createEdge(left, right, v0, v1) {
+  var edge = [null, null],
+      index = _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"].push(edge) - 1;
+  edge.left = left;
+  edge.right = right;
+  if (v0) setEdgeEnd(edge, left, right, v0);
+  if (v1) setEdgeEnd(edge, right, left, v1);
+  _Diagram__WEBPACK_IMPORTED_MODULE_0__["cells"][left.index].halfedges.push(index);
+  _Diagram__WEBPACK_IMPORTED_MODULE_0__["cells"][right.index].halfedges.push(index);
+  return edge;
+}
+
+function createBorderEdge(left, v0, v1) {
+  var edge = [v0, v1];
+  edge.left = left;
+  return edge;
+}
+
+function setEdgeEnd(edge, left, right, vertex) {
+  if (!edge[0] && !edge[1]) {
+    edge[0] = vertex;
+    edge.left = left;
+    edge.right = right;
+  } else if (edge.left === right) {
+    edge[1] = vertex;
+  } else {
+    edge[0] = vertex;
+  }
+}
+
+// Liang–Barsky line clipping.
+function clipEdge(edge, x0, y0, x1, y1) {
+  var a = edge[0],
+      b = edge[1],
+      ax = a[0],
+      ay = a[1],
+      bx = b[0],
+      by = b[1],
+      t0 = 0,
+      t1 = 1,
+      dx = bx - ax,
+      dy = by - ay,
+      r;
+
+  r = x0 - ax;
+  if (!dx && r > 0) return;
+  r /= dx;
+  if (dx < 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  } else if (dx > 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  }
+
+  r = x1 - ax;
+  if (!dx && r < 0) return;
+  r /= dx;
+  if (dx < 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  } else if (dx > 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  }
+
+  r = y0 - ay;
+  if (!dy && r > 0) return;
+  r /= dy;
+  if (dy < 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  } else if (dy > 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  }
+
+  r = y1 - ay;
+  if (!dy && r < 0) return;
+  r /= dy;
+  if (dy < 0) {
+    if (r > t1) return;
+    if (r > t0) t0 = r;
+  } else if (dy > 0) {
+    if (r < t0) return;
+    if (r < t1) t1 = r;
+  }
+
+  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?
+
+  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];
+  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];
+  return true;
+}
+
+function connectEdge(edge, x0, y0, x1, y1) {
+  var v1 = edge[1];
+  if (v1) return true;
+
+  var v0 = edge[0],
+      left = edge.left,
+      right = edge.right,
+      lx = left[0],
+      ly = left[1],
+      rx = right[0],
+      ry = right[1],
+      fx = (lx + rx) / 2,
+      fy = (ly + ry) / 2,
+      fm,
+      fb;
+
+  if (ry === ly) {
+    if (fx < x0 || fx >= x1) return;
+    if (lx > rx) {
+      if (!v0) v0 = [fx, y0];
+      else if (v0[1] >= y1) return;
+      v1 = [fx, y1];
+    } else {
+      if (!v0) v0 = [fx, y1];
+      else if (v0[1] < y0) return;
+      v1 = [fx, y0];
+    }
+  } else {
+    fm = (lx - rx) / (ry - ly);
+    fb = fy - fm * fx;
+    if (fm < -1 || fm > 1) {
+      if (lx > rx) {
+        if (!v0) v0 = [(y0 - fb) / fm, y0];
+        else if (v0[1] >= y1) return;
+        v1 = [(y1 - fb) / fm, y1];
+      } else {
+        if (!v0) v0 = [(y1 - fb) / fm, y1];
+        else if (v0[1] < y0) return;
+        v1 = [(y0 - fb) / fm, y0];
+      }
+    } else {
+      if (ly < ry) {
+        if (!v0) v0 = [x0, fm * x0 + fb];
+        else if (v0[0] >= x1) return;
+        v1 = [x1, fm * x1 + fb];
+      } else {
+        if (!v0) v0 = [x1, fm * x1 + fb];
+        else if (v0[0] < x0) return;
+        v1 = [x0, fm * x0 + fb];
+      }
+    }
+  }
+
+  edge[0] = v0;
+  edge[1] = v1;
+  return true;
+}
+
+function clipEdges(x0, y0, x1, y1) {
+  var i = _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"].length,
+      edge;
+
+  while (i--) {
+    if (!connectEdge(edge = _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"][i], x0, y0, x1, y1)
+        || !clipEdge(edge, x0, y0, x1, y1)
+        || !(Math.abs(edge[0][0] - edge[1][0]) > _Diagram__WEBPACK_IMPORTED_MODULE_0__["epsilon"]
+            || Math.abs(edge[0][1] - edge[1][1]) > _Diagram__WEBPACK_IMPORTED_MODULE_0__["epsilon"])) {
+      delete _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"][i];
+    }
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/RedBlackTree.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/d3-voronoi/src/RedBlackTree.js ***!
+  \*****************************************************/
+/*! exports provided: RedBlackNode, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RedBlackNode", function() { return RedBlackNode; });
+function RedBlackTree() {
+  this._ = null; // root node
+}
+
+function RedBlackNode(node) {
+  node.U = // parent node
+  node.C = // color - true for red, false for black
+  node.L = // left node
+  node.R = // right node
+  node.P = // previous node
+  node.N = null; // next node
+}
+
+RedBlackTree.prototype = {
+  constructor: RedBlackTree,
+
+  insert: function(after, node) {
+    var parent, grandpa, uncle;
+
+    if (after) {
+      node.P = after;
+      node.N = after.N;
+      if (after.N) after.N.P = node;
+      after.N = node;
+      if (after.R) {
+        after = after.R;
+        while (after.L) after = after.L;
+        after.L = node;
+      } else {
+        after.R = node;
+      }
+      parent = after;
+    } else if (this._) {
+      after = RedBlackFirst(this._);
+      node.P = null;
+      node.N = after;
+      after.P = after.L = node;
+      parent = after;
+    } else {
+      node.P = node.N = null;
+      this._ = node;
+      parent = null;
+    }
+    node.L = node.R = null;
+    node.U = parent;
+    node.C = true;
+
+    after = node;
+    while (parent && parent.C) {
+      grandpa = parent.U;
+      if (parent === grandpa.L) {
+        uncle = grandpa.R;
+        if (uncle && uncle.C) {
+          parent.C = uncle.C = false;
+          grandpa.C = true;
+          after = grandpa;
+        } else {
+          if (after === parent.R) {
+            RedBlackRotateLeft(this, parent);
+            after = parent;
+            parent = after.U;
+          }
+          parent.C = false;
+          grandpa.C = true;
+          RedBlackRotateRight(this, grandpa);
+        }
+      } else {
+        uncle = grandpa.L;
+        if (uncle && uncle.C) {
+          parent.C = uncle.C = false;
+          grandpa.C = true;
+          after = grandpa;
+        } else {
+          if (after === parent.L) {
+            RedBlackRotateRight(this, parent);
+            after = parent;
+            parent = after.U;
+          }
+          parent.C = false;
+          grandpa.C = true;
+          RedBlackRotateLeft(this, grandpa);
+        }
+      }
+      parent = after.U;
+    }
+    this._.C = false;
+  },
+
+  remove: function(node) {
+    if (node.N) node.N.P = node.P;
+    if (node.P) node.P.N = node.N;
+    node.N = node.P = null;
+
+    var parent = node.U,
+        sibling,
+        left = node.L,
+        right = node.R,
+        next,
+        red;
+
+    if (!left) next = right;
+    else if (!right) next = left;
+    else next = RedBlackFirst(right);
+
+    if (parent) {
+      if (parent.L === node) parent.L = next;
+      else parent.R = next;
+    } else {
+      this._ = next;
+    }
+
+    if (left && right) {
+      red = next.C;
+      next.C = node.C;
+      next.L = left;
+      left.U = next;
+      if (next !== right) {
+        parent = next.U;
+        next.U = node.U;
+        node = next.R;
+        parent.L = node;
+        next.R = right;
+        right.U = next;
+      } else {
+        next.U = parent;
+        parent = next;
+        node = next.R;
+      }
+    } else {
+      red = node.C;
+      node = next;
+    }
+
+    if (node) node.U = parent;
+    if (red) return;
+    if (node && node.C) { node.C = false; return; }
+
+    do {
+      if (node === this._) break;
+      if (node === parent.L) {
+        sibling = parent.R;
+        if (sibling.C) {
+          sibling.C = false;
+          parent.C = true;
+          RedBlackRotateLeft(this, parent);
+          sibling = parent.R;
+        }
+        if ((sibling.L && sibling.L.C)
+            || (sibling.R && sibling.R.C)) {
+          if (!sibling.R || !sibling.R.C) {
+            sibling.L.C = false;
+            sibling.C = true;
+            RedBlackRotateRight(this, sibling);
+            sibling = parent.R;
+          }
+          sibling.C = parent.C;
+          parent.C = sibling.R.C = false;
+          RedBlackRotateLeft(this, parent);
+          node = this._;
+          break;
+        }
+      } else {
+        sibling = parent.L;
+        if (sibling.C) {
+          sibling.C = false;
+          parent.C = true;
+          RedBlackRotateRight(this, parent);
+          sibling = parent.L;
+        }
+        if ((sibling.L && sibling.L.C)
+          || (sibling.R && sibling.R.C)) {
+          if (!sibling.L || !sibling.L.C) {
+            sibling.R.C = false;
+            sibling.C = true;
+            RedBlackRotateLeft(this, sibling);
+            sibling = parent.L;
+          }
+          sibling.C = parent.C;
+          parent.C = sibling.L.C = false;
+          RedBlackRotateRight(this, parent);
+          node = this._;
+          break;
+        }
+      }
+      sibling.C = true;
+      node = parent;
+      parent = parent.U;
+    } while (!node.C);
+
+    if (node) node.C = false;
+  }
+};
+
+function RedBlackRotateLeft(tree, node) {
+  var p = node,
+      q = node.R,
+      parent = p.U;
+
+  if (parent) {
+    if (parent.L === p) parent.L = q;
+    else parent.R = q;
+  } else {
+    tree._ = q;
+  }
+
+  q.U = parent;
+  p.U = q;
+  p.R = q.L;
+  if (p.R) p.R.U = p;
+  q.L = p;
+}
+
+function RedBlackRotateRight(tree, node) {
+  var p = node,
+      q = node.L,
+      parent = p.U;
+
+  if (parent) {
+    if (parent.L === p) parent.L = q;
+    else parent.R = q;
+  } else {
+    tree._ = q;
+  }
+
+  q.U = parent;
+  p.U = q;
+  p.L = q.R;
+  if (p.L) p.L.U = p;
+  q.R = p;
+}
+
+function RedBlackFirst(node) {
+  while (node.L) node = node.L;
+  return node;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (RedBlackTree);
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/constant.js":
+/*!*************************************************!*\
+  !*** ./node_modules/d3-voronoi/src/constant.js ***!
+  \*************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/index.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-voronoi/src/index.js ***!
+  \**********************************************/
+/*! exports provided: voronoi */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _voronoi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./voronoi */ "./node_modules/d3-voronoi/src/voronoi.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "voronoi", function() { return _voronoi__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/point.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-voronoi/src/point.js ***!
+  \**********************************************/
+/*! exports provided: x, y */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return x; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return y; });
+function x(d) {
+  return d[0];
+}
+
+function y(d) {
+  return d[1];
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-voronoi/src/voronoi.js":
+/*!************************************************!*\
+  !*** ./node_modules/d3-voronoi/src/voronoi.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-voronoi/src/constant.js");
+/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ "./node_modules/d3-voronoi/src/point.js");
+/* harmony import */ var _Diagram__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Diagram */ "./node_modules/d3-voronoi/src/Diagram.js");
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var x = _point__WEBPACK_IMPORTED_MODULE_1__["x"],
+      y = _point__WEBPACK_IMPORTED_MODULE_1__["y"],
+      extent = null;
+
+  function voronoi(data) {
+    return new _Diagram__WEBPACK_IMPORTED_MODULE_2__["default"](data.map(function(d, i) {
+      var s = [Math.round(x(d, i, data) / _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) * _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"], Math.round(y(d, i, data) / _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) * _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"]];
+      s.index = i;
+      s.data = d;
+      return s;
+    }), extent);
+  }
+
+  voronoi.polygons = function(data) {
+    return voronoi(data).polygons();
+  };
+
+  voronoi.links = function(data) {
+    return voronoi(data).links();
+  };
+
+  voronoi.triangles = function(data) {
+    return voronoi(data).triangles();
+  };
+
+  voronoi.x = function(_) {
+    return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), voronoi) : x;
+  };
+
+  voronoi.y = function(_) {
+    return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), voronoi) : y;
+  };
+
+  voronoi.extent = function(_) {
+    return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];
+  };
+
+  voronoi.size = function(_) {
+    return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];
+  };
+
+  return voronoi;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-zoom/src/constant.js":
+/*!**********************************************!*\
+  !*** ./node_modules/d3-zoom/src/constant.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = (function(x) {
+  return function() {
+    return x;
+  };
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-zoom/src/event.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-zoom/src/event.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ZoomEvent; });
+function ZoomEvent(target, type, transform) {
+  this.target = target;
+  this.type = type;
+  this.transform = transform;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-zoom/src/index.js":
+/*!*******************************************!*\
+  !*** ./node_modules/d3-zoom/src/index.js ***!
+  \*******************************************/
+/*! exports provided: zoom, zoomTransform, zoomIdentity */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./zoom.js */ "./node_modules/d3-zoom/src/zoom.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zoom", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transform.js */ "./node_modules/d3-zoom/src/transform.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zoomTransform", function() { return _transform_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zoomIdentity", function() { return _transform_js__WEBPACK_IMPORTED_MODULE_1__["identity"]; });
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-zoom/src/noevent.js":
+/*!*********************************************!*\
+  !*** ./node_modules/d3-zoom/src/noevent.js ***!
+  \*********************************************/
+/*! exports provided: nopropagation, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nopropagation", function() { return nopropagation; });
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+
+
+function nopropagation() {
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].preventDefault();
+  d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-zoom/src/transform.js":
+/*!***********************************************!*\
+  !*** ./node_modules/d3-zoom/src/transform.js ***!
+  \***********************************************/
+/*! exports provided: Transform, identity, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Transform", function() { return Transform; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transform; });
+function Transform(k, x, y) {
+  this.k = k;
+  this.x = x;
+  this.y = y;
+}
+
+Transform.prototype = {
+  constructor: Transform,
+  scale: function(k) {
+    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);
+  },
+  translate: function(x, y) {
+    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);
+  },
+  apply: function(point) {
+    return [point[0] * this.k + this.x, point[1] * this.k + this.y];
+  },
+  applyX: function(x) {
+    return x * this.k + this.x;
+  },
+  applyY: function(y) {
+    return y * this.k + this.y;
+  },
+  invert: function(location) {
+    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];
+  },
+  invertX: function(x) {
+    return (x - this.x) / this.k;
+  },
+  invertY: function(y) {
+    return (y - this.y) / this.k;
+  },
+  rescaleX: function(x) {
+    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));
+  },
+  rescaleY: function(y) {
+    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));
+  },
+  toString: function() {
+    return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
+  }
+};
+
+var identity = new Transform(1, 0, 0);
+
+transform.prototype = Transform.prototype;
+
+function transform(node) {
+  while (!node.__zoom) if (!(node = node.parentNode)) return identity;
+  return node.__zoom;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/d3-zoom/src/zoom.js":
+/*!******************************************!*\
+  !*** ./node_modules/d3-zoom/src/zoom.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ "./node_modules/d3-dispatch/src/index.js");
+/* harmony import */ var d3_drag__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-drag */ "./node_modules/d3-drag/src/index.js");
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony import */ var d3_transition__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-transition */ "./node_modules/d3-transition/src/index.js");
+/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constant.js */ "./node_modules/d3-zoom/src/constant.js");
+/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./event.js */ "./node_modules/d3-zoom/src/event.js");
+/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./transform.js */ "./node_modules/d3-zoom/src/transform.js");
+/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./noevent.js */ "./node_modules/d3-zoom/src/noevent.js");
+
+
+
+
+
+
+
+
+
+
+// Ignore right-click, since that should open the context menu.
+function defaultFilter() {
+  return !d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].ctrlKey && !d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].button;
+}
+
+function defaultExtent() {
+  var e = this;
+  if (e instanceof SVGElement) {
+    e = e.ownerSVGElement || e;
+    if (e.hasAttribute("viewBox")) {
+      e = e.viewBox.baseVal;
+      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];
+    }
+    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];
+  }
+  return [[0, 0], [e.clientWidth, e.clientHeight]];
+}
+
+function defaultTransform() {
+  return this.__zoom || _transform_js__WEBPACK_IMPORTED_MODULE_7__["identity"];
+}
+
+function defaultWheelDelta() {
+  return -d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].deltaY * (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].deltaMode === 1 ? 0.05 : d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].deltaMode ? 1 : 0.002);
+}
+
+function defaultTouchable() {
+  return navigator.maxTouchPoints || ("ontouchstart" in this);
+}
+
+function defaultConstrain(transform, extent, translateExtent) {
+  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],
+      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],
+      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],
+      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];
+  return transform.translate(
+    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),
+    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)
+  );
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (function() {
+  var filter = defaultFilter,
+      extent = defaultExtent,
+      constrain = defaultConstrain,
+      wheelDelta = defaultWheelDelta,
+      touchable = defaultTouchable,
+      scaleExtent = [0, Infinity],
+      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],
+      duration = 250,
+      interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_2__["interpolateZoom"],
+      listeners = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("start", "zoom", "end"),
+      touchstarting,
+      touchending,
+      touchDelay = 500,
+      wheelDelay = 150,
+      clickDistance2 = 0;
+
+  function zoom(selection) {
+    selection
+        .property("__zoom", defaultTransform)
+        .on("wheel.zoom", wheeled)
+        .on("mousedown.zoom", mousedowned)
+        .on("dblclick.zoom", dblclicked)
+      .filter(touchable)
+        .on("touchstart.zoom", touchstarted)
+        .on("touchmove.zoom", touchmoved)
+        .on("touchend.zoom touchcancel.zoom", touchended)
+        .style("touch-action", "none")
+        .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
+  }
+
+  zoom.transform = function(collection, transform, point) {
+    var selection = collection.selection ? collection.selection() : collection;
+    selection.property("__zoom", defaultTransform);
+    if (collection !== selection) {
+      schedule(collection, transform, point);
+    } else {
+      selection.interrupt().each(function() {
+        gesture(this, arguments)
+            .start()
+            .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform)
+            .end();
+      });
+    }
+  };
+
+  zoom.scaleBy = function(selection, k, p) {
+    zoom.scaleTo(selection, function() {
+      var k0 = this.__zoom.k,
+          k1 = typeof k === "function" ? k.apply(this, arguments) : k;
+      return k0 * k1;
+    }, p);
+  };
+
+  zoom.scaleTo = function(selection, k, p) {
+    zoom.transform(selection, function() {
+      var e = extent.apply(this, arguments),
+          t0 = this.__zoom,
+          p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p,
+          p1 = t0.invert(p0),
+          k1 = typeof k === "function" ? k.apply(this, arguments) : k;
+      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);
+    }, p);
+  };
+
+  zoom.translateBy = function(selection, x, y) {
+    zoom.transform(selection, function() {
+      return constrain(this.__zoom.translate(
+        typeof x === "function" ? x.apply(this, arguments) : x,
+        typeof y === "function" ? y.apply(this, arguments) : y
+      ), extent.apply(this, arguments), translateExtent);
+    });
+  };
+
+  zoom.translateTo = function(selection, x, y, p) {
+    zoom.transform(selection, function() {
+      var e = extent.apply(this, arguments),
+          t = this.__zoom,
+          p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p;
+      return constrain(_transform_js__WEBPACK_IMPORTED_MODULE_7__["identity"].translate(p0[0], p0[1]).scale(t.k).translate(
+        typeof x === "function" ? -x.apply(this, arguments) : -x,
+        typeof y === "function" ? -y.apply(this, arguments) : -y
+      ), e, translateExtent);
+    }, p);
+  };
+
+  function scale(transform, k) {
+    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));
+    return k === transform.k ? transform : new _transform_js__WEBPACK_IMPORTED_MODULE_7__["Transform"](k, transform.x, transform.y);
+  }
+
+  function translate(transform, p0, p1) {
+    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;
+    return x === transform.x && y === transform.y ? transform : new _transform_js__WEBPACK_IMPORTED_MODULE_7__["Transform"](transform.k, x, y);
+  }
+
+  function centroid(extent) {
+    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];
+  }
+
+  function schedule(transition, transform, point) {
+    transition
+        .on("start.zoom", function() { gesture(this, arguments).start(); })
+        .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); })
+        .tween("zoom", function() {
+          var that = this,
+              args = arguments,
+              g = gesture(that, args),
+              e = extent.apply(that, args),
+              p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point,
+              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),
+              a = that.__zoom,
+              b = typeof transform === "function" ? transform.apply(that, args) : transform,
+              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));
+          return function(t) {
+            if (t === 1) t = b; // Avoid rounding error on end.
+            else { var l = i(t), k = w / l[2]; t = new _transform_js__WEBPACK_IMPORTED_MODULE_7__["Transform"](k, p[0] - l[0] * k, p[1] - l[1] * k); }
+            g.zoom(null, t);
+          };
+        });
+  }
+
+  function gesture(that, args, clean) {
+    return (!clean && that.__zooming) || new Gesture(that, args);
+  }
+
+  function Gesture(that, args) {
+    this.that = that;
+    this.args = args;
+    this.active = 0;
+    this.extent = extent.apply(that, args);
+    this.taps = 0;
+  }
+
+  Gesture.prototype = {
+    start: function() {
+      if (++this.active === 1) {
+        this.that.__zooming = this;
+        this.emit("start");
+      }
+      return this;
+    },
+    zoom: function(key, transform) {
+      if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]);
+      if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]);
+      if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]);
+      this.that.__zoom = transform;
+      this.emit("zoom");
+      return this;
+    },
+    end: function() {
+      if (--this.active === 0) {
+        delete this.that.__zooming;
+        this.emit("end");
+      }
+      return this;
+    },
+    emit: function(type) {
+      Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["customEvent"])(new _event_js__WEBPACK_IMPORTED_MODULE_6__["default"](zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);
+    }
+  };
+
+  function wheeled() {
+    if (!filter.apply(this, arguments)) return;
+    var g = gesture(this, arguments),
+        t = this.__zoom,
+        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),
+        p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(this);
+
+    // If the mouse is in the same location as before, reuse it.
+    // If there were recent wheel events, reset the wheel idle timeout.
+    if (g.wheel) {
+      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {
+        g.mouse[1] = t.invert(g.mouse[0] = p);
+      }
+      clearTimeout(g.wheel);
+    }
+
+    // If this wheel event won’t trigger a transform change, ignore it.
+    else if (t.k === k) return;
+
+    // Otherwise, capture the mouse point and location at the start.
+    else {
+      g.mouse = [p, t.invert(p)];
+      Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(this);
+      g.start();
+    }
+
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["default"])();
+    g.wheel = setTimeout(wheelidled, wheelDelay);
+    g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));
+
+    function wheelidled() {
+      g.wheel = null;
+      g.end();
+    }
+  }
+
+  function mousedowned() {
+    if (touchending || !filter.apply(this, arguments)) return;
+    var g = gesture(this, arguments, true),
+        v = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true),
+        p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(this),
+        x0 = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientX,
+        y0 = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientY;
+
+    Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragDisable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view);
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["nopropagation"])();
+    g.mouse = [p, this.__zoom.invert(p)];
+    Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(this);
+    g.start();
+
+    function mousemoved() {
+      Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["default"])();
+      if (!g.moved) {
+        var dx = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientX - x0, dy = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientY - y0;
+        g.moved = dx * dx + dy * dy > clickDistance2;
+      }
+      g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(g.that), g.mouse[1]), g.extent, translateExtent));
+    }
+
+    function mouseupped() {
+      v.on("mousemove.zoom mouseup.zoom", null);
+      Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragEnable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view, g.moved);
+      Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["default"])();
+      g.end();
+    }
+  }
+
+  function dblclicked() {
+    if (!filter.apply(this, arguments)) return;
+    var t0 = this.__zoom,
+        p0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(this),
+        p1 = t0.invert(p0),
+        k1 = t0.k * (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].shiftKey ? 0.5 : 2),
+        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);
+
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["default"])();
+    if (duration > 0) Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this).transition().duration(duration).call(schedule, t1, p0);
+    else Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this).call(zoom.transform, t1);
+  }
+
+  function touchstarted() {
+    if (!filter.apply(this, arguments)) return;
+    var touches = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches,
+        n = touches.length,
+        g = gesture(this, arguments, d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches.length === n),
+        started, i, t, p;
+
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["nopropagation"])();
+    for (i = 0; i < n; ++i) {
+      t = touches[i], p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["touch"])(this, touches, t.identifier);
+      p = [p, this.__zoom.invert(p), t.identifier];
+      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;
+      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;
+    }
+
+    if (touchstarting) touchstarting = clearTimeout(touchstarting);
+
+    if (started) {
+      if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);
+      Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(this);
+      g.start();
+    }
+  }
+
+  function touchmoved() {
+    if (!this.__zooming) return;
+    var g = gesture(this, arguments),
+        touches = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches,
+        n = touches.length, i, t, p, l;
+
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["default"])();
+    if (touchstarting) touchstarting = clearTimeout(touchstarting);
+    g.taps = 0;
+    for (i = 0; i < n; ++i) {
+      t = touches[i], p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["touch"])(this, touches, t.identifier);
+      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;
+      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;
+    }
+    t = g.that.__zoom;
+    if (g.touch1) {
+      var p0 = g.touch0[0], l0 = g.touch0[1],
+          p1 = g.touch1[0], l1 = g.touch1[1],
+          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,
+          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
+      t = scale(t, Math.sqrt(dp / dl));
+      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];
+      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
+    }
+    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];
+    else return;
+    g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent));
+  }
+
+  function touchended() {
+    if (!this.__zooming) return;
+    var g = gesture(this, arguments),
+        touches = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches,
+        n = touches.length, i, t;
+
+    Object(_noevent_js__WEBPACK_IMPORTED_MODULE_8__["nopropagation"])();
+    if (touchending) clearTimeout(touchending);
+    touchending = setTimeout(function() { touchending = null; }, touchDelay);
+    for (i = 0; i < n; ++i) {
+      t = touches[i];
+      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;
+      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;
+    }
+    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;
+    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);
+    else {
+      g.end();
+      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.
+      if (g.taps === 2) {
+        var p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this).on("dblclick.zoom");
+        if (p) p.apply(this, arguments);
+      }
+    }
+  }
+
+  zoom.wheelDelta = function(_) {
+    return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_5__["default"])(+_), zoom) : wheelDelta;
+  };
+
+  zoom.filter = function(_) {
+    return arguments.length ? (filter = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_5__["default"])(!!_), zoom) : filter;
+  };
+
+  zoom.touchable = function(_) {
+    return arguments.length ? (touchable = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_5__["default"])(!!_), zoom) : touchable;
+  };
+
+  zoom.extent = function(_) {
+    return arguments.length ? (extent = typeof _ === "function" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_5__["default"])([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;
+  };
+
+  zoom.scaleExtent = function(_) {
+    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];
+  };
+
+  zoom.translateExtent = function(_) {
+    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
+  };
+
+  zoom.constrain = function(_) {
+    return arguments.length ? (constrain = _, zoom) : constrain;
+  };
+
+  zoom.duration = function(_) {
+    return arguments.length ? (duration = +_, zoom) : duration;
+  };
+
+  zoom.interpolate = function(_) {
+    return arguments.length ? (interpolate = _, zoom) : interpolate;
+  };
+
+  zoom.on = function() {
+    var value = listeners.on.apply(listeners, arguments);
+    return value === listeners ? zoom : value;
+  };
+
+  zoom.clickDistance = function(_) {
+    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);
+  };
+
+  return zoom;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/d3/dist/package.js":
+/*!*****************************************!*\
+  !*** ./node_modules/d3/dist/package.js ***!
+  \*****************************************/
+/*! exports provided: name, version, description, keywords, homepage, license, author, main, unpkg, jsdelivr, module, repository, files, scripts, devDependencies, dependencies */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "name", function() { return name; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "version", function() { return version; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "description", function() { return description; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keywords", function() { return keywords; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "homepage", function() { return homepage; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "license", function() { return license; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "author", function() { return author; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "main", function() { return main; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unpkg", function() { return unpkg; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsdelivr", function() { return jsdelivr; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "module", function() { return module; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repository", function() { return repository; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "files", function() { return files; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scripts", function() { return scripts; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "devDependencies", function() { return devDependencies; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dependencies", function() { return dependencies; });
+var name = "d3";
+var version = "5.15.0";
+var description = "Data-Driven Documents";
+var keywords = ["dom","visualization","svg","animation","canvas"];
+var homepage = "https://d3js.org";
+var license = "BSD-3-Clause";
+var author = {"name":"Mike Bostock","url":"https://bost.ocks.org/mike"};
+var main = "dist/d3.node.js";
+var unpkg = "dist/d3.min.js";
+var jsdelivr = "dist/d3.min.js";
+var module = "index.js";
+var repository = {"type":"git","url":"https://github.com/d3/d3.git"};
+var files = ["dist/**/*.js","index.js"];
+var scripts = {"pretest":"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c","test":"tape 'test/**/*-test.js'","prepublishOnly":"yarn test","postpublish":"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \"${npm_package_version}\" && git tag -am \"${npm_package_version}\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js"};
+var devDependencies = {"json2module":"0.0","rimraf":"2","rollup":"1","rollup-plugin-ascii":"0.0","rollup-plugin-node-resolve":"3","rollup-plugin-terser":"5","tape":"4"};
+var dependencies = {"d3-array":"1","d3-axis":"1","d3-brush":"1","d3-chord":"1","d3-collection":"1","d3-color":"1","d3-contour":"1","d3-dispatch":"1","d3-drag":"1","d3-dsv":"1","d3-ease":"1","d3-fetch":"1","d3-force":"1","d3-format":"1","d3-geo":"1","d3-hierarchy":"1","d3-interpolate":"1","d3-path":"1","d3-polygon":"1","d3-quadtree":"1","d3-random":"1","d3-scale":"2","d3-scale-chromatic":"1","d3-selection":"1","d3-shape":"1","d3-time":"1","d3-time-format":"2","d3-timer":"1","d3-transition":"1","d3-voronoi":"1","d3-zoom":"1"};
+
+
+/***/ }),
+
+/***/ "./node_modules/d3/index.js":
+/*!**********************************!*\
+  !*** ./node_modules/d3/index.js ***!
+  \**********************************/
+/*! exports provided: version, bisect, bisectRight, bisectLeft, ascending, bisector, cross, descending, deviation, extent, histogram, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, max, mean, median, merge, min, pairs, permute, quantile, range, scan, shuffle, sum, ticks, tickIncrement, tickStep, transpose, variance, zip, axisTop, axisRight, axisBottom, axisLeft, brush, brushX, brushY, brushSelection, chord, ribbon, nest, set, map, keys, values, entries, color, rgb, hsl, lab, hcl, lch, gray, cubehelix, contours, contourDensity, dispatch, drag, dragDisable, dragEnable, dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue, tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue, autoType, easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut, blob, buffer, dsv, csv, tsv, image, json, text, xml, html, svg, forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY, formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound, geoArea, geoBounds, geoCentroid, geoCircle, geoClipAntimeridian, geoClipCircle, geoClipExtent, geoClipRectangle, geoContains, geoDistance, geoGraticule, geoGraticule10, geoInterpolate, geoLength, geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEqualAreaRaw, geoAzimuthalEquidistant, geoAzimuthalEquidistantRaw, geoConicConformal, geoConicConformalRaw, geoConicEqualArea, geoConicEqualAreaRaw, geoConicEquidistant, geoConicEquidistantRaw, geoEqualEarth, geoEqualEarthRaw, geoEquirectangular, geoEquirectangularRaw, geoGnomonic, geoGnomonicRaw, geoIdentity, geoProjection, geoProjectionMutator, geoMercator, geoMercatorRaw, geoNaturalEarth1, geoNaturalEarth1Raw, geoOrthographic, geoOrthographicRaw, geoStereographic, geoStereographicRaw, geoTransverseMercator, geoTransverseMercatorRaw, geoRotation, geoStream, geoTransform, cluster, hierarchy, pack, packSiblings, packEnclose, partition, stratify, tree, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify, interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize, path, polygonArea, polygonCentroid, polygonHull, polygonContains, polygonLength, quadtree, randomUniform, randomNormal, randomLogNormal, randomBates, randomIrwinHall, randomExponential, scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleSymlog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, scaleSequential, scaleSequentialLog, scaleSequentialPow, scaleSequentialSqrt, scaleSequentialSymlog, scaleSequentialQuantile, scaleDiverging, scaleDivergingLog, scaleDivergingPow, scaleDivergingSqrt, scaleDivergingSymlog, tickFormat, schemeCategory10, schemeAccent, schemeDark2, schemePaired, schemePastel1, schemePastel2, schemeSet1, schemeSet2, schemeSet3, schemeTableau10, interpolateBrBG, schemeBrBG, interpolatePRGn, schemePRGn, interpolatePiYG, schemePiYG, interpolatePuOr, schemePuOr, interpolateRdBu, schemeRdBu, interpolateRdGy, schemeRdGy, interpolateRdYlBu, schemeRdYlBu, interpolateRdYlGn, schemeRdYlGn, interpolateSpectral, schemeSpectral, interpolateBuGn, schemeBuGn, interpolateBuPu, schemeBuPu, interpolateGnBu, schemeGnBu, interpolateOrRd, schemeOrRd, interpolatePuBuGn, schemePuBuGn, interpolatePuBu, schemePuBu, interpolatePuRd, schemePuRd, interpolateRdPu, schemeRdPu, interpolateYlGnBu, schemeYlGnBu, interpolateYlGn, schemeYlGn, interpolateYlOrBr, schemeYlOrBr, interpolateYlOrRd, schemeYlOrRd, interpolateBlues, schemeBlues, interpolateGreens, schemeGreens, interpolateGreys, schemeGreys, interpolatePurples, schemePurples, interpolateReds, schemeReds, interpolateOranges, schemeOranges, interpolateCividis, interpolateCubehelixDefault, interpolateRainbow, interpolateWarm, interpolateCool, interpolateSinebow, interpolateTurbo, interpolateViridis, interpolateMagma, interpolateInferno, interpolatePlasma, create, creator, local, matcher, mouse, namespace, namespaces, clientPoint, select, selectAll, selection, selector, selectorAll, style, touch, touches, window, event, customEvent, arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse, timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears, timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse, now, timer, timerFlush, timeout, interval, transition, active, interrupt, voronoi, zoom, zoomTransform, zoomIdentity */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _dist_package_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dist/package.js */ "./node_modules/d3/dist/package.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "version", function() { return _dist_package_js__WEBPACK_IMPORTED_MODULE_0__["version"]; });
+
+/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ "./node_modules/d3-array/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisect", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["bisect"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisectRight", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["bisectRight"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisectLeft", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["bisectLeft"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ascending", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["ascending"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bisector", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["bisector"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cross", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["cross"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "descending", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["descending"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "deviation", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["deviation"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extent", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["extent"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "histogram", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["histogram"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thresholdFreedmanDiaconis", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["thresholdFreedmanDiaconis"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thresholdScott", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["thresholdScott"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thresholdSturges", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["thresholdSturges"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["max"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mean", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["mean"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "median", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["median"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["merge"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["min"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["pairs"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "permute", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["permute"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "quantile", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["quantile"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["range"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["scan"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["shuffle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["sum"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ticks", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["ticks"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tickIncrement", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["tickIncrement"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tickStep", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["tickStep"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transpose", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["transpose"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "variance", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["variance"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return d3_array__WEBPACK_IMPORTED_MODULE_1__["zip"]; });
+
+/* harmony import */ var d3_axis__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-axis */ "./node_modules/d3-axis/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisTop", function() { return d3_axis__WEBPACK_IMPORTED_MODULE_2__["axisTop"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisRight", function() { return d3_axis__WEBPACK_IMPORTED_MODULE_2__["axisRight"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisBottom", function() { return d3_axis__WEBPACK_IMPORTED_MODULE_2__["axisBottom"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "axisLeft", function() { return d3_axis__WEBPACK_IMPORTED_MODULE_2__["axisLeft"]; });
+
+/* harmony import */ var d3_brush__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-brush */ "./node_modules/d3-brush/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brush", function() { return d3_brush__WEBPACK_IMPORTED_MODULE_3__["brush"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brushX", function() { return d3_brush__WEBPACK_IMPORTED_MODULE_3__["brushX"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brushY", function() { return d3_brush__WEBPACK_IMPORTED_MODULE_3__["brushY"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "brushSelection", function() { return d3_brush__WEBPACK_IMPORTED_MODULE_3__["brushSelection"]; });
+
+/* harmony import */ var d3_chord__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-chord */ "./node_modules/d3-chord/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "chord", function() { return d3_chord__WEBPACK_IMPORTED_MODULE_4__["chord"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ribbon", function() { return d3_chord__WEBPACK_IMPORTED_MODULE_4__["ribbon"]; });
+
+/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-collection */ "./node_modules/d3-collection/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nest", function() { return d3_collection__WEBPACK_IMPORTED_MODULE_5__["nest"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "set", function() { return d3_collection__WEBPACK_IMPORTED_MODULE_5__["set"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return d3_collection__WEBPACK_IMPORTED_MODULE_5__["map"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return d3_collection__WEBPACK_IMPORTED_MODULE_5__["keys"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "values", function() { return d3_collection__WEBPACK_IMPORTED_MODULE_5__["values"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "entries", function() { return d3_collection__WEBPACK_IMPORTED_MODULE_5__["entries"]; });
+
+/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-color */ "./node_modules/d3-color/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "color", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["color"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "rgb", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["rgb"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hsl", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["hsl"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lab", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["lab"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hcl", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["hcl"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lch", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["lch"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "gray", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["gray"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cubehelix", function() { return d3_color__WEBPACK_IMPORTED_MODULE_6__["cubehelix"]; });
+
+/* harmony import */ var d3_contour__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3-contour */ "./node_modules/d3-contour/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "contours", function() { return d3_contour__WEBPACK_IMPORTED_MODULE_7__["contours"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "contourDensity", function() { return d3_contour__WEBPACK_IMPORTED_MODULE_7__["contourDensity"]; });
+
+/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! d3-dispatch */ "./node_modules/d3-dispatch/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return d3_dispatch__WEBPACK_IMPORTED_MODULE_8__["dispatch"]; });
+
+/* harmony import */ var d3_drag__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! d3-drag */ "./node_modules/d3-drag/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drag", function() { return d3_drag__WEBPACK_IMPORTED_MODULE_9__["drag"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dragDisable", function() { return d3_drag__WEBPACK_IMPORTED_MODULE_9__["dragDisable"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dragEnable", function() { return d3_drag__WEBPACK_IMPORTED_MODULE_9__["dragEnable"]; });
+
+/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! d3-dsv */ "./node_modules/d3-dsv/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dsvFormat", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["dsvFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvParse", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["csvParse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvParseRows", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["csvParseRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormat", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["csvFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatBody", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["csvFormatBody"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatRows", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["csvFormatRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatRow", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["csvFormatRow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csvFormatValue", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["csvFormatValue"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvParse", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["tsvParse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvParseRows", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["tsvParseRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormat", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["tsvFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatBody", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["tsvFormatBody"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatRows", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["tsvFormatRows"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatRow", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["tsvFormatRow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsvFormatValue", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["tsvFormatValue"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "autoType", function() { return d3_dsv__WEBPACK_IMPORTED_MODULE_10__["autoType"]; });
+
+/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! d3-ease */ "./node_modules/d3-ease/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeLinear", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeLinear"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuad", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeQuad"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuadIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeQuadIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuadOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeQuadOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeQuadInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeQuadInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubic", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCubic"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubicIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCubicIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubicOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCubicOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCubicInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCubicInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePoly", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easePoly"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePolyIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easePolyIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePolyOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easePolyOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easePolyInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easePolyInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSin", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeSin"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSinIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeSinIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSinOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeSinOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeSinInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeSinInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExp", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeExp"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExpIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeExpIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExpOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeExpOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeExpInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeExpInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircle", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCircle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircleIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCircleIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircleOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCircleOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeCircleInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeCircleInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounce", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBounce"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounceIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBounceIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounceOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBounceOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBounceInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBounceInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBack", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBack"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBackIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBackIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBackOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBackOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeBackInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeBackInOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElastic", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeElastic"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElasticIn", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeElasticIn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElasticOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeElasticOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "easeElasticInOut", function() { return d3_ease__WEBPACK_IMPORTED_MODULE_11__["easeElasticInOut"]; });
+
+/* harmony import */ var d3_fetch__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! d3-fetch */ "./node_modules/d3-fetch/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "blob", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["blob"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["buffer"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dsv", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["dsv"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "csv", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["csv"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tsv", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["tsv"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "image", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["image"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "json", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["json"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "text", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["text"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "xml", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["xml"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "html", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["html"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "svg", function() { return d3_fetch__WEBPACK_IMPORTED_MODULE_12__["svg"]; });
+
+/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! d3-force */ "./node_modules/d3-force/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceCenter", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceCenter"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceCollide", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceCollide"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceLink", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceLink"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceManyBody", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceManyBody"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceRadial", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceRadial"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceSimulation", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceSimulation"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceX", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceX"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceY", function() { return d3_force__WEBPACK_IMPORTED_MODULE_13__["forceY"]; });
+
+/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! d3-format */ "./node_modules/d3-format/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatDefaultLocale", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["formatDefaultLocale"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "format", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["format"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatPrefix", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["formatPrefix"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatLocale", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["formatLocale"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "formatSpecifier", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["formatSpecifier"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FormatSpecifier", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["FormatSpecifier"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "precisionFixed", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["precisionFixed"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "precisionPrefix", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["precisionPrefix"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "precisionRound", function() { return d3_format__WEBPACK_IMPORTED_MODULE_14__["precisionRound"]; });
+
+/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! d3-geo */ "./node_modules/d3-geo/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoArea", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoArea"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoBounds", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoBounds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoCentroid", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoCentroid"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoCircle", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoCircle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipAntimeridian", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoClipAntimeridian"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipCircle", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoClipCircle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipExtent", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoClipExtent"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoClipRectangle", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoClipRectangle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoContains", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoContains"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoDistance", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoDistance"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGraticule", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoGraticule"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGraticule10", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoGraticule10"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoInterpolate", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoInterpolate"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoLength", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoLength"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoPath", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoPath"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAlbers", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoAlbers"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAlbersUsa", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoAlbersUsa"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEqualArea", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoAzimuthalEqualArea"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEqualAreaRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoAzimuthalEqualAreaRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEquidistant", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoAzimuthalEquidistant"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoAzimuthalEquidistantRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoAzimuthalEquidistantRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicConformal", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoConicConformal"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicConformalRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoConicConformalRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEqualArea", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoConicEqualArea"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEqualAreaRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoConicEqualAreaRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEquidistant", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoConicEquidistant"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoConicEquidistantRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoConicEquidistantRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEqualEarth", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoEqualEarth"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEqualEarthRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoEqualEarthRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEquirectangular", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoEquirectangular"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoEquirectangularRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoEquirectangularRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGnomonic", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoGnomonic"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoGnomonicRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoGnomonicRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoIdentity", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoIdentity"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoProjection", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoProjection"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoProjectionMutator", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoProjectionMutator"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoMercator", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoMercator"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoMercatorRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoMercatorRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoNaturalEarth1", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoNaturalEarth1"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoNaturalEarth1Raw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoNaturalEarth1Raw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoOrthographic", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoOrthographic"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoOrthographicRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoOrthographicRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoStereographic", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoStereographic"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoStereographicRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoStereographicRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoTransverseMercator", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoTransverseMercator"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoTransverseMercatorRaw", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoTransverseMercatorRaw"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoRotation", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoRotation"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoStream", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoStream"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "geoTransform", function() { return d3_geo__WEBPACK_IMPORTED_MODULE_15__["geoTransform"]; });
+
+/* harmony import */ var d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! d3-hierarchy */ "./node_modules/d3-hierarchy/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cluster", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["cluster"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hierarchy", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["hierarchy"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pack", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["pack"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "packSiblings", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["packSiblings"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "packEnclose", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["packEnclose"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["partition"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stratify", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["stratify"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tree", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["tree"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemap", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["treemap"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapBinary", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["treemapBinary"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapDice", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["treemapDice"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapSlice", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["treemapSlice"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapSliceDice", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["treemapSliceDice"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapSquarify", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["treemapSquarify"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "treemapResquarify", function() { return d3_hierarchy__WEBPACK_IMPORTED_MODULE_16__["treemapResquarify"]; });
+
+/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! d3-interpolate */ "./node_modules/d3-interpolate/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolate", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolate"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateArray", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateArray"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBasis", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateBasis"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBasisClosed", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateBasisClosed"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateDate", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateDate"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateDiscrete", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateDiscrete"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHue", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateHue"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateNumber", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateNumber"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateNumberArray", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateNumberArray"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateObject", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateObject"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRound", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateRound"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateString", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateString"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformCss", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateTransformCss"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformSvg", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateTransformSvg"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateZoom", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateZoom"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRgb", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateRgb"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRgbBasis", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateRgbBasis"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRgbBasisClosed", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateRgbBasisClosed"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHsl", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateHsl"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHslLong", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateHslLong"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateLab", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateLab"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHcl", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateHcl"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateHclLong", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateHclLong"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelix", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateCubehelix"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelixLong", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["interpolateCubehelixLong"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "piecewise", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["piecewise"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "quantize", function() { return d3_interpolate__WEBPACK_IMPORTED_MODULE_17__["quantize"]; });
+
+/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! d3-path */ "./node_modules/d3-path/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "path", function() { return d3_path__WEBPACK_IMPORTED_MODULE_18__["path"]; });
+
+/* harmony import */ var d3_polygon__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! d3-polygon */ "./node_modules/d3-polygon/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonArea", function() { return d3_polygon__WEBPACK_IMPORTED_MODULE_19__["polygonArea"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonCentroid", function() { return d3_polygon__WEBPACK_IMPORTED_MODULE_19__["polygonCentroid"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonHull", function() { return d3_polygon__WEBPACK_IMPORTED_MODULE_19__["polygonHull"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonContains", function() { return d3_polygon__WEBPACK_IMPORTED_MODULE_19__["polygonContains"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "polygonLength", function() { return d3_polygon__WEBPACK_IMPORTED_MODULE_19__["polygonLength"]; });
+
+/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! d3-quadtree */ "./node_modules/d3-quadtree/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "quadtree", function() { return d3_quadtree__WEBPACK_IMPORTED_MODULE_20__["quadtree"]; });
+
+/* harmony import */ var d3_random__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! d3-random */ "./node_modules/d3-random/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomUniform", function() { return d3_random__WEBPACK_IMPORTED_MODULE_21__["randomUniform"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomNormal", function() { return d3_random__WEBPACK_IMPORTED_MODULE_21__["randomNormal"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomLogNormal", function() { return d3_random__WEBPACK_IMPORTED_MODULE_21__["randomLogNormal"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomBates", function() { return d3_random__WEBPACK_IMPORTED_MODULE_21__["randomBates"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomIrwinHall", function() { return d3_random__WEBPACK_IMPORTED_MODULE_21__["randomIrwinHall"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "randomExponential", function() { return d3_random__WEBPACK_IMPORTED_MODULE_21__["randomExponential"]; });
+
+/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! d3-scale */ "./node_modules/d3-scale/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleBand", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleBand"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scalePoint", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scalePoint"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleIdentity", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleIdentity"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleLinear", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleLinear"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleLog", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleLog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSymlog", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSymlog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleOrdinal", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleOrdinal"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleImplicit", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleImplicit"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scalePow", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scalePow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSqrt", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSqrt"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleQuantile", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleQuantile"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleQuantize", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleQuantize"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleThreshold", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleThreshold"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleTime", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleTime"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleUtc", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleUtc"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequential", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSequential"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialLog", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSequentialLog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialPow", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSequentialPow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialSqrt", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSequentialSqrt"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialSymlog", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSequentialSymlog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleSequentialQuantile", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleSequentialQuantile"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDiverging", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleDiverging"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingLog", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleDivergingLog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingPow", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleDivergingPow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingSqrt", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleDivergingSqrt"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleDivergingSymlog", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["scaleDivergingSymlog"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tickFormat", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_22__["tickFormat"]; });
+
+/* harmony import */ var d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! d3-scale-chromatic */ "./node_modules/d3-scale-chromatic/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeCategory10", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeCategory10"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeAccent", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeAccent"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeDark2", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeDark2"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePaired", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePaired"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePastel1", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePastel1"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePastel2", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePastel2"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSet1", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeSet1"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSet2", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeSet2"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSet3", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeSet3"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeTableau10", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeTableau10"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBrBG", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateBrBG"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBrBG", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeBrBG"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePRGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePRGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePRGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePRGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePiYG", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePiYG"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePiYG", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePiYG"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuOr", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePuOr"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuOr", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePuOr"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateRdBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeRdBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdGy", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateRdGy"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdGy", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeRdGy"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdYlBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateRdYlBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdYlBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeRdYlBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdYlGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateRdYlGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdYlGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeRdYlGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateSpectral", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateSpectral"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeSpectral", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeSpectral"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBuGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateBuGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBuGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeBuGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBuPu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateBuPu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBuPu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeBuPu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateGnBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateGnBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeGnBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeGnBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateOrRd", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateOrRd"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeOrRd", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeOrRd"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuBuGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePuBuGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuBuGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePuBuGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePuBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePuBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePuRd", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePuRd"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePuRd", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePuRd"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRdPu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateRdPu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeRdPu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeRdPu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlGnBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateYlGnBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlGnBu", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeYlGnBu"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateYlGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlGn", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeYlGn"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlOrBr", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateYlOrBr"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlOrBr", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeYlOrBr"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateYlOrRd", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateYlOrRd"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeYlOrRd", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeYlOrRd"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateBlues", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateBlues"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeBlues", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeBlues"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateGreens", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateGreens"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeGreens", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeGreens"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateGreys", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateGreys"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeGreys", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeGreys"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePurples", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePurples"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemePurples", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemePurples"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateReds", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateReds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeReds", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeReds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateOranges", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateOranges"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "schemeOranges", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["schemeOranges"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCividis", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateCividis"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelixDefault", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateCubehelixDefault"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateRainbow", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateRainbow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateWarm", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateWarm"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateCool", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateCool"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateSinebow", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateSinebow"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateTurbo", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateTurbo"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateViridis", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateViridis"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateMagma", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateMagma"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolateInferno", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolateInferno"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interpolatePlasma", function() { return d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_23__["interpolatePlasma"]; });
+
+/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! d3-selection */ "./node_modules/d3-selection/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "create", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["create"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "creator", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["creator"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "local", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["local"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "matcher", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["matcher"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mouse", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["mouse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "namespace", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["namespace"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "namespaces", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["namespaces"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clientPoint", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["clientPoint"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "select", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["select"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selectAll", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["selectAll"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selection", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["selection"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selector", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["selector"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selectorAll", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["selectorAll"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "style", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["style"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "touch", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["touch"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "touches", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["touches"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["window"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "event", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["event"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "customEvent", function() { return d3_selection__WEBPACK_IMPORTED_MODULE_24__["customEvent"]; });
+
+/* harmony import */ var d3_shape__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! d3-shape */ "./node_modules/d3-shape/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "arc", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["arc"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "area", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["area"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "line", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["line"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pie", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["pie"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "areaRadial", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["areaRadial"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "radialArea", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["radialArea"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lineRadial", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["lineRadial"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "radialLine", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["radialLine"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pointRadial", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["pointRadial"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "linkHorizontal", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["linkHorizontal"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "linkVertical", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["linkVertical"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "linkRadial", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["linkRadial"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbol", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbol"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbols", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbols"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolCircle", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbolCircle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolCross", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbolCross"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolDiamond", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbolDiamond"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolSquare", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbolSquare"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolStar", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbolStar"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolTriangle", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbolTriangle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symbolWye", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["symbolWye"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBasisClosed", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveBasisClosed"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBasisOpen", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveBasisOpen"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBasis", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveBasis"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveBundle", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveBundle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCardinalClosed", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveCardinalClosed"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCardinalOpen", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveCardinalOpen"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCardinal", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveCardinal"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCatmullRomClosed", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveCatmullRomClosed"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCatmullRomOpen", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveCatmullRomOpen"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveCatmullRom", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveCatmullRom"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveLinearClosed", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveLinearClosed"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveLinear", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveLinear"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveMonotoneX", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveMonotoneX"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveMonotoneY", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveMonotoneY"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveNatural", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveNatural"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveStep", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveStep"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveStepAfter", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveStepAfter"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curveStepBefore", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["curveStepBefore"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stack", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stack"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetExpand", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOffsetExpand"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetDiverging", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOffsetDiverging"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetNone", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOffsetNone"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetSilhouette", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOffsetSilhouette"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOffsetWiggle", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOffsetWiggle"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderAppearance", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOrderAppearance"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderAscending", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOrderAscending"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderDescending", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOrderDescending"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderInsideOut", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOrderInsideOut"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderNone", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOrderNone"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackOrderReverse", function() { return d3_shape__WEBPACK_IMPORTED_MODULE_25__["stackOrderReverse"]; });
+
+/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! d3-time */ "./node_modules/d3-time/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeInterval"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMillisecond", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMillisecond"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMilliseconds", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMilliseconds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMillisecond", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMillisecond"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMilliseconds", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMilliseconds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSecond", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeSecond"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSeconds", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeSeconds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSecond", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcSecond"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSeconds", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcSeconds"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMinute", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMinute"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMinutes", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMinutes"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeHour", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeHour"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeHours", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeHours"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeDay", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeDay"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeDays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeDays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWeek", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeWeek"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWeeks", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeWeeks"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSunday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeSunday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSundays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeSundays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMonday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMonday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMondays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMondays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeTuesday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeTuesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeTuesdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeTuesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWednesday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeWednesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeWednesdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeWednesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeThursday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeThursday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeThursdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeThursdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFriday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeFriday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFridays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeFridays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSaturday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeSaturday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeSaturdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeSaturdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMonth", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMonth"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeMonths", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeMonths"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeYear", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeYear"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeYears", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["timeYears"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMinute", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMinute"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMinutes", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMinutes"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcHour", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcHour"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcHours", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcHours"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcDay", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcDay"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcDays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcDays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWeek", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcWeek"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWeeks", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcWeeks"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSunday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcSunday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSundays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcSundays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMonday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMonday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMondays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMondays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcTuesday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcTuesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcTuesdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcTuesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWednesday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcWednesday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcWednesdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcWednesdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcThursday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcThursday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcThursdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcThursdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcFriday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcFriday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcFridays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcFridays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSaturday", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcSaturday"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcSaturdays", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcSaturdays"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMonth", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMonth"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcMonths", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcMonths"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcYear", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcYear"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcYears", function() { return d3_time__WEBPACK_IMPORTED_MODULE_26__["utcYears"]; });
+
+/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! d3-time-format */ "./node_modules/d3-time-format/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFormatDefaultLocale", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["timeFormatDefaultLocale"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFormat", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["timeFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeParse", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["timeParse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcFormat", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["utcFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "utcParse", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["utcParse"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeFormatLocale", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["timeFormatLocale"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isoFormat", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["isoFormat"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isoParse", function() { return d3_time_format__WEBPACK_IMPORTED_MODULE_27__["isoParse"]; });
+
+/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! d3-timer */ "./node_modules/d3-timer/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "now", function() { return d3_timer__WEBPACK_IMPORTED_MODULE_28__["now"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return d3_timer__WEBPACK_IMPORTED_MODULE_28__["timer"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timerFlush", function() { return d3_timer__WEBPACK_IMPORTED_MODULE_28__["timerFlush"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return d3_timer__WEBPACK_IMPORTED_MODULE_28__["timeout"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return d3_timer__WEBPACK_IMPORTED_MODULE_28__["interval"]; });
+
+/* harmony import */ var d3_transition__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! d3-transition */ "./node_modules/d3-transition/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return d3_transition__WEBPACK_IMPORTED_MODULE_29__["transition"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "active", function() { return d3_transition__WEBPACK_IMPORTED_MODULE_29__["active"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interrupt", function() { return d3_transition__WEBPACK_IMPORTED_MODULE_29__["interrupt"]; });
+
+/* harmony import */ var d3_voronoi__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! d3-voronoi */ "./node_modules/d3-voronoi/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "voronoi", function() { return d3_voronoi__WEBPACK_IMPORTED_MODULE_30__["voronoi"]; });
+
+/* harmony import */ var d3_zoom__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! d3-zoom */ "./node_modules/d3-zoom/src/index.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zoom", function() { return d3_zoom__WEBPACK_IMPORTED_MODULE_31__["zoom"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zoomTransform", function() { return d3_zoom__WEBPACK_IMPORTED_MODULE_31__["zoomTransform"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zoomIdentity", function() { return d3_zoom__WEBPACK_IMPORTED_MODULE_31__["zoomIdentity"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/index.js":
+/*!****************************************!*\
+  !*** ./node_modules/dagre-d3/index.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/**
+ * @license
+ * Copyright (c) 2012-2013 Chris Pettitt
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+module.exports =  {
+  graphlib: __webpack_require__(/*! ./lib/graphlib */ "./node_modules/dagre-d3/lib/graphlib.js"),
+  dagre: __webpack_require__(/*! ./lib/dagre */ "./node_modules/dagre-d3/lib/dagre.js"),
+  intersect: __webpack_require__(/*! ./lib/intersect */ "./node_modules/dagre-d3/lib/intersect/index.js"),
+  render: __webpack_require__(/*! ./lib/render */ "./node_modules/dagre-d3/lib/render.js"),
+  util: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre-d3/lib/util.js"),
+  version: __webpack_require__(/*! ./lib/version */ "./node_modules/dagre-d3/lib/version.js")
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/arrows.js":
+/*!*********************************************!*\
+  !*** ./node_modules/dagre-d3/lib/arrows.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+
+module.exports = {
+  "default": normal,
+  "normal": normal,
+  "vee": vee,
+  "undirected": undirected
+};
+
+function normal(parent, id, edge, type) {
+  var marker = parent.append("marker")
+    .attr("id", id)
+    .attr("viewBox", "0 0 10 10")
+    .attr("refX", 9)
+    .attr("refY", 5)
+    .attr("markerUnits", "strokeWidth")
+    .attr("markerWidth", 8)
+    .attr("markerHeight", 6)
+    .attr("orient", "auto");
+
+  var path = marker.append("path")
+    .attr("d", "M 0 0 L 10 5 L 0 10 z")
+    .style("stroke-width", 1)
+    .style("stroke-dasharray", "1,0");
+  util.applyStyle(path, edge[type + "Style"]);
+  if (edge[type + "Class"]) {
+    path.attr("class", edge[type + "Class"]);
+  }
+}
+
+function vee(parent, id, edge, type) {
+  var marker = parent.append("marker")
+    .attr("id", id)
+    .attr("viewBox", "0 0 10 10")
+    .attr("refX", 9)
+    .attr("refY", 5)
+    .attr("markerUnits", "strokeWidth")
+    .attr("markerWidth", 8)
+    .attr("markerHeight", 6)
+    .attr("orient", "auto");
+
+  var path = marker.append("path")
+    .attr("d", "M 0 0 L 10 5 L 0 10 L 4 5 z")
+    .style("stroke-width", 1)
+    .style("stroke-dasharray", "1,0");
+  util.applyStyle(path, edge[type + "Style"]);
+  if (edge[type + "Class"]) {
+    path.attr("class", edge[type + "Class"]);
+  }
+}
+
+function undirected(parent, id, edge, type) {
+  var marker = parent.append("marker")
+    .attr("id", id)
+    .attr("viewBox", "0 0 10 10")
+    .attr("refX", 9)
+    .attr("refY", 5)
+    .attr("markerUnits", "strokeWidth")
+    .attr("markerWidth", 8)
+    .attr("markerHeight", 6)
+    .attr("orient", "auto");
+
+  var path = marker.append("path")
+    .attr("d", "M 0 5 L 10 5")
+    .style("stroke-width", 1)
+    .style("stroke-dasharray", "1,0");
+  util.applyStyle(path, edge[type + "Style"]);
+  if (edge[type + "Class"]) {
+    path.attr("class", edge[type + "Class"]);
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/create-clusters.js":
+/*!******************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/create-clusters.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+var addLabel = __webpack_require__(/*! ./label/add-label */ "./node_modules/dagre-d3/lib/label/add-label.js");
+
+module.exports = createClusters;
+
+function createClusters(selection, g) {
+  var clusters = g.nodes().filter(function(v) { return util.isSubgraph(g, v); });
+  var svgClusters = selection.selectAll("g.cluster")
+    .data(clusters, function(v) { return v; });
+
+  svgClusters.selectAll("*").remove();
+  svgClusters.enter().append("g")
+    .attr("class", "cluster")
+    .attr("id",function(v){
+      var node = g.node(v);
+      return node.id;
+    })
+    .style("opacity", 0);
+  
+  svgClusters = selection.selectAll("g.cluster");
+
+  util.applyTransition(svgClusters, g)
+    .style("opacity", 1);
+
+  svgClusters.each(function(v) {
+    var node = g.node(v);
+    var thisGroup = d3.select(this);
+    d3.select(this).append("rect");
+    var labelGroup = thisGroup.append("g").attr("class", "label");
+    addLabel(labelGroup, node, node.clusterLabelPos);
+  });
+
+  svgClusters.selectAll("rect").each(function(c) {
+    var node = g.node(c);
+    var domCluster = d3.select(this);
+    util.applyStyle(domCluster, node.style);
+  });
+
+  var exitSelection;
+
+  if (svgClusters.exit) {
+    exitSelection = svgClusters.exit();
+  } else {
+    exitSelection = svgClusters.selectAll(null); // empty selection
+  }
+
+  util.applyTransition(exitSelection, g)
+    .style("opacity", 0)
+    .remove();
+
+  return svgClusters;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/create-edge-labels.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/create-edge-labels.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre-d3/lib/lodash.js");
+var addLabel = __webpack_require__(/*! ./label/add-label */ "./node_modules/dagre-d3/lib/label/add-label.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+
+module.exports = createEdgeLabels;
+
+function createEdgeLabels(selection, g) {
+  var svgEdgeLabels = selection.selectAll("g.edgeLabel")
+    .data(g.edges(), function(e) { return util.edgeToId(e); })
+    .classed("update", true);
+
+  svgEdgeLabels.exit().remove();
+  svgEdgeLabels.enter().append("g")
+    .classed("edgeLabel", true)
+    .style("opacity", 0);
+
+  svgEdgeLabels = selection.selectAll("g.edgeLabel");
+
+  svgEdgeLabels.each(function(e) {
+    var root = d3.select(this);
+    root.select(".label").remove();
+    var edge = g.edge(e);
+    var label = addLabel(root, g.edge(e), 0, 0).classed("label", true);
+    var bbox = label.node().getBBox();
+
+    if (edge.labelId) { label.attr("id", edge.labelId); }
+    if (!_.has(edge, "width")) { edge.width = bbox.width; }
+    if (!_.has(edge, "height")) { edge.height = bbox.height; }
+  });
+
+  var exitSelection;
+
+  if (svgEdgeLabels.exit) {
+    exitSelection = svgEdgeLabels.exit();
+  } else {
+    exitSelection = svgEdgeLabels.selectAll(null); // empty selection
+  }
+
+  util.applyTransition(exitSelection, g)
+    .style("opacity", 0)
+    .remove();
+
+  return svgEdgeLabels;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/create-edge-paths.js":
+/*!********************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/create-edge-paths.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre-d3/lib/lodash.js");
+var intersectNode = __webpack_require__(/*! ./intersect/intersect-node */ "./node_modules/dagre-d3/lib/intersect/intersect-node.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+module.exports = createEdgePaths;
+
+function createEdgePaths(selection, g, arrows) {
+  var previousPaths = selection.selectAll("g.edgePath")
+    .data(g.edges(), function(e) { return util.edgeToId(e); })
+    .classed("update", true);
+
+  var newPaths = enter(previousPaths, g);
+  exit(previousPaths, g);
+
+  var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;
+  util.applyTransition(svgPaths, g)
+    .style("opacity", 1);
+
+  // Save DOM element in the path group, and set ID and class
+  svgPaths.each(function(e) {
+    var domEdge = d3.select(this);
+    var edge = g.edge(e);
+    edge.elem = this;
+
+    if (edge.id) {
+      domEdge.attr("id", edge.id);
+    }
+
+    util.applyClass(domEdge, edge["class"],
+      (domEdge.classed("update") ? "update " : "") + "edgePath");
+  });
+
+  svgPaths.selectAll("path.path")
+    .each(function(e) {
+      var edge = g.edge(e);
+      edge.arrowheadId = _.uniqueId("arrowhead");
+
+      var domEdge = d3.select(this)
+        .attr("marker-end", function() {
+          return "url(" + makeFragmentRef(location.href, edge.arrowheadId) + ")";
+        })
+        .style("fill", "none");
+
+      util.applyTransition(domEdge, g)
+        .attr("d", function(e) { return calcPoints(g, e); });
+
+      util.applyStyle(domEdge, edge.style);
+    });
+
+  svgPaths.selectAll("defs *").remove();
+  svgPaths.selectAll("defs")
+    .each(function(e) {
+      var edge = g.edge(e);
+      var arrowhead = arrows[edge.arrowhead];
+      arrowhead(d3.select(this), edge.arrowheadId, edge, "arrowhead");
+    });
+
+  return svgPaths;
+}
+
+function makeFragmentRef(url, fragmentId) {
+  var baseUrl = url.split("#")[0];
+  return baseUrl + "#" + fragmentId;
+}
+
+function calcPoints(g, e) {
+  var edge = g.edge(e);
+  var tail = g.node(e.v);
+  var head = g.node(e.w);
+  var points = edge.points.slice(1, edge.points.length - 1);
+  points.unshift(intersectNode(tail, points[0]));
+  points.push(intersectNode(head, points[points.length - 1]));
+
+  return createLine(edge, points);
+}
+
+function createLine(edge, points) {
+  var line = (d3.line || d3.svg.line)()
+    .x(function(d) { return d.x; })
+    .y(function(d) { return d.y; });
+  
+  (line.curve || line.interpolate)(edge.curve);
+
+  return line(points);
+}
+
+function getCoords(elem) {
+  var bbox = elem.getBBox();
+  var matrix = elem.ownerSVGElement.getScreenCTM()
+    .inverse()
+    .multiply(elem.getScreenCTM())
+    .translate(bbox.width / 2, bbox.height / 2);
+  return { x: matrix.e, y: matrix.f };
+}
+
+function enter(svgPaths, g) {
+  var svgPathsEnter = svgPaths.enter().append("g")
+    .attr("class", "edgePath")
+    .style("opacity", 0);
+  svgPathsEnter.append("path")
+    .attr("class", "path")
+    .attr("d", function(e) {
+      var edge = g.edge(e);
+      var sourceElem = g.node(e.v).elem;
+      var points = _.range(edge.points.length).map(function() { return getCoords(sourceElem); });
+      return createLine(edge, points);
+    });
+  svgPathsEnter.append("defs");
+  return svgPathsEnter;
+}
+
+function exit(svgPaths, g) {
+  var svgPathExit = svgPaths.exit();
+  util.applyTransition(svgPathExit, g)
+    .style("opacity", 0)
+    .remove();
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/create-nodes.js":
+/*!***************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/create-nodes.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre-d3/lib/lodash.js");
+var addLabel = __webpack_require__(/*! ./label/add-label */ "./node_modules/dagre-d3/lib/label/add-label.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+
+module.exports = createNodes;
+
+function createNodes(selection, g, shapes) {
+  var simpleNodes = g.nodes().filter(function(v) { return !util.isSubgraph(g, v); });
+  var svgNodes = selection.selectAll("g.node")
+    .data(simpleNodes, function(v) { return v; })
+    .classed("update", true);
+
+  svgNodes.exit().remove();
+
+  svgNodes.enter().append("g")
+    .attr("class", "node")
+    .style("opacity", 0);
+
+  svgNodes = selection.selectAll("g.node"); 
+
+  svgNodes.each(function(v) {
+    var node = g.node(v);
+    var thisGroup = d3.select(this);
+    util.applyClass(thisGroup, node["class"],
+      (thisGroup.classed("update") ? "update " : "") + "node");
+
+    thisGroup.select("g.label").remove();
+    var labelGroup = thisGroup.append("g").attr("class", "label");
+    var labelDom = addLabel(labelGroup, node);
+    var shape = shapes[node.shape];
+    var bbox = _.pick(labelDom.node().getBBox(), "width", "height");
+
+    node.elem = this;
+
+    if (node.id) { thisGroup.attr("id", node.id); }
+    if (node.labelId) { labelGroup.attr("id", node.labelId); }
+
+    if (_.has(node, "width")) { bbox.width = node.width; }
+    if (_.has(node, "height")) { bbox.height = node.height; }
+
+    bbox.width += node.paddingLeft + node.paddingRight;
+    bbox.height += node.paddingTop + node.paddingBottom;
+    labelGroup.attr("transform", "translate(" +
+      ((node.paddingLeft - node.paddingRight) / 2) + "," +
+      ((node.paddingTop - node.paddingBottom) / 2) + ")");
+
+    var root = d3.select(this);
+    root.select(".label-container").remove();
+    var shapeSvg = shape(root, bbox, node).classed("label-container", true);
+    util.applyStyle(shapeSvg, node.style);
+
+    var shapeBBox = shapeSvg.node().getBBox();
+    node.width = shapeBBox.width;
+    node.height = shapeBBox.height;
+  });
+
+  var exitSelection;
+
+  if (svgNodes.exit) {
+    exitSelection = svgNodes.exit();
+  } else {
+    exitSelection = svgNodes.selectAll(null); // empty selection
+  }
+
+  util.applyTransition(exitSelection, g)
+    .style("opacity", 0)
+    .remove();
+
+  return svgNodes;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/d3.js":
+/*!*****************************************!*\
+  !*** ./node_modules/dagre-d3/lib/d3.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Stub to get D3 either via NPM or from the global object
+var d3;
+
+if (!d3) {
+  if (true) {
+    try {
+      d3 = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+    }
+    catch (e) {
+      // continue regardless of error
+    }
+  }
+}
+
+if (!d3) {
+  d3 = window.d3;
+}
+
+module.exports = d3;
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/dagre.js":
+/*!********************************************!*\
+  !*** ./node_modules/dagre-d3/lib/dagre.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* global window */
+
+var dagre;
+
+if (true) {
+  try {
+    dagre = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js");
+  } catch (e) {
+    // continue regardless of error
+  }
+}
+
+if (!dagre) {
+  dagre = window.dagre;
+}
+
+module.exports = dagre;
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/graphlib.js":
+/*!***********************************************!*\
+  !*** ./node_modules/dagre-d3/lib/graphlib.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* global window */
+
+var graphlib;
+
+if (true) {
+  try {
+    graphlib = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+  }
+  catch (e) {
+    // continue regardless of error
+  }
+}
+
+if (!graphlib) {
+  graphlib = window.graphlib;
+}
+
+module.exports = graphlib;
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/intersect/index.js":
+/*!******************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/intersect/index.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = {
+  node: __webpack_require__(/*! ./intersect-node */ "./node_modules/dagre-d3/lib/intersect/intersect-node.js"),
+  circle: __webpack_require__(/*! ./intersect-circle */ "./node_modules/dagre-d3/lib/intersect/intersect-circle.js"),
+  ellipse: __webpack_require__(/*! ./intersect-ellipse */ "./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js"),
+  polygon: __webpack_require__(/*! ./intersect-polygon */ "./node_modules/dagre-d3/lib/intersect/intersect-polygon.js"),
+  rect: __webpack_require__(/*! ./intersect-rect */ "./node_modules/dagre-d3/lib/intersect/intersect-rect.js")
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/intersect/intersect-circle.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/intersect/intersect-circle.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var intersectEllipse = __webpack_require__(/*! ./intersect-ellipse */ "./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js");
+
+module.exports = intersectCircle;
+
+function intersectCircle(node, rx, point) {
+  return intersectEllipse(node, rx, rx, point);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = intersectEllipse;
+
+function intersectEllipse(node, rx, ry, point) {
+  // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html
+
+  var cx = node.x;
+  var cy = node.y;
+
+  var px = cx - point.x;
+  var py = cy - point.y;
+
+  var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);
+
+  var dx = Math.abs(rx * ry * px / det);
+  if (point.x < cx) {
+    dx = -dx;
+  }
+  var dy = Math.abs(rx * ry * py / det);
+  if (point.y < cy) {
+    dy = -dy;
+  }
+
+  return {x: cx + dx, y: cy + dy};
+}
+
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/intersect/intersect-line.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/intersect/intersect-line.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = intersectLine;
+
+/*
+ * Returns the point at which two lines, p and q, intersect or returns
+ * undefined if they do not intersect.
+ */
+function intersectLine(p1, p2, q1, q2) {
+  // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,
+  // p7 and p473.
+
+  var a1, a2, b1, b2, c1, c2;
+  var r1, r2 , r3, r4;
+  var denom, offset, num;
+  var x, y;
+
+  // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +
+  // b1 y + c1 = 0.
+  a1 = p2.y - p1.y;
+  b1 = p1.x - p2.x;
+  c1 = (p2.x * p1.y) - (p1.x * p2.y);
+
+  // Compute r3 and r4.
+  r3 = ((a1 * q1.x) + (b1 * q1.y) + c1);
+  r4 = ((a1 * q2.x) + (b1 * q2.y) + c1);
+
+  // Check signs of r3 and r4. If both point 3 and point 4 lie on
+  // same side of line 1, the line segments do not intersect.
+  if ((r3 !== 0) && (r4 !== 0) && sameSign(r3, r4)) {
+    return /*DONT_INTERSECT*/;
+  }
+
+  // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0
+  a2 = q2.y - q1.y;
+  b2 = q1.x - q2.x;
+  c2 = (q2.x * q1.y) - (q1.x * q2.y);
+
+  // Compute r1 and r2
+  r1 = (a2 * p1.x) + (b2 * p1.y) + c2;
+  r2 = (a2 * p2.x) + (b2 * p2.y) + c2;
+
+  // Check signs of r1 and r2. If both point 1 and point 2 lie
+  // on same side of second line segment, the line segments do
+  // not intersect.
+  if ((r1 !== 0) && (r2 !== 0) && (sameSign(r1, r2))) {
+    return /*DONT_INTERSECT*/;
+  }
+
+  // Line segments intersect: compute intersection point.
+  denom = (a1 * b2) - (a2 * b1);
+  if (denom === 0) {
+    return /*COLLINEAR*/;
+  }
+
+  offset = Math.abs(denom / 2);
+
+  // The denom/2 is to get rounding instead of truncating. It
+  // is added or subtracted to the numerator, depending upon the
+  // sign of the numerator.
+  num = (b1 * c2) - (b2 * c1);
+  x = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);
+
+  num = (a2 * c1) - (a1 * c2);
+  y = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);
+
+  return { x: x, y: y };
+}
+
+function sameSign(r1, r2) {
+  return r1 * r2 > 0;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/intersect/intersect-node.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/intersect/intersect-node.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = intersectNode;
+
+function intersectNode(node, point) {
+  return node.intersect(point);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/intersect/intersect-polygon.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/intersect/intersect-polygon.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* eslint "no-console": off */
+
+var intersectLine = __webpack_require__(/*! ./intersect-line */ "./node_modules/dagre-d3/lib/intersect/intersect-line.js");
+
+module.exports = intersectPolygon;
+
+/*
+ * Returns the point ({x, y}) at which the point argument intersects with the
+ * node argument assuming that it has the shape specified by polygon.
+ */
+function intersectPolygon(node, polyPoints, point) {
+  var x1 = node.x;
+  var y1 = node.y;
+
+  var intersections = [];
+
+  var minX = Number.POSITIVE_INFINITY;
+  var minY = Number.POSITIVE_INFINITY;
+  polyPoints.forEach(function(entry) {
+    minX = Math.min(minX, entry.x);
+    minY = Math.min(minY, entry.y);
+  });
+
+  var left = x1 - node.width / 2 - minX;
+  var top =  y1 - node.height / 2 - minY;
+
+  for (var i = 0; i < polyPoints.length; i++) {
+    var p1 = polyPoints[i];
+    var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];
+    var intersect = intersectLine(node, point,
+      {x: left + p1.x, y: top + p1.y}, {x: left + p2.x, y: top + p2.y});
+    if (intersect) {
+      intersections.push(intersect);
+    }
+  }
+
+  if (!intersections.length) {
+    console.log("NO INTERSECTION FOUND, RETURN NODE CENTER", node);
+    return node;
+  }
+
+  if (intersections.length > 1) {
+    // More intersections, find the one nearest to edge end point
+    intersections.sort(function(p, q) {
+      var pdx = p.x - point.x;
+      var pdy = p.y - point.y;
+      var distp = Math.sqrt(pdx * pdx + pdy * pdy);
+
+      var qdx = q.x - point.x;
+      var qdy = q.y - point.y;
+      var distq = Math.sqrt(qdx * qdx + qdy * qdy);
+
+      return (distp < distq) ? -1 : (distp === distq ? 0 : 1);
+    });
+  }
+  return intersections[0];
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/intersect/intersect-rect.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/intersect/intersect-rect.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = intersectRect;
+
+function intersectRect(node, point) {
+  var x = node.x;
+  var y = node.y;
+
+  // Rectangle intersection algorithm from:
+  // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes
+  var dx = point.x - x;
+  var dy = point.y - y;
+  var w = node.width / 2;
+  var h = node.height / 2;
+
+  var sx, sy;
+  if (Math.abs(dy) * w > Math.abs(dx) * h) {
+    // Intersection is top or bottom of rect.
+    if (dy < 0) {
+      h = -h;
+    }
+    sx = dy === 0 ? 0 : h * dx / dy;
+    sy = h;
+  } else {
+    // Intersection is left or right of rect.
+    if (dx < 0) {
+      w = -w;
+    }
+    sx = w;
+    sy = dx === 0 ? 0 : w * dy / dx;
+  }
+
+  return {x: x + sx, y: y + sy};
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/label/add-html-label.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/label/add-html-label.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var util = __webpack_require__(/*! ../util */ "./node_modules/dagre-d3/lib/util.js");
+
+module.exports = addHtmlLabel;
+
+function addHtmlLabel(root, node) {
+  var fo = root
+    .append("foreignObject")
+    .attr("width", "100000");
+
+  var div = fo
+    .append("xhtml:div");
+  div.attr("xmlns", "http://www.w3.org/1999/xhtml");
+
+  var label = node.label;
+  switch(typeof label) {
+  case "function":
+    div.insert(label);
+    break;
+  case "object":
+    // Currently we assume this is a DOM object.
+    div.insert(function() { return label; });
+    break;
+  default: div.html(label);
+  }
+
+  util.applyStyle(div, node.labelStyle);
+  div.style("display", "inline-block");
+  // Fix for firefox
+  div.style("white-space", "nowrap");
+  var fontsize = div.style.fontsize;    
+  div.style("font-size","x-large");
+  var client = div.node().getBoundingClientRect();
+  div.style("font-size",fontsize);
+  fo
+    .attr("width", client.width)
+    .attr("height", client.height);
+
+  return fo;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/label/add-label.js":
+/*!******************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/label/add-label.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var addTextLabel = __webpack_require__(/*! ./add-text-label */ "./node_modules/dagre-d3/lib/label/add-text-label.js");
+var addHtmlLabel = __webpack_require__(/*! ./add-html-label */ "./node_modules/dagre-d3/lib/label/add-html-label.js");
+var addSVGLabel  = __webpack_require__(/*! ./add-svg-label */ "./node_modules/dagre-d3/lib/label/add-svg-label.js");
+
+module.exports = addLabel;
+
+function addLabel(root, node, location) {
+  var label = node.label;
+  var labelSvg = root.append("g");
+
+  // Allow the label to be a string, a function that returns a DOM element, or
+  // a DOM element itself.
+  if (node.labelType === "svg") {
+    addSVGLabel(labelSvg, node);
+  } else if (typeof label !== "string" || node.labelType === "html") {
+    addHtmlLabel(labelSvg, node);
+  } else {
+    addTextLabel(labelSvg, node);
+  }
+
+  var labelBBox = labelSvg.node().getBBox();
+  var y;
+  switch(location) {
+  case "top":
+    y = (-node.height / 2);
+    break;
+  case "bottom":
+    y = (node.height / 2) - labelBBox.height;
+    break;
+  default:
+    y = (-labelBBox.height / 2);
+  }
+  labelSvg.attr(
+    "transform",
+    "translate(" + (-labelBBox.width / 2) + "," + y + ")");
+
+  return labelSvg;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/label/add-svg-label.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/label/add-svg-label.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var util = __webpack_require__(/*! ../util */ "./node_modules/dagre-d3/lib/util.js");
+
+module.exports = addSVGLabel;
+
+function addSVGLabel(root, node) {
+  var domNode = root;
+
+  domNode.node().appendChild(node.label);
+
+  util.applyStyle(domNode, node.labelStyle);
+
+  return domNode;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/label/add-text-label.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/label/add-text-label.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var util = __webpack_require__(/*! ../util */ "./node_modules/dagre-d3/lib/util.js");
+
+module.exports = addTextLabel;
+
+/*
+ * Attaches a text label to the specified root. Handles escape sequences.
+ */
+function addTextLabel(root, node) {
+  var domNode = root.append("text");
+
+  var lines = processEscapeSequences(node.label).split("\n");
+  for (var i = 0; i < lines.length; i++) {
+    domNode.append("tspan")
+      .attr("xml:space", "preserve")
+      .attr("dy", "1em")
+      .attr("x", "1")
+      .text(lines[i]);
+  }
+
+  util.applyStyle(domNode, node.labelStyle);
+
+  return domNode;
+}
+
+function processEscapeSequences(text) {
+  var newText = "";
+  var escaped = false;
+  var ch;
+  for (var i = 0; i < text.length; ++i) {
+    ch = text[i];
+    if (escaped) {
+      switch(ch) {
+      case "n": newText += "\n"; break;
+      default: newText += ch;
+      }
+      escaped = false;
+    } else if (ch === "\\") {
+      escaped = true;
+    } else {
+      newText += ch;
+    }
+  }
+  return newText;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/lodash.js":
+/*!*********************************************!*\
+  !*** ./node_modules/dagre-d3/lib/lodash.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* global window */
+
+var lodash;
+
+if (true) {
+  try {
+    lodash = {
+      defaults: __webpack_require__(/*! lodash/defaults */ "./node_modules/lodash/defaults.js"),
+      each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"),
+      isFunction: __webpack_require__(/*! lodash/isFunction */ "./node_modules/lodash/isFunction.js"),
+      isPlainObject: __webpack_require__(/*! lodash/isPlainObject */ "./node_modules/lodash/isPlainObject.js"),
+      pick: __webpack_require__(/*! lodash/pick */ "./node_modules/lodash/pick.js"),
+      has: __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"),
+      range: __webpack_require__(/*! lodash/range */ "./node_modules/lodash/range.js"),
+      uniqueId: __webpack_require__(/*! lodash/uniqueId */ "./node_modules/lodash/uniqueId.js")
+    };
+  }
+  catch (e) {
+    // continue regardless of error
+  }
+}
+
+if (!lodash) {
+  lodash = window._;
+}
+
+module.exports = lodash;
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/position-clusters.js":
+/*!********************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/position-clusters.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+
+module.exports = positionClusters;
+
+function positionClusters(selection, g) {
+  var created = selection.filter(function() { return !d3.select(this).classed("update"); });
+
+  function translate(v) {
+    var node = g.node(v);
+    return "translate(" + node.x + "," + node.y + ")";
+  }
+
+  created.attr("transform", translate);
+
+  util.applyTransition(selection, g)
+    .style("opacity", 1)
+    .attr("transform", translate);
+
+  util.applyTransition(created.selectAll("rect"), g)
+    .attr("width", function(v) { return g.node(v).width; })
+    .attr("height", function(v) { return g.node(v).height; })
+    .attr("x", function(v) {
+      var node = g.node(v);
+      return -node.width / 2;
+    })
+    .attr("y", function(v) {
+      var node = g.node(v);
+      return -node.height / 2;
+    });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/position-edge-labels.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/position-edge-labels.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre-d3/lib/lodash.js");
+
+module.exports = positionEdgeLabels;
+
+function positionEdgeLabels(selection, g) {
+  var created = selection.filter(function() { return !d3.select(this).classed("update"); });
+
+  function translate(e) {
+    var edge = g.edge(e);
+    return _.has(edge, "x") ? "translate(" + edge.x + "," + edge.y + ")" : "";
+  }
+
+  created.attr("transform", translate);
+
+  util.applyTransition(selection, g)
+    .style("opacity", 1)
+    .attr("transform", translate);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/position-nodes.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/dagre-d3/lib/position-nodes.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre-d3/lib/util.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+
+module.exports = positionNodes;
+
+function positionNodes(selection, g) {
+  var created = selection.filter(function() { return !d3.select(this).classed("update"); });
+
+  function translate(v) {
+    var node = g.node(v);
+    return "translate(" + node.x + "," + node.y + ")";
+  }
+
+  created.attr("transform", translate);
+
+  util.applyTransition(selection, g)
+    .style("opacity", 1)
+    .attr("transform", translate);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/render.js":
+/*!*********************************************!*\
+  !*** ./node_modules/dagre-d3/lib/render.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre-d3/lib/lodash.js");
+var d3 = __webpack_require__(/*! ./d3 */ "./node_modules/dagre-d3/lib/d3.js");
+var layout = __webpack_require__(/*! ./dagre */ "./node_modules/dagre-d3/lib/dagre.js").layout;
+
+module.exports = render;
+
+// This design is based on http://bost.ocks.org/mike/chart/.
+function render() {
+  var createNodes = __webpack_require__(/*! ./create-nodes */ "./node_modules/dagre-d3/lib/create-nodes.js");
+  var createClusters = __webpack_require__(/*! ./create-clusters */ "./node_modules/dagre-d3/lib/create-clusters.js");
+  var createEdgeLabels = __webpack_require__(/*! ./create-edge-labels */ "./node_modules/dagre-d3/lib/create-edge-labels.js");
+  var createEdgePaths = __webpack_require__(/*! ./create-edge-paths */ "./node_modules/dagre-d3/lib/create-edge-paths.js");
+  var positionNodes = __webpack_require__(/*! ./position-nodes */ "./node_modules/dagre-d3/lib/position-nodes.js");
+  var positionEdgeLabels = __webpack_require__(/*! ./position-edge-labels */ "./node_modules/dagre-d3/lib/position-edge-labels.js");
+  var positionClusters = __webpack_require__(/*! ./position-clusters */ "./node_modules/dagre-d3/lib/position-clusters.js");
+  var shapes = __webpack_require__(/*! ./shapes */ "./node_modules/dagre-d3/lib/shapes.js");
+  var arrows = __webpack_require__(/*! ./arrows */ "./node_modules/dagre-d3/lib/arrows.js");
+
+  var fn = function(svg, g) {
+    preProcessGraph(g);
+
+    var outputGroup = createOrSelectGroup(svg, "output");
+    var clustersGroup = createOrSelectGroup(outputGroup, "clusters");
+    var edgePathsGroup = createOrSelectGroup(outputGroup, "edgePaths");
+    var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, "edgeLabels"), g);
+    var nodes = createNodes(createOrSelectGroup(outputGroup, "nodes"), g, shapes);
+
+    layout(g);
+
+    positionNodes(nodes, g);
+    positionEdgeLabels(edgeLabels, g);
+    createEdgePaths(edgePathsGroup, g, arrows);
+
+    var clusters = createClusters(clustersGroup, g);
+    positionClusters(clusters, g);
+
+    postProcessGraph(g);
+  };
+
+  fn.createNodes = function(value) {
+    if (!arguments.length) return createNodes;
+    createNodes = value;
+    return fn;
+  };
+
+  fn.createClusters = function(value) {
+    if (!arguments.length) return createClusters;
+    createClusters = value;
+    return fn;
+  };
+
+  fn.createEdgeLabels = function(value) {
+    if (!arguments.length) return createEdgeLabels;
+    createEdgeLabels = value;
+    return fn;
+  };
+
+  fn.createEdgePaths = function(value) {
+    if (!arguments.length) return createEdgePaths;
+    createEdgePaths = value;
+    return fn;
+  };
+
+  fn.shapes = function(value) {
+    if (!arguments.length) return shapes;
+    shapes = value;
+    return fn;
+  };
+
+  fn.arrows = function(value) {
+    if (!arguments.length) return arrows;
+    arrows = value;
+    return fn;
+  };
+
+  return fn;
+}
+
+var NODE_DEFAULT_ATTRS = {
+  paddingLeft: 10,
+  paddingRight: 10,
+  paddingTop: 10,
+  paddingBottom: 10,
+  rx: 0,
+  ry: 0,
+  shape: "rect"
+};
+
+var EDGE_DEFAULT_ATTRS = {
+  arrowhead: "normal",
+  curve: d3.curveLinear
+};
+
+function preProcessGraph(g) {
+  g.nodes().forEach(function(v) {
+    var node = g.node(v);
+    if (!_.has(node, "label") && !g.children(v).length) { node.label = v; }
+
+    if (_.has(node, "paddingX")) {
+      _.defaults(node, {
+        paddingLeft: node.paddingX,
+        paddingRight: node.paddingX
+      });
+    }
+
+    if (_.has(node, "paddingY")) {
+      _.defaults(node, {
+        paddingTop: node.paddingY,
+        paddingBottom: node.paddingY
+      });
+    }
+
+    if (_.has(node, "padding")) {
+      _.defaults(node, {
+        paddingLeft: node.padding,
+        paddingRight: node.padding,
+        paddingTop: node.padding,
+        paddingBottom: node.padding
+      });
+    }
+
+    _.defaults(node, NODE_DEFAULT_ATTRS);
+
+    _.each(["paddingLeft", "paddingRight", "paddingTop", "paddingBottom"], function(k) {
+      node[k] = Number(node[k]);
+    });
+
+    // Save dimensions for restore during post-processing
+    if (_.has(node, "width")) { node._prevWidth = node.width; }
+    if (_.has(node, "height")) { node._prevHeight = node.height; }
+  });
+
+  g.edges().forEach(function(e) {
+    var edge = g.edge(e);
+    if (!_.has(edge, "label")) { edge.label = ""; }
+    _.defaults(edge, EDGE_DEFAULT_ATTRS);
+  });
+}
+
+function postProcessGraph(g) {
+  _.each(g.nodes(), function(v) {
+    var node = g.node(v);
+
+    // Restore original dimensions
+    if (_.has(node, "_prevWidth")) {
+      node.width = node._prevWidth;
+    } else {
+      delete node.width;
+    }
+
+    if (_.has(node, "_prevHeight")) {
+      node.height = node._prevHeight;
+    } else {
+      delete node.height;
+    }
+
+    delete node._prevWidth;
+    delete node._prevHeight;
+  });
+}
+
+function createOrSelectGroup(root, name) {
+  var selection = root.select("g." + name);
+  if (selection.empty()) {
+    selection = root.append("g").attr("class", name);
+  }
+  return selection;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/shapes.js":
+/*!*********************************************!*\
+  !*** ./node_modules/dagre-d3/lib/shapes.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var intersectRect = __webpack_require__(/*! ./intersect/intersect-rect */ "./node_modules/dagre-d3/lib/intersect/intersect-rect.js");
+var intersectEllipse = __webpack_require__(/*! ./intersect/intersect-ellipse */ "./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js");
+var intersectCircle = __webpack_require__(/*! ./intersect/intersect-circle */ "./node_modules/dagre-d3/lib/intersect/intersect-circle.js");
+var intersectPolygon = __webpack_require__(/*! ./intersect/intersect-polygon */ "./node_modules/dagre-d3/lib/intersect/intersect-polygon.js");
+
+module.exports = {
+  rect: rect,
+  ellipse: ellipse,
+  circle: circle,
+  diamond: diamond
+};
+
+function rect(parent, bbox, node) {
+  var shapeSvg = parent.insert("rect", ":first-child")
+    .attr("rx", node.rx)
+    .attr("ry", node.ry)
+    .attr("x", -bbox.width / 2)
+    .attr("y", -bbox.height / 2)
+    .attr("width", bbox.width)
+    .attr("height", bbox.height);
+
+  node.intersect = function(point) {
+    return intersectRect(node, point);
+  };
+
+  return shapeSvg;
+}
+
+function ellipse(parent, bbox, node) {
+  var rx = bbox.width / 2;
+  var ry = bbox.height / 2;
+  var shapeSvg = parent.insert("ellipse", ":first-child")
+    .attr("x", -bbox.width / 2)
+    .attr("y", -bbox.height / 2)
+    .attr("rx", rx)
+    .attr("ry", ry);
+
+  node.intersect = function(point) {
+    return intersectEllipse(node, rx, ry, point);
+  };
+
+  return shapeSvg;
+}
+
+function circle(parent, bbox, node) {
+  var r = Math.max(bbox.width, bbox.height) / 2;
+  var shapeSvg = parent.insert("circle", ":first-child")
+    .attr("x", -bbox.width / 2)
+    .attr("y", -bbox.height / 2)
+    .attr("r", r);
+
+  node.intersect = function(point) {
+    return intersectCircle(node, r, point);
+  };
+
+  return shapeSvg;
+}
+
+// Circumscribe an ellipse for the bounding box with a diamond shape. I derived
+// the function to calculate the diamond shape from:
+// http://mathforum.org/kb/message.jspa?messageID=3750236
+function diamond(parent, bbox, node) {
+  var w = (bbox.width * Math.SQRT2) / 2;
+  var h = (bbox.height * Math.SQRT2) / 2;
+  var points = [
+    { x:  0, y: -h },
+    { x: -w, y:  0 },
+    { x:  0, y:  h },
+    { x:  w, y:  0 }
+  ];
+  var shapeSvg = parent.insert("polygon", ":first-child")
+    .attr("points", points.map(function(p) { return p.x + "," + p.y; }).join(" "));
+
+  node.intersect = function(p) {
+    return intersectPolygon(node, points, p);
+  };
+
+  return shapeSvg;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/util.js":
+/*!*******************************************!*\
+  !*** ./node_modules/dagre-d3/lib/util.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre-d3/lib/lodash.js");
+
+// Public utility functions
+module.exports = {
+  isSubgraph: isSubgraph,
+  edgeToId: edgeToId,
+  applyStyle: applyStyle,
+  applyClass: applyClass,
+  applyTransition: applyTransition
+};
+
+/*
+ * Returns true if the specified node in the graph is a subgraph node. A
+ * subgraph node is one that contains other nodes.
+ */
+function isSubgraph(g, v) {
+  return !!g.children(v).length;
+}
+
+function edgeToId(e) {
+  return escapeId(e.v) + ":" + escapeId(e.w) + ":" + escapeId(e.name);
+}
+
+var ID_DELIM = /:/g;
+function escapeId(str) {
+  return str ? String(str).replace(ID_DELIM, "\\:") : "";
+}
+
+function applyStyle(dom, styleFn) {
+  if (styleFn) {
+    dom.attr("style", styleFn);
+  }
+}
+
+function applyClass(dom, classFn, otherClasses) {
+  if (classFn) {
+    dom
+      .attr("class", classFn)
+      .attr("class", otherClasses + " " + dom.attr("class"));
+  }
+}
+
+function applyTransition(selection, g) {
+  var graph = g.graph();
+
+  if (_.isPlainObject(graph)) {
+    var transition = graph.transition;
+    if (_.isFunction(transition)) {
+      return transition(selection);
+    }
+  }
+
+  return selection;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre-d3/lib/version.js":
+/*!**********************************************!*\
+  !*** ./node_modules/dagre-d3/lib/version.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "0.6.4";
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/index.js":
+/*!*************************************!*\
+  !*** ./node_modules/dagre/index.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/*
+Copyright (c) 2012-2014 Chris Pettitt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+module.exports = {
+  graphlib: __webpack_require__(/*! ./lib/graphlib */ "./node_modules/dagre/lib/graphlib.js"),
+
+  layout: __webpack_require__(/*! ./lib/layout */ "./node_modules/dagre/lib/layout.js"),
+  debug: __webpack_require__(/*! ./lib/debug */ "./node_modules/dagre/lib/debug.js"),
+  util: {
+    time: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").time,
+    notime: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").notime
+  },
+  version: __webpack_require__(/*! ./lib/version */ "./node_modules/dagre/lib/version.js")
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/acyclic.js":
+/*!*******************************************!*\
+  !*** ./node_modules/dagre/lib/acyclic.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var greedyFAS = __webpack_require__(/*! ./greedy-fas */ "./node_modules/dagre/lib/greedy-fas.js");
+
+module.exports = {
+  run: run,
+  undo: undo
+};
+
+function run(g) {
+  var fas = (g.graph().acyclicer === "greedy"
+    ? greedyFAS(g, weightFn(g))
+    : dfsFAS(g));
+  _.forEach(fas, function(e) {
+    var label = g.edge(e);
+    g.removeEdge(e);
+    label.forwardName = e.name;
+    label.reversed = true;
+    g.setEdge(e.w, e.v, label, _.uniqueId("rev"));
+  });
+
+  function weightFn(g) {
+    return function(e) {
+      return g.edge(e).weight;
+    };
+  }
+}
+
+function dfsFAS(g) {
+  var fas = [];
+  var stack = {};
+  var visited = {};
+
+  function dfs(v) {
+    if (_.has(visited, v)) {
+      return;
+    }
+    visited[v] = true;
+    stack[v] = true;
+    _.forEach(g.outEdges(v), function(e) {
+      if (_.has(stack, e.w)) {
+        fas.push(e);
+      } else {
+        dfs(e.w);
+      }
+    });
+    delete stack[v];
+  }
+
+  _.forEach(g.nodes(), dfs);
+  return fas;
+}
+
+function undo(g) {
+  _.forEach(g.edges(), function(e) {
+    var label = g.edge(e);
+    if (label.reversed) {
+      g.removeEdge(e);
+
+      var forwardName = label.forwardName;
+      delete label.reversed;
+      delete label.forwardName;
+      g.setEdge(e.w, e.v, label, forwardName);
+    }
+  });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/add-border-segments.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/dagre/lib/add-border-segments.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js");
+
+module.exports = addBorderSegments;
+
+function addBorderSegments(g) {
+  function dfs(v) {
+    var children = g.children(v);
+    var node = g.node(v);
+    if (children.length) {
+      _.forEach(children, dfs);
+    }
+
+    if (_.has(node, "minRank")) {
+      node.borderLeft = [];
+      node.borderRight = [];
+      for (var rank = node.minRank, maxRank = node.maxRank + 1;
+        rank < maxRank;
+        ++rank) {
+        addBorderNode(g, "borderLeft", "_bl", v, node, rank);
+        addBorderNode(g, "borderRight", "_br", v, node, rank);
+      }
+    }
+  }
+
+  _.forEach(g.children(), dfs);
+}
+
+function addBorderNode(g, prop, prefix, sg, sgNode, rank) {
+  var label = { width: 0, height: 0, rank: rank, borderType: prop };
+  var prev = sgNode[prop][rank - 1];
+  var curr = util.addDummyNode(g, "border", label, prefix);
+  sgNode[prop][rank] = curr;
+  g.setParent(curr, sg);
+  if (prev) {
+    g.setEdge(prev, curr, { weight: 1 });
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/coordinate-system.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/dagre/lib/coordinate-system.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = {
+  adjust: adjust,
+  undo: undo
+};
+
+function adjust(g) {
+  var rankDir = g.graph().rankdir.toLowerCase();
+  if (rankDir === "lr" || rankDir === "rl") {
+    swapWidthHeight(g);
+  }
+}
+
+function undo(g) {
+  var rankDir = g.graph().rankdir.toLowerCase();
+  if (rankDir === "bt" || rankDir === "rl") {
+    reverseY(g);
+  }
+
+  if (rankDir === "lr" || rankDir === "rl") {
+    swapXY(g);
+    swapWidthHeight(g);
+  }
+}
+
+function swapWidthHeight(g) {
+  _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });
+  _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });
+}
+
+function swapWidthHeightOne(attrs) {
+  var w = attrs.width;
+  attrs.width = attrs.height;
+  attrs.height = w;
+}
+
+function reverseY(g) {
+  _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });
+
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    _.forEach(edge.points, reverseYOne);
+    if (_.has(edge, "y")) {
+      reverseYOne(edge);
+    }
+  });
+}
+
+function reverseYOne(attrs) {
+  attrs.y = -attrs.y;
+}
+
+function swapXY(g) {
+  _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });
+
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    _.forEach(edge.points, swapXYOne);
+    if (_.has(edge, "x")) {
+      swapXYOne(edge);
+    }
+  });
+}
+
+function swapXYOne(attrs) {
+  var x = attrs.x;
+  attrs.x = attrs.y;
+  attrs.y = x;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/data/list.js":
+/*!*********************************************!*\
+  !*** ./node_modules/dagre/lib/data/list.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/*
+ * Simple doubly linked list implementation derived from Cormen, et al.,
+ * "Introduction to Algorithms".
+ */
+
+module.exports = List;
+
+function List() {
+  var sentinel = {};
+  sentinel._next = sentinel._prev = sentinel;
+  this._sentinel = sentinel;
+}
+
+List.prototype.dequeue = function() {
+  var sentinel = this._sentinel;
+  var entry = sentinel._prev;
+  if (entry !== sentinel) {
+    unlink(entry);
+    return entry;
+  }
+};
+
+List.prototype.enqueue = function(entry) {
+  var sentinel = this._sentinel;
+  if (entry._prev && entry._next) {
+    unlink(entry);
+  }
+  entry._next = sentinel._next;
+  sentinel._next._prev = entry;
+  sentinel._next = entry;
+  entry._prev = sentinel;
+};
+
+List.prototype.toString = function() {
+  var strs = [];
+  var sentinel = this._sentinel;
+  var curr = sentinel._prev;
+  while (curr !== sentinel) {
+    strs.push(JSON.stringify(curr, filterOutLinks));
+    curr = curr._prev;
+  }
+  return "[" + strs.join(", ") + "]";
+};
+
+function unlink(entry) {
+  entry._prev._next = entry._next;
+  entry._next._prev = entry._prev;
+  delete entry._next;
+  delete entry._prev;
+}
+
+function filterOutLinks(k, v) {
+  if (k !== "_next" && k !== "_prev") {
+    return v;
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/debug.js":
+/*!*****************************************!*\
+  !*** ./node_modules/dagre/lib/debug.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js");
+var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+
+module.exports = {
+  debugOrdering: debugOrdering
+};
+
+/* istanbul ignore next */
+function debugOrdering(g) {
+  var layerMatrix = util.buildLayerMatrix(g);
+
+  var h = new Graph({ compound: true, multigraph: true }).setGraph({});
+
+  _.forEach(g.nodes(), function(v) {
+    h.setNode(v, { label: v });
+    h.setParent(v, "layer" + g.node(v).rank);
+  });
+
+  _.forEach(g.edges(), function(e) {
+    h.setEdge(e.v, e.w, {}, e.name);
+  });
+
+  _.forEach(layerMatrix, function(layer, i) {
+    var layerV = "layer" + i;
+    h.setNode(layerV, { rank: "same" });
+    _.reduce(layer, function(u, v) {
+      h.setEdge(u, v, { style: "invis" });
+      return v;
+    });
+  });
+
+  return h;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/graphlib.js":
+/*!********************************************!*\
+  !*** ./node_modules/dagre/lib/graphlib.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* global window */
+
+var graphlib;
+
+if (true) {
+  try {
+    graphlib = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+  } catch (e) {
+    // continue regardless of error
+  }
+}
+
+if (!graphlib) {
+  graphlib = window.graphlib;
+}
+
+module.exports = graphlib;
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/greedy-fas.js":
+/*!**********************************************!*\
+  !*** ./node_modules/dagre/lib/greedy-fas.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+var List = __webpack_require__(/*! ./data/list */ "./node_modules/dagre/lib/data/list.js");
+
+/*
+ * A greedy heuristic for finding a feedback arc set for a graph. A feedback
+ * arc set is a set of edges that can be removed to make a graph acyclic.
+ * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and
+ * effective heuristic for the feedback arc set problem." This implementation
+ * adjusts that from the paper to allow for weighted edges.
+ */
+module.exports = greedyFAS;
+
+var DEFAULT_WEIGHT_FN = _.constant(1);
+
+function greedyFAS(g, weightFn) {
+  if (g.nodeCount() <= 1) {
+    return [];
+  }
+  var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);
+  var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);
+
+  // Expand multi-edges
+  return _.flatten(_.map(results, function(e) {
+    return g.outEdges(e.v, e.w);
+  }), true);
+}
+
+function doGreedyFAS(g, buckets, zeroIdx) {
+  var results = [];
+  var sources = buckets[buckets.length - 1];
+  var sinks = buckets[0];
+
+  var entry;
+  while (g.nodeCount()) {
+    while ((entry = sinks.dequeue()))   { removeNode(g, buckets, zeroIdx, entry); }
+    while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }
+    if (g.nodeCount()) {
+      for (var i = buckets.length - 2; i > 0; --i) {
+        entry = buckets[i].dequeue();
+        if (entry) {
+          results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));
+          break;
+        }
+      }
+    }
+  }
+
+  return results;
+}
+
+function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {
+  var results = collectPredecessors ? [] : undefined;
+
+  _.forEach(g.inEdges(entry.v), function(edge) {
+    var weight = g.edge(edge);
+    var uEntry = g.node(edge.v);
+
+    if (collectPredecessors) {
+      results.push({ v: edge.v, w: edge.w });
+    }
+
+    uEntry.out -= weight;
+    assignBucket(buckets, zeroIdx, uEntry);
+  });
+
+  _.forEach(g.outEdges(entry.v), function(edge) {
+    var weight = g.edge(edge);
+    var w = edge.w;
+    var wEntry = g.node(w);
+    wEntry["in"] -= weight;
+    assignBucket(buckets, zeroIdx, wEntry);
+  });
+
+  g.removeNode(entry.v);
+
+  return results;
+}
+
+function buildState(g, weightFn) {
+  var fasGraph = new Graph();
+  var maxIn = 0;
+  var maxOut = 0;
+
+  _.forEach(g.nodes(), function(v) {
+    fasGraph.setNode(v, { v: v, "in": 0, out: 0 });
+  });
+
+  // Aggregate weights on nodes, but also sum the weights across multi-edges
+  // into a single edge for the fasGraph.
+  _.forEach(g.edges(), function(e) {
+    var prevWeight = fasGraph.edge(e.v, e.w) || 0;
+    var weight = weightFn(e);
+    var edgeWeight = prevWeight + weight;
+    fasGraph.setEdge(e.v, e.w, edgeWeight);
+    maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);
+    maxIn  = Math.max(maxIn,  fasGraph.node(e.w)["in"]  += weight);
+  });
+
+  var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });
+  var zeroIdx = maxIn + 1;
+
+  _.forEach(fasGraph.nodes(), function(v) {
+    assignBucket(buckets, zeroIdx, fasGraph.node(v));
+  });
+
+  return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };
+}
+
+function assignBucket(buckets, zeroIdx, entry) {
+  if (!entry.out) {
+    buckets[0].enqueue(entry);
+  } else if (!entry["in"]) {
+    buckets[buckets.length - 1].enqueue(entry);
+  } else {
+    buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry);
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/layout.js":
+/*!******************************************!*\
+  !*** ./node_modules/dagre/lib/layout.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var acyclic = __webpack_require__(/*! ./acyclic */ "./node_modules/dagre/lib/acyclic.js");
+var normalize = __webpack_require__(/*! ./normalize */ "./node_modules/dagre/lib/normalize.js");
+var rank = __webpack_require__(/*! ./rank */ "./node_modules/dagre/lib/rank/index.js");
+var normalizeRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").normalizeRanks;
+var parentDummyChains = __webpack_require__(/*! ./parent-dummy-chains */ "./node_modules/dagre/lib/parent-dummy-chains.js");
+var removeEmptyRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").removeEmptyRanks;
+var nestingGraph = __webpack_require__(/*! ./nesting-graph */ "./node_modules/dagre/lib/nesting-graph.js");
+var addBorderSegments = __webpack_require__(/*! ./add-border-segments */ "./node_modules/dagre/lib/add-border-segments.js");
+var coordinateSystem = __webpack_require__(/*! ./coordinate-system */ "./node_modules/dagre/lib/coordinate-system.js");
+var order = __webpack_require__(/*! ./order */ "./node_modules/dagre/lib/order/index.js");
+var position = __webpack_require__(/*! ./position */ "./node_modules/dagre/lib/position/index.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js");
+var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+
+module.exports = layout;
+
+function layout(g, opts) {
+  var time = opts && opts.debugTiming ? util.time : util.notime;
+  time("layout", function() {
+    var layoutGraph = 
+      time("  buildLayoutGraph", function() { return buildLayoutGraph(g); });
+    time("  runLayout",        function() { runLayout(layoutGraph, time); });
+    time("  updateInputGraph", function() { updateInputGraph(g, layoutGraph); });
+  });
+}
+
+function runLayout(g, time) {
+  time("    makeSpaceForEdgeLabels", function() { makeSpaceForEdgeLabels(g); });
+  time("    removeSelfEdges",        function() { removeSelfEdges(g); });
+  time("    acyclic",                function() { acyclic.run(g); });
+  time("    nestingGraph.run",       function() { nestingGraph.run(g); });
+  time("    rank",                   function() { rank(util.asNonCompoundGraph(g)); });
+  time("    injectEdgeLabelProxies", function() { injectEdgeLabelProxies(g); });
+  time("    removeEmptyRanks",       function() { removeEmptyRanks(g); });
+  time("    nestingGraph.cleanup",   function() { nestingGraph.cleanup(g); });
+  time("    normalizeRanks",         function() { normalizeRanks(g); });
+  time("    assignRankMinMax",       function() { assignRankMinMax(g); });
+  time("    removeEdgeLabelProxies", function() { removeEdgeLabelProxies(g); });
+  time("    normalize.run",          function() { normalize.run(g); });
+  time("    parentDummyChains",      function() { parentDummyChains(g); });
+  time("    addBorderSegments",      function() { addBorderSegments(g); });
+  time("    order",                  function() { order(g); });
+  time("    insertSelfEdges",        function() { insertSelfEdges(g); });
+  time("    adjustCoordinateSystem", function() { coordinateSystem.adjust(g); });
+  time("    position",               function() { position(g); });
+  time("    positionSelfEdges",      function() { positionSelfEdges(g); });
+  time("    removeBorderNodes",      function() { removeBorderNodes(g); });
+  time("    normalize.undo",         function() { normalize.undo(g); });
+  time("    fixupEdgeLabelCoords",   function() { fixupEdgeLabelCoords(g); });
+  time("    undoCoordinateSystem",   function() { coordinateSystem.undo(g); });
+  time("    translateGraph",         function() { translateGraph(g); });
+  time("    assignNodeIntersects",   function() { assignNodeIntersects(g); });
+  time("    reversePoints",          function() { reversePointsForReversedEdges(g); });
+  time("    acyclic.undo",           function() { acyclic.undo(g); });
+}
+
+/*
+ * Copies final layout information from the layout graph back to the input
+ * graph. This process only copies whitelisted attributes from the layout graph
+ * to the input graph, so it serves as a good place to determine what
+ * attributes can influence layout.
+ */
+function updateInputGraph(inputGraph, layoutGraph) {
+  _.forEach(inputGraph.nodes(), function(v) {
+    var inputLabel = inputGraph.node(v);
+    var layoutLabel = layoutGraph.node(v);
+
+    if (inputLabel) {
+      inputLabel.x = layoutLabel.x;
+      inputLabel.y = layoutLabel.y;
+
+      if (layoutGraph.children(v).length) {
+        inputLabel.width = layoutLabel.width;
+        inputLabel.height = layoutLabel.height;
+      }
+    }
+  });
+
+  _.forEach(inputGraph.edges(), function(e) {
+    var inputLabel = inputGraph.edge(e);
+    var layoutLabel = layoutGraph.edge(e);
+
+    inputLabel.points = layoutLabel.points;
+    if (_.has(layoutLabel, "x")) {
+      inputLabel.x = layoutLabel.x;
+      inputLabel.y = layoutLabel.y;
+    }
+  });
+
+  inputGraph.graph().width = layoutGraph.graph().width;
+  inputGraph.graph().height = layoutGraph.graph().height;
+}
+
+var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"];
+var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" };
+var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"];
+var nodeNumAttrs = ["width", "height"];
+var nodeDefaults = { width: 0, height: 0 };
+var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"];
+var edgeDefaults = {
+  minlen: 1, weight: 1, width: 0, height: 0,
+  labeloffset: 10, labelpos: "r"
+};
+var edgeAttrs = ["labelpos"];
+
+/*
+ * Constructs a new graph from the input graph, which can be used for layout.
+ * This process copies only whitelisted attributes from the input graph to the
+ * layout graph. Thus this function serves as a good place to determine what
+ * attributes can influence layout.
+ */
+function buildLayoutGraph(inputGraph) {
+  var g = new Graph({ multigraph: true, compound: true });
+  var graph = canonicalize(inputGraph.graph());
+
+  g.setGraph(_.merge({},
+    graphDefaults,
+    selectNumberAttrs(graph, graphNumAttrs),
+    _.pick(graph, graphAttrs)));
+
+  _.forEach(inputGraph.nodes(), function(v) {
+    var node = canonicalize(inputGraph.node(v));
+    g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));
+    g.setParent(v, inputGraph.parent(v));
+  });
+
+  _.forEach(inputGraph.edges(), function(e) {
+    var edge = canonicalize(inputGraph.edge(e));
+    g.setEdge(e, _.merge({},
+      edgeDefaults,
+      selectNumberAttrs(edge, edgeNumAttrs),
+      _.pick(edge, edgeAttrs)));
+  });
+
+  return g;
+}
+
+/*
+ * This idea comes from the Gansner paper: to account for edge labels in our
+ * layout we split each rank in half by doubling minlen and halving ranksep.
+ * Then we can place labels at these mid-points between nodes.
+ *
+ * We also add some minimal padding to the width to push the label for the edge
+ * away from the edge itself a bit.
+ */
+function makeSpaceForEdgeLabels(g) {
+  var graph = g.graph();
+  graph.ranksep /= 2;
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    edge.minlen *= 2;
+    if (edge.labelpos.toLowerCase() !== "c") {
+      if (graph.rankdir === "TB" || graph.rankdir === "BT") {
+        edge.width += edge.labeloffset;
+      } else {
+        edge.height += edge.labeloffset;
+      }
+    }
+  });
+}
+
+/*
+ * Creates temporary dummy nodes that capture the rank in which each edge's
+ * label is going to, if it has one of non-zero width and height. We do this
+ * so that we can safely remove empty ranks while preserving balance for the
+ * label's position.
+ */
+function injectEdgeLabelProxies(g) {
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    if (edge.width && edge.height) {
+      var v = g.node(e.v);
+      var w = g.node(e.w);
+      var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };
+      util.addDummyNode(g, "edge-proxy", label, "_ep");
+    }
+  });
+}
+
+function assignRankMinMax(g) {
+  var maxRank = 0;
+  _.forEach(g.nodes(), function(v) {
+    var node = g.node(v);
+    if (node.borderTop) {
+      node.minRank = g.node(node.borderTop).rank;
+      node.maxRank = g.node(node.borderBottom).rank;
+      maxRank = _.max(maxRank, node.maxRank);
+    }
+  });
+  g.graph().maxRank = maxRank;
+}
+
+function removeEdgeLabelProxies(g) {
+  _.forEach(g.nodes(), function(v) {
+    var node = g.node(v);
+    if (node.dummy === "edge-proxy") {
+      g.edge(node.e).labelRank = node.rank;
+      g.removeNode(v);
+    }
+  });
+}
+
+function translateGraph(g) {
+  var minX = Number.POSITIVE_INFINITY;
+  var maxX = 0;
+  var minY = Number.POSITIVE_INFINITY;
+  var maxY = 0;
+  var graphLabel = g.graph();
+  var marginX = graphLabel.marginx || 0;
+  var marginY = graphLabel.marginy || 0;
+
+  function getExtremes(attrs) {
+    var x = attrs.x;
+    var y = attrs.y;
+    var w = attrs.width;
+    var h = attrs.height;
+    minX = Math.min(minX, x - w / 2);
+    maxX = Math.max(maxX, x + w / 2);
+    minY = Math.min(minY, y - h / 2);
+    maxY = Math.max(maxY, y + h / 2);
+  }
+
+  _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    if (_.has(edge, "x")) {
+      getExtremes(edge);
+    }
+  });
+
+  minX -= marginX;
+  minY -= marginY;
+
+  _.forEach(g.nodes(), function(v) {
+    var node = g.node(v);
+    node.x -= minX;
+    node.y -= minY;
+  });
+
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    _.forEach(edge.points, function(p) {
+      p.x -= minX;
+      p.y -= minY;
+    });
+    if (_.has(edge, "x")) { edge.x -= minX; }
+    if (_.has(edge, "y")) { edge.y -= minY; }
+  });
+
+  graphLabel.width = maxX - minX + marginX;
+  graphLabel.height = maxY - minY + marginY;
+}
+
+function assignNodeIntersects(g) {
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    var nodeV = g.node(e.v);
+    var nodeW = g.node(e.w);
+    var p1, p2;
+    if (!edge.points) {
+      edge.points = [];
+      p1 = nodeW;
+      p2 = nodeV;
+    } else {
+      p1 = edge.points[0];
+      p2 = edge.points[edge.points.length - 1];
+    }
+    edge.points.unshift(util.intersectRect(nodeV, p1));
+    edge.points.push(util.intersectRect(nodeW, p2));
+  });
+}
+
+function fixupEdgeLabelCoords(g) {
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    if (_.has(edge, "x")) {
+      if (edge.labelpos === "l" || edge.labelpos === "r") {
+        edge.width -= edge.labeloffset;
+      }
+      switch (edge.labelpos) {
+      case "l": edge.x -= edge.width / 2 + edge.labeloffset; break;
+      case "r": edge.x += edge.width / 2 + edge.labeloffset; break;
+      }
+    }
+  });
+}
+
+function reversePointsForReversedEdges(g) {
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    if (edge.reversed) {
+      edge.points.reverse();
+    }
+  });
+}
+
+function removeBorderNodes(g) {
+  _.forEach(g.nodes(), function(v) {
+    if (g.children(v).length) {
+      var node = g.node(v);
+      var t = g.node(node.borderTop);
+      var b = g.node(node.borderBottom);
+      var l = g.node(_.last(node.borderLeft));
+      var r = g.node(_.last(node.borderRight));
+
+      node.width = Math.abs(r.x - l.x);
+      node.height = Math.abs(b.y - t.y);
+      node.x = l.x + node.width / 2;
+      node.y = t.y + node.height / 2;
+    }
+  });
+
+  _.forEach(g.nodes(), function(v) {
+    if (g.node(v).dummy === "border") {
+      g.removeNode(v);
+    }
+  });
+}
+
+function removeSelfEdges(g) {
+  _.forEach(g.edges(), function(e) {
+    if (e.v === e.w) {
+      var node = g.node(e.v);
+      if (!node.selfEdges) {
+        node.selfEdges = [];
+      }
+      node.selfEdges.push({ e: e, label: g.edge(e) });
+      g.removeEdge(e);
+    }
+  });
+}
+
+function insertSelfEdges(g) {
+  var layers = util.buildLayerMatrix(g);
+  _.forEach(layers, function(layer) {
+    var orderShift = 0;
+    _.forEach(layer, function(v, i) {
+      var node = g.node(v);
+      node.order = i + orderShift;
+      _.forEach(node.selfEdges, function(selfEdge) {
+        util.addDummyNode(g, "selfedge", {
+          width: selfEdge.label.width,
+          height: selfEdge.label.height,
+          rank: node.rank,
+          order: i + (++orderShift),
+          e: selfEdge.e,
+          label: selfEdge.label
+        }, "_se");
+      });
+      delete node.selfEdges;
+    });
+  });
+}
+
+function positionSelfEdges(g) {
+  _.forEach(g.nodes(), function(v) {
+    var node = g.node(v);
+    if (node.dummy === "selfedge") {
+      var selfNode = g.node(node.e.v);
+      var x = selfNode.x + selfNode.width / 2;
+      var y = selfNode.y;
+      var dx = node.x - x;
+      var dy = selfNode.height / 2;
+      g.setEdge(node.e, node.label);
+      g.removeNode(v);
+      node.label.points = [
+        { x: x + 2 * dx / 3, y: y - dy },
+        { x: x + 5 * dx / 6, y: y - dy },
+        { x: x +     dx    , y: y },
+        { x: x + 5 * dx / 6, y: y + dy },
+        { x: x + 2 * dx / 3, y: y + dy }
+      ];
+      node.label.x = node.x;
+      node.label.y = node.y;
+    }
+  });
+}
+
+function selectNumberAttrs(obj, attrs) {
+  return _.mapValues(_.pick(obj, attrs), Number);
+}
+
+function canonicalize(attrs) {
+  var newAttrs = {};
+  _.forEach(attrs, function(v, k) {
+    newAttrs[k.toLowerCase()] = v;
+  });
+  return newAttrs;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/lodash.js":
+/*!******************************************!*\
+  !*** ./node_modules/dagre/lib/lodash.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* global window */
+
+var lodash;
+
+if (true) {
+  try {
+    lodash = {
+      cloneDeep: __webpack_require__(/*! lodash/cloneDeep */ "./node_modules/lodash/cloneDeep.js"),
+      constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"),
+      defaults: __webpack_require__(/*! lodash/defaults */ "./node_modules/lodash/defaults.js"),
+      each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"),
+      filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"),
+      find: __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js"),
+      flatten: __webpack_require__(/*! lodash/flatten */ "./node_modules/lodash/flatten.js"),
+      forEach: __webpack_require__(/*! lodash/forEach */ "./node_modules/lodash/forEach.js"),
+      forIn: __webpack_require__(/*! lodash/forIn */ "./node_modules/lodash/forIn.js"),
+      has:  __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"),
+      isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"),
+      last: __webpack_require__(/*! lodash/last */ "./node_modules/lodash/last.js"),
+      map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"),
+      mapValues: __webpack_require__(/*! lodash/mapValues */ "./node_modules/lodash/mapValues.js"),
+      max: __webpack_require__(/*! lodash/max */ "./node_modules/lodash/max.js"),
+      merge: __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js"),
+      min: __webpack_require__(/*! lodash/min */ "./node_modules/lodash/min.js"),
+      minBy: __webpack_require__(/*! lodash/minBy */ "./node_modules/lodash/minBy.js"),
+      now: __webpack_require__(/*! lodash/now */ "./node_modules/lodash/now.js"),
+      pick: __webpack_require__(/*! lodash/pick */ "./node_modules/lodash/pick.js"),
+      range: __webpack_require__(/*! lodash/range */ "./node_modules/lodash/range.js"),
+      reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"),
+      sortBy: __webpack_require__(/*! lodash/sortBy */ "./node_modules/lodash/sortBy.js"),
+      uniqueId: __webpack_require__(/*! lodash/uniqueId */ "./node_modules/lodash/uniqueId.js"),
+      values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js"),
+      zipObject: __webpack_require__(/*! lodash/zipObject */ "./node_modules/lodash/zipObject.js"),
+    };
+  } catch (e) {
+    // continue regardless of error
+  }
+}
+
+if (!lodash) {
+  lodash = window._;
+}
+
+module.exports = lodash;
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/nesting-graph.js":
+/*!*************************************************!*\
+  !*** ./node_modules/dagre/lib/nesting-graph.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js");
+
+module.exports = {
+  run: run,
+  cleanup: cleanup
+};
+
+/*
+ * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,
+ * adds appropriate edges to ensure that all cluster nodes are placed between
+ * these boundries, and ensures that the graph is connected.
+ *
+ * In addition we ensure, through the use of the minlen property, that nodes
+ * and subgraph border nodes to not end up on the same rank.
+ *
+ * Preconditions:
+ *
+ *    1. Input graph is a DAG
+ *    2. Nodes in the input graph has a minlen attribute
+ *
+ * Postconditions:
+ *
+ *    1. Input graph is connected.
+ *    2. Dummy nodes are added for the tops and bottoms of subgraphs.
+ *    3. The minlen attribute for nodes is adjusted to ensure nodes do not
+ *       get placed on the same rank as subgraph border nodes.
+ *
+ * The nesting graph idea comes from Sander, "Layout of Compound Directed
+ * Graphs."
+ */
+function run(g) {
+  var root = util.addDummyNode(g, "root", {}, "_root");
+  var depths = treeDepths(g);
+  var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array
+  var nodeSep = 2 * height + 1;
+
+  g.graph().nestingRoot = root;
+
+  // Multiply minlen by nodeSep to align nodes on non-border ranks.
+  _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });
+
+  // Calculate a weight that is sufficient to keep subgraphs vertically compact
+  var weight = sumWeights(g) + 1;
+
+  // Create border nodes and link them up
+  _.forEach(g.children(), function(child) {
+    dfs(g, root, nodeSep, weight, height, depths, child);
+  });
+
+  // Save the multiplier for node layers for later removal of empty border
+  // layers.
+  g.graph().nodeRankFactor = nodeSep;
+}
+
+function dfs(g, root, nodeSep, weight, height, depths, v) {
+  var children = g.children(v);
+  if (!children.length) {
+    if (v !== root) {
+      g.setEdge(root, v, { weight: 0, minlen: nodeSep });
+    }
+    return;
+  }
+
+  var top = util.addBorderNode(g, "_bt");
+  var bottom = util.addBorderNode(g, "_bb");
+  var label = g.node(v);
+
+  g.setParent(top, v);
+  label.borderTop = top;
+  g.setParent(bottom, v);
+  label.borderBottom = bottom;
+
+  _.forEach(children, function(child) {
+    dfs(g, root, nodeSep, weight, height, depths, child);
+
+    var childNode = g.node(child);
+    var childTop = childNode.borderTop ? childNode.borderTop : child;
+    var childBottom = childNode.borderBottom ? childNode.borderBottom : child;
+    var thisWeight = childNode.borderTop ? weight : 2 * weight;
+    var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;
+
+    g.setEdge(top, childTop, {
+      weight: thisWeight,
+      minlen: minlen,
+      nestingEdge: true
+    });
+
+    g.setEdge(childBottom, bottom, {
+      weight: thisWeight,
+      minlen: minlen,
+      nestingEdge: true
+    });
+  });
+
+  if (!g.parent(v)) {
+    g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });
+  }
+}
+
+function treeDepths(g) {
+  var depths = {};
+  function dfs(v, depth) {
+    var children = g.children(v);
+    if (children && children.length) {
+      _.forEach(children, function(child) {
+        dfs(child, depth + 1);
+      });
+    }
+    depths[v] = depth;
+  }
+  _.forEach(g.children(), function(v) { dfs(v, 1); });
+  return depths;
+}
+
+function sumWeights(g) {
+  return _.reduce(g.edges(), function(acc, e) {
+    return acc + g.edge(e).weight;
+  }, 0);
+}
+
+function cleanup(g) {
+  var graphLabel = g.graph();
+  g.removeNode(graphLabel.nestingRoot);
+  delete graphLabel.nestingRoot;
+  _.forEach(g.edges(), function(e) {
+    var edge = g.edge(e);
+    if (edge.nestingEdge) {
+      g.removeEdge(e);
+    }
+  });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/normalize.js":
+/*!*********************************************!*\
+  !*** ./node_modules/dagre/lib/normalize.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js");
+
+module.exports = {
+  run: run,
+  undo: undo
+};
+
+/*
+ * Breaks any long edges in the graph into short segments that span 1 layer
+ * each. This operation is undoable with the denormalize function.
+ *
+ * Pre-conditions:
+ *
+ *    1. The input graph is a DAG.
+ *    2. Each node in the graph has a "rank" property.
+ *
+ * Post-condition:
+ *
+ *    1. All edges in the graph have a length of 1.
+ *    2. Dummy nodes are added where edges have been split into segments.
+ *    3. The graph is augmented with a "dummyChains" attribute which contains
+ *       the first dummy in each chain of dummy nodes produced.
+ */
+function run(g) {
+  g.graph().dummyChains = [];
+  _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });
+}
+
+function normalizeEdge(g, e) {
+  var v = e.v;
+  var vRank = g.node(v).rank;
+  var w = e.w;
+  var wRank = g.node(w).rank;
+  var name = e.name;
+  var edgeLabel = g.edge(e);
+  var labelRank = edgeLabel.labelRank;
+
+  if (wRank === vRank + 1) return;
+
+  g.removeEdge(e);
+
+  var dummy, attrs, i;
+  for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {
+    edgeLabel.points = [];
+    attrs = {
+      width: 0, height: 0,
+      edgeLabel: edgeLabel, edgeObj: e,
+      rank: vRank
+    };
+    dummy = util.addDummyNode(g, "edge", attrs, "_d");
+    if (vRank === labelRank) {
+      attrs.width = edgeLabel.width;
+      attrs.height = edgeLabel.height;
+      attrs.dummy = "edge-label";
+      attrs.labelpos = edgeLabel.labelpos;
+    }
+    g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);
+    if (i === 0) {
+      g.graph().dummyChains.push(dummy);
+    }
+    v = dummy;
+  }
+
+  g.setEdge(v, w, { weight: edgeLabel.weight }, name);
+}
+
+function undo(g) {
+  _.forEach(g.graph().dummyChains, function(v) {
+    var node = g.node(v);
+    var origLabel = node.edgeLabel;
+    var w;
+    g.setEdge(node.edgeObj, origLabel);
+    while (node.dummy) {
+      w = g.successors(v)[0];
+      g.removeNode(v);
+      origLabel.points.push({ x: node.x, y: node.y });
+      if (node.dummy === "edge-label") {
+        origLabel.x = node.x;
+        origLabel.y = node.y;
+        origLabel.width = node.width;
+        origLabel.height = node.height;
+      }
+      v = w;
+      node = g.node(v);
+    }
+  });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/add-subgraph-constraints.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/dagre/lib/order/add-subgraph-constraints.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = addSubgraphConstraints;
+
+function addSubgraphConstraints(g, cg, vs) {
+  var prev = {},
+    rootPrev;
+
+  _.forEach(vs, function(v) {
+    var child = g.parent(v),
+      parent,
+      prevChild;
+    while (child) {
+      parent = g.parent(child);
+      if (parent) {
+        prevChild = prev[parent];
+        prev[parent] = child;
+      } else {
+        prevChild = rootPrev;
+        rootPrev = child;
+      }
+      if (prevChild && prevChild !== child) {
+        cg.setEdge(prevChild, child);
+        return;
+      }
+      child = parent;
+    }
+  });
+
+  /*
+  function dfs(v) {
+    var children = v ? g.children(v) : g.children();
+    if (children.length) {
+      var min = Number.POSITIVE_INFINITY,
+          subgraphs = [];
+      _.each(children, function(child) {
+        var childMin = dfs(child);
+        if (g.children(child).length) {
+          subgraphs.push({ v: child, order: childMin });
+        }
+        min = Math.min(min, childMin);
+      });
+      _.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) {
+        cg.setEdge(prev.v, curr.v);
+        return curr;
+      });
+      return min;
+    }
+    return g.node(v).order;
+  }
+  dfs(undefined);
+  */
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/barycenter.js":
+/*!****************************************************!*\
+  !*** ./node_modules/dagre/lib/order/barycenter.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = barycenter;
+
+function barycenter(g, movable) {
+  return _.map(movable, function(v) {
+    var inV = g.inEdges(v);
+    if (!inV.length) {
+      return { v: v };
+    } else {
+      var result = _.reduce(inV, function(acc, e) {
+        var edge = g.edge(e),
+          nodeU = g.node(e.v);
+        return {
+          sum: acc.sum + (edge.weight * nodeU.order),
+          weight: acc.weight + edge.weight
+        };
+      }, { sum: 0, weight: 0 });
+
+      return {
+        v: v,
+        barycenter: result.sum / result.weight,
+        weight: result.weight
+      };
+    }
+  });
+}
+
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/build-layer-graph.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/dagre/lib/order/build-layer-graph.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+
+module.exports = buildLayerGraph;
+
+/*
+ * Constructs a graph that can be used to sort a layer of nodes. The graph will
+ * contain all base and subgraph nodes from the request layer in their original
+ * hierarchy and any edges that are incident on these nodes and are of the type
+ * requested by the "relationship" parameter.
+ *
+ * Nodes from the requested rank that do not have parents are assigned a root
+ * node in the output graph, which is set in the root graph attribute. This
+ * makes it easy to walk the hierarchy of movable nodes during ordering.
+ *
+ * Pre-conditions:
+ *
+ *    1. Input graph is a DAG
+ *    2. Base nodes in the input graph have a rank attribute
+ *    3. Subgraph nodes in the input graph has minRank and maxRank attributes
+ *    4. Edges have an assigned weight
+ *
+ * Post-conditions:
+ *
+ *    1. Output graph has all nodes in the movable rank with preserved
+ *       hierarchy.
+ *    2. Root nodes in the movable layer are made children of the node
+ *       indicated by the root attribute of the graph.
+ *    3. Non-movable nodes incident on movable nodes, selected by the
+ *       relationship parameter, are included in the graph (without hierarchy).
+ *    4. Edges incident on movable nodes, selected by the relationship
+ *       parameter, are added to the output graph.
+ *    5. The weights for copied edges are aggregated as need, since the output
+ *       graph is not a multi-graph.
+ */
+function buildLayerGraph(g, rank, relationship) {
+  var root = createRootNode(g),
+    result = new Graph({ compound: true }).setGraph({ root: root })
+      .setDefaultNodeLabel(function(v) { return g.node(v); });
+
+  _.forEach(g.nodes(), function(v) {
+    var node = g.node(v),
+      parent = g.parent(v);
+
+    if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {
+      result.setNode(v);
+      result.setParent(v, parent || root);
+
+      // This assumes we have only short edges!
+      _.forEach(g[relationship](v), function(e) {
+        var u = e.v === v ? e.w : e.v,
+          edge = result.edge(u, v),
+          weight = !_.isUndefined(edge) ? edge.weight : 0;
+        result.setEdge(u, v, { weight: g.edge(e).weight + weight });
+      });
+
+      if (_.has(node, "minRank")) {
+        result.setNode(v, {
+          borderLeft: node.borderLeft[rank],
+          borderRight: node.borderRight[rank]
+        });
+      }
+    }
+  });
+
+  return result;
+}
+
+function createRootNode(g) {
+  var v;
+  while (g.hasNode((v = _.uniqueId("_root"))));
+  return v;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/cross-count.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/dagre/lib/order/cross-count.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = crossCount;
+
+/*
+ * A function that takes a layering (an array of layers, each with an array of
+ * ordererd nodes) and a graph and returns a weighted crossing count.
+ *
+ * Pre-conditions:
+ *
+ *    1. Input graph must be simple (not a multigraph), directed, and include
+ *       only simple edges.
+ *    2. Edges in the input graph must have assigned weights.
+ *
+ * Post-conditions:
+ *
+ *    1. The graph and layering matrix are left unchanged.
+ *
+ * This algorithm is derived from Barth, et al., "Bilayer Cross Counting."
+ */
+function crossCount(g, layering) {
+  var cc = 0;
+  for (var i = 1; i < layering.length; ++i) {
+    cc += twoLayerCrossCount(g, layering[i-1], layering[i]);
+  }
+  return cc;
+}
+
+function twoLayerCrossCount(g, northLayer, southLayer) {
+  // Sort all of the edges between the north and south layers by their position
+  // in the north layer and then the south. Map these edges to the position of
+  // their head in the south layer.
+  var southPos = _.zipObject(southLayer,
+    _.map(southLayer, function (v, i) { return i; }));
+  var southEntries = _.flatten(_.map(northLayer, function(v) {
+    return _.sortBy(_.map(g.outEdges(v), function(e) {
+      return { pos: southPos[e.w], weight: g.edge(e).weight };
+    }), "pos");
+  }), true);
+
+  // Build the accumulator tree
+  var firstIndex = 1;
+  while (firstIndex < southLayer.length) firstIndex <<= 1;
+  var treeSize = 2 * firstIndex - 1;
+  firstIndex -= 1;
+  var tree = _.map(new Array(treeSize), function() { return 0; });
+
+  // Calculate the weighted crossings
+  var cc = 0;
+  _.forEach(southEntries.forEach(function(entry) {
+    var index = entry.pos + firstIndex;
+    tree[index] += entry.weight;
+    var weightSum = 0;
+    while (index > 0) {
+      if (index % 2) {
+        weightSum += tree[index + 1];
+      }
+      index = (index - 1) >> 1;
+      tree[index] += entry.weight;
+    }
+    cc += entry.weight * weightSum;
+  }));
+
+  return cc;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/index.js":
+/*!***********************************************!*\
+  !*** ./node_modules/dagre/lib/order/index.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var initOrder = __webpack_require__(/*! ./init-order */ "./node_modules/dagre/lib/order/init-order.js");
+var crossCount = __webpack_require__(/*! ./cross-count */ "./node_modules/dagre/lib/order/cross-count.js");
+var sortSubgraph = __webpack_require__(/*! ./sort-subgraph */ "./node_modules/dagre/lib/order/sort-subgraph.js");
+var buildLayerGraph = __webpack_require__(/*! ./build-layer-graph */ "./node_modules/dagre/lib/order/build-layer-graph.js");
+var addSubgraphConstraints = __webpack_require__(/*! ./add-subgraph-constraints */ "./node_modules/dagre/lib/order/add-subgraph-constraints.js");
+var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js");
+
+module.exports = order;
+
+/*
+ * Applies heuristics to minimize edge crossings in the graph and sets the best
+ * order solution as an order attribute on each node.
+ *
+ * Pre-conditions:
+ *
+ *    1. Graph must be DAG
+ *    2. Graph nodes must be objects with a "rank" attribute
+ *    3. Graph edges must have the "weight" attribute
+ *
+ * Post-conditions:
+ *
+ *    1. Graph nodes will have an "order" attribute based on the results of the
+ *       algorithm.
+ */
+function order(g) {
+  var maxRank = util.maxRank(g),
+    downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), "inEdges"),
+    upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), "outEdges");
+
+  var layering = initOrder(g);
+  assignOrder(g, layering);
+
+  var bestCC = Number.POSITIVE_INFINITY,
+    best;
+
+  for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {
+    sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);
+
+    layering = util.buildLayerMatrix(g);
+    var cc = crossCount(g, layering);
+    if (cc < bestCC) {
+      lastBest = 0;
+      best = _.cloneDeep(layering);
+      bestCC = cc;
+    }
+  }
+
+  assignOrder(g, best);
+}
+
+function buildLayerGraphs(g, ranks, relationship) {
+  return _.map(ranks, function(rank) {
+    return buildLayerGraph(g, rank, relationship);
+  });
+}
+
+function sweepLayerGraphs(layerGraphs, biasRight) {
+  var cg = new Graph();
+  _.forEach(layerGraphs, function(lg) {
+    var root = lg.graph().root;
+    var sorted = sortSubgraph(lg, root, cg, biasRight);
+    _.forEach(sorted.vs, function(v, i) {
+      lg.node(v).order = i;
+    });
+    addSubgraphConstraints(lg, cg, sorted.vs);
+  });
+}
+
+function assignOrder(g, layering) {
+  _.forEach(layering, function(layer) {
+    _.forEach(layer, function(v, i) {
+      g.node(v).order = i;
+    });
+  });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/init-order.js":
+/*!****************************************************!*\
+  !*** ./node_modules/dagre/lib/order/init-order.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = initOrder;
+
+/*
+ * Assigns an initial order value for each node by performing a DFS search
+ * starting from nodes in the first rank. Nodes are assigned an order in their
+ * rank as they are first visited.
+ *
+ * This approach comes from Gansner, et al., "A Technique for Drawing Directed
+ * Graphs."
+ *
+ * Returns a layering matrix with an array per layer and each layer sorted by
+ * the order of its nodes.
+ */
+function initOrder(g) {
+  var visited = {};
+  var simpleNodes = _.filter(g.nodes(), function(v) {
+    return !g.children(v).length;
+  });
+  var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));
+  var layers = _.map(_.range(maxRank + 1), function() { return []; });
+
+  function dfs(v) {
+    if (_.has(visited, v)) return;
+    visited[v] = true;
+    var node = g.node(v);
+    layers[node.rank].push(v);
+    _.forEach(g.successors(v), dfs);
+  }
+
+  var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });
+  _.forEach(orderedVs, dfs);
+
+  return layers;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/resolve-conflicts.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/dagre/lib/order/resolve-conflicts.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = resolveConflicts;
+
+/*
+ * Given a list of entries of the form {v, barycenter, weight} and a
+ * constraint graph this function will resolve any conflicts between the
+ * constraint graph and the barycenters for the entries. If the barycenters for
+ * an entry would violate a constraint in the constraint graph then we coalesce
+ * the nodes in the conflict into a new node that respects the contraint and
+ * aggregates barycenter and weight information.
+ *
+ * This implementation is based on the description in Forster, "A Fast and
+ * Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it
+ * differs in some specific details.
+ *
+ * Pre-conditions:
+ *
+ *    1. Each entry has the form {v, barycenter, weight}, or if the node has
+ *       no barycenter, then {v}.
+ *
+ * Returns:
+ *
+ *    A new list of entries of the form {vs, i, barycenter, weight}. The list
+ *    `vs` may either be a singleton or it may be an aggregation of nodes
+ *    ordered such that they do not violate constraints from the constraint
+ *    graph. The property `i` is the lowest original index of any of the
+ *    elements in `vs`.
+ */
+function resolveConflicts(entries, cg) {
+  var mappedEntries = {};
+  _.forEach(entries, function(entry, i) {
+    var tmp = mappedEntries[entry.v] = {
+      indegree: 0,
+      "in": [],
+      out: [],
+      vs: [entry.v],
+      i: i
+    };
+    if (!_.isUndefined(entry.barycenter)) {
+      tmp.barycenter = entry.barycenter;
+      tmp.weight = entry.weight;
+    }
+  });
+
+  _.forEach(cg.edges(), function(e) {
+    var entryV = mappedEntries[e.v];
+    var entryW = mappedEntries[e.w];
+    if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {
+      entryW.indegree++;
+      entryV.out.push(mappedEntries[e.w]);
+    }
+  });
+
+  var sourceSet = _.filter(mappedEntries, function(entry) {
+    return !entry.indegree;
+  });
+
+  return doResolveConflicts(sourceSet);
+}
+
+function doResolveConflicts(sourceSet) {
+  var entries = [];
+
+  function handleIn(vEntry) {
+    return function(uEntry) {
+      if (uEntry.merged) {
+        return;
+      }
+      if (_.isUndefined(uEntry.barycenter) ||
+          _.isUndefined(vEntry.barycenter) ||
+          uEntry.barycenter >= vEntry.barycenter) {
+        mergeEntries(vEntry, uEntry);
+      }
+    };
+  }
+
+  function handleOut(vEntry) {
+    return function(wEntry) {
+      wEntry["in"].push(vEntry);
+      if (--wEntry.indegree === 0) {
+        sourceSet.push(wEntry);
+      }
+    };
+  }
+
+  while (sourceSet.length) {
+    var entry = sourceSet.pop();
+    entries.push(entry);
+    _.forEach(entry["in"].reverse(), handleIn(entry));
+    _.forEach(entry.out, handleOut(entry));
+  }
+
+  return _.map(_.filter(entries, function(entry) { return !entry.merged; }),
+    function(entry) {
+      return _.pick(entry, ["vs", "i", "barycenter", "weight"]);
+    });
+
+}
+
+function mergeEntries(target, source) {
+  var sum = 0;
+  var weight = 0;
+
+  if (target.weight) {
+    sum += target.barycenter * target.weight;
+    weight += target.weight;
+  }
+
+  if (source.weight) {
+    sum += source.barycenter * source.weight;
+    weight += source.weight;
+  }
+
+  target.vs = source.vs.concat(target.vs);
+  target.barycenter = sum / weight;
+  target.weight = weight;
+  target.i = Math.min(source.i, target.i);
+  source.merged = true;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/sort-subgraph.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/dagre/lib/order/sort-subgraph.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var barycenter = __webpack_require__(/*! ./barycenter */ "./node_modules/dagre/lib/order/barycenter.js");
+var resolveConflicts = __webpack_require__(/*! ./resolve-conflicts */ "./node_modules/dagre/lib/order/resolve-conflicts.js");
+var sort = __webpack_require__(/*! ./sort */ "./node_modules/dagre/lib/order/sort.js");
+
+module.exports = sortSubgraph;
+
+function sortSubgraph(g, v, cg, biasRight) {
+  var movable = g.children(v);
+  var node = g.node(v);
+  var bl = node ? node.borderLeft : undefined;
+  var br = node ? node.borderRight: undefined;
+  var subgraphs = {};
+
+  if (bl) {
+    movable = _.filter(movable, function(w) {
+      return w !== bl && w !== br;
+    });
+  }
+
+  var barycenters = barycenter(g, movable);
+  _.forEach(barycenters, function(entry) {
+    if (g.children(entry.v).length) {
+      var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
+      subgraphs[entry.v] = subgraphResult;
+      if (_.has(subgraphResult, "barycenter")) {
+        mergeBarycenters(entry, subgraphResult);
+      }
+    }
+  });
+
+  var entries = resolveConflicts(barycenters, cg);
+  expandSubgraphs(entries, subgraphs);
+
+  var result = sort(entries, biasRight);
+
+  if (bl) {
+    result.vs = _.flatten([bl, result.vs, br], true);
+    if (g.predecessors(bl).length) {
+      var blPred = g.node(g.predecessors(bl)[0]),
+        brPred = g.node(g.predecessors(br)[0]);
+      if (!_.has(result, "barycenter")) {
+        result.barycenter = 0;
+        result.weight = 0;
+      }
+      result.barycenter = (result.barycenter * result.weight +
+                           blPred.order + brPred.order) / (result.weight + 2);
+      result.weight += 2;
+    }
+  }
+
+  return result;
+}
+
+function expandSubgraphs(entries, subgraphs) {
+  _.forEach(entries, function(entry) {
+    entry.vs = _.flatten(entry.vs.map(function(v) {
+      if (subgraphs[v]) {
+        return subgraphs[v].vs;
+      }
+      return v;
+    }), true);
+  });
+}
+
+function mergeBarycenters(target, other) {
+  if (!_.isUndefined(target.barycenter)) {
+    target.barycenter = (target.barycenter * target.weight +
+                         other.barycenter * other.weight) /
+                        (target.weight + other.weight);
+    target.weight += other.weight;
+  } else {
+    target.barycenter = other.barycenter;
+    target.weight = other.weight;
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/order/sort.js":
+/*!**********************************************!*\
+  !*** ./node_modules/dagre/lib/order/sort.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js");
+
+module.exports = sort;
+
+function sort(entries, biasRight) {
+  var parts = util.partition(entries, function(entry) {
+    return _.has(entry, "barycenter");
+  });
+  var sortable = parts.lhs,
+    unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),
+    vs = [],
+    sum = 0,
+    weight = 0,
+    vsIndex = 0;
+
+  sortable.sort(compareWithBias(!!biasRight));
+
+  vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
+
+  _.forEach(sortable, function (entry) {
+    vsIndex += entry.vs.length;
+    vs.push(entry.vs);
+    sum += entry.barycenter * entry.weight;
+    weight += entry.weight;
+    vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
+  });
+
+  var result = { vs: _.flatten(vs, true) };
+  if (weight) {
+    result.barycenter = sum / weight;
+    result.weight = weight;
+  }
+  return result;
+}
+
+function consumeUnsortable(vs, unsortable, index) {
+  var last;
+  while (unsortable.length && (last = _.last(unsortable)).i <= index) {
+    unsortable.pop();
+    vs.push(last.vs);
+    index++;
+  }
+  return index;
+}
+
+function compareWithBias(bias) {
+  return function(entryV, entryW) {
+    if (entryV.barycenter < entryW.barycenter) {
+      return -1;
+    } else if (entryV.barycenter > entryW.barycenter) {
+      return 1;
+    }
+
+    return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;
+  };
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/parent-dummy-chains.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/dagre/lib/parent-dummy-chains.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = parentDummyChains;
+
+function parentDummyChains(g) {
+  var postorderNums = postorder(g);
+
+  _.forEach(g.graph().dummyChains, function(v) {
+    var node = g.node(v);
+    var edgeObj = node.edgeObj;
+    var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);
+    var path = pathData.path;
+    var lca = pathData.lca;
+    var pathIdx = 0;
+    var pathV = path[pathIdx];
+    var ascending = true;
+
+    while (v !== edgeObj.w) {
+      node = g.node(v);
+
+      if (ascending) {
+        while ((pathV = path[pathIdx]) !== lca &&
+               g.node(pathV).maxRank < node.rank) {
+          pathIdx++;
+        }
+
+        if (pathV === lca) {
+          ascending = false;
+        }
+      }
+
+      if (!ascending) {
+        while (pathIdx < path.length - 1 &&
+               g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {
+          pathIdx++;
+        }
+        pathV = path[pathIdx];
+      }
+
+      g.setParent(v, pathV);
+      v = g.successors(v)[0];
+    }
+  });
+}
+
+// Find a path from v to w through the lowest common ancestor (LCA). Return the
+// full path and the LCA.
+function findPath(g, postorderNums, v, w) {
+  var vPath = [];
+  var wPath = [];
+  var low = Math.min(postorderNums[v].low, postorderNums[w].low);
+  var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);
+  var parent;
+  var lca;
+
+  // Traverse up from v to find the LCA
+  parent = v;
+  do {
+    parent = g.parent(parent);
+    vPath.push(parent);
+  } while (parent &&
+           (postorderNums[parent].low > low || lim > postorderNums[parent].lim));
+  lca = parent;
+
+  // Traverse from w to LCA
+  parent = w;
+  while ((parent = g.parent(parent)) !== lca) {
+    wPath.push(parent);
+  }
+
+  return { path: vPath.concat(wPath.reverse()), lca: lca };
+}
+
+function postorder(g) {
+  var result = {};
+  var lim = 0;
+
+  function dfs(v) {
+    var low = lim;
+    _.forEach(g.children(v), dfs);
+    result[v] = { low: low, lim: lim++ };
+  }
+  _.forEach(g.children(), dfs);
+
+  return result;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/position/bk.js":
+/*!***********************************************!*\
+  !*** ./node_modules/dagre/lib/position/bk.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js");
+
+/*
+ * This module provides coordinate assignment based on Brandes and Köpf, "Fast
+ * and Simple Horizontal Coordinate Assignment."
+ */
+
+module.exports = {
+  positionX: positionX,
+  findType1Conflicts: findType1Conflicts,
+  findType2Conflicts: findType2Conflicts,
+  addConflict: addConflict,
+  hasConflict: hasConflict,
+  verticalAlignment: verticalAlignment,
+  horizontalCompaction: horizontalCompaction,
+  alignCoordinates: alignCoordinates,
+  findSmallestWidthAlignment: findSmallestWidthAlignment,
+  balance: balance
+};
+
+/*
+ * Marks all edges in the graph with a type-1 conflict with the "type1Conflict"
+ * property. A type-1 conflict is one where a non-inner segment crosses an
+ * inner segment. An inner segment is an edge with both incident nodes marked
+ * with the "dummy" property.
+ *
+ * This algorithm scans layer by layer, starting with the second, for type-1
+ * conflicts between the current layer and the previous layer. For each layer
+ * it scans the nodes from left to right until it reaches one that is incident
+ * on an inner segment. It then scans predecessors to determine if they have
+ * edges that cross that inner segment. At the end a final scan is done for all
+ * nodes on the current rank to see if they cross the last visited inner
+ * segment.
+ *
+ * This algorithm (safely) assumes that a dummy node will only be incident on a
+ * single node in the layers being scanned.
+ */
+function findType1Conflicts(g, layering) {
+  var conflicts = {};
+
+  function visitLayer(prevLayer, layer) {
+    var
+      // last visited node in the previous layer that is incident on an inner
+      // segment.
+      k0 = 0,
+      // Tracks the last node in this layer scanned for crossings with a type-1
+      // segment.
+      scanPos = 0,
+      prevLayerLength = prevLayer.length,
+      lastNode = _.last(layer);
+
+    _.forEach(layer, function(v, i) {
+      var w = findOtherInnerSegmentNode(g, v),
+        k1 = w ? g.node(w).order : prevLayerLength;
+
+      if (w || v === lastNode) {
+        _.forEach(layer.slice(scanPos, i +1), function(scanNode) {
+          _.forEach(g.predecessors(scanNode), function(u) {
+            var uLabel = g.node(u),
+              uPos = uLabel.order;
+            if ((uPos < k0 || k1 < uPos) &&
+                !(uLabel.dummy && g.node(scanNode).dummy)) {
+              addConflict(conflicts, u, scanNode);
+            }
+          });
+        });
+        scanPos = i + 1;
+        k0 = k1;
+      }
+    });
+
+    return layer;
+  }
+
+  _.reduce(layering, visitLayer);
+  return conflicts;
+}
+
+function findType2Conflicts(g, layering) {
+  var conflicts = {};
+
+  function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {
+    var v;
+    _.forEach(_.range(southPos, southEnd), function(i) {
+      v = south[i];
+      if (g.node(v).dummy) {
+        _.forEach(g.predecessors(v), function(u) {
+          var uNode = g.node(u);
+          if (uNode.dummy &&
+              (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {
+            addConflict(conflicts, u, v);
+          }
+        });
+      }
+    });
+  }
+
+
+  function visitLayer(north, south) {
+    var prevNorthPos = -1,
+      nextNorthPos,
+      southPos = 0;
+
+    _.forEach(south, function(v, southLookahead) {
+      if (g.node(v).dummy === "border") {
+        var predecessors = g.predecessors(v);
+        if (predecessors.length) {
+          nextNorthPos = g.node(predecessors[0]).order;
+          scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);
+          southPos = southLookahead;
+          prevNorthPos = nextNorthPos;
+        }
+      }
+      scan(south, southPos, south.length, nextNorthPos, north.length);
+    });
+
+    return south;
+  }
+
+  _.reduce(layering, visitLayer);
+  return conflicts;
+}
+
+function findOtherInnerSegmentNode(g, v) {
+  if (g.node(v).dummy) {
+    return _.find(g.predecessors(v), function(u) {
+      return g.node(u).dummy;
+    });
+  }
+}
+
+function addConflict(conflicts, v, w) {
+  if (v > w) {
+    var tmp = v;
+    v = w;
+    w = tmp;
+  }
+
+  var conflictsV = conflicts[v];
+  if (!conflictsV) {
+    conflicts[v] = conflictsV = {};
+  }
+  conflictsV[w] = true;
+}
+
+function hasConflict(conflicts, v, w) {
+  if (v > w) {
+    var tmp = v;
+    v = w;
+    w = tmp;
+  }
+  return _.has(conflicts[v], w);
+}
+
+/*
+ * Try to align nodes into vertical "blocks" where possible. This algorithm
+ * attempts to align a node with one of its median neighbors. If the edge
+ * connecting a neighbor is a type-1 conflict then we ignore that possibility.
+ * If a previous node has already formed a block with a node after the node
+ * we're trying to form a block with, we also ignore that possibility - our
+ * blocks would be split in that scenario.
+ */
+function verticalAlignment(g, layering, conflicts, neighborFn) {
+  var root = {},
+    align = {},
+    pos = {};
+
+  // We cache the position here based on the layering because the graph and
+  // layering may be out of sync. The layering matrix is manipulated to
+  // generate different extreme alignments.
+  _.forEach(layering, function(layer) {
+    _.forEach(layer, function(v, order) {
+      root[v] = v;
+      align[v] = v;
+      pos[v] = order;
+    });
+  });
+
+  _.forEach(layering, function(layer) {
+    var prevIdx = -1;
+    _.forEach(layer, function(v) {
+      var ws = neighborFn(v);
+      if (ws.length) {
+        ws = _.sortBy(ws, function(w) { return pos[w]; });
+        var mp = (ws.length - 1) / 2;
+        for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {
+          var w = ws[i];
+          if (align[v] === v &&
+              prevIdx < pos[w] &&
+              !hasConflict(conflicts, v, w)) {
+            align[w] = v;
+            align[v] = root[v] = root[w];
+            prevIdx = pos[w];
+          }
+        }
+      }
+    });
+  });
+
+  return { root: root, align: align };
+}
+
+function horizontalCompaction(g, layering, root, align, reverseSep) {
+  // This portion of the algorithm differs from BK due to a number of problems.
+  // Instead of their algorithm we construct a new block graph and do two
+  // sweeps. The first sweep places blocks with the smallest possible
+  // coordinates. The second sweep removes unused space by moving blocks to the
+  // greatest coordinates without violating separation.
+  var xs = {},
+    blockG = buildBlockGraph(g, layering, root, reverseSep),
+    borderType = reverseSep ? "borderLeft" : "borderRight";
+
+  function iterate(setXsFunc, nextNodesFunc) {
+    var stack = blockG.nodes();
+    var elem = stack.pop();
+    var visited = {};
+    while (elem) {
+      if (visited[elem]) {
+        setXsFunc(elem);
+      } else {
+        visited[elem] = true;
+        stack.push(elem);
+        stack = stack.concat(nextNodesFunc(elem));
+      }
+
+      elem = stack.pop();
+    }
+  }
+
+  // First pass, assign smallest coordinates
+  function pass1(elem) {
+    xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {
+      return Math.max(acc, xs[e.v] + blockG.edge(e));
+    }, 0);
+  }
+
+  // Second pass, assign greatest coordinates
+  function pass2(elem) {
+    var min = blockG.outEdges(elem).reduce(function(acc, e) {
+      return Math.min(acc, xs[e.w] - blockG.edge(e));
+    }, Number.POSITIVE_INFINITY);
+
+    var node = g.node(elem);
+    if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {
+      xs[elem] = Math.max(xs[elem], min);
+    }
+  }
+
+  iterate(pass1, blockG.predecessors.bind(blockG));
+  iterate(pass2, blockG.successors.bind(blockG));
+
+  // Assign x coordinates to all nodes
+  _.forEach(align, function(v) {
+    xs[v] = xs[root[v]];
+  });
+
+  return xs;
+}
+
+
+function buildBlockGraph(g, layering, root, reverseSep) {
+  var blockGraph = new Graph(),
+    graphLabel = g.graph(),
+    sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);
+
+  _.forEach(layering, function(layer) {
+    var u;
+    _.forEach(layer, function(v) {
+      var vRoot = root[v];
+      blockGraph.setNode(vRoot);
+      if (u) {
+        var uRoot = root[u],
+          prevMax = blockGraph.edge(uRoot, vRoot);
+        blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));
+      }
+      u = v;
+    });
+  });
+
+  return blockGraph;
+}
+
+/*
+ * Returns the alignment that has the smallest width of the given alignments.
+ */
+function findSmallestWidthAlignment(g, xss) {
+  return _.minBy(_.values(xss), function (xs) {
+    var max = Number.NEGATIVE_INFINITY;
+    var min = Number.POSITIVE_INFINITY;
+
+    _.forIn(xs, function (x, v) {
+      var halfWidth = width(g, v) / 2;
+
+      max = Math.max(x + halfWidth, max);
+      min = Math.min(x - halfWidth, min);
+    });
+
+    return max - min;
+  });
+}
+
+/*
+ * Align the coordinates of each of the layout alignments such that
+ * left-biased alignments have their minimum coordinate at the same point as
+ * the minimum coordinate of the smallest width alignment and right-biased
+ * alignments have their maximum coordinate at the same point as the maximum
+ * coordinate of the smallest width alignment.
+ */
+function alignCoordinates(xss, alignTo) {
+  var alignToVals = _.values(alignTo),
+    alignToMin = _.min(alignToVals),
+    alignToMax = _.max(alignToVals);
+
+  _.forEach(["u", "d"], function(vert) {
+    _.forEach(["l", "r"], function(horiz) {
+      var alignment = vert + horiz,
+        xs = xss[alignment],
+        delta;
+      if (xs === alignTo) return;
+
+      var xsVals = _.values(xs);
+      delta = horiz === "l" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);
+
+      if (delta) {
+        xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });
+      }
+    });
+  });
+}
+
+function balance(xss, align) {
+  return _.mapValues(xss.ul, function(ignore, v) {
+    if (align) {
+      return xss[align.toLowerCase()][v];
+    } else {
+      var xs = _.sortBy(_.map(xss, v));
+      return (xs[1] + xs[2]) / 2;
+    }
+  });
+}
+
+function positionX(g) {
+  var layering = util.buildLayerMatrix(g);
+  var conflicts = _.merge(
+    findType1Conflicts(g, layering),
+    findType2Conflicts(g, layering));
+
+  var xss = {};
+  var adjustedLayering;
+  _.forEach(["u", "d"], function(vert) {
+    adjustedLayering = vert === "u" ? layering : _.values(layering).reverse();
+    _.forEach(["l", "r"], function(horiz) {
+      if (horiz === "r") {
+        adjustedLayering = _.map(adjustedLayering, function(inner) {
+          return _.values(inner).reverse();
+        });
+      }
+
+      var neighborFn = (vert === "u" ? g.predecessors : g.successors).bind(g);
+      var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);
+      var xs = horizontalCompaction(g, adjustedLayering,
+        align.root, align.align, horiz === "r");
+      if (horiz === "r") {
+        xs = _.mapValues(xs, function(x) { return -x; });
+      }
+      xss[vert + horiz] = xs;
+    });
+  });
+
+  var smallestWidth = findSmallestWidthAlignment(g, xss);
+  alignCoordinates(xss, smallestWidth);
+  return balance(xss, g.graph().align);
+}
+
+function sep(nodeSep, edgeSep, reverseSep) {
+  return function(g, v, w) {
+    var vLabel = g.node(v);
+    var wLabel = g.node(w);
+    var sum = 0;
+    var delta;
+
+    sum += vLabel.width / 2;
+    if (_.has(vLabel, "labelpos")) {
+      switch (vLabel.labelpos.toLowerCase()) {
+      case "l": delta = -vLabel.width / 2; break;
+      case "r": delta = vLabel.width / 2; break;
+      }
+    }
+    if (delta) {
+      sum += reverseSep ? delta : -delta;
+    }
+    delta = 0;
+
+    sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;
+    sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;
+
+    sum += wLabel.width / 2;
+    if (_.has(wLabel, "labelpos")) {
+      switch (wLabel.labelpos.toLowerCase()) {
+      case "l": delta = wLabel.width / 2; break;
+      case "r": delta = -wLabel.width / 2; break;
+      }
+    }
+    if (delta) {
+      sum += reverseSep ? delta : -delta;
+    }
+    delta = 0;
+
+    return sum;
+  };
+}
+
+function width(g, v) {
+  return g.node(v).width;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/position/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/dagre/lib/position/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js");
+var positionX = __webpack_require__(/*! ./bk */ "./node_modules/dagre/lib/position/bk.js").positionX;
+
+module.exports = position;
+
+function position(g) {
+  g = util.asNonCompoundGraph(g);
+
+  positionY(g);
+  _.forEach(positionX(g), function(x, v) {
+    g.node(v).x = x;
+  });
+}
+
+function positionY(g) {
+  var layering = util.buildLayerMatrix(g);
+  var rankSep = g.graph().ranksep;
+  var prevY = 0;
+  _.forEach(layering, function(layer) {
+    var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));
+    _.forEach(layer, function(v) {
+      g.node(v).y = prevY + maxHeight / 2;
+    });
+    prevY += maxHeight + rankSep;
+  });
+}
+
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/rank/feasible-tree.js":
+/*!******************************************************!*\
+  !*** ./node_modules/dagre/lib/rank/feasible-tree.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack;
+
+module.exports = feasibleTree;
+
+/*
+ * Constructs a spanning tree with tight edges and adjusted the input node's
+ * ranks to achieve this. A tight edge is one that is has a length that matches
+ * its "minlen" attribute.
+ *
+ * The basic structure for this function is derived from Gansner, et al., "A
+ * Technique for Drawing Directed Graphs."
+ *
+ * Pre-conditions:
+ *
+ *    1. Graph must be a DAG.
+ *    2. Graph must be connected.
+ *    3. Graph must have at least one node.
+ *    5. Graph nodes must have been previously assigned a "rank" property that
+ *       respects the "minlen" property of incident edges.
+ *    6. Graph edges must have a "minlen" property.
+ *
+ * Post-conditions:
+ *
+ *    - Graph nodes will have their rank adjusted to ensure that all edges are
+ *      tight.
+ *
+ * Returns a tree (undirected graph) that is constructed using only "tight"
+ * edges.
+ */
+function feasibleTree(g) {
+  var t = new Graph({ directed: false });
+
+  // Choose arbitrary node from which to start our tree
+  var start = g.nodes()[0];
+  var size = g.nodeCount();
+  t.setNode(start, {});
+
+  var edge, delta;
+  while (tightTree(t, g) < size) {
+    edge = findMinSlackEdge(t, g);
+    delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);
+    shiftRanks(t, g, delta);
+  }
+
+  return t;
+}
+
+/*
+ * Finds a maximal tree of tight edges and returns the number of nodes in the
+ * tree.
+ */
+function tightTree(t, g) {
+  function dfs(v) {
+    _.forEach(g.nodeEdges(v), function(e) {
+      var edgeV = e.v,
+        w = (v === edgeV) ? e.w : edgeV;
+      if (!t.hasNode(w) && !slack(g, e)) {
+        t.setNode(w, {});
+        t.setEdge(v, w, {});
+        dfs(w);
+      }
+    });
+  }
+
+  _.forEach(t.nodes(), dfs);
+  return t.nodeCount();
+}
+
+/*
+ * Finds the edge with the smallest slack that is incident on tree and returns
+ * it.
+ */
+function findMinSlackEdge(t, g) {
+  return _.minBy(g.edges(), function(e) {
+    if (t.hasNode(e.v) !== t.hasNode(e.w)) {
+      return slack(g, e);
+    }
+  });
+}
+
+function shiftRanks(t, g, delta) {
+  _.forEach(t.nodes(), function(v) {
+    g.node(v).rank += delta;
+  });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/rank/index.js":
+/*!**********************************************!*\
+  !*** ./node_modules/dagre/lib/rank/index.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var rankUtil = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js");
+var longestPath = rankUtil.longestPath;
+var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js");
+var networkSimplex = __webpack_require__(/*! ./network-simplex */ "./node_modules/dagre/lib/rank/network-simplex.js");
+
+module.exports = rank;
+
+/*
+ * Assigns a rank to each node in the input graph that respects the "minlen"
+ * constraint specified on edges between nodes.
+ *
+ * This basic structure is derived from Gansner, et al., "A Technique for
+ * Drawing Directed Graphs."
+ *
+ * Pre-conditions:
+ *
+ *    1. Graph must be a connected DAG
+ *    2. Graph nodes must be objects
+ *    3. Graph edges must have "weight" and "minlen" attributes
+ *
+ * Post-conditions:
+ *
+ *    1. Graph nodes will have a "rank" attribute based on the results of the
+ *       algorithm. Ranks can start at any index (including negative), we'll
+ *       fix them up later.
+ */
+function rank(g) {
+  switch(g.graph().ranker) {
+  case "network-simplex": networkSimplexRanker(g); break;
+  case "tight-tree": tightTreeRanker(g); break;
+  case "longest-path": longestPathRanker(g); break;
+  default: networkSimplexRanker(g);
+  }
+}
+
+// A fast and simple ranker, but results are far from optimal.
+var longestPathRanker = longestPath;
+
+function tightTreeRanker(g) {
+  longestPath(g);
+  feasibleTree(g);
+}
+
+function networkSimplexRanker(g) {
+  networkSimplex(g);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/rank/network-simplex.js":
+/*!********************************************************!*\
+  !*** ./node_modules/dagre/lib/rank/network-simplex.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js");
+var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack;
+var initRank = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").longestPath;
+var preorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.preorder;
+var postorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.postorder;
+var simplify = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js").simplify;
+
+module.exports = networkSimplex;
+
+// Expose some internals for testing purposes
+networkSimplex.initLowLimValues = initLowLimValues;
+networkSimplex.initCutValues = initCutValues;
+networkSimplex.calcCutValue = calcCutValue;
+networkSimplex.leaveEdge = leaveEdge;
+networkSimplex.enterEdge = enterEdge;
+networkSimplex.exchangeEdges = exchangeEdges;
+
+/*
+ * The network simplex algorithm assigns ranks to each node in the input graph
+ * and iteratively improves the ranking to reduce the length of edges.
+ *
+ * Preconditions:
+ *
+ *    1. The input graph must be a DAG.
+ *    2. All nodes in the graph must have an object value.
+ *    3. All edges in the graph must have "minlen" and "weight" attributes.
+ *
+ * Postconditions:
+ *
+ *    1. All nodes in the graph will have an assigned "rank" attribute that has
+ *       been optimized by the network simplex algorithm. Ranks start at 0.
+ *
+ *
+ * A rough sketch of the algorithm is as follows:
+ *
+ *    1. Assign initial ranks to each node. We use the longest path algorithm,
+ *       which assigns ranks to the lowest position possible. In general this
+ *       leads to very wide bottom ranks and unnecessarily long edges.
+ *    2. Construct a feasible tight tree. A tight tree is one such that all
+ *       edges in the tree have no slack (difference between length of edge
+ *       and minlen for the edge). This by itself greatly improves the assigned
+ *       rankings by shorting edges.
+ *    3. Iteratively find edges that have negative cut values. Generally a
+ *       negative cut value indicates that the edge could be removed and a new
+ *       tree edge could be added to produce a more compact graph.
+ *
+ * Much of the algorithms here are derived from Gansner, et al., "A Technique
+ * for Drawing Directed Graphs." The structure of the file roughly follows the
+ * structure of the overall algorithm.
+ */
+function networkSimplex(g) {
+  g = simplify(g);
+  initRank(g);
+  var t = feasibleTree(g);
+  initLowLimValues(t);
+  initCutValues(t, g);
+
+  var e, f;
+  while ((e = leaveEdge(t))) {
+    f = enterEdge(t, g, e);
+    exchangeEdges(t, g, e, f);
+  }
+}
+
+/*
+ * Initializes cut values for all edges in the tree.
+ */
+function initCutValues(t, g) {
+  var vs = postorder(t, t.nodes());
+  vs = vs.slice(0, vs.length - 1);
+  _.forEach(vs, function(v) {
+    assignCutValue(t, g, v);
+  });
+}
+
+function assignCutValue(t, g, child) {
+  var childLab = t.node(child);
+  var parent = childLab.parent;
+  t.edge(child, parent).cutvalue = calcCutValue(t, g, child);
+}
+
+/*
+ * Given the tight tree, its graph, and a child in the graph calculate and
+ * return the cut value for the edge between the child and its parent.
+ */
+function calcCutValue(t, g, child) {
+  var childLab = t.node(child);
+  var parent = childLab.parent;
+  // True if the child is on the tail end of the edge in the directed graph
+  var childIsTail = true;
+  // The graph's view of the tree edge we're inspecting
+  var graphEdge = g.edge(child, parent);
+  // The accumulated cut value for the edge between this node and its parent
+  var cutValue = 0;
+
+  if (!graphEdge) {
+    childIsTail = false;
+    graphEdge = g.edge(parent, child);
+  }
+
+  cutValue = graphEdge.weight;
+
+  _.forEach(g.nodeEdges(child), function(e) {
+    var isOutEdge = e.v === child,
+      other = isOutEdge ? e.w : e.v;
+
+    if (other !== parent) {
+      var pointsToHead = isOutEdge === childIsTail,
+        otherWeight = g.edge(e).weight;
+
+      cutValue += pointsToHead ? otherWeight : -otherWeight;
+      if (isTreeEdge(t, child, other)) {
+        var otherCutValue = t.edge(child, other).cutvalue;
+        cutValue += pointsToHead ? -otherCutValue : otherCutValue;
+      }
+    }
+  });
+
+  return cutValue;
+}
+
+function initLowLimValues(tree, root) {
+  if (arguments.length < 2) {
+    root = tree.nodes()[0];
+  }
+  dfsAssignLowLim(tree, {}, 1, root);
+}
+
+function dfsAssignLowLim(tree, visited, nextLim, v, parent) {
+  var low = nextLim;
+  var label = tree.node(v);
+
+  visited[v] = true;
+  _.forEach(tree.neighbors(v), function(w) {
+    if (!_.has(visited, w)) {
+      nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);
+    }
+  });
+
+  label.low = low;
+  label.lim = nextLim++;
+  if (parent) {
+    label.parent = parent;
+  } else {
+    // TODO should be able to remove this when we incrementally update low lim
+    delete label.parent;
+  }
+
+  return nextLim;
+}
+
+function leaveEdge(tree) {
+  return _.find(tree.edges(), function(e) {
+    return tree.edge(e).cutvalue < 0;
+  });
+}
+
+function enterEdge(t, g, edge) {
+  var v = edge.v;
+  var w = edge.w;
+
+  // For the rest of this function we assume that v is the tail and w is the
+  // head, so if we don't have this edge in the graph we should flip it to
+  // match the correct orientation.
+  if (!g.hasEdge(v, w)) {
+    v = edge.w;
+    w = edge.v;
+  }
+
+  var vLabel = t.node(v);
+  var wLabel = t.node(w);
+  var tailLabel = vLabel;
+  var flip = false;
+
+  // If the root is in the tail of the edge then we need to flip the logic that
+  // checks for the head and tail nodes in the candidates function below.
+  if (vLabel.lim > wLabel.lim) {
+    tailLabel = wLabel;
+    flip = true;
+  }
+
+  var candidates = _.filter(g.edges(), function(edge) {
+    return flip === isDescendant(t, t.node(edge.v), tailLabel) &&
+           flip !== isDescendant(t, t.node(edge.w), tailLabel);
+  });
+
+  return _.minBy(candidates, function(edge) { return slack(g, edge); });
+}
+
+function exchangeEdges(t, g, e, f) {
+  var v = e.v;
+  var w = e.w;
+  t.removeEdge(v, w);
+  t.setEdge(f.v, f.w, {});
+  initLowLimValues(t);
+  initCutValues(t, g);
+  updateRanks(t, g);
+}
+
+function updateRanks(t, g) {
+  var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });
+  var vs = preorder(t, root);
+  vs = vs.slice(1);
+  _.forEach(vs, function(v) {
+    var parent = t.node(v).parent,
+      edge = g.edge(v, parent),
+      flipped = false;
+
+    if (!edge) {
+      edge = g.edge(parent, v);
+      flipped = true;
+    }
+
+    g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);
+  });
+}
+
+/*
+ * Returns true if the edge is in the tree.
+ */
+function isTreeEdge(tree, u, v) {
+  return tree.hasEdge(u, v);
+}
+
+/*
+ * Returns true if the specified node is descendant of the root node per the
+ * assigned low and lim attributes in the tree.
+ */
+function isDescendant(tree, vLabel, rootLabel) {
+  return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/rank/util.js":
+/*!*********************************************!*\
+  !*** ./node_modules/dagre/lib/rank/util.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js");
+
+module.exports = {
+  longestPath: longestPath,
+  slack: slack
+};
+
+/*
+ * Initializes ranks for the input graph using the longest path algorithm. This
+ * algorithm scales well and is fast in practice, it yields rather poor
+ * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom
+ * ranks wide and leaving edges longer than necessary. However, due to its
+ * speed, this algorithm is good for getting an initial ranking that can be fed
+ * into other algorithms.
+ *
+ * This algorithm does not normalize layers because it will be used by other
+ * algorithms in most cases. If using this algorithm directly, be sure to
+ * run normalize at the end.
+ *
+ * Pre-conditions:
+ *
+ *    1. Input graph is a DAG.
+ *    2. Input graph node labels can be assigned properties.
+ *
+ * Post-conditions:
+ *
+ *    1. Each node will be assign an (unnormalized) "rank" property.
+ */
+function longestPath(g) {
+  var visited = {};
+
+  function dfs(v) {
+    var label = g.node(v);
+    if (_.has(visited, v)) {
+      return label.rank;
+    }
+    visited[v] = true;
+
+    var rank = _.min(_.map(g.outEdges(v), function(e) {
+      return dfs(e.w) - g.edge(e).minlen;
+    }));
+
+    if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3
+        rank === undefined || // return value of _.map([]) for Lodash 4
+        rank === null) { // return value of _.map([null])
+      rank = 0;
+    }
+
+    return (label.rank = rank);
+  }
+
+  _.forEach(g.sources(), dfs);
+}
+
+/*
+ * Returns the amount of slack for the given edge. The slack is defined as the
+ * difference between the length of the edge and its minimum length.
+ */
+function slack(g, e) {
+  return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/util.js":
+/*!****************************************!*\
+  !*** ./node_modules/dagre/lib/util.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint "no-console": off */
+
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js");
+var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph;
+
+module.exports = {
+  addDummyNode: addDummyNode,
+  simplify: simplify,
+  asNonCompoundGraph: asNonCompoundGraph,
+  successorWeights: successorWeights,
+  predecessorWeights: predecessorWeights,
+  intersectRect: intersectRect,
+  buildLayerMatrix: buildLayerMatrix,
+  normalizeRanks: normalizeRanks,
+  removeEmptyRanks: removeEmptyRanks,
+  addBorderNode: addBorderNode,
+  maxRank: maxRank,
+  partition: partition,
+  time: time,
+  notime: notime
+};
+
+/*
+ * Adds a dummy node to the graph and return v.
+ */
+function addDummyNode(g, type, attrs, name) {
+  var v;
+  do {
+    v = _.uniqueId(name);
+  } while (g.hasNode(v));
+
+  attrs.dummy = type;
+  g.setNode(v, attrs);
+  return v;
+}
+
+/*
+ * Returns a new graph with only simple edges. Handles aggregation of data
+ * associated with multi-edges.
+ */
+function simplify(g) {
+  var simplified = new Graph().setGraph(g.graph());
+  _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });
+  _.forEach(g.edges(), function(e) {
+    var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };
+    var label = g.edge(e);
+    simplified.setEdge(e.v, e.w, {
+      weight: simpleLabel.weight + label.weight,
+      minlen: Math.max(simpleLabel.minlen, label.minlen)
+    });
+  });
+  return simplified;
+}
+
+function asNonCompoundGraph(g) {
+  var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());
+  _.forEach(g.nodes(), function(v) {
+    if (!g.children(v).length) {
+      simplified.setNode(v, g.node(v));
+    }
+  });
+  _.forEach(g.edges(), function(e) {
+    simplified.setEdge(e, g.edge(e));
+  });
+  return simplified;
+}
+
+function successorWeights(g) {
+  var weightMap = _.map(g.nodes(), function(v) {
+    var sucs = {};
+    _.forEach(g.outEdges(v), function(e) {
+      sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;
+    });
+    return sucs;
+  });
+  return _.zipObject(g.nodes(), weightMap);
+}
+
+function predecessorWeights(g) {
+  var weightMap = _.map(g.nodes(), function(v) {
+    var preds = {};
+    _.forEach(g.inEdges(v), function(e) {
+      preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;
+    });
+    return preds;
+  });
+  return _.zipObject(g.nodes(), weightMap);
+}
+
+/*
+ * Finds where a line starting at point ({x, y}) would intersect a rectangle
+ * ({x, y, width, height}) if it were pointing at the rectangle's center.
+ */
+function intersectRect(rect, point) {
+  var x = rect.x;
+  var y = rect.y;
+
+  // Rectangle intersection algorithm from:
+  // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes
+  var dx = point.x - x;
+  var dy = point.y - y;
+  var w = rect.width / 2;
+  var h = rect.height / 2;
+
+  if (!dx && !dy) {
+    throw new Error("Not possible to find intersection inside of the rectangle");
+  }
+
+  var sx, sy;
+  if (Math.abs(dy) * w > Math.abs(dx) * h) {
+    // Intersection is top or bottom of rect.
+    if (dy < 0) {
+      h = -h;
+    }
+    sx = h * dx / dy;
+    sy = h;
+  } else {
+    // Intersection is left or right of rect.
+    if (dx < 0) {
+      w = -w;
+    }
+    sx = w;
+    sy = w * dy / dx;
+  }
+
+  return { x: x + sx, y: y + sy };
+}
+
+/*
+ * Given a DAG with each node assigned "rank" and "order" properties, this
+ * function will produce a matrix with the ids of each node.
+ */
+function buildLayerMatrix(g) {
+  var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });
+  _.forEach(g.nodes(), function(v) {
+    var node = g.node(v);
+    var rank = node.rank;
+    if (!_.isUndefined(rank)) {
+      layering[rank][node.order] = v;
+    }
+  });
+  return layering;
+}
+
+/*
+ * Adjusts the ranks for all nodes in the graph such that all nodes v have
+ * rank(v) >= 0 and at least one node w has rank(w) = 0.
+ */
+function normalizeRanks(g) {
+  var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));
+  _.forEach(g.nodes(), function(v) {
+    var node = g.node(v);
+    if (_.has(node, "rank")) {
+      node.rank -= min;
+    }
+  });
+}
+
+function removeEmptyRanks(g) {
+  // Ranks may not start at 0, so we need to offset them
+  var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));
+
+  var layers = [];
+  _.forEach(g.nodes(), function(v) {
+    var rank = g.node(v).rank - offset;
+    if (!layers[rank]) {
+      layers[rank] = [];
+    }
+    layers[rank].push(v);
+  });
+
+  var delta = 0;
+  var nodeRankFactor = g.graph().nodeRankFactor;
+  _.forEach(layers, function(vs, i) {
+    if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {
+      --delta;
+    } else if (delta) {
+      _.forEach(vs, function(v) { g.node(v).rank += delta; });
+    }
+  });
+}
+
+function addBorderNode(g, prefix, rank, order) {
+  var node = {
+    width: 0,
+    height: 0
+  };
+  if (arguments.length >= 4) {
+    node.rank = rank;
+    node.order = order;
+  }
+  return addDummyNode(g, "border", node, prefix);
+}
+
+function maxRank(g) {
+  return _.max(_.map(g.nodes(), function(v) {
+    var rank = g.node(v).rank;
+    if (!_.isUndefined(rank)) {
+      return rank;
+    }
+  }));
+}
+
+/*
+ * Partition a collection into two groups: `lhs` and `rhs`. If the supplied
+ * function returns true for an entry it goes into `lhs`. Otherwise it goes
+ * into `rhs.
+ */
+function partition(collection, fn) {
+  var result = { lhs: [], rhs: [] };
+  _.forEach(collection, function(value) {
+    if (fn(value)) {
+      result.lhs.push(value);
+    } else {
+      result.rhs.push(value);
+    }
+  });
+  return result;
+}
+
+/*
+ * Returns a new function that wraps `fn` with a timer. The wrapper logs the
+ * time it takes to execute the function.
+ */
+function time(name, fn) {
+  var start = _.now();
+  try {
+    return fn();
+  } finally {
+    console.log(name + " time: " + (_.now() - start) + "ms");
+  }
+}
+
+function notime(name, fn) {
+  return fn();
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/dagre/lib/version.js":
+/*!*******************************************!*\
+  !*** ./node_modules/dagre/lib/version.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "0.8.5";
+
+
+/***/ }),
+
+/***/ "./node_modules/entity-decode/browser.js":
+/*!***********************************************!*\
+  !*** ./node_modules/entity-decode/browser.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return decode; });
+/**
+ * @see https://github.com/vuejs/vue/commit/a855dd0564a657a73b7249469490d39817f27cf7#diff-c0a2623ea5896a83e3b630f236b47b52
+ * @see https://stackoverflow.com/a/13091266/4936667
+ */
+
+var decoder;
+
+function decode(html) {
+    decoder = decoder || document.createElement('div');
+    // Escape HTML before decoding for HTML Entities
+    html = escape(html).replace(/%26/g,'&').replace(/%23/g,'#').replace(/%3B/g,';');
+    // decoding
+    decoder.innerHTML = html;
+
+    return unescape(decoder.textContent);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/index.js":
+/*!****************************************!*\
+  !*** ./node_modules/graphlib/index.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/**
+ * Copyright (c) 2014, Chris Pettitt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its contributors
+ * may be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+var lib = __webpack_require__(/*! ./lib */ "./node_modules/graphlib/lib/index.js");
+
+module.exports = {
+  Graph: lib.Graph,
+  json: __webpack_require__(/*! ./lib/json */ "./node_modules/graphlib/lib/json.js"),
+  alg: __webpack_require__(/*! ./lib/alg */ "./node_modules/graphlib/lib/alg/index.js"),
+  version: lib.version
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/components.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/components.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = components;
+
+function components(g) {
+  var visited = {};
+  var cmpts = [];
+  var cmpt;
+
+  function dfs(v) {
+    if (_.has(visited, v)) return;
+    visited[v] = true;
+    cmpt.push(v);
+    _.each(g.successors(v), dfs);
+    _.each(g.predecessors(v), dfs);
+  }
+
+  _.each(g.nodes(), function(v) {
+    cmpt = [];
+    dfs(v);
+    if (cmpt.length) {
+      cmpts.push(cmpt);
+    }
+  });
+
+  return cmpts;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/dfs.js":
+/*!**********************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/dfs.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = dfs;
+
+/*
+ * A helper that preforms a pre- or post-order traversal on the input graph
+ * and returns the nodes in the order they were visited. If the graph is
+ * undirected then this algorithm will navigate using neighbors. If the graph
+ * is directed then this algorithm will navigate using successors.
+ *
+ * Order must be one of "pre" or "post".
+ */
+function dfs(g, vs, order) {
+  if (!_.isArray(vs)) {
+    vs = [vs];
+  }
+
+  var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);
+
+  var acc = [];
+  var visited = {};
+  _.each(vs, function(v) {
+    if (!g.hasNode(v)) {
+      throw new Error("Graph does not have node: " + v);
+    }
+
+    doDfs(g, v, order === "post", visited, navigation, acc);
+  });
+  return acc;
+}
+
+function doDfs(g, v, postorder, visited, navigation, acc) {
+  if (!_.has(visited, v)) {
+    visited[v] = true;
+
+    if (!postorder) { acc.push(v); }
+    _.each(navigation(v), function(w) {
+      doDfs(g, w, postorder, visited, navigation, acc);
+    });
+    if (postorder) { acc.push(v); }
+  }
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/dijkstra-all.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/dijkstra-all.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dijkstra = __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js");
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = dijkstraAll;
+
+function dijkstraAll(g, weightFunc, edgeFunc) {
+  return _.transform(g.nodes(), function(acc, v) {
+    acc[v] = dijkstra(g, v, weightFunc, edgeFunc);
+  }, {});
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/dijkstra.js":
+/*!***************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/dijkstra.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js");
+
+module.exports = dijkstra;
+
+var DEFAULT_WEIGHT_FUNC = _.constant(1);
+
+function dijkstra(g, source, weightFn, edgeFn) {
+  return runDijkstra(g, String(source),
+    weightFn || DEFAULT_WEIGHT_FUNC,
+    edgeFn || function(v) { return g.outEdges(v); });
+}
+
+function runDijkstra(g, source, weightFn, edgeFn) {
+  var results = {};
+  var pq = new PriorityQueue();
+  var v, vEntry;
+
+  var updateNeighbors = function(edge) {
+    var w = edge.v !== v ? edge.v : edge.w;
+    var wEntry = results[w];
+    var weight = weightFn(edge);
+    var distance = vEntry.distance + weight;
+
+    if (weight < 0) {
+      throw new Error("dijkstra does not allow negative edge weights. " +
+                      "Bad edge: " + edge + " Weight: " + weight);
+    }
+
+    if (distance < wEntry.distance) {
+      wEntry.distance = distance;
+      wEntry.predecessor = v;
+      pq.decrease(w, distance);
+    }
+  };
+
+  g.nodes().forEach(function(v) {
+    var distance = v === source ? 0 : Number.POSITIVE_INFINITY;
+    results[v] = { distance: distance };
+    pq.add(v, distance);
+  });
+
+  while (pq.size() > 0) {
+    v = pq.removeMin();
+    vEntry = results[v];
+    if (vEntry.distance === Number.POSITIVE_INFINITY) {
+      break;
+    }
+
+    edgeFn(v).forEach(updateNeighbors);
+  }
+
+  return results;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/find-cycles.js":
+/*!******************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/find-cycles.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+var tarjan = __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js");
+
+module.exports = findCycles;
+
+function findCycles(g) {
+  return _.filter(tarjan(g), function(cmpt) {
+    return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));
+  });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/floyd-warshall.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/floyd-warshall.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = floydWarshall;
+
+var DEFAULT_WEIGHT_FUNC = _.constant(1);
+
+function floydWarshall(g, weightFn, edgeFn) {
+  return runFloydWarshall(g,
+    weightFn || DEFAULT_WEIGHT_FUNC,
+    edgeFn || function(v) { return g.outEdges(v); });
+}
+
+function runFloydWarshall(g, weightFn, edgeFn) {
+  var results = {};
+  var nodes = g.nodes();
+
+  nodes.forEach(function(v) {
+    results[v] = {};
+    results[v][v] = { distance: 0 };
+    nodes.forEach(function(w) {
+      if (v !== w) {
+        results[v][w] = { distance: Number.POSITIVE_INFINITY };
+      }
+    });
+    edgeFn(v).forEach(function(edge) {
+      var w = edge.v === v ? edge.w : edge.v;
+      var d = weightFn(edge);
+      results[v][w] = { distance: d, predecessor: v };
+    });
+  });
+
+  nodes.forEach(function(k) {
+    var rowK = results[k];
+    nodes.forEach(function(i) {
+      var rowI = results[i];
+      nodes.forEach(function(j) {
+        var ik = rowI[k];
+        var kj = rowK[j];
+        var ij = rowI[j];
+        var altDistance = ik.distance + kj.distance;
+        if (altDistance < ij.distance) {
+          ij.distance = altDistance;
+          ij.predecessor = kj.predecessor;
+        }
+      });
+    });
+  });
+
+  return results;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/index.js":
+/*!************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/index.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = {
+  components: __webpack_require__(/*! ./components */ "./node_modules/graphlib/lib/alg/components.js"),
+  dijkstra: __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js"),
+  dijkstraAll: __webpack_require__(/*! ./dijkstra-all */ "./node_modules/graphlib/lib/alg/dijkstra-all.js"),
+  findCycles: __webpack_require__(/*! ./find-cycles */ "./node_modules/graphlib/lib/alg/find-cycles.js"),
+  floydWarshall: __webpack_require__(/*! ./floyd-warshall */ "./node_modules/graphlib/lib/alg/floyd-warshall.js"),
+  isAcyclic: __webpack_require__(/*! ./is-acyclic */ "./node_modules/graphlib/lib/alg/is-acyclic.js"),
+  postorder: __webpack_require__(/*! ./postorder */ "./node_modules/graphlib/lib/alg/postorder.js"),
+  preorder: __webpack_require__(/*! ./preorder */ "./node_modules/graphlib/lib/alg/preorder.js"),
+  prim: __webpack_require__(/*! ./prim */ "./node_modules/graphlib/lib/alg/prim.js"),
+  tarjan: __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js"),
+  topsort: __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js")
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/is-acyclic.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/is-acyclic.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var topsort = __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js");
+
+module.exports = isAcyclic;
+
+function isAcyclic(g) {
+  try {
+    topsort(g);
+  } catch (e) {
+    if (e instanceof topsort.CycleException) {
+      return false;
+    }
+    throw e;
+  }
+  return true;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/postorder.js":
+/*!****************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/postorder.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js");
+
+module.exports = postorder;
+
+function postorder(g, vs) {
+  return dfs(g, vs, "post");
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/preorder.js":
+/*!***************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/preorder.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js");
+
+module.exports = preorder;
+
+function preorder(g, vs) {
+  return dfs(g, vs, "pre");
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/prim.js":
+/*!***********************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/prim.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+var Graph = __webpack_require__(/*! ../graph */ "./node_modules/graphlib/lib/graph.js");
+var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js");
+
+module.exports = prim;
+
+function prim(g, weightFunc) {
+  var result = new Graph();
+  var parents = {};
+  var pq = new PriorityQueue();
+  var v;
+
+  function updateNeighbors(edge) {
+    var w = edge.v === v ? edge.w : edge.v;
+    var pri = pq.priority(w);
+    if (pri !== undefined) {
+      var edgeWeight = weightFunc(edge);
+      if (edgeWeight < pri) {
+        parents[w] = v;
+        pq.decrease(w, edgeWeight);
+      }
+    }
+  }
+
+  if (g.nodeCount() === 0) {
+    return result;
+  }
+
+  _.each(g.nodes(), function(v) {
+    pq.add(v, Number.POSITIVE_INFINITY);
+    result.setNode(v);
+  });
+
+  // Start from an arbitrary node
+  pq.decrease(g.nodes()[0], 0);
+
+  var init = false;
+  while (pq.size() > 0) {
+    v = pq.removeMin();
+    if (_.has(parents, v)) {
+      result.setEdge(v, parents[v]);
+    } else if (init) {
+      throw new Error("Input graph is not connected: " + g);
+    } else {
+      init = true;
+    }
+
+    g.nodeEdges(v).forEach(updateNeighbors);
+  }
+
+  return result;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/tarjan.js":
+/*!*************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/tarjan.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = tarjan;
+
+function tarjan(g) {
+  var index = 0;
+  var stack = [];
+  var visited = {}; // node id -> { onStack, lowlink, index }
+  var results = [];
+
+  function dfs(v) {
+    var entry = visited[v] = {
+      onStack: true,
+      lowlink: index,
+      index: index++
+    };
+    stack.push(v);
+
+    g.successors(v).forEach(function(w) {
+      if (!_.has(visited, w)) {
+        dfs(w);
+        entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);
+      } else if (visited[w].onStack) {
+        entry.lowlink = Math.min(entry.lowlink, visited[w].index);
+      }
+    });
+
+    if (entry.lowlink === entry.index) {
+      var cmpt = [];
+      var w;
+      do {
+        w = stack.pop();
+        visited[w].onStack = false;
+        cmpt.push(w);
+      } while (v !== w);
+      results.push(cmpt);
+    }
+  }
+
+  g.nodes().forEach(function(v) {
+    if (!_.has(visited, v)) {
+      dfs(v);
+    }
+  });
+
+  return results;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/alg/topsort.js":
+/*!**************************************************!*\
+  !*** ./node_modules/graphlib/lib/alg/topsort.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = topsort;
+topsort.CycleException = CycleException;
+
+function topsort(g) {
+  var visited = {};
+  var stack = {};
+  var results = [];
+
+  function visit(node) {
+    if (_.has(stack, node)) {
+      throw new CycleException();
+    }
+
+    if (!_.has(visited, node)) {
+      stack[node] = true;
+      visited[node] = true;
+      _.each(g.predecessors(node), visit);
+      delete stack[node];
+      results.push(node);
+    }
+  }
+
+  _.each(g.sinks(), visit);
+
+  if (_.size(visited) !== g.nodeCount()) {
+    throw new CycleException();
+  }
+
+  return results;
+}
+
+function CycleException() {}
+CycleException.prototype = new Error(); // must be an instance of Error to pass testing
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/data/priority-queue.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/graphlib/lib/data/priority-queue.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = PriorityQueue;
+
+/**
+ * A min-priority queue data structure. This algorithm is derived from Cormen,
+ * et al., "Introduction to Algorithms". The basic idea of a min-priority
+ * queue is that you can efficiently (in O(1) time) get the smallest key in
+ * the queue. Adding and removing elements takes O(log n) time. A key can
+ * have its priority decreased in O(log n) time.
+ */
+function PriorityQueue() {
+  this._arr = [];
+  this._keyIndices = {};
+}
+
+/**
+ * Returns the number of elements in the queue. Takes `O(1)` time.
+ */
+PriorityQueue.prototype.size = function() {
+  return this._arr.length;
+};
+
+/**
+ * Returns the keys that are in the queue. Takes `O(n)` time.
+ */
+PriorityQueue.prototype.keys = function() {
+  return this._arr.map(function(x) { return x.key; });
+};
+
+/**
+ * Returns `true` if **key** is in the queue and `false` if not.
+ */
+PriorityQueue.prototype.has = function(key) {
+  return _.has(this._keyIndices, key);
+};
+
+/**
+ * Returns the priority for **key**. If **key** is not present in the queue
+ * then this function returns `undefined`. Takes `O(1)` time.
+ *
+ * @param {Object} key
+ */
+PriorityQueue.prototype.priority = function(key) {
+  var index = this._keyIndices[key];
+  if (index !== undefined) {
+    return this._arr[index].priority;
+  }
+};
+
+/**
+ * Returns the key for the minimum element in this queue. If the queue is
+ * empty this function throws an Error. Takes `O(1)` time.
+ */
+PriorityQueue.prototype.min = function() {
+  if (this.size() === 0) {
+    throw new Error("Queue underflow");
+  }
+  return this._arr[0].key;
+};
+
+/**
+ * Inserts a new key into the priority queue. If the key already exists in
+ * the queue this function returns `false`; otherwise it will return `true`.
+ * Takes `O(n)` time.
+ *
+ * @param {Object} key the key to add
+ * @param {Number} priority the initial priority for the key
+ */
+PriorityQueue.prototype.add = function(key, priority) {
+  var keyIndices = this._keyIndices;
+  key = String(key);
+  if (!_.has(keyIndices, key)) {
+    var arr = this._arr;
+    var index = arr.length;
+    keyIndices[key] = index;
+    arr.push({key: key, priority: priority});
+    this._decrease(index);
+    return true;
+  }
+  return false;
+};
+
+/**
+ * Removes and returns the smallest key in the queue. Takes `O(log n)` time.
+ */
+PriorityQueue.prototype.removeMin = function() {
+  this._swap(0, this._arr.length - 1);
+  var min = this._arr.pop();
+  delete this._keyIndices[min.key];
+  this._heapify(0);
+  return min.key;
+};
+
+/**
+ * Decreases the priority for **key** to **priority**. If the new priority is
+ * greater than the previous priority, this function will throw an Error.
+ *
+ * @param {Object} key the key for which to raise priority
+ * @param {Number} priority the new priority for the key
+ */
+PriorityQueue.prototype.decrease = function(key, priority) {
+  var index = this._keyIndices[key];
+  if (priority > this._arr[index].priority) {
+    throw new Error("New priority is greater than current priority. " +
+        "Key: " + key + " Old: " + this._arr[index].priority + " New: " + priority);
+  }
+  this._arr[index].priority = priority;
+  this._decrease(index);
+};
+
+PriorityQueue.prototype._heapify = function(i) {
+  var arr = this._arr;
+  var l = 2 * i;
+  var r = l + 1;
+  var largest = i;
+  if (l < arr.length) {
+    largest = arr[l].priority < arr[largest].priority ? l : largest;
+    if (r < arr.length) {
+      largest = arr[r].priority < arr[largest].priority ? r : largest;
+    }
+    if (largest !== i) {
+      this._swap(i, largest);
+      this._heapify(largest);
+    }
+  }
+};
+
+PriorityQueue.prototype._decrease = function(index) {
+  var arr = this._arr;
+  var priority = arr[index].priority;
+  var parent;
+  while (index !== 0) {
+    parent = index >> 1;
+    if (arr[parent].priority < priority) {
+      break;
+    }
+    this._swap(index, parent);
+    index = parent;
+  }
+};
+
+PriorityQueue.prototype._swap = function(i, j) {
+  var arr = this._arr;
+  var keyIndices = this._keyIndices;
+  var origArrI = arr[i];
+  var origArrJ = arr[j];
+  arr[i] = origArrJ;
+  arr[j] = origArrI;
+  keyIndices[origArrJ.key] = i;
+  keyIndices[origArrI.key] = j;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/graph.js":
+/*!********************************************!*\
+  !*** ./node_modules/graphlib/lib/graph.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js");
+
+module.exports = Graph;
+
+var DEFAULT_EDGE_NAME = "\x00";
+var GRAPH_NODE = "\x00";
+var EDGE_KEY_DELIM = "\x01";
+
+// Implementation notes:
+//
+//  * Node id query functions should return string ids for the nodes
+//  * Edge id query functions should return an "edgeObj", edge object, that is
+//    composed of enough information to uniquely identify an edge: {v, w, name}.
+//  * Internally we use an "edgeId", a stringified form of the edgeObj, to
+//    reference edges. This is because we need a performant way to look these
+//    edges up and, object properties, which have string keys, are the closest
+//    we're going to get to a performant hashtable in JavaScript.
+
+function Graph(opts) {
+  this._isDirected = _.has(opts, "directed") ? opts.directed : true;
+  this._isMultigraph = _.has(opts, "multigraph") ? opts.multigraph : false;
+  this._isCompound = _.has(opts, "compound") ? opts.compound : false;
+
+  // Label for the graph itself
+  this._label = undefined;
+
+  // Defaults to be set when creating a new node
+  this._defaultNodeLabelFn = _.constant(undefined);
+
+  // Defaults to be set when creating a new edge
+  this._defaultEdgeLabelFn = _.constant(undefined);
+
+  // v -> label
+  this._nodes = {};
+
+  if (this._isCompound) {
+    // v -> parent
+    this._parent = {};
+
+    // v -> children
+    this._children = {};
+    this._children[GRAPH_NODE] = {};
+  }
+
+  // v -> edgeObj
+  this._in = {};
+
+  // u -> v -> Number
+  this._preds = {};
+
+  // v -> edgeObj
+  this._out = {};
+
+  // v -> w -> Number
+  this._sucs = {};
+
+  // e -> edgeObj
+  this._edgeObjs = {};
+
+  // e -> label
+  this._edgeLabels = {};
+}
+
+/* Number of nodes in the graph. Should only be changed by the implementation. */
+Graph.prototype._nodeCount = 0;
+
+/* Number of edges in the graph. Should only be changed by the implementation. */
+Graph.prototype._edgeCount = 0;
+
+
+/* === Graph functions ========= */
+
+Graph.prototype.isDirected = function() {
+  return this._isDirected;
+};
+
+Graph.prototype.isMultigraph = function() {
+  return this._isMultigraph;
+};
+
+Graph.prototype.isCompound = function() {
+  return this._isCompound;
+};
+
+Graph.prototype.setGraph = function(label) {
+  this._label = label;
+  return this;
+};
+
+Graph.prototype.graph = function() {
+  return this._label;
+};
+
+
+/* === Node functions ========== */
+
+Graph.prototype.setDefaultNodeLabel = function(newDefault) {
+  if (!_.isFunction(newDefault)) {
+    newDefault = _.constant(newDefault);
+  }
+  this._defaultNodeLabelFn = newDefault;
+  return this;
+};
+
+Graph.prototype.nodeCount = function() {
+  return this._nodeCount;
+};
+
+Graph.prototype.nodes = function() {
+  return _.keys(this._nodes);
+};
+
+Graph.prototype.sources = function() {
+  var self = this;
+  return _.filter(this.nodes(), function(v) {
+    return _.isEmpty(self._in[v]);
+  });
+};
+
+Graph.prototype.sinks = function() {
+  var self = this;
+  return _.filter(this.nodes(), function(v) {
+    return _.isEmpty(self._out[v]);
+  });
+};
+
+Graph.prototype.setNodes = function(vs, value) {
+  var args = arguments;
+  var self = this;
+  _.each(vs, function(v) {
+    if (args.length > 1) {
+      self.setNode(v, value);
+    } else {
+      self.setNode(v);
+    }
+  });
+  return this;
+};
+
+Graph.prototype.setNode = function(v, value) {
+  if (_.has(this._nodes, v)) {
+    if (arguments.length > 1) {
+      this._nodes[v] = value;
+    }
+    return this;
+  }
+
+  this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);
+  if (this._isCompound) {
+    this._parent[v] = GRAPH_NODE;
+    this._children[v] = {};
+    this._children[GRAPH_NODE][v] = true;
+  }
+  this._in[v] = {};
+  this._preds[v] = {};
+  this._out[v] = {};
+  this._sucs[v] = {};
+  ++this._nodeCount;
+  return this;
+};
+
+Graph.prototype.node = function(v) {
+  return this._nodes[v];
+};
+
+Graph.prototype.hasNode = function(v) {
+  return _.has(this._nodes, v);
+};
+
+Graph.prototype.removeNode =  function(v) {
+  var self = this;
+  if (_.has(this._nodes, v)) {
+    var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };
+    delete this._nodes[v];
+    if (this._isCompound) {
+      this._removeFromParentsChildList(v);
+      delete this._parent[v];
+      _.each(this.children(v), function(child) {
+        self.setParent(child);
+      });
+      delete this._children[v];
+    }
+    _.each(_.keys(this._in[v]), removeEdge);
+    delete this._in[v];
+    delete this._preds[v];
+    _.each(_.keys(this._out[v]), removeEdge);
+    delete this._out[v];
+    delete this._sucs[v];
+    --this._nodeCount;
+  }
+  return this;
+};
+
+Graph.prototype.setParent = function(v, parent) {
+  if (!this._isCompound) {
+    throw new Error("Cannot set parent in a non-compound graph");
+  }
+
+  if (_.isUndefined(parent)) {
+    parent = GRAPH_NODE;
+  } else {
+    // Coerce parent to string
+    parent += "";
+    for (var ancestor = parent;
+      !_.isUndefined(ancestor);
+      ancestor = this.parent(ancestor)) {
+      if (ancestor === v) {
+        throw new Error("Setting " + parent+ " as parent of " + v +
+                        " would create a cycle");
+      }
+    }
+
+    this.setNode(parent);
+  }
+
+  this.setNode(v);
+  this._removeFromParentsChildList(v);
+  this._parent[v] = parent;
+  this._children[parent][v] = true;
+  return this;
+};
+
+Graph.prototype._removeFromParentsChildList = function(v) {
+  delete this._children[this._parent[v]][v];
+};
+
+Graph.prototype.parent = function(v) {
+  if (this._isCompound) {
+    var parent = this._parent[v];
+    if (parent !== GRAPH_NODE) {
+      return parent;
+    }
+  }
+};
+
+Graph.prototype.children = function(v) {
+  if (_.isUndefined(v)) {
+    v = GRAPH_NODE;
+  }
+
+  if (this._isCompound) {
+    var children = this._children[v];
+    if (children) {
+      return _.keys(children);
+    }
+  } else if (v === GRAPH_NODE) {
+    return this.nodes();
+  } else if (this.hasNode(v)) {
+    return [];
+  }
+};
+
+Graph.prototype.predecessors = function(v) {
+  var predsV = this._preds[v];
+  if (predsV) {
+    return _.keys(predsV);
+  }
+};
+
+Graph.prototype.successors = function(v) {
+  var sucsV = this._sucs[v];
+  if (sucsV) {
+    return _.keys(sucsV);
+  }
+};
+
+Graph.prototype.neighbors = function(v) {
+  var preds = this.predecessors(v);
+  if (preds) {
+    return _.union(preds, this.successors(v));
+  }
+};
+
+Graph.prototype.isLeaf = function (v) {
+  var neighbors;
+  if (this.isDirected()) {
+    neighbors = this.successors(v);
+  } else {
+    neighbors = this.neighbors(v);
+  }
+  return neighbors.length === 0;
+};
+
+Graph.prototype.filterNodes = function(filter) {
+  var copy = new this.constructor({
+    directed: this._isDirected,
+    multigraph: this._isMultigraph,
+    compound: this._isCompound
+  });
+
+  copy.setGraph(this.graph());
+
+  var self = this;
+  _.each(this._nodes, function(value, v) {
+    if (filter(v)) {
+      copy.setNode(v, value);
+    }
+  });
+
+  _.each(this._edgeObjs, function(e) {
+    if (copy.hasNode(e.v) && copy.hasNode(e.w)) {
+      copy.setEdge(e, self.edge(e));
+    }
+  });
+
+  var parents = {};
+  function findParent(v) {
+    var parent = self.parent(v);
+    if (parent === undefined || copy.hasNode(parent)) {
+      parents[v] = parent;
+      return parent;
+    } else if (parent in parents) {
+      return parents[parent];
+    } else {
+      return findParent(parent);
+    }
+  }
+
+  if (this._isCompound) {
+    _.each(copy.nodes(), function(v) {
+      copy.setParent(v, findParent(v));
+    });
+  }
+
+  return copy;
+};
+
+/* === Edge functions ========== */
+
+Graph.prototype.setDefaultEdgeLabel = function(newDefault) {
+  if (!_.isFunction(newDefault)) {
+    newDefault = _.constant(newDefault);
+  }
+  this._defaultEdgeLabelFn = newDefault;
+  return this;
+};
+
+Graph.prototype.edgeCount = function() {
+  return this._edgeCount;
+};
+
+Graph.prototype.edges = function() {
+  return _.values(this._edgeObjs);
+};
+
+Graph.prototype.setPath = function(vs, value) {
+  var self = this;
+  var args = arguments;
+  _.reduce(vs, function(v, w) {
+    if (args.length > 1) {
+      self.setEdge(v, w, value);
+    } else {
+      self.setEdge(v, w);
+    }
+    return w;
+  });
+  return this;
+};
+
+/*
+ * setEdge(v, w, [value, [name]])
+ * setEdge({ v, w, [name] }, [value])
+ */
+Graph.prototype.setEdge = function() {
+  var v, w, name, value;
+  var valueSpecified = false;
+  var arg0 = arguments[0];
+
+  if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) {
+    v = arg0.v;
+    w = arg0.w;
+    name = arg0.name;
+    if (arguments.length === 2) {
+      value = arguments[1];
+      valueSpecified = true;
+    }
+  } else {
+    v = arg0;
+    w = arguments[1];
+    name = arguments[3];
+    if (arguments.length > 2) {
+      value = arguments[2];
+      valueSpecified = true;
+    }
+  }
+
+  v = "" + v;
+  w = "" + w;
+  if (!_.isUndefined(name)) {
+    name = "" + name;
+  }
+
+  var e = edgeArgsToId(this._isDirected, v, w, name);
+  if (_.has(this._edgeLabels, e)) {
+    if (valueSpecified) {
+      this._edgeLabels[e] = value;
+    }
+    return this;
+  }
+
+  if (!_.isUndefined(name) && !this._isMultigraph) {
+    throw new Error("Cannot set a named edge when isMultigraph = false");
+  }
+
+  // It didn't exist, so we need to create it.
+  // First ensure the nodes exist.
+  this.setNode(v);
+  this.setNode(w);
+
+  this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);
+
+  var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);
+  // Ensure we add undirected edges in a consistent way.
+  v = edgeObj.v;
+  w = edgeObj.w;
+
+  Object.freeze(edgeObj);
+  this._edgeObjs[e] = edgeObj;
+  incrementOrInitEntry(this._preds[w], v);
+  incrementOrInitEntry(this._sucs[v], w);
+  this._in[w][e] = edgeObj;
+  this._out[v][e] = edgeObj;
+  this._edgeCount++;
+  return this;
+};
+
+Graph.prototype.edge = function(v, w, name) {
+  var e = (arguments.length === 1
+    ? edgeObjToId(this._isDirected, arguments[0])
+    : edgeArgsToId(this._isDirected, v, w, name));
+  return this._edgeLabels[e];
+};
+
+Graph.prototype.hasEdge = function(v, w, name) {
+  var e = (arguments.length === 1
+    ? edgeObjToId(this._isDirected, arguments[0])
+    : edgeArgsToId(this._isDirected, v, w, name));
+  return _.has(this._edgeLabels, e);
+};
+
+Graph.prototype.removeEdge = function(v, w, name) {
+  var e = (arguments.length === 1
+    ? edgeObjToId(this._isDirected, arguments[0])
+    : edgeArgsToId(this._isDirected, v, w, name));
+  var edge = this._edgeObjs[e];
+  if (edge) {
+    v = edge.v;
+    w = edge.w;
+    delete this._edgeLabels[e];
+    delete this._edgeObjs[e];
+    decrementOrRemoveEntry(this._preds[w], v);
+    decrementOrRemoveEntry(this._sucs[v], w);
+    delete this._in[w][e];
+    delete this._out[v][e];
+    this._edgeCount--;
+  }
+  return this;
+};
+
+Graph.prototype.inEdges = function(v, u) {
+  var inV = this._in[v];
+  if (inV) {
+    var edges = _.values(inV);
+    if (!u) {
+      return edges;
+    }
+    return _.filter(edges, function(edge) { return edge.v === u; });
+  }
+};
+
+Graph.prototype.outEdges = function(v, w) {
+  var outV = this._out[v];
+  if (outV) {
+    var edges = _.values(outV);
+    if (!w) {
+      return edges;
+    }
+    return _.filter(edges, function(edge) { return edge.w === w; });
+  }
+};
+
+Graph.prototype.nodeEdges = function(v, w) {
+  var inEdges = this.inEdges(v, w);
+  if (inEdges) {
+    return inEdges.concat(this.outEdges(v, w));
+  }
+};
+
+function incrementOrInitEntry(map, k) {
+  if (map[k]) {
+    map[k]++;
+  } else {
+    map[k] = 1;
+  }
+}
+
+function decrementOrRemoveEntry(map, k) {
+  if (!--map[k]) { delete map[k]; }
+}
+
+function edgeArgsToId(isDirected, v_, w_, name) {
+  var v = "" + v_;
+  var w = "" + w_;
+  if (!isDirected && v > w) {
+    var tmp = v;
+    v = w;
+    w = tmp;
+  }
+  return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +
+             (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);
+}
+
+function edgeArgsToObj(isDirected, v_, w_, name) {
+  var v = "" + v_;
+  var w = "" + w_;
+  if (!isDirected && v > w) {
+    var tmp = v;
+    v = w;
+    w = tmp;
+  }
+  var edgeObj =  { v: v, w: w };
+  if (name) {
+    edgeObj.name = name;
+  }
+  return edgeObj;
+}
+
+function edgeObjToId(isDirected, edgeObj) {
+  return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/index.js":
+/*!********************************************!*\
+  !*** ./node_modules/graphlib/lib/index.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Includes only the "core" of graphlib
+module.exports = {
+  Graph: __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js"),
+  version: __webpack_require__(/*! ./version */ "./node_modules/graphlib/lib/version.js")
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/json.js":
+/*!*******************************************!*\
+  !*** ./node_modules/graphlib/lib/json.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js");
+var Graph = __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js");
+
+module.exports = {
+  write: write,
+  read: read
+};
+
+function write(g) {
+  var json = {
+    options: {
+      directed: g.isDirected(),
+      multigraph: g.isMultigraph(),
+      compound: g.isCompound()
+    },
+    nodes: writeNodes(g),
+    edges: writeEdges(g)
+  };
+  if (!_.isUndefined(g.graph())) {
+    json.value = _.clone(g.graph());
+  }
+  return json;
+}
+
+function writeNodes(g) {
+  return _.map(g.nodes(), function(v) {
+    var nodeValue = g.node(v);
+    var parent = g.parent(v);
+    var node = { v: v };
+    if (!_.isUndefined(nodeValue)) {
+      node.value = nodeValue;
+    }
+    if (!_.isUndefined(parent)) {
+      node.parent = parent;
+    }
+    return node;
+  });
+}
+
+function writeEdges(g) {
+  return _.map(g.edges(), function(e) {
+    var edgeValue = g.edge(e);
+    var edge = { v: e.v, w: e.w };
+    if (!_.isUndefined(e.name)) {
+      edge.name = e.name;
+    }
+    if (!_.isUndefined(edgeValue)) {
+      edge.value = edgeValue;
+    }
+    return edge;
+  });
+}
+
+function read(json) {
+  var g = new Graph(json.options).setGraph(json.value);
+  _.each(json.nodes, function(entry) {
+    g.setNode(entry.v, entry.value);
+    if (entry.parent) {
+      g.setParent(entry.v, entry.parent);
+    }
+  });
+  _.each(json.edges, function(entry) {
+    g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);
+  });
+  return g;
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/lodash.js":
+/*!*********************************************!*\
+  !*** ./node_modules/graphlib/lib/lodash.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* global window */
+
+var lodash;
+
+if (true) {
+  try {
+    lodash = {
+      clone: __webpack_require__(/*! lodash/clone */ "./node_modules/lodash/clone.js"),
+      constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"),
+      each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"),
+      filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"),
+      has:  __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"),
+      isArray: __webpack_require__(/*! lodash/isArray */ "./node_modules/lodash/isArray.js"),
+      isEmpty: __webpack_require__(/*! lodash/isEmpty */ "./node_modules/lodash/isEmpty.js"),
+      isFunction: __webpack_require__(/*! lodash/isFunction */ "./node_modules/lodash/isFunction.js"),
+      isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"),
+      keys: __webpack_require__(/*! lodash/keys */ "./node_modules/lodash/keys.js"),
+      map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"),
+      reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"),
+      size: __webpack_require__(/*! lodash/size */ "./node_modules/lodash/size.js"),
+      transform: __webpack_require__(/*! lodash/transform */ "./node_modules/lodash/transform.js"),
+      union: __webpack_require__(/*! lodash/union */ "./node_modules/lodash/union.js"),
+      values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js")
+    };
+  } catch (e) {
+    // continue regardless of error
+  }
+}
+
+if (!lodash) {
+  lodash = window._;
+}
+
+module.exports = lodash;
+
+
+/***/ }),
+
+/***/ "./node_modules/graphlib/lib/version.js":
+/*!**********************************************!*\
+  !*** ./node_modules/graphlib/lib/version.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = '2.1.8';
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/channels/index.js":
+/*!****************************************************!*\
+  !*** ./node_modules/khroma/dist/channels/index.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var types_1 = __webpack_require__(/*! ../types */ "./node_modules/khroma/dist/types.js");
+var type_1 = __webpack_require__(/*! ./type */ "./node_modules/khroma/dist/channels/type.js");
+/* CHANNELS */
+var Channels = /** @class */ (function () {
+    /* CONSTRUCTOR */
+    function Channels(data, color) {
+        this.color = color;
+        this.changed = false;
+        this.data = data; //TSC
+        this.type = new type_1.default();
+    }
+    /* API */
+    Channels.prototype.set = function (data, color) {
+        this.color = color;
+        this.changed = false;
+        this.data = data; //TSC
+        this.type.type = types_1.TYPE.ALL;
+        return this;
+    };
+    /* HELPERS */
+    Channels.prototype._ensureHSL = function () {
+        if (this.data.h === undefined)
+            this.data.h = utils_1.default.channel.rgb2hsl(this.data, 'h');
+        if (this.data.s === undefined)
+            this.data.s = utils_1.default.channel.rgb2hsl(this.data, 's');
+        if (this.data.l === undefined)
+            this.data.l = utils_1.default.channel.rgb2hsl(this.data, 'l');
+    };
+    Channels.prototype._ensureRGB = function () {
+        if (this.data.r === undefined)
+            this.data.r = utils_1.default.channel.hsl2rgb(this.data, 'r');
+        if (this.data.g === undefined)
+            this.data.g = utils_1.default.channel.hsl2rgb(this.data, 'g');
+        if (this.data.b === undefined)
+            this.data.b = utils_1.default.channel.hsl2rgb(this.data, 'b');
+    };
+    Object.defineProperty(Channels.prototype, "r", {
+        /* GETTERS */
+        get: function () {
+            if (!this.type.is(types_1.TYPE.HSL) && this.data.r !== undefined)
+                return this.data.r;
+            this._ensureHSL();
+            return utils_1.default.channel.hsl2rgb(this.data, 'r');
+        },
+        /* SETTERS */
+        set: function (r) {
+            this.type.set(types_1.TYPE.RGB);
+            this.changed = true;
+            this.data.r = r;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    Object.defineProperty(Channels.prototype, "g", {
+        get: function () {
+            if (!this.type.is(types_1.TYPE.HSL) && this.data.g !== undefined)
+                return this.data.g;
+            this._ensureHSL();
+            return utils_1.default.channel.hsl2rgb(this.data, 'g');
+        },
+        set: function (g) {
+            this.type.set(types_1.TYPE.RGB);
+            this.changed = true;
+            this.data.g = g;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    Object.defineProperty(Channels.prototype, "b", {
+        get: function () {
+            if (!this.type.is(types_1.TYPE.HSL) && this.data.b !== undefined)
+                return this.data.b;
+            this._ensureHSL();
+            return utils_1.default.channel.hsl2rgb(this.data, 'b');
+        },
+        set: function (b) {
+            this.type.set(types_1.TYPE.RGB);
+            this.changed = true;
+            this.data.b = b;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    Object.defineProperty(Channels.prototype, "h", {
+        get: function () {
+            if (!this.type.is(types_1.TYPE.RGB) && this.data.h !== undefined)
+                return this.data.h;
+            this._ensureRGB();
+            return utils_1.default.channel.rgb2hsl(this.data, 'h');
+        },
+        set: function (h) {
+            this.type.set(types_1.TYPE.HSL);
+            this.changed = true;
+            this.data.h = h;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    Object.defineProperty(Channels.prototype, "s", {
+        get: function () {
+            if (!this.type.is(types_1.TYPE.RGB) && this.data.s !== undefined)
+                return this.data.s;
+            this._ensureRGB();
+            return utils_1.default.channel.rgb2hsl(this.data, 's');
+        },
+        set: function (s) {
+            this.type.set(types_1.TYPE.HSL);
+            this.changed = true;
+            this.data.s = s;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    Object.defineProperty(Channels.prototype, "l", {
+        get: function () {
+            if (!this.type.is(types_1.TYPE.RGB) && this.data.l !== undefined)
+                return this.data.l;
+            this._ensureRGB();
+            return utils_1.default.channel.rgb2hsl(this.data, 'l');
+        },
+        set: function (l) {
+            this.type.set(types_1.TYPE.HSL);
+            this.changed = true;
+            this.data.l = l;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    Object.defineProperty(Channels.prototype, "a", {
+        get: function () {
+            return this.data.a;
+        },
+        set: function (a) {
+            this.changed = true;
+            this.data.a = a;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    return Channels;
+}());
+/* EXPORT */
+exports.default = Channels;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/channels/reusable.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/khroma/dist/channels/reusable.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var _1 = __webpack_require__(/*! . */ "./node_modules/khroma/dist/channels/index.js");
+/* REUSABLE */
+var channels = new _1.default({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');
+/* EXPORT */
+exports.default = channels;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/channels/type.js":
+/*!***************************************************!*\
+  !*** ./node_modules/khroma/dist/channels/type.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var types_1 = __webpack_require__(/*! ../types */ "./node_modules/khroma/dist/types.js");
+/* TYPE */
+var Type = /** @class */ (function () {
+    function Type() {
+        this.type = types_1.TYPE.ALL;
+    }
+    Type.prototype.get = function () {
+        return this.type;
+    };
+    Type.prototype.set = function (type) {
+        if (this.type && this.type !== type)
+            throw new Error('Cannot change both RGB and HSL channels at the same time');
+        this.type = type;
+    };
+    Type.prototype.reset = function () {
+        this.type = types_1.TYPE.ALL;
+    };
+    Type.prototype.is = function (type) {
+        return this.type === type;
+    };
+    return Type;
+}());
+/* EXPORT */
+exports.default = Type;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/color/hex.js":
+/*!***********************************************!*\
+  !*** ./node_modules/khroma/dist/color/hex.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var reusable_1 = __webpack_require__(/*! ../channels/reusable */ "./node_modules/khroma/dist/channels/reusable.js");
+var consts_1 = __webpack_require__(/*! ../consts */ "./node_modules/khroma/dist/consts.js");
+/* HEX */
+var Hex = {
+    /* VARIABLES */
+    re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,
+    /* API */
+    parse: function (color) {
+        if (color.charCodeAt(0) !== 35)
+            return; // '#'
+        var match = color.match(Hex.re);
+        if (!match)
+            return;
+        var hex = match[1], dec = parseInt(hex, 16), length = hex.length, hasAlpha = length % 4 === 0, isFullLength = length > 4, multiplier = isFullLength ? 1 : 17, bits = isFullLength ? 8 : 4, bitsOffset = hasAlpha ? 0 : -1, mask = isFullLength ? 255 : 15;
+        return reusable_1.default.set({
+            r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,
+            g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,
+            b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,
+            a: hasAlpha ? (dec & mask) * multiplier / 255 : 1
+        }, color);
+    },
+    stringify: function (channels) {
+        if (channels.a < 1) { // #RRGGBBAA
+            return "#" + consts_1.DEC2HEX[Math.round(channels.r)] + consts_1.DEC2HEX[Math.round(channels.g)] + consts_1.DEC2HEX[Math.round(channels.b)] + utils_1.default.unit.frac2hex(channels.a);
+        }
+        else { // #RRGGBB
+            return "#" + consts_1.DEC2HEX[Math.round(channels.r)] + consts_1.DEC2HEX[Math.round(channels.g)] + consts_1.DEC2HEX[Math.round(channels.b)];
+        }
+    }
+};
+/* EXPORT */
+exports.default = Hex;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/color/hsl.js":
+/*!***********************************************!*\
+  !*** ./node_modules/khroma/dist/color/hsl.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var reusable_1 = __webpack_require__(/*! ../channels/reusable */ "./node_modules/khroma/dist/channels/reusable.js");
+/* HSL */
+var HSL = {
+    /* VARIABLES */
+    re: /^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,
+    hueRe: /^(.+?)(deg|grad|rad|turn)$/i,
+    /* HELPERS */
+    _hue2deg: function (hue) {
+        var match = hue.match(HSL.hueRe);
+        if (match) {
+            var number = match[1], unit = match[2];
+            switch (unit) {
+                case 'grad': return utils_1.default.channel.clamp.h(parseFloat(number) * .9);
+                case 'rad': return utils_1.default.channel.clamp.h(parseFloat(number) * 180 / Math.PI);
+                case 'turn': return utils_1.default.channel.clamp.h(parseFloat(number) * 360);
+            }
+        }
+        return utils_1.default.channel.clamp.h(parseFloat(hue));
+    },
+    /* API */
+    parse: function (color) {
+        var charCode = color.charCodeAt(0);
+        if (charCode !== 104 && charCode !== 72)
+            return; // 'h'/'H'
+        var match = color.match(HSL.re);
+        if (!match)
+            return;
+        var h = match[1], s = match[2], l = match[3], a = match[4], isAlphaPercentage = match[5];
+        return reusable_1.default.set({
+            h: HSL._hue2deg(h),
+            s: utils_1.default.channel.clamp.s(parseFloat(s)),
+            l: utils_1.default.channel.clamp.l(parseFloat(l)),
+            a: a ? utils_1.default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1
+        }, color);
+    },
+    stringify: function (channels) {
+        if (channels.a < 1) { // HSLA
+            return "hsla(" + utils_1.default.lang.round(channels.h) + ", " + utils_1.default.lang.round(channels.s) + "%, " + utils_1.default.lang.round(channels.l) + "%, " + channels.a + ")";
+        }
+        else { // HSL
+            return "hsl(" + utils_1.default.lang.round(channels.h) + ", " + utils_1.default.lang.round(channels.s) + "%, " + utils_1.default.lang.round(channels.l) + "%)";
+        }
+    }
+};
+/* EXPORT */
+exports.default = HSL;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/color/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/khroma/dist/color/index.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var types_1 = __webpack_require__(/*! ../types */ "./node_modules/khroma/dist/types.js");
+var hex_1 = __webpack_require__(/*! ./hex */ "./node_modules/khroma/dist/color/hex.js");
+var keyword_1 = __webpack_require__(/*! ./keyword */ "./node_modules/khroma/dist/color/keyword.js");
+var rgb_1 = __webpack_require__(/*! ./rgb */ "./node_modules/khroma/dist/color/rgb.js");
+var hsl_1 = __webpack_require__(/*! ./hsl */ "./node_modules/khroma/dist/color/hsl.js");
+/* COLOR */
+var Color = {
+    /* VARIABLES */
+    format: {
+        keyword: keyword_1.default,
+        hex: hex_1.default,
+        rgb: rgb_1.default,
+        rgba: rgb_1.default,
+        hsl: hsl_1.default,
+        hsla: hsl_1.default
+    },
+    /* API */
+    parse: function (color) {
+        if (typeof color !== 'string')
+            return color;
+        var channels = hex_1.default.parse(color) || rgb_1.default.parse(color) || hsl_1.default.parse(color) || keyword_1.default.parse(color); // Color providers ordered with performance in mind
+        if (channels)
+            return channels;
+        throw new Error("Unsupported color format: \"" + color + "\"");
+    },
+    stringify: function (channels) {
+        // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value
+        if (!channels.changed && channels.color)
+            return channels.color;
+        if (channels.type.is(types_1.TYPE.HSL) || channels.data.r === undefined) {
+            return hsl_1.default.stringify(channels);
+        }
+        else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {
+            return rgb_1.default.stringify(channels);
+        }
+        else {
+            return hex_1.default.stringify(channels);
+        }
+    }
+};
+/* EXPORT */
+exports.default = Color;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/color/keyword.js":
+/*!***************************************************!*\
+  !*** ./node_modules/khroma/dist/color/keyword.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var hex_1 = __webpack_require__(/*! ./hex */ "./node_modules/khroma/dist/color/hex.js");
+/* KEYWORD */
+var Keyword = {
+    /* VARIABLES */
+    colors: {
+        aliceblue: '#f0f8ff',
+        antiquewhite: '#faebd7',
+        aqua: '#00ffff',
+        aquamarine: '#7fffd4',
+        azure: '#f0ffff',
+        beige: '#f5f5dc',
+        bisque: '#ffe4c4',
+        black: '#000000',
+        blanchedalmond: '#ffebcd',
+        blue: '#0000ff',
+        blueviolet: '#8a2be2',
+        brown: '#a52a2a',
+        burlywood: '#deb887',
+        cadetblue: '#5f9ea0',
+        chartreuse: '#7fff00',
+        chocolate: '#d2691e',
+        coral: '#ff7f50',
+        cornflowerblue: '#6495ed',
+        cornsilk: '#fff8dc',
+        crimson: '#dc143c',
+        cyanaqua: '#00ffff',
+        darkblue: '#00008b',
+        darkcyan: '#008b8b',
+        darkgoldenrod: '#b8860b',
+        darkgray: '#a9a9a9',
+        darkgreen: '#006400',
+        darkgrey: '#a9a9a9',
+        darkkhaki: '#bdb76b',
+        darkmagenta: '#8b008b',
+        darkolivegreen: '#556b2f',
+        darkorange: '#ff8c00',
+        darkorchid: '#9932cc',
+        darkred: '#8b0000',
+        darksalmon: '#e9967a',
+        darkseagreen: '#8fbc8f',
+        darkslateblue: '#483d8b',
+        darkslategray: '#2f4f4f',
+        darkslategrey: '#2f4f4f',
+        darkturquoise: '#00ced1',
+        darkviolet: '#9400d3',
+        deeppink: '#ff1493',
+        deepskyblue: '#00bfff',
+        dimgray: '#696969',
+        dimgrey: '#696969',
+        dodgerblue: '#1e90ff',
+        firebrick: '#b22222',
+        floralwhite: '#fffaf0',
+        forestgreen: '#228b22',
+        fuchsia: '#ff00ff',
+        gainsboro: '#dcdcdc',
+        ghostwhite: '#f8f8ff',
+        gold: '#ffd700',
+        goldenrod: '#daa520',
+        gray: '#808080',
+        green: '#008000',
+        greenyellow: '#adff2f',
+        grey: '#808080',
+        honeydew: '#f0fff0',
+        hotpink: '#ff69b4',
+        indianred: '#cd5c5c',
+        indigo: '#4b0082',
+        ivory: '#fffff0',
+        khaki: '#f0e68c',
+        lavender: '#e6e6fa',
+        lavenderblush: '#fff0f5',
+        lawngreen: '#7cfc00',
+        lemonchiffon: '#fffacd',
+        lightblue: '#add8e6',
+        lightcoral: '#f08080',
+        lightcyan: '#e0ffff',
+        lightgoldenrodyellow: '#fafad2',
+        lightgray: '#d3d3d3',
+        lightgreen: '#90ee90',
+        lightgrey: '#d3d3d3',
+        lightpink: '#ffb6c1',
+        lightsalmon: '#ffa07a',
+        lightseagreen: '#20b2aa',
+        lightskyblue: '#87cefa',
+        lightslategray: '#778899',
+        lightslategrey: '#778899',
+        lightsteelblue: '#b0c4de',
+        lightyellow: '#ffffe0',
+        lime: '#00ff00',
+        limegreen: '#32cd32',
+        linen: '#faf0e6',
+        magenta: '#ff00ff',
+        maroon: '#800000',
+        mediumaquamarine: '#66cdaa',
+        mediumblue: '#0000cd',
+        mediumorchid: '#ba55d3',
+        mediumpurple: '#9370db',
+        mediumseagreen: '#3cb371',
+        mediumslateblue: '#7b68ee',
+        mediumspringgreen: '#00fa9a',
+        mediumturquoise: '#48d1cc',
+        mediumvioletred: '#c71585',
+        midnightblue: '#191970',
+        mintcream: '#f5fffa',
+        mistyrose: '#ffe4e1',
+        moccasin: '#ffe4b5',
+        navajowhite: '#ffdead',
+        navy: '#000080',
+        oldlace: '#fdf5e6',
+        olive: '#808000',
+        olivedrab: '#6b8e23',
+        orange: '#ffa500',
+        orangered: '#ff4500',
+        orchid: '#da70d6',
+        palegoldenrod: '#eee8aa',
+        palegreen: '#98fb98',
+        paleturquoise: '#afeeee',
+        palevioletred: '#db7093',
+        papayawhip: '#ffefd5',
+        peachpuff: '#ffdab9',
+        peru: '#cd853f',
+        pink: '#ffc0cb',
+        plum: '#dda0dd',
+        powderblue: '#b0e0e6',
+        purple: '#800080',
+        rebeccapurple: '#663399',
+        red: '#ff0000',
+        rosybrown: '#bc8f8f',
+        royalblue: '#4169e1',
+        saddlebrown: '#8b4513',
+        salmon: '#fa8072',
+        sandybrown: '#f4a460',
+        seagreen: '#2e8b57',
+        seashell: '#fff5ee',
+        sienna: '#a0522d',
+        silver: '#c0c0c0',
+        skyblue: '#87ceeb',
+        slateblue: '#6a5acd',
+        slategray: '#708090',
+        slategrey: '#708090',
+        snow: '#fffafa',
+        springgreen: '#00ff7f',
+        tan: '#d2b48c',
+        teal: '#008080',
+        thistle: '#d8bfd8',
+        transparent: '#00000000',
+        turquoise: '#40e0d0',
+        violet: '#ee82ee',
+        wheat: '#f5deb3',
+        white: '#ffffff',
+        whitesmoke: '#f5f5f5',
+        yellow: '#ffff00',
+        yellowgreen: '#9acd32'
+    },
+    /* API */
+    parse: function (color) {
+        color = color.toLowerCase();
+        var hex = Keyword.colors[color];
+        if (!hex)
+            return;
+        return hex_1.default.parse(hex);
+    },
+    stringify: function (channels) {
+        var hex = hex_1.default.stringify(channels);
+        for (var name_1 in Keyword.colors) {
+            if (Keyword.colors[name_1] === hex)
+                return name_1;
+        }
+    }
+};
+/* EXPORT */
+exports.default = Keyword;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/color/rgb.js":
+/*!***********************************************!*\
+  !*** ./node_modules/khroma/dist/color/rgb.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var reusable_1 = __webpack_require__(/*! ../channels/reusable */ "./node_modules/khroma/dist/channels/reusable.js");
+/* RGB */
+var RGB = {
+    /* VARIABLES */
+    re: /^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,
+    /* API */
+    parse: function (color) {
+        var charCode = color.charCodeAt(0);
+        if (charCode !== 114 && charCode !== 82)
+            return; // 'r'/'R'
+        var match = color.match(RGB.re);
+        if (!match)
+            return;
+        var r = match[1], isRedPercentage = match[2], g = match[3], isGreenPercentage = match[4], b = match[5], isBluePercentage = match[6], a = match[7], isAlphaPercentage = match[8];
+        return reusable_1.default.set({
+            r: utils_1.default.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),
+            g: utils_1.default.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),
+            b: utils_1.default.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),
+            a: a ? utils_1.default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1
+        }, color);
+    },
+    stringify: function (channels) {
+        if (channels.a < 1) { // RGBA
+            return "rgba(" + utils_1.default.lang.round(channels.r) + ", " + utils_1.default.lang.round(channels.g) + ", " + utils_1.default.lang.round(channels.b) + ", " + utils_1.default.lang.round(channels.a) + ")";
+        }
+        else { // RGB
+            return "rgb(" + utils_1.default.lang.round(channels.r) + ", " + utils_1.default.lang.round(channels.g) + ", " + utils_1.default.lang.round(channels.b) + ")";
+        }
+    }
+};
+/* EXPORT */
+exports.default = RGB;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/consts.js":
+/*!********************************************!*\
+  !*** ./node_modules/khroma/dist/consts.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ./utils */ "./node_modules/khroma/dist/utils/index.js");
+/* CONSTS */
+var DEC2HEX = {};
+exports.DEC2HEX = DEC2HEX;
+for (var i = 0; i <= 255; i++)
+    DEC2HEX[i] = utils_1.default.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/index.js":
+/*!*******************************************!*\
+  !*** ./node_modules/khroma/dist/index.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* EXPORT */
+function __export(m) {
+    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+}
+Object.defineProperty(exports, "__esModule", { value: true });
+__export(__webpack_require__(/*! ./methods */ "./node_modules/khroma/dist/methods/index.js"));
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/adjust.js":
+/*!****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/adjust.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+var change_1 = __webpack_require__(/*! ./change */ "./node_modules/khroma/dist/methods/change.js");
+/* ADJUST */
+function adjust(color, channels) {
+    var ch = color_1.default.parse(color), changes = {};
+    for (var c in channels) {
+        if (!channels[c])
+            continue;
+        changes[c] = ch[c] + channels[c];
+    }
+    return change_1.default(color, changes);
+}
+/* EXPORT */
+exports.default = adjust;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/adjust_channel.js":
+/*!************************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/adjust_channel.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+/* ADJUST CHANNEL */
+function adjustChannel(color, channel, amount) {
+    var channels = color_1.default.parse(color), amountCurrent = channels[channel], amountNext = utils_1.default.channel.clamp[channel](amountCurrent + amount);
+    if (amountCurrent !== amountNext)
+        channels[channel] = amountNext;
+    return color_1.default.stringify(channels);
+}
+/* EXPORT */
+exports.default = adjustChannel;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/alpha.js":
+/*!***************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/alpha.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+/* ALPHA */
+function alpha(color) {
+    return channel_1.default(color, 'a');
+}
+/* EXPORT */
+exports.default = alpha;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/blue.js":
+/*!**************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/blue.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+/* BLUE */
+function blue(color) {
+    return channel_1.default(color, 'b');
+}
+/* EXPORT */
+exports.default = blue;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/change.js":
+/*!****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/change.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+/* CHANGE */
+function change(color, channels) {
+    var ch = color_1.default.parse(color);
+    for (var c in channels) {
+        ch[c] = utils_1.default.channel.clamp[c](channels[c]);
+    }
+    return color_1.default.stringify(ch);
+}
+/* EXPORT */
+exports.default = change;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/channel.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/channel.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+/* CHANNEL */
+function channel(color, channel) {
+    return utils_1.default.lang.round(color_1.default.parse(color)[channel]);
+}
+/* EXPORT */
+exports.default = channel;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/complement.js":
+/*!********************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/complement.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var adjust_channel_1 = __webpack_require__(/*! ./adjust_channel */ "./node_modules/khroma/dist/methods/adjust_channel.js");
+/* COMPLEMENT */
+function complement(color) {
+    return adjust_channel_1.default(color, 'h', 180);
+}
+/* EXPORT */
+exports.default = complement;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/darken.js":
+/*!****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/darken.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var adjust_channel_1 = __webpack_require__(/*! ./adjust_channel */ "./node_modules/khroma/dist/methods/adjust_channel.js");
+/* DARKEN */
+function darken(color, amount) {
+    return adjust_channel_1.default(color, 'l', -amount);
+}
+/* EXPORT */
+exports.default = darken;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/desaturate.js":
+/*!********************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/desaturate.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var adjust_channel_1 = __webpack_require__(/*! ./adjust_channel */ "./node_modules/khroma/dist/methods/adjust_channel.js");
+/* DESATURATE */
+function desaturate(color, amount) {
+    return adjust_channel_1.default(color, 's', -amount);
+}
+/* EXPORT */
+exports.default = desaturate;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/grayscale.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/grayscale.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var change_1 = __webpack_require__(/*! ./change */ "./node_modules/khroma/dist/methods/change.js");
+/* GRAYSCALE */
+function grayscale(color) {
+    return change_1.default(color, { s: 0 });
+}
+/* EXPORT */
+exports.default = grayscale;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/green.js":
+/*!***************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/green.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+/* GREEN */
+function green(color) {
+    return channel_1.default(color, 'g');
+}
+/* EXPORT */
+exports.default = green;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/hsla.js":
+/*!**************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/hsla.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var reusable_1 = __webpack_require__(/*! ../channels/reusable */ "./node_modules/khroma/dist/channels/reusable.js");
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+/* HSLA */
+function hsla(h, s, l, a) {
+    if (a === void 0) { a = 1; }
+    var channels = reusable_1.default.set({
+        h: utils_1.default.channel.clamp.h(h),
+        s: utils_1.default.channel.clamp.s(s),
+        l: utils_1.default.channel.clamp.l(l),
+        a: utils_1.default.channel.clamp.a(a)
+    });
+    return color_1.default.stringify(channels);
+}
+/* EXPORT */
+exports.default = hsla;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/hue.js":
+/*!*************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/hue.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+/* HUE */
+function hue(color) {
+    return channel_1.default(color, 'h');
+}
+/* EXPORT */
+exports.default = hue;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/index.js":
+/*!***************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/index.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var rgba_1 = __webpack_require__(/*! ./rgba */ "./node_modules/khroma/dist/methods/rgba.js"); // Alias
+exports.hex = rgba_1.default;
+var rgba_2 = __webpack_require__(/*! ./rgba */ "./node_modules/khroma/dist/methods/rgba.js"); // Alias
+exports.rgb = rgba_2.default;
+var rgba_3 = __webpack_require__(/*! ./rgba */ "./node_modules/khroma/dist/methods/rgba.js");
+exports.rgba = rgba_3.default;
+var hsla_1 = __webpack_require__(/*! ./hsla */ "./node_modules/khroma/dist/methods/hsla.js"); // Alias
+exports.hsl = hsla_1.default;
+var hsla_2 = __webpack_require__(/*! ./hsla */ "./node_modules/khroma/dist/methods/hsla.js");
+exports.hsla = hsla_2.default;
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+exports.channel = channel_1.default;
+var red_1 = __webpack_require__(/*! ./red */ "./node_modules/khroma/dist/methods/red.js");
+exports.red = red_1.default;
+var green_1 = __webpack_require__(/*! ./green */ "./node_modules/khroma/dist/methods/green.js");
+exports.green = green_1.default;
+var blue_1 = __webpack_require__(/*! ./blue */ "./node_modules/khroma/dist/methods/blue.js");
+exports.blue = blue_1.default;
+var hue_1 = __webpack_require__(/*! ./hue */ "./node_modules/khroma/dist/methods/hue.js");
+exports.hue = hue_1.default;
+var saturation_1 = __webpack_require__(/*! ./saturation */ "./node_modules/khroma/dist/methods/saturation.js");
+exports.saturation = saturation_1.default;
+var lightness_1 = __webpack_require__(/*! ./lightness */ "./node_modules/khroma/dist/methods/lightness.js");
+exports.lightness = lightness_1.default;
+var alpha_1 = __webpack_require__(/*! ./alpha */ "./node_modules/khroma/dist/methods/alpha.js");
+exports.alpha = alpha_1.default;
+var alpha_2 = __webpack_require__(/*! ./alpha */ "./node_modules/khroma/dist/methods/alpha.js"); // Alias
+exports.opacity = alpha_2.default;
+var luminance_1 = __webpack_require__(/*! ./luminance */ "./node_modules/khroma/dist/methods/luminance.js");
+exports.luminance = luminance_1.default;
+var is_dark_1 = __webpack_require__(/*! ./is_dark */ "./node_modules/khroma/dist/methods/is_dark.js");
+exports.isDark = is_dark_1.default;
+var is_light_1 = __webpack_require__(/*! ./is_light */ "./node_modules/khroma/dist/methods/is_light.js");
+exports.isLight = is_light_1.default;
+var is_valid_1 = __webpack_require__(/*! ./is_valid */ "./node_modules/khroma/dist/methods/is_valid.js");
+exports.isValid = is_valid_1.default;
+var saturate_1 = __webpack_require__(/*! ./saturate */ "./node_modules/khroma/dist/methods/saturate.js");
+exports.saturate = saturate_1.default;
+var desaturate_1 = __webpack_require__(/*! ./desaturate */ "./node_modules/khroma/dist/methods/desaturate.js");
+exports.desaturate = desaturate_1.default;
+var lighten_1 = __webpack_require__(/*! ./lighten */ "./node_modules/khroma/dist/methods/lighten.js");
+exports.lighten = lighten_1.default;
+var darken_1 = __webpack_require__(/*! ./darken */ "./node_modules/khroma/dist/methods/darken.js");
+exports.darken = darken_1.default;
+var opacify_1 = __webpack_require__(/*! ./opacify */ "./node_modules/khroma/dist/methods/opacify.js");
+exports.opacify = opacify_1.default;
+var opacify_2 = __webpack_require__(/*! ./opacify */ "./node_modules/khroma/dist/methods/opacify.js"); // Alias
+exports.fadeIn = opacify_2.default;
+var transparentize_1 = __webpack_require__(/*! ./transparentize */ "./node_modules/khroma/dist/methods/transparentize.js");
+exports.transparentize = transparentize_1.default;
+var transparentize_2 = __webpack_require__(/*! ./transparentize */ "./node_modules/khroma/dist/methods/transparentize.js"); // Alias
+exports.fadeOut = transparentize_2.default;
+var complement_1 = __webpack_require__(/*! ./complement */ "./node_modules/khroma/dist/methods/complement.js");
+exports.complement = complement_1.default;
+var grayscale_1 = __webpack_require__(/*! ./grayscale */ "./node_modules/khroma/dist/methods/grayscale.js");
+exports.grayscale = grayscale_1.default;
+var adjust_1 = __webpack_require__(/*! ./adjust */ "./node_modules/khroma/dist/methods/adjust.js");
+exports.adjust = adjust_1.default;
+var change_1 = __webpack_require__(/*! ./change */ "./node_modules/khroma/dist/methods/change.js");
+exports.change = change_1.default;
+var invert_1 = __webpack_require__(/*! ./invert */ "./node_modules/khroma/dist/methods/invert.js");
+exports.invert = invert_1.default;
+var mix_1 = __webpack_require__(/*! ./mix */ "./node_modules/khroma/dist/methods/mix.js");
+exports.mix = mix_1.default;
+var scale_1 = __webpack_require__(/*! ./scale */ "./node_modules/khroma/dist/methods/scale.js");
+exports.scale = scale_1.default;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/invert.js":
+/*!****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/invert.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+var mix_1 = __webpack_require__(/*! ./mix */ "./node_modules/khroma/dist/methods/mix.js");
+/* INVERT */
+function invert(color, weight) {
+    if (weight === void 0) { weight = 100; }
+    var inverse = color_1.default.parse(color);
+    inverse.r = 255 - inverse.r;
+    inverse.g = 255 - inverse.g;
+    inverse.b = 255 - inverse.b;
+    return mix_1.default(inverse, color, weight);
+}
+/* EXPORT */
+exports.default = invert;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/is_dark.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/is_dark.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var is_light_1 = __webpack_require__(/*! ./is_light */ "./node_modules/khroma/dist/methods/is_light.js");
+/* IS DARK */
+function isDark(color) {
+    return !is_light_1.default(color);
+}
+/* EXPORT */
+exports.default = isDark;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/is_light.js":
+/*!******************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/is_light.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var luminance_1 = __webpack_require__(/*! ./luminance */ "./node_modules/khroma/dist/methods/luminance.js");
+/* IS LIGHT */
+function isLight(color) {
+    return luminance_1.default(color) >= .5;
+}
+/* EXPORT */
+exports.default = isLight;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/is_valid.js":
+/*!******************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/is_valid.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+/* IS VALID */
+function isValid(color) {
+    try {
+        color_1.default.parse(color);
+        return true;
+    }
+    catch (_a) {
+        return false;
+    }
+}
+/* EXPORT */
+exports.default = isValid;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/lighten.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/lighten.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var adjust_channel_1 = __webpack_require__(/*! ./adjust_channel */ "./node_modules/khroma/dist/methods/adjust_channel.js");
+/* LIGHTEN */
+function lighten(color, amount) {
+    return adjust_channel_1.default(color, 'l', amount);
+}
+/* EXPORT */
+exports.default = lighten;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/lightness.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/lightness.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+/* LIGHTNESS */
+function lightness(color) {
+    return channel_1.default(color, 'l');
+}
+/* EXPORT */
+exports.default = lightness;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/luminance.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/luminance.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+/* LUMINANCE */
+//SOURCE: https://planetcalc.com/7779
+function luminance(color) {
+    var _a = color_1.default.parse(color), r = _a.r, g = _a.g, b = _a.b, luminance = .2126 * utils_1.default.channel.toLinear(r) + .7152 * utils_1.default.channel.toLinear(g) + .0722 * utils_1.default.channel.toLinear(b);
+    return utils_1.default.lang.round(luminance);
+}
+/* EXPORT */
+exports.default = luminance;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/mix.js":
+/*!*************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/mix.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+var rgba_1 = __webpack_require__(/*! ./rgba */ "./node_modules/khroma/dist/methods/rgba.js");
+/* MIX */
+//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756
+function mix(color1, color2, weight) {
+    if (weight === void 0) { weight = 50; }
+    var _a = color_1.default.parse(color1), r1 = _a.r, g1 = _a.g, b1 = _a.b, a1 = _a.a, _b = color_1.default.parse(color2), r2 = _b.r, g2 = _b.g, b2 = _b.b, a2 = _b.a, weightScale = weight / 100, weightNormalized = (weightScale * 2) - 1, alphaDelta = a1 - a2, weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta), weight1 = (weight1combined + 1) / 2, weight2 = 1 - weight1, r = (r1 * weight1) + (r2 * weight2), g = (g1 * weight1) + (g2 * weight2), b = (b1 * weight1) + (b2 * weight2), a = (a1 * weightScale) + (a2 * (1 - weightScale));
+    return rgba_1.default(r, g, b, a);
+}
+/* EXPORT */
+exports.default = mix;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/opacify.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/opacify.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var adjust_channel_1 = __webpack_require__(/*! ./adjust_channel */ "./node_modules/khroma/dist/methods/adjust_channel.js");
+/* OPACIFY */
+function opacify(color, amount) {
+    return adjust_channel_1.default(color, 'a', amount);
+}
+/* EXPORT */
+exports.default = opacify;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/red.js":
+/*!*************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/red.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+/* RED */
+function red(color) {
+    return channel_1.default(color, 'r');
+}
+/* EXPORT */
+exports.default = red;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/rgba.js":
+/*!**************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/rgba.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var reusable_1 = __webpack_require__(/*! ../channels/reusable */ "./node_modules/khroma/dist/channels/reusable.js");
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+var change_1 = __webpack_require__(/*! ./change */ "./node_modules/khroma/dist/methods/change.js");
+function rgba(r, g, b, a) {
+    if (b === void 0) { b = 0; }
+    if (a === void 0) { a = 1; }
+    if (typeof r !== 'number')
+        return change_1.default(r, { a: g });
+    var channels = reusable_1.default.set({
+        r: utils_1.default.channel.clamp.r(r),
+        g: utils_1.default.channel.clamp.g(g),
+        b: utils_1.default.channel.clamp.b(b),
+        a: utils_1.default.channel.clamp.a(a)
+    });
+    return color_1.default.stringify(channels);
+}
+/* EXPORT */
+exports.default = rgba;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/saturate.js":
+/*!******************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/saturate.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var adjust_channel_1 = __webpack_require__(/*! ./adjust_channel */ "./node_modules/khroma/dist/methods/adjust_channel.js");
+/* SATURATE */
+function saturate(color, amount) {
+    return adjust_channel_1.default(color, 's', amount);
+}
+/* EXPORT */
+exports.default = saturate;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/saturation.js":
+/*!********************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/saturation.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/methods/channel.js");
+/* SATURATION */
+function saturation(color) {
+    return channel_1.default(color, 's');
+}
+/* EXPORT */
+exports.default = saturation;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/scale.js":
+/*!***************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/scale.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var utils_1 = __webpack_require__(/*! ../utils */ "./node_modules/khroma/dist/utils/index.js");
+var color_1 = __webpack_require__(/*! ../color */ "./node_modules/khroma/dist/color/index.js");
+var adjust_1 = __webpack_require__(/*! ./adjust */ "./node_modules/khroma/dist/methods/adjust.js");
+/* SCALE */
+function scale(color, channels) {
+    var ch = color_1.default.parse(color), adjustments = {}, delta = function (amount, weight, max) { return weight > 0 ? (max - amount) * weight / 100 : amount * weight / 100; };
+    for (var c in channels) {
+        adjustments[c] = delta(ch[c], channels[c], utils_1.default.channel.max[c]);
+    }
+    return adjust_1.default(color, adjustments);
+}
+/* EXPORT */
+exports.default = scale;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/methods/transparentize.js":
+/*!************************************************************!*\
+  !*** ./node_modules/khroma/dist/methods/transparentize.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var adjust_channel_1 = __webpack_require__(/*! ./adjust_channel */ "./node_modules/khroma/dist/methods/adjust_channel.js");
+/* TRANSPARENTIZE */
+function transparentize(color, amount) {
+    return adjust_channel_1.default(color, 'a', -amount);
+}
+/* EXPORT */
+exports.default = transparentize;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/types.js":
+/*!*******************************************!*\
+  !*** ./node_modules/khroma/dist/types.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* ENUMS */
+Object.defineProperty(exports, "__esModule", { value: true });
+var TYPE;
+(function (TYPE) {
+    TYPE[TYPE["ALL"] = 0] = "ALL";
+    TYPE[TYPE["RGB"] = 1] = "RGB";
+    TYPE[TYPE["HSL"] = 2] = "HSL";
+})(TYPE || (TYPE = {}));
+exports.TYPE = TYPE;
+;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/utils/channel.js":
+/*!***************************************************!*\
+  !*** ./node_modules/khroma/dist/utils/channel.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+/* CHANNEL */
+var Channel = {
+    /* CLAMP */
+    min: {
+        r: 0,
+        g: 0,
+        b: 0,
+        s: 0,
+        l: 0,
+        a: 0
+    },
+    max: {
+        r: 255,
+        g: 255,
+        b: 255,
+        h: 360,
+        s: 100,
+        l: 100,
+        a: 1
+    },
+    clamp: {
+        r: function (r) { return r >= 255 ? 255 : (r < 0 ? 0 : r); },
+        g: function (g) { return g >= 255 ? 255 : (g < 0 ? 0 : g); },
+        b: function (b) { return b >= 255 ? 255 : (b < 0 ? 0 : b); },
+        h: function (h) { return h % 360; },
+        s: function (s) { return s >= 100 ? 100 : (s < 0 ? 0 : s); },
+        l: function (l) { return l >= 100 ? 100 : (l < 0 ? 0 : l); },
+        a: function (a) { return a >= 1 ? 1 : (a < 0 ? 0 : a); }
+    },
+    /* CONVERSION */
+    //SOURCE: https://planetcalc.com/7779
+    toLinear: function (c) {
+        var n = c / 255;
+        return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;
+    },
+    //SOURCE: https://gist.github.com/mjackson/5311256
+    hue2rgb: function (p, q, t) {
+        if (t < 0)
+            t += 1;
+        if (t > 1)
+            t -= 1;
+        if (t < 1 / 6)
+            return p + (q - p) * 6 * t;
+        if (t < 1 / 2)
+            return q;
+        if (t < 2 / 3)
+            return p + (q - p) * (2 / 3 - t) * 6;
+        return p;
+    },
+    hsl2rgb: function (_a, channel) {
+        var h = _a.h, s = _a.s, l = _a.l;
+        if (s === 100)
+            return l * 2.55; // Achromatic
+        h /= 360;
+        s /= 100;
+        l /= 100;
+        var q = (l < .5) ? l * (1 + s) : (l + s) - (l * s), p = 2 * l - q;
+        switch (channel) {
+            case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;
+            case 'g': return Channel.hue2rgb(p, q, h) * 255;
+            case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;
+        }
+    },
+    rgb2hsl: function (_a, channel) {
+        var r = _a.r, g = _a.g, b = _a.b;
+        r /= 255;
+        g /= 255;
+        b /= 255;
+        var max = Math.max(r, g, b), min = Math.min(r, g, b), l = (max + min) / 2;
+        if (channel === 'l')
+            return l * 100;
+        if (max === min)
+            return 0; // Achromatic
+        var d = max - min, s = (l > .5) ? d / (2 - max - min) : d / (max + min);
+        if (channel === 's')
+            return s * 100;
+        switch (max) {
+            case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;
+            case g: return ((b - r) / d + 2) * 60;
+            case b: return ((r - g) / d + 4) * 60;
+            default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement
+        }
+    }
+};
+/* EXPORT */
+exports.default = Channel;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/utils/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/khroma/dist/utils/index.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* IMPORT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var channel_1 = __webpack_require__(/*! ./channel */ "./node_modules/khroma/dist/utils/channel.js");
+var lang_1 = __webpack_require__(/*! ./lang */ "./node_modules/khroma/dist/utils/lang.js");
+var unit_1 = __webpack_require__(/*! ./unit */ "./node_modules/khroma/dist/utils/unit.js");
+/* UTILS */
+var Utils = {
+    channel: channel_1.default,
+    lang: lang_1.default,
+    unit: unit_1.default
+};
+/* EXPORT */
+exports.default = Utils;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/utils/lang.js":
+/*!************************************************!*\
+  !*** ./node_modules/khroma/dist/utils/lang.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* LANG */
+Object.defineProperty(exports, "__esModule", { value: true });
+var Lang = {
+    round: function (number) {
+        return Math.round(number * 10000000000) / 10000000000;
+    }
+};
+/* EXPORT */
+exports.default = Lang;
+
+
+/***/ }),
+
+/***/ "./node_modules/khroma/dist/utils/unit.js":
+/*!************************************************!*\
+  !*** ./node_modules/khroma/dist/utils/unit.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/* UNIT */
+Object.defineProperty(exports, "__esModule", { value: true });
+var Unit = {
+    frac2hex: function (frac) {
+        var hex = Math.round(frac * 255).toString(16);
+        return hex.length > 1 ? hex : "0" + hex;
+    },
+    dec2hex: function (dec) {
+        var hex = Math.round(dec).toString(16);
+        return hex.length > 1 ? hex : "0" + hex;
+    }
+};
+/* EXPORT */
+exports.default = Unit;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_DataView.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_DataView.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),
+    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/* Built-in method references that are verified to be native. */
+var DataView = getNative(root, 'DataView');
+
+module.exports = DataView;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Hash.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/_Hash.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"),
+    hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"),
+    hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"),
+    hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"),
+    hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js");
+
+/**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Hash(entries) {
+  var index = -1,
+      length = entries == null ? 0 : entries.length;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+// Add methods to `Hash`.
+Hash.prototype.clear = hashClear;
+Hash.prototype['delete'] = hashDelete;
+Hash.prototype.get = hashGet;
+Hash.prototype.has = hashHas;
+Hash.prototype.set = hashSet;
+
+module.exports = Hash;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_ListCache.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_ListCache.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"),
+    listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"),
+    listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"),
+    listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"),
+    listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js");
+
+/**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function ListCache(entries) {
+  var index = -1,
+      length = entries == null ? 0 : entries.length;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+// Add methods to `ListCache`.
+ListCache.prototype.clear = listCacheClear;
+ListCache.prototype['delete'] = listCacheDelete;
+ListCache.prototype.get = listCacheGet;
+ListCache.prototype.has = listCacheHas;
+ListCache.prototype.set = listCacheSet;
+
+module.exports = ListCache;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Map.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/_Map.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),
+    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/* Built-in method references that are verified to be native. */
+var Map = getNative(root, 'Map');
+
+module.exports = Map;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_MapCache.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_MapCache.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"),
+    mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"),
+    mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"),
+    mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"),
+    mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js");
+
+/**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function MapCache(entries) {
+  var index = -1,
+      length = entries == null ? 0 : entries.length;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+// Add methods to `MapCache`.
+MapCache.prototype.clear = mapCacheClear;
+MapCache.prototype['delete'] = mapCacheDelete;
+MapCache.prototype.get = mapCacheGet;
+MapCache.prototype.has = mapCacheHas;
+MapCache.prototype.set = mapCacheSet;
+
+module.exports = MapCache;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Promise.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_Promise.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),
+    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/* Built-in method references that are verified to be native. */
+var Promise = getNative(root, 'Promise');
+
+module.exports = Promise;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Set.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/_Set.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),
+    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/* Built-in method references that are verified to be native. */
+var Set = getNative(root, 'Set');
+
+module.exports = Set;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_SetCache.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_SetCache.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"),
+    setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/lodash/_setCacheAdd.js"),
+    setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/lodash/_setCacheHas.js");
+
+/**
+ *
+ * Creates an array cache object to store unique values.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [values] The values to cache.
+ */
+function SetCache(values) {
+  var index = -1,
+      length = values == null ? 0 : values.length;
+
+  this.__data__ = new MapCache;
+  while (++index < length) {
+    this.add(values[index]);
+  }
+}
+
+// Add methods to `SetCache`.
+SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+SetCache.prototype.has = setCacheHas;
+
+module.exports = SetCache;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Stack.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/_Stack.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),
+    stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"),
+    stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"),
+    stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"),
+    stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"),
+    stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js");
+
+/**
+ * Creates a stack cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Stack(entries) {
+  var data = this.__data__ = new ListCache(entries);
+  this.size = data.size;
+}
+
+// Add methods to `Stack`.
+Stack.prototype.clear = stackClear;
+Stack.prototype['delete'] = stackDelete;
+Stack.prototype.get = stackGet;
+Stack.prototype.has = stackHas;
+Stack.prototype.set = stackSet;
+
+module.exports = Stack;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Symbol.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/_Symbol.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/** Built-in value references. */
+var Symbol = root.Symbol;
+
+module.exports = Symbol;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Uint8Array.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_Uint8Array.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/** Built-in value references. */
+var Uint8Array = root.Uint8Array;
+
+module.exports = Uint8Array;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_WeakMap.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_WeakMap.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),
+    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/* Built-in method references that are verified to be native. */
+var WeakMap = getNative(root, 'WeakMap');
+
+module.exports = WeakMap;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_apply.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/_apply.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A faster alternative to `Function#apply`, this function invokes `func`
+ * with the `this` binding of `thisArg` and the arguments of `args`.
+ *
+ * @private
+ * @param {Function} func The function to invoke.
+ * @param {*} thisArg The `this` binding of `func`.
+ * @param {Array} args The arguments to invoke `func` with.
+ * @returns {*} Returns the result of `func`.
+ */
+function apply(func, thisArg, args) {
+  switch (args.length) {
+    case 0: return func.call(thisArg);
+    case 1: return func.call(thisArg, args[0]);
+    case 2: return func.call(thisArg, args[0], args[1]);
+    case 3: return func.call(thisArg, args[0], args[1], args[2]);
+  }
+  return func.apply(thisArg, args);
+}
+
+module.exports = apply;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayEach.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_arrayEach.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A specialized version of `_.forEach` for arrays without support for
+ * iteratee shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns `array`.
+ */
+function arrayEach(array, iteratee) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
+
+  while (++index < length) {
+    if (iteratee(array[index], index, array) === false) {
+      break;
+    }
+  }
+  return array;
+}
+
+module.exports = arrayEach;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayFilter.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_arrayFilter.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A specialized version of `_.filter` for arrays without support for
+ * iteratee shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {Array} Returns the new filtered array.
+ */
+function arrayFilter(array, predicate) {
+  var index = -1,
+      length = array == null ? 0 : array.length,
+      resIndex = 0,
+      result = [];
+
+  while (++index < length) {
+    var value = array[index];
+    if (predicate(value, index, array)) {
+      result[resIndex++] = value;
+    }
+  }
+  return result;
+}
+
+module.exports = arrayFilter;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayIncludes.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_arrayIncludes.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/lodash/_baseIndexOf.js");
+
+/**
+ * A specialized version of `_.includes` for arrays without support for
+ * specifying an index to search from.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+function arrayIncludes(array, value) {
+  var length = array == null ? 0 : array.length;
+  return !!length && baseIndexOf(array, value, 0) > -1;
+}
+
+module.exports = arrayIncludes;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayIncludesWith.js":
+/*!***************************************************!*\
+  !*** ./node_modules/lodash/_arrayIncludesWith.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * This function is like `arrayIncludes` except that it accepts a comparator.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @param {Function} comparator The comparator invoked per element.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+function arrayIncludesWith(array, value, comparator) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
+
+  while (++index < length) {
+    if (comparator(value, array[index])) {
+      return true;
+    }
+  }
+  return false;
+}
+
+module.exports = arrayIncludesWith;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayLikeKeys.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_arrayLikeKeys.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/lodash/_baseTimes.js"),
+    isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),
+    isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),
+    isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+function arrayLikeKeys(value, inherited) {
+  var isArr = isArray(value),
+      isArg = !isArr && isArguments(value),
+      isBuff = !isArr && !isArg && isBuffer(value),
+      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
+      skipIndexes = isArr || isArg || isBuff || isType,
+      result = skipIndexes ? baseTimes(value.length, String) : [],
+      length = result.length;
+
+  for (var key in value) {
+    if ((inherited || hasOwnProperty.call(value, key)) &&
+        !(skipIndexes && (
+           // Safari 9 has enumerable `arguments.length` in strict mode.
+           key == 'length' ||
+           // Node.js 0.10 has enumerable non-index properties on buffers.
+           (isBuff && (key == 'offset' || key == 'parent')) ||
+           // PhantomJS 2 has enumerable non-index properties on typed arrays.
+           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
+           // Skip index properties.
+           isIndex(key, length)
+        ))) {
+      result.push(key);
+    }
+  }
+  return result;
+}
+
+module.exports = arrayLikeKeys;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayMap.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_arrayMap.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A specialized version of `_.map` for arrays without support for iteratee
+ * shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
+ */
+function arrayMap(array, iteratee) {
+  var index = -1,
+      length = array == null ? 0 : array.length,
+      result = Array(length);
+
+  while (++index < length) {
+    result[index] = iteratee(array[index], index, array);
+  }
+  return result;
+}
+
+module.exports = arrayMap;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayPush.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_arrayPush.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Appends the elements of `values` to `array`.
+ *
+ * @private
+ * @param {Array} array The array to modify.
+ * @param {Array} values The values to append.
+ * @returns {Array} Returns `array`.
+ */
+function arrayPush(array, values) {
+  var index = -1,
+      length = values.length,
+      offset = array.length;
+
+  while (++index < length) {
+    array[offset + index] = values[index];
+  }
+  return array;
+}
+
+module.exports = arrayPush;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arrayReduce.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_arrayReduce.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A specialized version of `_.reduce` for arrays without support for
+ * iteratee shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {*} [accumulator] The initial value.
+ * @param {boolean} [initAccum] Specify using the first element of `array` as
+ *  the initial value.
+ * @returns {*} Returns the accumulated value.
+ */
+function arrayReduce(array, iteratee, accumulator, initAccum) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
+
+  if (initAccum && length) {
+    accumulator = array[++index];
+  }
+  while (++index < length) {
+    accumulator = iteratee(accumulator, array[index], index, array);
+  }
+  return accumulator;
+}
+
+module.exports = arrayReduce;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_arraySome.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_arraySome.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A specialized version of `_.some` for arrays without support for iteratee
+ * shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
+ *  else `false`.
+ */
+function arraySome(array, predicate) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
+
+  while (++index < length) {
+    if (predicate(array[index], index, array)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+module.exports = arraySome;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_asciiSize.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_asciiSize.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js");
+
+/**
+ * Gets the size of an ASCII `string`.
+ *
+ * @private
+ * @param {string} string The string inspect.
+ * @returns {number} Returns the string size.
+ */
+var asciiSize = baseProperty('length');
+
+module.exports = asciiSize;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_assignMergeValue.js":
+/*!**************************************************!*\
+  !*** ./node_modules/lodash/_assignMergeValue.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),
+    eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");
+
+/**
+ * This function is like `assignValue` except that it doesn't assign
+ * `undefined` values.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
+ */
+function assignMergeValue(object, key, value) {
+  if ((value !== undefined && !eq(object[key], value)) ||
+      (value === undefined && !(key in object))) {
+    baseAssignValue(object, key, value);
+  }
+}
+
+module.exports = assignMergeValue;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_assignValue.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_assignValue.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),
+    eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
+ */
+function assignValue(object, key, value) {
+  var objValue = object[key];
+  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
+      (value === undefined && !(key in object))) {
+    baseAssignValue(object, key, value);
+  }
+}
+
+module.exports = assignValue;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_assocIndexOf.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_assocIndexOf.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");
+
+/**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function assocIndexOf(array, key) {
+  var length = array.length;
+  while (length--) {
+    if (eq(array[length][0], key)) {
+      return length;
+    }
+  }
+  return -1;
+}
+
+module.exports = assocIndexOf;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseAssign.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseAssign.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),
+    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");
+
+/**
+ * The base implementation of `_.assign` without support for multiple sources
+ * or `customizer` functions.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
+ */
+function baseAssign(object, source) {
+  return object && copyObject(source, keys(source), object);
+}
+
+module.exports = baseAssign;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseAssignIn.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_baseAssignIn.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),
+    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js");
+
+/**
+ * The base implementation of `_.assignIn` without support for multiple sources
+ * or `customizer` functions.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
+ */
+function baseAssignIn(object, source) {
+  return object && copyObject(source, keysIn(source), object);
+}
+
+module.exports = baseAssignIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseAssignValue.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_baseAssignValue.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js");
+
+/**
+ * The base implementation of `assignValue` and `assignMergeValue` without
+ * value checks.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
+ */
+function baseAssignValue(object, key, value) {
+  if (key == '__proto__' && defineProperty) {
+    defineProperty(object, key, {
+      'configurable': true,
+      'enumerable': true,
+      'value': value,
+      'writable': true
+    });
+  } else {
+    object[key] = value;
+  }
+}
+
+module.exports = baseAssignValue;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseClone.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseClone.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),
+    arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"),
+    assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"),
+    baseAssign = __webpack_require__(/*! ./_baseAssign */ "./node_modules/lodash/_baseAssign.js"),
+    baseAssignIn = __webpack_require__(/*! ./_baseAssignIn */ "./node_modules/lodash/_baseAssignIn.js"),
+    cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"),
+    copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"),
+    copySymbols = __webpack_require__(/*! ./_copySymbols */ "./node_modules/lodash/_copySymbols.js"),
+    copySymbolsIn = __webpack_require__(/*! ./_copySymbolsIn */ "./node_modules/lodash/_copySymbolsIn.js"),
+    getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"),
+    getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ "./node_modules/lodash/_getAllKeysIn.js"),
+    getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),
+    initCloneArray = __webpack_require__(/*! ./_initCloneArray */ "./node_modules/lodash/_initCloneArray.js"),
+    initCloneByTag = __webpack_require__(/*! ./_initCloneByTag */ "./node_modules/lodash/_initCloneByTag.js"),
+    initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),
+    isMap = __webpack_require__(/*! ./isMap */ "./node_modules/lodash/isMap.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    isSet = __webpack_require__(/*! ./isSet */ "./node_modules/lodash/isSet.js"),
+    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");
+
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+    CLONE_FLAT_FLAG = 2,
+    CLONE_SYMBOLS_FLAG = 4;
+
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+    arrayTag = '[object Array]',
+    boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    errorTag = '[object Error]',
+    funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    objectTag = '[object Object]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    symbolTag = '[object Symbol]',
+    weakMapTag = '[object WeakMap]';
+
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]',
+    float32Tag = '[object Float32Array]',
+    float64Tag = '[object Float64Array]',
+    int8Tag = '[object Int8Array]',
+    int16Tag = '[object Int16Array]',
+    int32Tag = '[object Int32Array]',
+    uint8Tag = '[object Uint8Array]',
+    uint8ClampedTag = '[object Uint8ClampedArray]',
+    uint16Tag = '[object Uint16Array]',
+    uint32Tag = '[object Uint32Array]';
+
+/** Used to identify `toStringTag` values supported by `_.clone`. */
+var cloneableTags = {};
+cloneableTags[argsTag] = cloneableTags[arrayTag] =
+cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
+cloneableTags[boolTag] = cloneableTags[dateTag] =
+cloneableTags[float32Tag] = cloneableTags[float64Tag] =
+cloneableTags[int8Tag] = cloneableTags[int16Tag] =
+cloneableTags[int32Tag] = cloneableTags[mapTag] =
+cloneableTags[numberTag] = cloneableTags[objectTag] =
+cloneableTags[regexpTag] = cloneableTags[setTag] =
+cloneableTags[stringTag] = cloneableTags[symbolTag] =
+cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
+cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
+cloneableTags[errorTag] = cloneableTags[funcTag] =
+cloneableTags[weakMapTag] = false;
+
+/**
+ * The base implementation of `_.clone` and `_.cloneDeep` which tracks
+ * traversed objects.
+ *
+ * @private
+ * @param {*} value The value to clone.
+ * @param {boolean} bitmask The bitmask flags.
+ *  1 - Deep clone
+ *  2 - Flatten inherited properties
+ *  4 - Clone symbols
+ * @param {Function} [customizer] The function to customize cloning.
+ * @param {string} [key] The key of `value`.
+ * @param {Object} [object] The parent object of `value`.
+ * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
+ * @returns {*} Returns the cloned value.
+ */
+function baseClone(value, bitmask, customizer, key, object, stack) {
+  var result,
+      isDeep = bitmask & CLONE_DEEP_FLAG,
+      isFlat = bitmask & CLONE_FLAT_FLAG,
+      isFull = bitmask & CLONE_SYMBOLS_FLAG;
+
+  if (customizer) {
+    result = object ? customizer(value, key, object, stack) : customizer(value);
+  }
+  if (result !== undefined) {
+    return result;
+  }
+  if (!isObject(value)) {
+    return value;
+  }
+  var isArr = isArray(value);
+  if (isArr) {
+    result = initCloneArray(value);
+    if (!isDeep) {
+      return copyArray(value, result);
+    }
+  } else {
+    var tag = getTag(value),
+        isFunc = tag == funcTag || tag == genTag;
+
+    if (isBuffer(value)) {
+      return cloneBuffer(value, isDeep);
+    }
+    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
+      result = (isFlat || isFunc) ? {} : initCloneObject(value);
+      if (!isDeep) {
+        return isFlat
+          ? copySymbolsIn(value, baseAssignIn(result, value))
+          : copySymbols(value, baseAssign(result, value));
+      }
+    } else {
+      if (!cloneableTags[tag]) {
+        return object ? value : {};
+      }
+      result = initCloneByTag(value, tag, isDeep);
+    }
+  }
+  // Check for circular references and return its corresponding clone.
+  stack || (stack = new Stack);
+  var stacked = stack.get(value);
+  if (stacked) {
+    return stacked;
+  }
+  stack.set(value, result);
+
+  if (isSet(value)) {
+    value.forEach(function(subValue) {
+      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
+    });
+  } else if (isMap(value)) {
+    value.forEach(function(subValue, key) {
+      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
+    });
+  }
+
+  var keysFunc = isFull
+    ? (isFlat ? getAllKeysIn : getAllKeys)
+    : (isFlat ? keysIn : keys);
+
+  var props = isArr ? undefined : keysFunc(value);
+  arrayEach(props || value, function(subValue, key) {
+    if (props) {
+      key = subValue;
+      subValue = value[key];
+    }
+    // Recursively populate clone (susceptible to call stack limits).
+    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
+  });
+  return result;
+}
+
+module.exports = baseClone;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseCreate.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseCreate.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");
+
+/** Built-in value references. */
+var objectCreate = Object.create;
+
+/**
+ * The base implementation of `_.create` without support for assigning
+ * properties to the created object.
+ *
+ * @private
+ * @param {Object} proto The object to inherit from.
+ * @returns {Object} Returns the new object.
+ */
+var baseCreate = (function() {
+  function object() {}
+  return function(proto) {
+    if (!isObject(proto)) {
+      return {};
+    }
+    if (objectCreate) {
+      return objectCreate(proto);
+    }
+    object.prototype = proto;
+    var result = new object;
+    object.prototype = undefined;
+    return result;
+  };
+}());
+
+module.exports = baseCreate;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseEach.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_baseEach.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"),
+    createBaseEach = __webpack_require__(/*! ./_createBaseEach */ "./node_modules/lodash/_createBaseEach.js");
+
+/**
+ * The base implementation of `_.forEach` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array|Object} Returns `collection`.
+ */
+var baseEach = createBaseEach(baseForOwn);
+
+module.exports = baseEach;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseExtremum.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_baseExtremum.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");
+
+/**
+ * The base implementation of methods like `_.max` and `_.min` which accepts a
+ * `comparator` to determine the extremum value.
+ *
+ * @private
+ * @param {Array} array The array to iterate over.
+ * @param {Function} iteratee The iteratee invoked per iteration.
+ * @param {Function} comparator The comparator used to compare values.
+ * @returns {*} Returns the extremum value.
+ */
+function baseExtremum(array, iteratee, comparator) {
+  var index = -1,
+      length = array.length;
+
+  while (++index < length) {
+    var value = array[index],
+        current = iteratee(value);
+
+    if (current != null && (computed === undefined
+          ? (current === current && !isSymbol(current))
+          : comparator(current, computed)
+        )) {
+      var computed = current,
+          result = value;
+    }
+  }
+  return result;
+}
+
+module.exports = baseExtremum;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseFilter.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseFilter.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js");
+
+/**
+ * The base implementation of `_.filter` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {Array} Returns the new filtered array.
+ */
+function baseFilter(collection, predicate) {
+  var result = [];
+  baseEach(collection, function(value, index, collection) {
+    if (predicate(value, index, collection)) {
+      result.push(value);
+    }
+  });
+  return result;
+}
+
+module.exports = baseFilter;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseFindIndex.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_baseFindIndex.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseFindIndex(array, predicate, fromIndex, fromRight) {
+  var length = array.length,
+      index = fromIndex + (fromRight ? 1 : -1);
+
+  while ((fromRight ? index-- : ++index < length)) {
+    if (predicate(array[index], index, array)) {
+      return index;
+    }
+  }
+  return -1;
+}
+
+module.exports = baseFindIndex;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseFlatten.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_baseFlatten.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"),
+    isFlattenable = __webpack_require__(/*! ./_isFlattenable */ "./node_modules/lodash/_isFlattenable.js");
+
+/**
+ * The base implementation of `_.flatten` with support for restricting flattening.
+ *
+ * @private
+ * @param {Array} array The array to flatten.
+ * @param {number} depth The maximum recursion depth.
+ * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
+ * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
+ * @param {Array} [result=[]] The initial result value.
+ * @returns {Array} Returns the new flattened array.
+ */
+function baseFlatten(array, depth, predicate, isStrict, result) {
+  var index = -1,
+      length = array.length;
+
+  predicate || (predicate = isFlattenable);
+  result || (result = []);
+
+  while (++index < length) {
+    var value = array[index];
+    if (depth > 0 && predicate(value)) {
+      if (depth > 1) {
+        // Recursively flatten arrays (susceptible to call stack limits).
+        baseFlatten(value, depth - 1, predicate, isStrict, result);
+      } else {
+        arrayPush(result, value);
+      }
+    } else if (!isStrict) {
+      result[result.length] = value;
+    }
+  }
+  return result;
+}
+
+module.exports = baseFlatten;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseFor.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_baseFor.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ "./node_modules/lodash/_createBaseFor.js");
+
+/**
+ * The base implementation of `baseForOwn` which iterates over `object`
+ * properties returned by `keysFunc` and invokes `iteratee` for each property.
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {Function} keysFunc The function to get the keys of `object`.
+ * @returns {Object} Returns `object`.
+ */
+var baseFor = createBaseFor();
+
+module.exports = baseFor;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseForOwn.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseForOwn.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"),
+    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");
+
+/**
+ * The base implementation of `_.forOwn` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Object} Returns `object`.
+ */
+function baseForOwn(object, iteratee) {
+  return object && baseFor(object, iteratee, keys);
+}
+
+module.exports = baseForOwn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseGet.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_baseGet.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),
+    toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");
+
+/**
+ * The base implementation of `_.get` without support for default values.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @returns {*} Returns the resolved value.
+ */
+function baseGet(object, path) {
+  path = castPath(path, object);
+
+  var index = 0,
+      length = path.length;
+
+  while (object != null && index < length) {
+    object = object[toKey(path[index++])];
+  }
+  return (index && index == length) ? object : undefined;
+}
+
+module.exports = baseGet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseGetAllKeys.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_baseGetAllKeys.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");
+
+/**
+ * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
+ * `keysFunc` and `symbolsFunc` to get the enumerable property names and
+ * symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Function} keysFunc The function to get the keys of `object`.
+ * @param {Function} symbolsFunc The function to get the symbols of `object`.
+ * @returns {Array} Returns the array of property names and symbols.
+ */
+function baseGetAllKeys(object, keysFunc, symbolsFunc) {
+  var result = keysFunc(object);
+  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
+}
+
+module.exports = baseGetAllKeys;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseGetTag.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseGetTag.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"),
+    getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"),
+    objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js");
+
+/** `Object#toString` result references. */
+var nullTag = '[object Null]',
+    undefinedTag = '[object Undefined]';
+
+/** Built-in value references. */
+var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
+
+/**
+ * The base implementation of `getTag` without fallbacks for buggy environments.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+function baseGetTag(value) {
+  if (value == null) {
+    return value === undefined ? undefinedTag : nullTag;
+  }
+  return (symToStringTag && symToStringTag in Object(value))
+    ? getRawTag(value)
+    : objectToString(value);
+}
+
+module.exports = baseGetTag;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseGt.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/_baseGt.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.gt` which doesn't coerce arguments.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if `value` is greater than `other`,
+ *  else `false`.
+ */
+function baseGt(value, other) {
+  return value > other;
+}
+
+module.exports = baseGt;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseHas.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_baseHas.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * The base implementation of `_.has` without support for deep paths.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {Array|string} key The key to check.
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
+ */
+function baseHas(object, key) {
+  return object != null && hasOwnProperty.call(object, key);
+}
+
+module.exports = baseHas;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseHasIn.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseHasIn.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.hasIn` without support for deep paths.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {Array|string} key The key to check.
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
+ */
+function baseHasIn(object, key) {
+  return object != null && key in Object(object);
+}
+
+module.exports = baseHasIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIndexOf.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_baseIndexOf.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"),
+    baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/lodash/_baseIsNaN.js"),
+    strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/lodash/_strictIndexOf.js");
+
+/**
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseIndexOf(array, value, fromIndex) {
+  return value === value
+    ? strictIndexOf(array, value, fromIndex)
+    : baseFindIndex(array, baseIsNaN, fromIndex);
+}
+
+module.exports = baseIndexOf;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsArguments.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_baseIsArguments.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]';
+
+/**
+ * The base implementation of `_.isArguments`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ */
+function baseIsArguments(value) {
+  return isObjectLike(value) && baseGetTag(value) == argsTag;
+}
+
+module.exports = baseIsArguments;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsEqual.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_baseIsEqual.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/lodash/_baseIsEqualDeep.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/**
+ * The base implementation of `_.isEqual` which supports partial comparisons
+ * and tracks traversed objects.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @param {boolean} bitmask The bitmask flags.
+ *  1 - Unordered comparison
+ *  2 - Partial comparison
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ */
+function baseIsEqual(value, other, bitmask, customizer, stack) {
+  if (value === other) {
+    return true;
+  }
+  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
+    return value !== value && other !== other;
+  }
+  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
+}
+
+module.exports = baseIsEqual;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsEqualDeep.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_baseIsEqualDeep.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),
+    equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"),
+    equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/lodash/_equalByTag.js"),
+    equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/lodash/_equalObjects.js"),
+    getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),
+    isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js");
+
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1;
+
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+    arrayTag = '[object Array]',
+    objectTag = '[object Object]';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
+ * deep comparisons and tracks traversed objects enabling objects with circular
+ * references to be compared.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
+  var objIsArr = isArray(object),
+      othIsArr = isArray(other),
+      objTag = objIsArr ? arrayTag : getTag(object),
+      othTag = othIsArr ? arrayTag : getTag(other);
+
+  objTag = objTag == argsTag ? objectTag : objTag;
+  othTag = othTag == argsTag ? objectTag : othTag;
+
+  var objIsObj = objTag == objectTag,
+      othIsObj = othTag == objectTag,
+      isSameTag = objTag == othTag;
+
+  if (isSameTag && isBuffer(object)) {
+    if (!isBuffer(other)) {
+      return false;
+    }
+    objIsArr = true;
+    objIsObj = false;
+  }
+  if (isSameTag && !objIsObj) {
+    stack || (stack = new Stack);
+    return (objIsArr || isTypedArray(object))
+      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
+      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
+  }
+  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
+    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
+        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
+
+    if (objIsWrapped || othIsWrapped) {
+      var objUnwrapped = objIsWrapped ? object.value() : object,
+          othUnwrapped = othIsWrapped ? other.value() : other;
+
+      stack || (stack = new Stack);
+      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
+    }
+  }
+  if (!isSameTag) {
+    return false;
+  }
+  stack || (stack = new Stack);
+  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
+}
+
+module.exports = baseIsEqualDeep;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsMap.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseIsMap.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** `Object#toString` result references. */
+var mapTag = '[object Map]';
+
+/**
+ * The base implementation of `_.isMap` without Node.js optimizations.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a map, else `false`.
+ */
+function baseIsMap(value) {
+  return isObjectLike(value) && getTag(value) == mapTag;
+}
+
+module.exports = baseIsMap;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsMatch.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_baseIsMatch.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),
+    baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js");
+
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
+
+/**
+ * The base implementation of `_.isMatch` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The object to inspect.
+ * @param {Object} source The object of property values to match.
+ * @param {Array} matchData The property names, values, and compare flags to match.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+ */
+function baseIsMatch(object, source, matchData, customizer) {
+  var index = matchData.length,
+      length = index,
+      noCustomizer = !customizer;
+
+  if (object == null) {
+    return !length;
+  }
+  object = Object(object);
+  while (index--) {
+    var data = matchData[index];
+    if ((noCustomizer && data[2])
+          ? data[1] !== object[data[0]]
+          : !(data[0] in object)
+        ) {
+      return false;
+    }
+  }
+  while (++index < length) {
+    data = matchData[index];
+    var key = data[0],
+        objValue = object[key],
+        srcValue = data[1];
+
+    if (noCustomizer && data[2]) {
+      if (objValue === undefined && !(key in object)) {
+        return false;
+      }
+    } else {
+      var stack = new Stack;
+      if (customizer) {
+        var result = customizer(objValue, srcValue, key, object, source, stack);
+      }
+      if (!(result === undefined
+            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
+            : result
+          )) {
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+module.exports = baseIsMatch;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsNaN.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseIsNaN.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.isNaN` without support for number objects.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+ */
+function baseIsNaN(value) {
+  return value !== value;
+}
+
+module.exports = baseIsNaN;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsNative.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_baseIsNative.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"),
+    isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/lodash/_isMasked.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js");
+
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+
+/** Used to detect host constructors (Safari). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/** Used for built-in method references. */
+var funcProto = Function.prototype,
+    objectProto = Object.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ *  else `false`.
+ */
+function baseIsNative(value) {
+  if (!isObject(value) || isMasked(value)) {
+    return false;
+  }
+  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
+  return pattern.test(toSource(value));
+}
+
+module.exports = baseIsNative;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsSet.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseIsSet.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** `Object#toString` result references. */
+var setTag = '[object Set]';
+
+/**
+ * The base implementation of `_.isSet` without Node.js optimizations.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a set, else `false`.
+ */
+function baseIsSet(value) {
+  return isObjectLike(value) && getTag(value) == setTag;
+}
+
+module.exports = baseIsSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIsTypedArray.js":
+/*!**************************************************!*\
+  !*** ./node_modules/lodash/_baseIsTypedArray.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),
+    isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+    arrayTag = '[object Array]',
+    boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    errorTag = '[object Error]',
+    funcTag = '[object Function]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    objectTag = '[object Object]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    weakMapTag = '[object WeakMap]';
+
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]',
+    float32Tag = '[object Float32Array]',
+    float64Tag = '[object Float64Array]',
+    int8Tag = '[object Int8Array]',
+    int16Tag = '[object Int16Array]',
+    int32Tag = '[object Int32Array]',
+    uint8Tag = '[object Uint8Array]',
+    uint8ClampedTag = '[object Uint8ClampedArray]',
+    uint16Tag = '[object Uint16Array]',
+    uint32Tag = '[object Uint32Array]';
+
+/** Used to identify `toStringTag` values of typed arrays. */
+var typedArrayTags = {};
+typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
+typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
+typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
+typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
+typedArrayTags[uint32Tag] = true;
+typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
+typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
+typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
+typedArrayTags[errorTag] = typedArrayTags[funcTag] =
+typedArrayTags[mapTag] = typedArrayTags[numberTag] =
+typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
+typedArrayTags[setTag] = typedArrayTags[stringTag] =
+typedArrayTags[weakMapTag] = false;
+
+/**
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ */
+function baseIsTypedArray(value) {
+  return isObjectLike(value) &&
+    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
+}
+
+module.exports = baseIsTypedArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseIteratee.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_baseIteratee.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/lodash/_baseMatches.js"),
+    baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/lodash/_baseMatchesProperty.js"),
+    identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    property = __webpack_require__(/*! ./property */ "./node_modules/lodash/property.js");
+
+/**
+ * The base implementation of `_.iteratee`.
+ *
+ * @private
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
+ * @returns {Function} Returns the iteratee.
+ */
+function baseIteratee(value) {
+  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
+  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
+  if (typeof value == 'function') {
+    return value;
+  }
+  if (value == null) {
+    return identity;
+  }
+  if (typeof value == 'object') {
+    return isArray(value)
+      ? baseMatchesProperty(value[0], value[1])
+      : baseMatches(value);
+  }
+  return property(value);
+}
+
+module.exports = baseIteratee;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseKeys.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_baseKeys.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),
+    nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function baseKeys(object) {
+  if (!isPrototype(object)) {
+    return nativeKeys(object);
+  }
+  var result = [];
+  for (var key in Object(object)) {
+    if (hasOwnProperty.call(object, key) && key != 'constructor') {
+      result.push(key);
+    }
+  }
+  return result;
+}
+
+module.exports = baseKeys;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseKeysIn.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseKeysIn.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),
+    nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function baseKeysIn(object) {
+  if (!isObject(object)) {
+    return nativeKeysIn(object);
+  }
+  var isProto = isPrototype(object),
+      result = [];
+
+  for (var key in object) {
+    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
+      result.push(key);
+    }
+  }
+  return result;
+}
+
+module.exports = baseKeysIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseLt.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/_baseLt.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.lt` which doesn't coerce arguments.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if `value` is less than `other`,
+ *  else `false`.
+ */
+function baseLt(value, other) {
+  return value < other;
+}
+
+module.exports = baseLt;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseMap.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_baseMap.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"),
+    isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js");
+
+/**
+ * The base implementation of `_.map` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
+ */
+function baseMap(collection, iteratee) {
+  var index = -1,
+      result = isArrayLike(collection) ? Array(collection.length) : [];
+
+  baseEach(collection, function(value, key, collection) {
+    result[++index] = iteratee(value, key, collection);
+  });
+  return result;
+}
+
+module.exports = baseMap;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseMatches.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_baseMatches.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/lodash/_baseIsMatch.js"),
+    getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/lodash/_getMatchData.js"),
+    matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js");
+
+/**
+ * The base implementation of `_.matches` which doesn't clone `source`.
+ *
+ * @private
+ * @param {Object} source The object of property values to match.
+ * @returns {Function} Returns the new spec function.
+ */
+function baseMatches(source) {
+  var matchData = getMatchData(source);
+  if (matchData.length == 1 && matchData[0][2]) {
+    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+  }
+  return function(object) {
+    return object === source || baseIsMatch(object, source, matchData);
+  };
+}
+
+module.exports = baseMatches;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseMatchesProperty.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/lodash/_baseMatchesProperty.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"),
+    get = __webpack_require__(/*! ./get */ "./node_modules/lodash/get.js"),
+    hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"),
+    isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"),
+    isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"),
+    matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"),
+    toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");
+
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
+
+/**
+ * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
+ *
+ * @private
+ * @param {string} path The path of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+function baseMatchesProperty(path, srcValue) {
+  if (isKey(path) && isStrictComparable(srcValue)) {
+    return matchesStrictComparable(toKey(path), srcValue);
+  }
+  return function(object) {
+    var objValue = get(object, path);
+    return (objValue === undefined && objValue === srcValue)
+      ? hasIn(object, path)
+      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
+  };
+}
+
+module.exports = baseMatchesProperty;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseMerge.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseMerge.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),
+    assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"),
+    baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"),
+    baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ "./node_modules/lodash/_baseMergeDeep.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"),
+    safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js");
+
+/**
+ * The base implementation of `_.merge` without support for multiple sources.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {number} srcIndex The index of `source`.
+ * @param {Function} [customizer] The function to customize merged values.
+ * @param {Object} [stack] Tracks traversed source values and their merged
+ *  counterparts.
+ */
+function baseMerge(object, source, srcIndex, customizer, stack) {
+  if (object === source) {
+    return;
+  }
+  baseFor(source, function(srcValue, key) {
+    stack || (stack = new Stack);
+    if (isObject(srcValue)) {
+      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
+    }
+    else {
+      var newValue = customizer
+        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
+        : undefined;
+
+      if (newValue === undefined) {
+        newValue = srcValue;
+      }
+      assignMergeValue(object, key, newValue);
+    }
+  }, keysIn);
+}
+
+module.exports = baseMerge;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseMergeDeep.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_baseMergeDeep.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"),
+    cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"),
+    cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"),
+    copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"),
+    initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"),
+    isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"),
+    isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),
+    isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    isPlainObject = __webpack_require__(/*! ./isPlainObject */ "./node_modules/lodash/isPlainObject.js"),
+    isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"),
+    safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"),
+    toPlainObject = __webpack_require__(/*! ./toPlainObject */ "./node_modules/lodash/toPlainObject.js");
+
+/**
+ * A specialized version of `baseMerge` for arrays and objects which performs
+ * deep merges and tracks traversed objects enabling objects with circular
+ * references to be merged.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {string} key The key of the value to merge.
+ * @param {number} srcIndex The index of `source`.
+ * @param {Function} mergeFunc The function to merge values.
+ * @param {Function} [customizer] The function to customize assigned values.
+ * @param {Object} [stack] Tracks traversed source values and their merged
+ *  counterparts.
+ */
+function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
+  var objValue = safeGet(object, key),
+      srcValue = safeGet(source, key),
+      stacked = stack.get(srcValue);
+
+  if (stacked) {
+    assignMergeValue(object, key, stacked);
+    return;
+  }
+  var newValue = customizer
+    ? customizer(objValue, srcValue, (key + ''), object, source, stack)
+    : undefined;
+
+  var isCommon = newValue === undefined;
+
+  if (isCommon) {
+    var isArr = isArray(srcValue),
+        isBuff = !isArr && isBuffer(srcValue),
+        isTyped = !isArr && !isBuff && isTypedArray(srcValue);
+
+    newValue = srcValue;
+    if (isArr || isBuff || isTyped) {
+      if (isArray(objValue)) {
+        newValue = objValue;
+      }
+      else if (isArrayLikeObject(objValue)) {
+        newValue = copyArray(objValue);
+      }
+      else if (isBuff) {
+        isCommon = false;
+        newValue = cloneBuffer(srcValue, true);
+      }
+      else if (isTyped) {
+        isCommon = false;
+        newValue = cloneTypedArray(srcValue, true);
+      }
+      else {
+        newValue = [];
+      }
+    }
+    else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+      newValue = objValue;
+      if (isArguments(objValue)) {
+        newValue = toPlainObject(objValue);
+      }
+      else if (!isObject(objValue) || isFunction(objValue)) {
+        newValue = initCloneObject(srcValue);
+      }
+    }
+    else {
+      isCommon = false;
+    }
+  }
+  if (isCommon) {
+    // Recursively merge objects and arrays (susceptible to call stack limits).
+    stack.set(srcValue, newValue);
+    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
+    stack['delete'](srcValue);
+  }
+  assignMergeValue(object, key, newValue);
+}
+
+module.exports = baseMergeDeep;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseOrderBy.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_baseOrderBy.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"),
+    baseSortBy = __webpack_require__(/*! ./_baseSortBy */ "./node_modules/lodash/_baseSortBy.js"),
+    baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),
+    compareMultiple = __webpack_require__(/*! ./_compareMultiple */ "./node_modules/lodash/_compareMultiple.js"),
+    identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js");
+
+/**
+ * The base implementation of `_.orderBy` without param guards.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
+ * @param {string[]} orders The sort orders of `iteratees`.
+ * @returns {Array} Returns the new sorted array.
+ */
+function baseOrderBy(collection, iteratees, orders) {
+  var index = -1;
+  iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));
+
+  var result = baseMap(collection, function(value, key, collection) {
+    var criteria = arrayMap(iteratees, function(iteratee) {
+      return iteratee(value);
+    });
+    return { 'criteria': criteria, 'index': ++index, 'value': value };
+  });
+
+  return baseSortBy(result, function(object, other) {
+    return compareMultiple(object, other, orders);
+  });
+}
+
+module.exports = baseOrderBy;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_basePick.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_basePick.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var basePickBy = __webpack_require__(/*! ./_basePickBy */ "./node_modules/lodash/_basePickBy.js"),
+    hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js");
+
+/**
+ * The base implementation of `_.pick` without support for individual
+ * property identifiers.
+ *
+ * @private
+ * @param {Object} object The source object.
+ * @param {string[]} paths The property paths to pick.
+ * @returns {Object} Returns the new object.
+ */
+function basePick(object, paths) {
+  return basePickBy(object, paths, function(value, path) {
+    return hasIn(object, path);
+  });
+}
+
+module.exports = basePick;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_basePickBy.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_basePickBy.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"),
+    baseSet = __webpack_require__(/*! ./_baseSet */ "./node_modules/lodash/_baseSet.js"),
+    castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js");
+
+/**
+ * The base implementation of  `_.pickBy` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The source object.
+ * @param {string[]} paths The property paths to pick.
+ * @param {Function} predicate The function invoked per property.
+ * @returns {Object} Returns the new object.
+ */
+function basePickBy(object, paths, predicate) {
+  var index = -1,
+      length = paths.length,
+      result = {};
+
+  while (++index < length) {
+    var path = paths[index],
+        value = baseGet(object, path);
+
+    if (predicate(value, path)) {
+      baseSet(result, castPath(path, object), value);
+    }
+  }
+  return result;
+}
+
+module.exports = basePickBy;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseProperty.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_baseProperty.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+function baseProperty(key) {
+  return function(object) {
+    return object == null ? undefined : object[key];
+  };
+}
+
+module.exports = baseProperty;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_basePropertyDeep.js":
+/*!**************************************************!*\
+  !*** ./node_modules/lodash/_basePropertyDeep.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js");
+
+/**
+ * A specialized version of `baseProperty` which supports deep paths.
+ *
+ * @private
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+function basePropertyDeep(path) {
+  return function(object) {
+    return baseGet(object, path);
+  };
+}
+
+module.exports = basePropertyDeep;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseRange.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseRange.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeCeil = Math.ceil,
+    nativeMax = Math.max;
+
+/**
+ * The base implementation of `_.range` and `_.rangeRight` which doesn't
+ * coerce arguments.
+ *
+ * @private
+ * @param {number} start The start of the range.
+ * @param {number} end The end of the range.
+ * @param {number} step The value to increment or decrement by.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Array} Returns the range of numbers.
+ */
+function baseRange(start, end, step, fromRight) {
+  var index = -1,
+      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
+      result = Array(length);
+
+  while (length--) {
+    result[fromRight ? length : ++index] = start;
+    start += step;
+  }
+  return result;
+}
+
+module.exports = baseRange;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseReduce.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseReduce.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.reduce` and `_.reduceRight`, without support
+ * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {*} accumulator The initial value.
+ * @param {boolean} initAccum Specify using the first or last element of
+ *  `collection` as the initial value.
+ * @param {Function} eachFunc The function to iterate over `collection`.
+ * @returns {*} Returns the accumulated value.
+ */
+function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
+  eachFunc(collection, function(value, index, collection) {
+    accumulator = initAccum
+      ? (initAccum = false, value)
+      : iteratee(accumulator, value, index, collection);
+  });
+  return accumulator;
+}
+
+module.exports = baseReduce;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseRest.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_baseRest.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"),
+    overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"),
+    setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js");
+
+/**
+ * The base implementation of `_.rest` which doesn't validate or coerce arguments.
+ *
+ * @private
+ * @param {Function} func The function to apply a rest parameter to.
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
+ * @returns {Function} Returns the new function.
+ */
+function baseRest(func, start) {
+  return setToString(overRest(func, start, identity), func + '');
+}
+
+module.exports = baseRest;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseSet.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_baseSet.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"),
+    castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),
+    isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");
+
+/**
+ * The base implementation of `_.set`.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {Array|string} path The path of the property to set.
+ * @param {*} value The value to set.
+ * @param {Function} [customizer] The function to customize path creation.
+ * @returns {Object} Returns `object`.
+ */
+function baseSet(object, path, value, customizer) {
+  if (!isObject(object)) {
+    return object;
+  }
+  path = castPath(path, object);
+
+  var index = -1,
+      length = path.length,
+      lastIndex = length - 1,
+      nested = object;
+
+  while (nested != null && ++index < length) {
+    var key = toKey(path[index]),
+        newValue = value;
+
+    if (index != lastIndex) {
+      var objValue = nested[key];
+      newValue = customizer ? customizer(objValue, key, nested) : undefined;
+      if (newValue === undefined) {
+        newValue = isObject(objValue)
+          ? objValue
+          : (isIndex(path[index + 1]) ? [] : {});
+      }
+    }
+    assignValue(nested, key, newValue);
+    nested = nested[key];
+  }
+  return object;
+}
+
+module.exports = baseSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseSetToString.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_baseSetToString.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var constant = __webpack_require__(/*! ./constant */ "./node_modules/lodash/constant.js"),
+    defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"),
+    identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js");
+
+/**
+ * The base implementation of `setToString` without support for hot loop shorting.
+ *
+ * @private
+ * @param {Function} func The function to modify.
+ * @param {Function} string The `toString` result.
+ * @returns {Function} Returns `func`.
+ */
+var baseSetToString = !defineProperty ? identity : function(func, string) {
+  return defineProperty(func, 'toString', {
+    'configurable': true,
+    'enumerable': false,
+    'value': constant(string),
+    'writable': true
+  });
+};
+
+module.exports = baseSetToString;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseSortBy.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseSortBy.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.sortBy` which uses `comparer` to define the
+ * sort order of `array` and replaces criteria objects with their corresponding
+ * values.
+ *
+ * @private
+ * @param {Array} array The array to sort.
+ * @param {Function} comparer The function to define sort order.
+ * @returns {Array} Returns `array`.
+ */
+function baseSortBy(array, comparer) {
+  var length = array.length;
+
+  array.sort(comparer);
+  while (length--) {
+    array[length] = array[length].value;
+  }
+  return array;
+}
+
+module.exports = baseSortBy;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseTimes.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseTimes.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.times` without support for iteratee shorthands
+ * or max array length checks.
+ *
+ * @private
+ * @param {number} n The number of times to invoke `iteratee`.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the array of results.
+ */
+function baseTimes(n, iteratee) {
+  var index = -1,
+      result = Array(n);
+
+  while (++index < n) {
+    result[index] = iteratee(index);
+  }
+  return result;
+}
+
+module.exports = baseTimes;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseToString.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_baseToString.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"),
+    arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolToString = symbolProto ? symbolProto.toString : undefined;
+
+/**
+ * The base implementation of `_.toString` which doesn't convert nullish
+ * values to empty strings.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ */
+function baseToString(value) {
+  // Exit early for strings to avoid a performance hit in some environments.
+  if (typeof value == 'string') {
+    return value;
+  }
+  if (isArray(value)) {
+    // Recursively convert values (susceptible to call stack limits).
+    return arrayMap(value, baseToString) + '';
+  }
+  if (isSymbol(value)) {
+    return symbolToString ? symbolToString.call(value) : '';
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
+
+module.exports = baseToString;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseUnary.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_baseUnary.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * The base implementation of `_.unary` without support for storing metadata.
+ *
+ * @private
+ * @param {Function} func The function to cap arguments for.
+ * @returns {Function} Returns the new capped function.
+ */
+function baseUnary(func) {
+  return function(value) {
+    return func(value);
+  };
+}
+
+module.exports = baseUnary;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseUniq.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_baseUniq.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"),
+    arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/lodash/_arrayIncludes.js"),
+    arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/lodash/_arrayIncludesWith.js"),
+    cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"),
+    createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/lodash/_createSet.js"),
+    setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js");
+
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
+
+/**
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee] The iteratee invoked per element.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ */
+function baseUniq(array, iteratee, comparator) {
+  var index = -1,
+      includes = arrayIncludes,
+      length = array.length,
+      isCommon = true,
+      result = [],
+      seen = result;
+
+  if (comparator) {
+    isCommon = false;
+    includes = arrayIncludesWith;
+  }
+  else if (length >= LARGE_ARRAY_SIZE) {
+    var set = iteratee ? null : createSet(array);
+    if (set) {
+      return setToArray(set);
+    }
+    isCommon = false;
+    includes = cacheHas;
+    seen = new SetCache;
+  }
+  else {
+    seen = iteratee ? [] : result;
+  }
+  outer:
+  while (++index < length) {
+    var value = array[index],
+        computed = iteratee ? iteratee(value) : value;
+
+    value = (comparator || value !== 0) ? value : 0;
+    if (isCommon && computed === computed) {
+      var seenIndex = seen.length;
+      while (seenIndex--) {
+        if (seen[seenIndex] === computed) {
+          continue outer;
+        }
+      }
+      if (iteratee) {
+        seen.push(computed);
+      }
+      result.push(value);
+    }
+    else if (!includes(seen, computed, comparator)) {
+      if (seen !== result) {
+        seen.push(computed);
+      }
+      result.push(value);
+    }
+  }
+  return result;
+}
+
+module.exports = baseUniq;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseValues.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseValues.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js");
+
+/**
+ * The base implementation of `_.values` and `_.valuesIn` which creates an
+ * array of `object` property values corresponding to the property names
+ * of `props`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array} props The property names to get values for.
+ * @returns {Object} Returns the array of property values.
+ */
+function baseValues(object, props) {
+  return arrayMap(props, function(key) {
+    return object[key];
+  });
+}
+
+module.exports = baseValues;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseZipObject.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_baseZipObject.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
+ *
+ * @private
+ * @param {Array} props The property identifiers.
+ * @param {Array} values The property values.
+ * @param {Function} assignFunc The function to assign values.
+ * @returns {Object} Returns the new object.
+ */
+function baseZipObject(props, values, assignFunc) {
+  var index = -1,
+      length = props.length,
+      valsLength = values.length,
+      result = {};
+
+  while (++index < length) {
+    var value = index < valsLength ? values[index] : undefined;
+    assignFunc(result, props[index], value);
+  }
+  return result;
+}
+
+module.exports = baseZipObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_cacheHas.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_cacheHas.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if a `cache` value for `key` exists.
+ *
+ * @private
+ * @param {Object} cache The cache to query.
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function cacheHas(cache, key) {
+  return cache.has(key);
+}
+
+module.exports = cacheHas;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_castFunction.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_castFunction.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js");
+
+/**
+ * Casts `value` to `identity` if it's not a function.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {Function} Returns cast function.
+ */
+function castFunction(value) {
+  return typeof value == 'function' ? value : identity;
+}
+
+module.exports = castFunction;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_castPath.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_castPath.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"),
+    stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"),
+    toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js");
+
+/**
+ * Casts `value` to a path array if it's not one.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {Array} Returns the cast property path array.
+ */
+function castPath(value, object) {
+  if (isArray(value)) {
+    return value;
+  }
+  return isKey(value, object) ? [value] : stringToPath(toString(value));
+}
+
+module.exports = castPath;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_cloneArrayBuffer.js":
+/*!**************************************************!*\
+  !*** ./node_modules/lodash/_cloneArrayBuffer.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js");
+
+/**
+ * Creates a clone of `arrayBuffer`.
+ *
+ * @private
+ * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
+ */
+function cloneArrayBuffer(arrayBuffer) {
+  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
+  new Uint8Array(result).set(new Uint8Array(arrayBuffer));
+  return result;
+}
+
+module.exports = cloneArrayBuffer;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_cloneBuffer.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_cloneBuffer.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/** Detect free variable `exports`. */
+var freeExports =  true && exports && !exports.nodeType && exports;
+
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
+
+/** Built-in value references. */
+var Buffer = moduleExports ? root.Buffer : undefined,
+    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
+
+/**
+ * Creates a clone of  `buffer`.
+ *
+ * @private
+ * @param {Buffer} buffer The buffer to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Buffer} Returns the cloned buffer.
+ */
+function cloneBuffer(buffer, isDeep) {
+  if (isDeep) {
+    return buffer.slice();
+  }
+  var length = buffer.length,
+      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
+
+  buffer.copy(result);
+  return result;
+}
+
+module.exports = cloneBuffer;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_cloneDataView.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_cloneDataView.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js");
+
+/**
+ * Creates a clone of `dataView`.
+ *
+ * @private
+ * @param {Object} dataView The data view to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned data view.
+ */
+function cloneDataView(dataView, isDeep) {
+  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
+  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
+}
+
+module.exports = cloneDataView;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_cloneRegExp.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_cloneRegExp.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used to match `RegExp` flags from their coerced string values. */
+var reFlags = /\w*$/;
+
+/**
+ * Creates a clone of `regexp`.
+ *
+ * @private
+ * @param {Object} regexp The regexp to clone.
+ * @returns {Object} Returns the cloned regexp.
+ */
+function cloneRegExp(regexp) {
+  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
+  result.lastIndex = regexp.lastIndex;
+  return result;
+}
+
+module.exports = cloneRegExp;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_cloneSymbol.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_cloneSymbol.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js");
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
+
+/**
+ * Creates a clone of the `symbol` object.
+ *
+ * @private
+ * @param {Object} symbol The symbol object to clone.
+ * @returns {Object} Returns the cloned symbol object.
+ */
+function cloneSymbol(symbol) {
+  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
+}
+
+module.exports = cloneSymbol;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_cloneTypedArray.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_cloneTypedArray.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js");
+
+/**
+ * Creates a clone of `typedArray`.
+ *
+ * @private
+ * @param {Object} typedArray The typed array to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned typed array.
+ */
+function cloneTypedArray(typedArray, isDeep) {
+  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
+  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
+}
+
+module.exports = cloneTypedArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_compareAscending.js":
+/*!**************************************************!*\
+  !*** ./node_modules/lodash/_compareAscending.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");
+
+/**
+ * Compares values to sort them in ascending order.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {number} Returns the sort order indicator for `value`.
+ */
+function compareAscending(value, other) {
+  if (value !== other) {
+    var valIsDefined = value !== undefined,
+        valIsNull = value === null,
+        valIsReflexive = value === value,
+        valIsSymbol = isSymbol(value);
+
+    var othIsDefined = other !== undefined,
+        othIsNull = other === null,
+        othIsReflexive = other === other,
+        othIsSymbol = isSymbol(other);
+
+    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
+        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
+        (valIsNull && othIsDefined && othIsReflexive) ||
+        (!valIsDefined && othIsReflexive) ||
+        !valIsReflexive) {
+      return 1;
+    }
+    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
+        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
+        (othIsNull && valIsDefined && valIsReflexive) ||
+        (!othIsDefined && valIsReflexive) ||
+        !othIsReflexive) {
+      return -1;
+    }
+  }
+  return 0;
+}
+
+module.exports = compareAscending;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_compareMultiple.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_compareMultiple.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var compareAscending = __webpack_require__(/*! ./_compareAscending */ "./node_modules/lodash/_compareAscending.js");
+
+/**
+ * Used by `_.orderBy` to compare multiple properties of a value to another
+ * and stable sort them.
+ *
+ * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
+ * specify an order of "desc" for descending or "asc" for ascending sort order
+ * of corresponding values.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {boolean[]|string[]} orders The order to sort by for each property.
+ * @returns {number} Returns the sort order indicator for `object`.
+ */
+function compareMultiple(object, other, orders) {
+  var index = -1,
+      objCriteria = object.criteria,
+      othCriteria = other.criteria,
+      length = objCriteria.length,
+      ordersLength = orders.length;
+
+  while (++index < length) {
+    var result = compareAscending(objCriteria[index], othCriteria[index]);
+    if (result) {
+      if (index >= ordersLength) {
+        return result;
+      }
+      var order = orders[index];
+      return result * (order == 'desc' ? -1 : 1);
+    }
+  }
+  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
+  // that causes it, under certain circumstances, to provide the same value for
+  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
+  // for more details.
+  //
+  // This also ensures a stable sort in V8 and other engines.
+  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
+  return object.index - other.index;
+}
+
+module.exports = compareMultiple;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_copyArray.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_copyArray.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Copies the values of `source` to `array`.
+ *
+ * @private
+ * @param {Array} source The array to copy values from.
+ * @param {Array} [array=[]] The array to copy values to.
+ * @returns {Array} Returns `array`.
+ */
+function copyArray(source, array) {
+  var index = -1,
+      length = source.length;
+
+  array || (array = Array(length));
+  while (++index < length) {
+    array[index] = source[index];
+  }
+  return array;
+}
+
+module.exports = copyArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_copyObject.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_copyObject.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"),
+    baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js");
+
+/**
+ * Copies properties of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy properties from.
+ * @param {Array} props The property identifiers to copy.
+ * @param {Object} [object={}] The object to copy properties to.
+ * @param {Function} [customizer] The function to customize copied values.
+ * @returns {Object} Returns `object`.
+ */
+function copyObject(source, props, object, customizer) {
+  var isNew = !object;
+  object || (object = {});
+
+  var index = -1,
+      length = props.length;
+
+  while (++index < length) {
+    var key = props[index];
+
+    var newValue = customizer
+      ? customizer(object[key], source[key], key, object, source)
+      : undefined;
+
+    if (newValue === undefined) {
+      newValue = source[key];
+    }
+    if (isNew) {
+      baseAssignValue(object, key, newValue);
+    } else {
+      assignValue(object, key, newValue);
+    }
+  }
+  return object;
+}
+
+module.exports = copyObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_copySymbols.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_copySymbols.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),
+    getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js");
+
+/**
+ * Copies own symbols of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy symbols from.
+ * @param {Object} [object={}] The object to copy symbols to.
+ * @returns {Object} Returns `object`.
+ */
+function copySymbols(source, object) {
+  return copyObject(source, getSymbols(source), object);
+}
+
+module.exports = copySymbols;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_copySymbolsIn.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_copySymbolsIn.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),
+    getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js");
+
+/**
+ * Copies own and inherited symbols of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy symbols from.
+ * @param {Object} [object={}] The object to copy symbols to.
+ * @returns {Object} Returns `object`.
+ */
+function copySymbolsIn(source, object) {
+  return copyObject(source, getSymbolsIn(source), object);
+}
+
+module.exports = copySymbolsIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_coreJsData.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_coreJsData.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/** Used to detect overreaching core-js shims. */
+var coreJsData = root['__core-js_shared__'];
+
+module.exports = coreJsData;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_createAssigner.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_createAssigner.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"),
+    isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js");
+
+/**
+ * Creates a function like `_.assign`.
+ *
+ * @private
+ * @param {Function} assigner The function to assign values.
+ * @returns {Function} Returns the new assigner function.
+ */
+function createAssigner(assigner) {
+  return baseRest(function(object, sources) {
+    var index = -1,
+        length = sources.length,
+        customizer = length > 1 ? sources[length - 1] : undefined,
+        guard = length > 2 ? sources[2] : undefined;
+
+    customizer = (assigner.length > 3 && typeof customizer == 'function')
+      ? (length--, customizer)
+      : undefined;
+
+    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+      customizer = length < 3 ? undefined : customizer;
+      length = 1;
+    }
+    object = Object(object);
+    while (++index < length) {
+      var source = sources[index];
+      if (source) {
+        assigner(object, source, index, customizer);
+      }
+    }
+    return object;
+  });
+}
+
+module.exports = createAssigner;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_createBaseEach.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_createBaseEach.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js");
+
+/**
+ * Creates a `baseEach` or `baseEachRight` function.
+ *
+ * @private
+ * @param {Function} eachFunc The function to iterate over a collection.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new base function.
+ */
+function createBaseEach(eachFunc, fromRight) {
+  return function(collection, iteratee) {
+    if (collection == null) {
+      return collection;
+    }
+    if (!isArrayLike(collection)) {
+      return eachFunc(collection, iteratee);
+    }
+    var length = collection.length,
+        index = fromRight ? length : -1,
+        iterable = Object(collection);
+
+    while ((fromRight ? index-- : ++index < length)) {
+      if (iteratee(iterable[index], index, iterable) === false) {
+        break;
+      }
+    }
+    return collection;
+  };
+}
+
+module.exports = createBaseEach;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_createBaseFor.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_createBaseFor.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Creates a base function for methods like `_.forIn` and `_.forOwn`.
+ *
+ * @private
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new base function.
+ */
+function createBaseFor(fromRight) {
+  return function(object, iteratee, keysFunc) {
+    var index = -1,
+        iterable = Object(object),
+        props = keysFunc(object),
+        length = props.length;
+
+    while (length--) {
+      var key = props[fromRight ? length : ++index];
+      if (iteratee(iterable[key], key, iterable) === false) {
+        break;
+      }
+    }
+    return object;
+  };
+}
+
+module.exports = createBaseFor;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_createFind.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_createFind.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),
+    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");
+
+/**
+ * Creates a `_.find` or `_.findLast` function.
+ *
+ * @private
+ * @param {Function} findIndexFunc The function to find the collection index.
+ * @returns {Function} Returns the new find function.
+ */
+function createFind(findIndexFunc) {
+  return function(collection, predicate, fromIndex) {
+    var iterable = Object(collection);
+    if (!isArrayLike(collection)) {
+      var iteratee = baseIteratee(predicate, 3);
+      collection = keys(collection);
+      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
+    }
+    var index = findIndexFunc(collection, predicate, fromIndex);
+    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
+  };
+}
+
+module.exports = createFind;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_createRange.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_createRange.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseRange = __webpack_require__(/*! ./_baseRange */ "./node_modules/lodash/_baseRange.js"),
+    isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"),
+    toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js");
+
+/**
+ * Creates a `_.range` or `_.rangeRight` function.
+ *
+ * @private
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new range function.
+ */
+function createRange(fromRight) {
+  return function(start, end, step) {
+    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
+      end = step = undefined;
+    }
+    // Ensure the sign of `-0` is preserved.
+    start = toFinite(start);
+    if (end === undefined) {
+      end = start;
+      start = 0;
+    } else {
+      end = toFinite(end);
+    }
+    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
+    return baseRange(start, end, step, fromRight);
+  };
+}
+
+module.exports = createRange;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_createSet.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_createSet.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"),
+    noop = __webpack_require__(/*! ./noop */ "./node_modules/lodash/noop.js"),
+    setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js");
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
+
+/**
+ * Creates a set object of `values`.
+ *
+ * @private
+ * @param {Array} values The values to add to the set.
+ * @returns {Object} Returns the new set.
+ */
+var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
+  return new Set(values);
+};
+
+module.exports = createSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_defineProperty.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_defineProperty.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js");
+
+var defineProperty = (function() {
+  try {
+    var func = getNative(Object, 'defineProperty');
+    func({}, '', {});
+    return func;
+  } catch (e) {}
+}());
+
+module.exports = defineProperty;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_equalArrays.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_equalArrays.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"),
+    arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/lodash/_arraySome.js"),
+    cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js");
+
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
+
+/**
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Array} array The array to compare.
+ * @param {Array} other The other array to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
+ */
+function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
+  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
+      arrLength = array.length,
+      othLength = other.length;
+
+  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+    return false;
+  }
+  // Assume cyclic values are equal.
+  var stacked = stack.get(array);
+  if (stacked && stack.get(other)) {
+    return stacked == other;
+  }
+  var index = -1,
+      result = true,
+      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
+
+  stack.set(array, other);
+  stack.set(other, array);
+
+  // Ignore non-index properties.
+  while (++index < arrLength) {
+    var arrValue = array[index],
+        othValue = other[index];
+
+    if (customizer) {
+      var compared = isPartial
+        ? customizer(othValue, arrValue, index, other, array, stack)
+        : customizer(arrValue, othValue, index, array, other, stack);
+    }
+    if (compared !== undefined) {
+      if (compared) {
+        continue;
+      }
+      result = false;
+      break;
+    }
+    // Recursively compare arrays (susceptible to call stack limits).
+    if (seen) {
+      if (!arraySome(other, function(othValue, othIndex) {
+            if (!cacheHas(seen, othIndex) &&
+                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
+              return seen.push(othIndex);
+            }
+          })) {
+        result = false;
+        break;
+      }
+    } else if (!(
+          arrValue === othValue ||
+            equalFunc(arrValue, othValue, bitmask, customizer, stack)
+        )) {
+      result = false;
+      break;
+    }
+  }
+  stack['delete'](array);
+  stack['delete'](other);
+  return result;
+}
+
+module.exports = equalArrays;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_equalByTag.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_equalByTag.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"),
+    Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"),
+    eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"),
+    equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"),
+    mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/lodash/_mapToArray.js"),
+    setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js");
+
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
+
+/** `Object#toString` result references. */
+var boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    errorTag = '[object Error]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    symbolTag = '[object Symbol]';
+
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]';
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
+
+/**
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
+ * the same `toStringTag`.
+ *
+ * **Note:** This function only supports comparing values with tags of
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {string} tag The `toStringTag` of the objects to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
+  switch (tag) {
+    case dataViewTag:
+      if ((object.byteLength != other.byteLength) ||
+          (object.byteOffset != other.byteOffset)) {
+        return false;
+      }
+      object = object.buffer;
+      other = other.buffer;
+
+    case arrayBufferTag:
+      if ((object.byteLength != other.byteLength) ||
+          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
+        return false;
+      }
+      return true;
+
+    case boolTag:
+    case dateTag:
+    case numberTag:
+      // Coerce booleans to `1` or `0` and dates to milliseconds.
+      // Invalid dates are coerced to `NaN`.
+      return eq(+object, +other);
+
+    case errorTag:
+      return object.name == other.name && object.message == other.message;
+
+    case regexpTag:
+    case stringTag:
+      // Coerce regexes to strings and treat strings, primitives and objects,
+      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
+      // for more details.
+      return object == (other + '');
+
+    case mapTag:
+      var convert = mapToArray;
+
+    case setTag:
+      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
+      convert || (convert = setToArray);
+
+      if (object.size != other.size && !isPartial) {
+        return false;
+      }
+      // Assume cyclic values are equal.
+      var stacked = stack.get(object);
+      if (stacked) {
+        return stacked == other;
+      }
+      bitmask |= COMPARE_UNORDERED_FLAG;
+
+      // Recursively compare objects (susceptible to call stack limits).
+      stack.set(object, other);
+      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
+      stack['delete'](object);
+      return result;
+
+    case symbolTag:
+      if (symbolValueOf) {
+        return symbolValueOf.call(object) == symbolValueOf.call(other);
+      }
+  }
+  return false;
+}
+
+module.exports = equalByTag;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_equalObjects.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_equalObjects.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js");
+
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1;
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * A specialized version of `baseIsEqualDeep` for objects with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
+  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
+      objProps = getAllKeys(object),
+      objLength = objProps.length,
+      othProps = getAllKeys(other),
+      othLength = othProps.length;
+
+  if (objLength != othLength && !isPartial) {
+    return false;
+  }
+  var index = objLength;
+  while (index--) {
+    var key = objProps[index];
+    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+      return false;
+    }
+  }
+  // Assume cyclic values are equal.
+  var stacked = stack.get(object);
+  if (stacked && stack.get(other)) {
+    return stacked == other;
+  }
+  var result = true;
+  stack.set(object, other);
+  stack.set(other, object);
+
+  var skipCtor = isPartial;
+  while (++index < objLength) {
+    key = objProps[index];
+    var objValue = object[key],
+        othValue = other[key];
+
+    if (customizer) {
+      var compared = isPartial
+        ? customizer(othValue, objValue, key, other, object, stack)
+        : customizer(objValue, othValue, key, object, other, stack);
+    }
+    // Recursively compare objects (susceptible to call stack limits).
+    if (!(compared === undefined
+          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
+          : compared
+        )) {
+      result = false;
+      break;
+    }
+    skipCtor || (skipCtor = key == 'constructor');
+  }
+  if (result && !skipCtor) {
+    var objCtor = object.constructor,
+        othCtor = other.constructor;
+
+    // Non `Object` object instances with different constructors are not equal.
+    if (objCtor != othCtor &&
+        ('constructor' in object && 'constructor' in other) &&
+        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
+          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
+      result = false;
+    }
+  }
+  stack['delete'](object);
+  stack['delete'](other);
+  return result;
+}
+
+module.exports = equalObjects;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_flatRest.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_flatRest.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var flatten = __webpack_require__(/*! ./flatten */ "./node_modules/lodash/flatten.js"),
+    overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"),
+    setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js");
+
+/**
+ * A specialized version of `baseRest` which flattens the rest array.
+ *
+ * @private
+ * @param {Function} func The function to apply a rest parameter to.
+ * @returns {Function} Returns the new function.
+ */
+function flatRest(func) {
+  return setToString(overRest(func, undefined, flatten), func + '');
+}
+
+module.exports = flatRest;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_freeGlobal.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_freeGlobal.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+module.exports = freeGlobal;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getAllKeys.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_getAllKeys.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"),
+    getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"),
+    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");
+
+/**
+ * Creates an array of own enumerable property names and symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names and symbols.
+ */
+function getAllKeys(object) {
+  return baseGetAllKeys(object, keys, getSymbols);
+}
+
+module.exports = getAllKeys;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getAllKeysIn.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_getAllKeysIn.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"),
+    getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"),
+    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js");
+
+/**
+ * Creates an array of own and inherited enumerable property names and
+ * symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names and symbols.
+ */
+function getAllKeysIn(object) {
+  return baseGetAllKeys(object, keysIn, getSymbolsIn);
+}
+
+module.exports = getAllKeysIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getMapData.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_getMapData.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/lodash/_isKeyable.js");
+
+/**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+function getMapData(map, key) {
+  var data = map.__data__;
+  return isKeyable(key)
+    ? data[typeof key == 'string' ? 'string' : 'hash']
+    : data.map;
+}
+
+module.exports = getMapData;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getMatchData.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_getMatchData.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"),
+    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");
+
+/**
+ * Gets the property names, values, and compare flags of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the match data of `object`.
+ */
+function getMatchData(object) {
+  var result = keys(object),
+      length = result.length;
+
+  while (length--) {
+    var key = result[length],
+        value = object[key];
+
+    result[length] = [key, value, isStrictComparable(value)];
+  }
+  return result;
+}
+
+module.exports = getMatchData;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getNative.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_getNative.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"),
+    getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js");
+
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+  var value = getValue(object, key);
+  return baseIsNative(value) ? value : undefined;
+}
+
+module.exports = getNative;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getPrototype.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_getPrototype.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");
+
+/** Built-in value references. */
+var getPrototype = overArg(Object.getPrototypeOf, Object);
+
+module.exports = getPrototype;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getRawTag.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_getRawTag.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var nativeObjectToString = objectProto.toString;
+
+/** Built-in value references. */
+var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
+
+/**
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the raw `toStringTag`.
+ */
+function getRawTag(value) {
+  var isOwn = hasOwnProperty.call(value, symToStringTag),
+      tag = value[symToStringTag];
+
+  try {
+    value[symToStringTag] = undefined;
+    var unmasked = true;
+  } catch (e) {}
+
+  var result = nativeObjectToString.call(value);
+  if (unmasked) {
+    if (isOwn) {
+      value[symToStringTag] = tag;
+    } else {
+      delete value[symToStringTag];
+    }
+  }
+  return result;
+}
+
+module.exports = getRawTag;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getSymbols.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_getSymbols.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"),
+    stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Built-in value references. */
+var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeGetSymbols = Object.getOwnPropertySymbols;
+
+/**
+ * Creates an array of the own enumerable symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of symbols.
+ */
+var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
+  if (object == null) {
+    return [];
+  }
+  object = Object(object);
+  return arrayFilter(nativeGetSymbols(object), function(symbol) {
+    return propertyIsEnumerable.call(object, symbol);
+  });
+};
+
+module.exports = getSymbols;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getSymbolsIn.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_getSymbolsIn.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"),
+    getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),
+    getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"),
+    stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js");
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeGetSymbols = Object.getOwnPropertySymbols;
+
+/**
+ * Creates an array of the own and inherited enumerable symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of symbols.
+ */
+var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
+  var result = [];
+  while (object) {
+    arrayPush(result, getSymbols(object));
+    object = getPrototype(object);
+  }
+  return result;
+};
+
+module.exports = getSymbolsIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getTag.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/_getTag.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/lodash/_DataView.js"),
+    Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"),
+    Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/lodash/_Promise.js"),
+    Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"),
+    WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/lodash/_WeakMap.js"),
+    baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),
+    toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js");
+
+/** `Object#toString` result references. */
+var mapTag = '[object Map]',
+    objectTag = '[object Object]',
+    promiseTag = '[object Promise]',
+    setTag = '[object Set]',
+    weakMapTag = '[object WeakMap]';
+
+var dataViewTag = '[object DataView]';
+
+/** Used to detect maps, sets, and weakmaps. */
+var dataViewCtorString = toSource(DataView),
+    mapCtorString = toSource(Map),
+    promiseCtorString = toSource(Promise),
+    setCtorString = toSource(Set),
+    weakMapCtorString = toSource(WeakMap);
+
+/**
+ * Gets the `toStringTag` of `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+var getTag = baseGetTag;
+
+// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
+if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
+    (Map && getTag(new Map) != mapTag) ||
+    (Promise && getTag(Promise.resolve()) != promiseTag) ||
+    (Set && getTag(new Set) != setTag) ||
+    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
+  getTag = function(value) {
+    var result = baseGetTag(value),
+        Ctor = result == objectTag ? value.constructor : undefined,
+        ctorString = Ctor ? toSource(Ctor) : '';
+
+    if (ctorString) {
+      switch (ctorString) {
+        case dataViewCtorString: return dataViewTag;
+        case mapCtorString: return mapTag;
+        case promiseCtorString: return promiseTag;
+        case setCtorString: return setTag;
+        case weakMapCtorString: return weakMapTag;
+      }
+    }
+    return result;
+  };
+}
+
+module.exports = getTag;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getValue.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_getValue.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function getValue(object, key) {
+  return object == null ? undefined : object[key];
+}
+
+module.exports = getValue;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_hasPath.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_hasPath.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),
+    isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),
+    isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"),
+    toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");
+
+/**
+ * Checks if `path` exists on `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @param {Function} hasFunc The function to check properties.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ */
+function hasPath(object, path, hasFunc) {
+  path = castPath(path, object);
+
+  var index = -1,
+      length = path.length,
+      result = false;
+
+  while (++index < length) {
+    var key = toKey(path[index]);
+    if (!(result = object != null && hasFunc(object, key))) {
+      break;
+    }
+    object = object[key];
+  }
+  if (result || ++index != length) {
+    return result;
+  }
+  length = object == null ? 0 : object.length;
+  return !!length && isLength(length) && isIndex(key, length) &&
+    (isArray(object) || isArguments(object));
+}
+
+module.exports = hasPath;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_hasUnicode.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_hasUnicode.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used to compose unicode character classes. */
+var rsAstralRange = '\\ud800-\\udfff',
+    rsComboMarksRange = '\\u0300-\\u036f',
+    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+    rsComboSymbolsRange = '\\u20d0-\\u20ff',
+    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
+    rsVarRange = '\\ufe0e\\ufe0f';
+
+/** Used to compose unicode capture groups. */
+var rsZWJ = '\\u200d';
+
+/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
+var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
+
+/**
+ * Checks if `string` contains Unicode symbols.
+ *
+ * @private
+ * @param {string} string The string to inspect.
+ * @returns {boolean} Returns `true` if a symbol is found, else `false`.
+ */
+function hasUnicode(string) {
+  return reHasUnicode.test(string);
+}
+
+module.exports = hasUnicode;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_hashClear.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_hashClear.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");
+
+/**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+function hashClear() {
+  this.__data__ = nativeCreate ? nativeCreate(null) : {};
+  this.size = 0;
+}
+
+module.exports = hashClear;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_hashDelete.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_hashDelete.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function hashDelete(key) {
+  var result = this.has(key) && delete this.__data__[key];
+  this.size -= result ? 1 : 0;
+  return result;
+}
+
+module.exports = hashDelete;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_hashGet.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_hashGet.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Gets the hash value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function hashGet(key) {
+  var data = this.__data__;
+  if (nativeCreate) {
+    var result = data[key];
+    return result === HASH_UNDEFINED ? undefined : result;
+  }
+  return hasOwnProperty.call(data, key) ? data[key] : undefined;
+}
+
+module.exports = hashGet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_hashHas.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_hashHas.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function hashHas(key) {
+  var data = this.__data__;
+  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
+}
+
+module.exports = hashHas;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_hashSet.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_hashSet.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+function hashSet(key, value) {
+  var data = this.__data__;
+  this.size += this.has(key) ? 0 : 1;
+  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
+  return this;
+}
+
+module.exports = hashSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_initCloneArray.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_initCloneArray.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Initializes an array clone.
+ *
+ * @private
+ * @param {Array} array The array to clone.
+ * @returns {Array} Returns the initialized clone.
+ */
+function initCloneArray(array) {
+  var length = array.length,
+      result = new array.constructor(length);
+
+  // Add properties assigned by `RegExp#exec`.
+  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
+    result.index = array.index;
+    result.input = array.input;
+  }
+  return result;
+}
+
+module.exports = initCloneArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_initCloneByTag.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_initCloneByTag.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"),
+    cloneDataView = __webpack_require__(/*! ./_cloneDataView */ "./node_modules/lodash/_cloneDataView.js"),
+    cloneRegExp = __webpack_require__(/*! ./_cloneRegExp */ "./node_modules/lodash/_cloneRegExp.js"),
+    cloneSymbol = __webpack_require__(/*! ./_cloneSymbol */ "./node_modules/lodash/_cloneSymbol.js"),
+    cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js");
+
+/** `Object#toString` result references. */
+var boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    symbolTag = '[object Symbol]';
+
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]',
+    float32Tag = '[object Float32Array]',
+    float64Tag = '[object Float64Array]',
+    int8Tag = '[object Int8Array]',
+    int16Tag = '[object Int16Array]',
+    int32Tag = '[object Int32Array]',
+    uint8Tag = '[object Uint8Array]',
+    uint8ClampedTag = '[object Uint8ClampedArray]',
+    uint16Tag = '[object Uint16Array]',
+    uint32Tag = '[object Uint32Array]';
+
+/**
+ * Initializes an object clone based on its `toStringTag`.
+ *
+ * **Note:** This function only supports cloning values with tags of
+ * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
+ *
+ * @private
+ * @param {Object} object The object to clone.
+ * @param {string} tag The `toStringTag` of the object to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the initialized clone.
+ */
+function initCloneByTag(object, tag, isDeep) {
+  var Ctor = object.constructor;
+  switch (tag) {
+    case arrayBufferTag:
+      return cloneArrayBuffer(object);
+
+    case boolTag:
+    case dateTag:
+      return new Ctor(+object);
+
+    case dataViewTag:
+      return cloneDataView(object, isDeep);
+
+    case float32Tag: case float64Tag:
+    case int8Tag: case int16Tag: case int32Tag:
+    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
+      return cloneTypedArray(object, isDeep);
+
+    case mapTag:
+      return new Ctor;
+
+    case numberTag:
+    case stringTag:
+      return new Ctor(object);
+
+    case regexpTag:
+      return cloneRegExp(object);
+
+    case setTag:
+      return new Ctor;
+
+    case symbolTag:
+      return cloneSymbol(object);
+  }
+}
+
+module.exports = initCloneByTag;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_initCloneObject.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_initCloneObject.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"),
+    getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),
+    isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js");
+
+/**
+ * Initializes an object clone.
+ *
+ * @private
+ * @param {Object} object The object to clone.
+ * @returns {Object} Returns the initialized clone.
+ */
+function initCloneObject(object) {
+  return (typeof object.constructor == 'function' && !isPrototype(object))
+    ? baseCreate(getPrototype(object))
+    : {};
+}
+
+module.exports = initCloneObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isFlattenable.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_isFlattenable.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"),
+    isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");
+
+/** Built-in value references. */
+var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
+
+/**
+ * Checks if `value` is a flattenable `arguments` object or array.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
+ */
+function isFlattenable(value) {
+  return isArray(value) || isArguments(value) ||
+    !!(spreadableSymbol && value && value[spreadableSymbol]);
+}
+
+module.exports = isFlattenable;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isIndex.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_isIndex.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used as references for various `Number` constants. */
+var MAX_SAFE_INTEGER = 9007199254740991;
+
+/** Used to detect unsigned integer values. */
+var reIsUint = /^(?:0|[1-9]\d*)$/;
+
+/**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+function isIndex(value, length) {
+  var type = typeof value;
+  length = length == null ? MAX_SAFE_INTEGER : length;
+
+  return !!length &&
+    (type == 'number' ||
+      (type != 'symbol' && reIsUint.test(value))) &&
+        (value > -1 && value % 1 == 0 && value < length);
+}
+
+module.exports = isIndex;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isIterateeCall.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_isIterateeCall.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"),
+    isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),
+    isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");
+
+/**
+ * Checks if the given arguments are from an iteratee call.
+ *
+ * @private
+ * @param {*} value The potential iteratee value argument.
+ * @param {*} index The potential iteratee index or key argument.
+ * @param {*} object The potential iteratee object argument.
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
+ *  else `false`.
+ */
+function isIterateeCall(value, index, object) {
+  if (!isObject(object)) {
+    return false;
+  }
+  var type = typeof index;
+  if (type == 'number'
+        ? (isArrayLike(object) && isIndex(index, object.length))
+        : (type == 'string' && index in object)
+      ) {
+    return eq(object[index], value);
+  }
+  return false;
+}
+
+module.exports = isIterateeCall;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isKey.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/_isKey.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");
+
+/** Used to match property names within property paths. */
+var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+    reIsPlainProp = /^\w*$/;
+
+/**
+ * Checks if `value` is a property name and not a property path.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+ */
+function isKey(value, object) {
+  if (isArray(value)) {
+    return false;
+  }
+  var type = typeof value;
+  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
+      value == null || isSymbol(value)) {
+    return true;
+  }
+  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
+    (object != null && value in Object(object));
+}
+
+module.exports = isKey;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isKeyable.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_isKeyable.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+function isKeyable(value) {
+  var type = typeof value;
+  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
+    ? (value !== '__proto__')
+    : (value === null);
+}
+
+module.exports = isKeyable;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isMasked.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_isMasked.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/lodash/_coreJsData.js");
+
+/** Used to detect methods masquerading as native. */
+var maskSrcKey = (function() {
+  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+  return uid ? ('Symbol(src)_1.' + uid) : '';
+}());
+
+/**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+function isMasked(func) {
+  return !!maskSrcKey && (maskSrcKey in func);
+}
+
+module.exports = isMasked;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isPrototype.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_isPrototype.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/**
+ * Checks if `value` is likely a prototype object.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+ */
+function isPrototype(value) {
+  var Ctor = value && value.constructor,
+      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
+
+  return value === proto;
+}
+
+module.exports = isPrototype;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_isStrictComparable.js":
+/*!****************************************************!*\
+  !*** ./node_modules/lodash/_isStrictComparable.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");
+
+/**
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
+ *  equality comparisons, else `false`.
+ */
+function isStrictComparable(value) {
+  return value === value && !isObject(value);
+}
+
+module.exports = isStrictComparable;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_listCacheClear.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_listCacheClear.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+function listCacheClear() {
+  this.__data__ = [];
+  this.size = 0;
+}
+
+module.exports = listCacheClear;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_listCacheDelete.js":
+/*!*************************************************!*\
+  !*** ./node_modules/lodash/_listCacheDelete.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");
+
+/** Used for built-in method references. */
+var arrayProto = Array.prototype;
+
+/** Built-in value references. */
+var splice = arrayProto.splice;
+
+/**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function listCacheDelete(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    return false;
+  }
+  var lastIndex = data.length - 1;
+  if (index == lastIndex) {
+    data.pop();
+  } else {
+    splice.call(data, index, 1);
+  }
+  --this.size;
+  return true;
+}
+
+module.exports = listCacheDelete;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_listCacheGet.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_listCacheGet.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");
+
+/**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function listCacheGet(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  return index < 0 ? undefined : data[index][1];
+}
+
+module.exports = listCacheGet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_listCacheHas.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_listCacheHas.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");
+
+/**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function listCacheHas(key) {
+  return assocIndexOf(this.__data__, key) > -1;
+}
+
+module.exports = listCacheHas;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_listCacheSet.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_listCacheSet.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");
+
+/**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+function listCacheSet(key, value) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    ++this.size;
+    data.push([key, value]);
+  } else {
+    data[index][1] = value;
+  }
+  return this;
+}
+
+module.exports = listCacheSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_mapCacheClear.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_mapCacheClear.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/lodash/_Hash.js"),
+    ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),
+    Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js");
+
+/**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+function mapCacheClear() {
+  this.size = 0;
+  this.__data__ = {
+    'hash': new Hash,
+    'map': new (Map || ListCache),
+    'string': new Hash
+  };
+}
+
+module.exports = mapCacheClear;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_mapCacheDelete.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_mapCacheDelete.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");
+
+/**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function mapCacheDelete(key) {
+  var result = getMapData(this, key)['delete'](key);
+  this.size -= result ? 1 : 0;
+  return result;
+}
+
+module.exports = mapCacheDelete;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_mapCacheGet.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_mapCacheGet.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");
+
+/**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function mapCacheGet(key) {
+  return getMapData(this, key).get(key);
+}
+
+module.exports = mapCacheGet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_mapCacheHas.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_mapCacheHas.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");
+
+/**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function mapCacheHas(key) {
+  return getMapData(this, key).has(key);
+}
+
+module.exports = mapCacheHas;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_mapCacheSet.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_mapCacheSet.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");
+
+/**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+function mapCacheSet(key, value) {
+  var data = getMapData(this, key),
+      size = data.size;
+
+  data.set(key, value);
+  this.size += data.size == size ? 0 : 1;
+  return this;
+}
+
+module.exports = mapCacheSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_mapToArray.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_mapToArray.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Converts `map` to its key-value pairs.
+ *
+ * @private
+ * @param {Object} map The map to convert.
+ * @returns {Array} Returns the key-value pairs.
+ */
+function mapToArray(map) {
+  var index = -1,
+      result = Array(map.size);
+
+  map.forEach(function(value, key) {
+    result[++index] = [key, value];
+  });
+  return result;
+}
+
+module.exports = mapToArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_matchesStrictComparable.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/lodash/_matchesStrictComparable.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A specialized version of `matchesProperty` for source values suitable
+ * for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+function matchesStrictComparable(key, srcValue) {
+  return function(object) {
+    if (object == null) {
+      return false;
+    }
+    return object[key] === srcValue &&
+      (srcValue !== undefined || (key in Object(object)));
+  };
+}
+
+module.exports = matchesStrictComparable;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_memoizeCapped.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_memoizeCapped.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js");
+
+/** Used as the maximum memoize cache size. */
+var MAX_MEMOIZE_SIZE = 500;
+
+/**
+ * A specialized version of `_.memoize` which clears the memoized function's
+ * cache when it exceeds `MAX_MEMOIZE_SIZE`.
+ *
+ * @private
+ * @param {Function} func The function to have its output memoized.
+ * @returns {Function} Returns the new memoized function.
+ */
+function memoizeCapped(func) {
+  var result = memoize(func, function(key) {
+    if (cache.size === MAX_MEMOIZE_SIZE) {
+      cache.clear();
+    }
+    return key;
+  });
+
+  var cache = result.cache;
+  return result;
+}
+
+module.exports = memoizeCapped;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_nativeCreate.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_nativeCreate.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js");
+
+/* Built-in method references that are verified to be native. */
+var nativeCreate = getNative(Object, 'create');
+
+module.exports = nativeCreate;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_nativeKeys.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_nativeKeys.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeKeys = overArg(Object.keys, Object);
+
+module.exports = nativeKeys;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_nativeKeysIn.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_nativeKeysIn.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * This function is like
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * except that it includes inherited enumerable properties.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function nativeKeysIn(object) {
+  var result = [];
+  if (object != null) {
+    for (var key in Object(object)) {
+      result.push(key);
+    }
+  }
+  return result;
+}
+
+module.exports = nativeKeysIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_nodeUtil.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_nodeUtil.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js");
+
+/** Detect free variable `exports`. */
+var freeExports =  true && exports && !exports.nodeType && exports;
+
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
+
+/** Detect free variable `process` from Node.js. */
+var freeProcess = moduleExports && freeGlobal.process;
+
+/** Used to access faster Node.js helpers. */
+var nodeUtil = (function() {
+  try {
+    // Use `util.types` for Node.js 10+.
+    var types = freeModule && freeModule.require && freeModule.require('util').types;
+
+    if (types) {
+      return types;
+    }
+
+    // Legacy `process.binding('util')` for Node.js < 10.
+    return freeProcess && freeProcess.binding && freeProcess.binding('util');
+  } catch (e) {}
+}());
+
+module.exports = nodeUtil;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_objectToString.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_objectToString.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var nativeObjectToString = objectProto.toString;
+
+/**
+ * Converts `value` to a string using `Object.prototype.toString`.
+ *
+ * @private
+ * @param {*} value The value to convert.
+ * @returns {string} Returns the converted string.
+ */
+function objectToString(value) {
+  return nativeObjectToString.call(value);
+}
+
+module.exports = objectToString;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_overArg.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_overArg.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+function overArg(func, transform) {
+  return function(arg) {
+    return func(transform(arg));
+  };
+}
+
+module.exports = overArg;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_overRest.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_overRest.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var apply = __webpack_require__(/*! ./_apply */ "./node_modules/lodash/_apply.js");
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMax = Math.max;
+
+/**
+ * A specialized version of `baseRest` which transforms the rest array.
+ *
+ * @private
+ * @param {Function} func The function to apply a rest parameter to.
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
+ * @param {Function} transform The rest array transform.
+ * @returns {Function} Returns the new function.
+ */
+function overRest(func, start, transform) {
+  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
+  return function() {
+    var args = arguments,
+        index = -1,
+        length = nativeMax(args.length - start, 0),
+        array = Array(length);
+
+    while (++index < length) {
+      array[index] = args[start + index];
+    }
+    index = -1;
+    var otherArgs = Array(start + 1);
+    while (++index < start) {
+      otherArgs[index] = args[index];
+    }
+    otherArgs[start] = transform(array);
+    return apply(func, this, otherArgs);
+  };
+}
+
+module.exports = overRest;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_root.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/_root.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js");
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || Function('return this')();
+
+module.exports = root;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_safeGet.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/_safeGet.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function safeGet(object, key) {
+  if (key === 'constructor' && typeof object[key] === 'function') {
+    return;
+  }
+
+  if (key == '__proto__') {
+    return;
+  }
+
+  return object[key];
+}
+
+module.exports = safeGet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_setCacheAdd.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_setCacheAdd.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/**
+ * Adds `value` to the array cache.
+ *
+ * @private
+ * @name add
+ * @memberOf SetCache
+ * @alias push
+ * @param {*} value The value to cache.
+ * @returns {Object} Returns the cache instance.
+ */
+function setCacheAdd(value) {
+  this.__data__.set(value, HASH_UNDEFINED);
+  return this;
+}
+
+module.exports = setCacheAdd;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_setCacheHas.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_setCacheHas.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if `value` is in the array cache.
+ *
+ * @private
+ * @name has
+ * @memberOf SetCache
+ * @param {*} value The value to search for.
+ * @returns {number} Returns `true` if `value` is found, else `false`.
+ */
+function setCacheHas(value) {
+  return this.__data__.has(value);
+}
+
+module.exports = setCacheHas;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_setToArray.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_setToArray.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Converts `set` to an array of its values.
+ *
+ * @private
+ * @param {Object} set The set to convert.
+ * @returns {Array} Returns the values.
+ */
+function setToArray(set) {
+  var index = -1,
+      result = Array(set.size);
+
+  set.forEach(function(value) {
+    result[++index] = value;
+  });
+  return result;
+}
+
+module.exports = setToArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_setToString.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_setToString.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseSetToString = __webpack_require__(/*! ./_baseSetToString */ "./node_modules/lodash/_baseSetToString.js"),
+    shortOut = __webpack_require__(/*! ./_shortOut */ "./node_modules/lodash/_shortOut.js");
+
+/**
+ * Sets the `toString` method of `func` to return `string`.
+ *
+ * @private
+ * @param {Function} func The function to modify.
+ * @param {Function} string The `toString` result.
+ * @returns {Function} Returns `func`.
+ */
+var setToString = shortOut(baseSetToString);
+
+module.exports = setToString;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_shortOut.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_shortOut.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used to detect hot functions by number of calls within a span of milliseconds. */
+var HOT_COUNT = 800,
+    HOT_SPAN = 16;
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeNow = Date.now;
+
+/**
+ * Creates a function that'll short out and invoke `identity` instead
+ * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
+ * milliseconds.
+ *
+ * @private
+ * @param {Function} func The function to restrict.
+ * @returns {Function} Returns the new shortable function.
+ */
+function shortOut(func) {
+  var count = 0,
+      lastCalled = 0;
+
+  return function() {
+    var stamp = nativeNow(),
+        remaining = HOT_SPAN - (stamp - lastCalled);
+
+    lastCalled = stamp;
+    if (remaining > 0) {
+      if (++count >= HOT_COUNT) {
+        return arguments[0];
+      }
+    } else {
+      count = 0;
+    }
+    return func.apply(undefined, arguments);
+  };
+}
+
+module.exports = shortOut;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_stackClear.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_stackClear.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js");
+
+/**
+ * Removes all key-value entries from the stack.
+ *
+ * @private
+ * @name clear
+ * @memberOf Stack
+ */
+function stackClear() {
+  this.__data__ = new ListCache;
+  this.size = 0;
+}
+
+module.exports = stackClear;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_stackDelete.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_stackDelete.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Removes `key` and its value from the stack.
+ *
+ * @private
+ * @name delete
+ * @memberOf Stack
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function stackDelete(key) {
+  var data = this.__data__,
+      result = data['delete'](key);
+
+  this.size = data.size;
+  return result;
+}
+
+module.exports = stackDelete;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_stackGet.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_stackGet.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Gets the stack value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Stack
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function stackGet(key) {
+  return this.__data__.get(key);
+}
+
+module.exports = stackGet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_stackHas.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_stackHas.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if a stack value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Stack
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function stackHas(key) {
+  return this.__data__.has(key);
+}
+
+module.exports = stackHas;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_stackSet.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_stackSet.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),
+    Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"),
+    MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js");
+
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
+
+/**
+ * Sets the stack `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Stack
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the stack cache instance.
+ */
+function stackSet(key, value) {
+  var data = this.__data__;
+  if (data instanceof ListCache) {
+    var pairs = data.__data__;
+    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
+      pairs.push([key, value]);
+      this.size = ++data.size;
+      return this;
+    }
+    data = this.__data__ = new MapCache(pairs);
+  }
+  data.set(key, value);
+  this.size = data.size;
+  return this;
+}
+
+module.exports = stackSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_strictIndexOf.js":
+/*!***********************************************!*\
+  !*** ./node_modules/lodash/_strictIndexOf.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * A specialized version of `_.indexOf` which performs strict equality
+ * comparisons of values, i.e. `===`.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function strictIndexOf(array, value, fromIndex) {
+  var index = fromIndex - 1,
+      length = array.length;
+
+  while (++index < length) {
+    if (array[index] === value) {
+      return index;
+    }
+  }
+  return -1;
+}
+
+module.exports = strictIndexOf;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_stringSize.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_stringSize.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var asciiSize = __webpack_require__(/*! ./_asciiSize */ "./node_modules/lodash/_asciiSize.js"),
+    hasUnicode = __webpack_require__(/*! ./_hasUnicode */ "./node_modules/lodash/_hasUnicode.js"),
+    unicodeSize = __webpack_require__(/*! ./_unicodeSize */ "./node_modules/lodash/_unicodeSize.js");
+
+/**
+ * Gets the number of symbols in `string`.
+ *
+ * @private
+ * @param {string} string The string to inspect.
+ * @returns {number} Returns the string size.
+ */
+function stringSize(string) {
+  return hasUnicode(string)
+    ? unicodeSize(string)
+    : asciiSize(string);
+}
+
+module.exports = stringSize;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_stringToPath.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/_stringToPath.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/lodash/_memoizeCapped.js");
+
+/** Used to match property names within property paths. */
+var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+
+/** Used to match backslashes in property paths. */
+var reEscapeChar = /\\(\\)?/g;
+
+/**
+ * Converts `string` to a property path array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the property path array.
+ */
+var stringToPath = memoizeCapped(function(string) {
+  var result = [];
+  if (string.charCodeAt(0) === 46 /* . */) {
+    result.push('');
+  }
+  string.replace(rePropName, function(match, number, quote, subString) {
+    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
+  });
+  return result;
+});
+
+module.exports = stringToPath;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_toKey.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/_toKey.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
+
+/**
+ * Converts `value` to a string key if it's not a string or symbol.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {string|symbol} Returns the key.
+ */
+function toKey(value) {
+  if (typeof value == 'string' || isSymbol(value)) {
+    return value;
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
+
+module.exports = toKey;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_toSource.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/_toSource.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used for built-in method references. */
+var funcProto = Function.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to convert.
+ * @returns {string} Returns the source code.
+ */
+function toSource(func) {
+  if (func != null) {
+    try {
+      return funcToString.call(func);
+    } catch (e) {}
+    try {
+      return (func + '');
+    } catch (e) {}
+  }
+  return '';
+}
+
+module.exports = toSource;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_unicodeSize.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/_unicodeSize.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used to compose unicode character classes. */
+var rsAstralRange = '\\ud800-\\udfff',
+    rsComboMarksRange = '\\u0300-\\u036f',
+    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+    rsComboSymbolsRange = '\\u20d0-\\u20ff',
+    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
+    rsVarRange = '\\ufe0e\\ufe0f';
+
+/** Used to compose unicode capture groups. */
+var rsAstral = '[' + rsAstralRange + ']',
+    rsCombo = '[' + rsComboRange + ']',
+    rsFitz = '\\ud83c[\\udffb-\\udfff]',
+    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
+    rsNonAstral = '[^' + rsAstralRange + ']',
+    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
+    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
+    rsZWJ = '\\u200d';
+
+/** Used to compose unicode regexes. */
+var reOptMod = rsModifier + '?',
+    rsOptVar = '[' + rsVarRange + ']?',
+    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
+    rsSeq = rsOptVar + reOptMod + rsOptJoin,
+    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
+
+/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
+var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
+
+/**
+ * Gets the size of a Unicode `string`.
+ *
+ * @private
+ * @param {string} string The string inspect.
+ * @returns {number} Returns the string size.
+ */
+function unicodeSize(string) {
+  var result = reUnicode.lastIndex = 0;
+  while (reUnicode.test(string)) {
+    ++result;
+  }
+  return result;
+}
+
+module.exports = unicodeSize;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/clone.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/clone.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js");
+
+/** Used to compose bitmasks for cloning. */
+var CLONE_SYMBOLS_FLAG = 4;
+
+/**
+ * Creates a shallow clone of `value`.
+ *
+ * **Note:** This method is loosely based on the
+ * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
+ * and supports cloning arrays, array buffers, booleans, date objects, maps,
+ * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
+ * arrays. The own enumerable properties of `arguments` objects are cloned
+ * as plain objects. An empty object is returned for uncloneable values such
+ * as error objects, functions, DOM nodes, and WeakMaps.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to clone.
+ * @returns {*} Returns the cloned value.
+ * @see _.cloneDeep
+ * @example
+ *
+ * var objects = [{ 'a': 1 }, { 'b': 2 }];
+ *
+ * var shallow = _.clone(objects);
+ * console.log(shallow[0] === objects[0]);
+ * // => true
+ */
+function clone(value) {
+  return baseClone(value, CLONE_SYMBOLS_FLAG);
+}
+
+module.exports = clone;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/cloneDeep.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/cloneDeep.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js");
+
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+    CLONE_SYMBOLS_FLAG = 4;
+
+/**
+ * This method is like `_.clone` except that it recursively clones `value`.
+ *
+ * @static
+ * @memberOf _
+ * @since 1.0.0
+ * @category Lang
+ * @param {*} value The value to recursively clone.
+ * @returns {*} Returns the deep cloned value.
+ * @see _.clone
+ * @example
+ *
+ * var objects = [{ 'a': 1 }, { 'b': 2 }];
+ *
+ * var deep = _.cloneDeep(objects);
+ * console.log(deep[0] === objects[0]);
+ * // => false
+ */
+function cloneDeep(value) {
+  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
+}
+
+module.exports = cloneDeep;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/constant.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/constant.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Creates a function that returns `value`.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Util
+ * @param {*} value The value to return from the new function.
+ * @returns {Function} Returns the new constant function.
+ * @example
+ *
+ * var objects = _.times(2, _.constant({ 'a': 1 }));
+ *
+ * console.log(objects);
+ * // => [{ 'a': 1 }, { 'a': 1 }]
+ *
+ * console.log(objects[0] === objects[1]);
+ * // => true
+ */
+function constant(value) {
+  return function() {
+    return value;
+  };
+}
+
+module.exports = constant;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/defaults.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/defaults.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"),
+    eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"),
+    isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"),
+    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Assigns own and inherited enumerable string keyed properties of source
+ * objects to the destination object for all destination properties that
+ * resolve to `undefined`. Source objects are applied from left to right.
+ * Once a property is set, additional values of the same property are ignored.
+ *
+ * **Note:** This method mutates `object`.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The destination object.
+ * @param {...Object} [sources] The source objects.
+ * @returns {Object} Returns `object`.
+ * @see _.defaultsDeep
+ * @example
+ *
+ * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
+ * // => { 'a': 1, 'b': 2 }
+ */
+var defaults = baseRest(function(object, sources) {
+  object = Object(object);
+
+  var index = -1;
+  var length = sources.length;
+  var guard = length > 2 ? sources[2] : undefined;
+
+  if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+    length = 1;
+  }
+
+  while (++index < length) {
+    var source = sources[index];
+    var props = keysIn(source);
+    var propsIndex = -1;
+    var propsLength = props.length;
+
+    while (++propsIndex < propsLength) {
+      var key = props[propsIndex];
+      var value = object[key];
+
+      if (value === undefined ||
+          (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
+        object[key] = source[key];
+      }
+    }
+  }
+
+  return object;
+});
+
+module.exports = defaults;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/each.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/each.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(/*! ./forEach */ "./node_modules/lodash/forEach.js");
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/eq.js":
+/*!***********************************!*\
+  !*** ./node_modules/lodash/eq.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+function eq(value, other) {
+  return value === other || (value !== value && other !== other);
+}
+
+module.exports = eq;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/filter.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/filter.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"),
+    baseFilter = __webpack_require__(/*! ./_baseFilter */ "./node_modules/lodash/_baseFilter.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");
+
+/**
+ * Iterates over elements of `collection`, returning an array of all elements
+ * `predicate` returns truthy for. The predicate is invoked with three
+ * arguments: (value, index|key, collection).
+ *
+ * **Note:** Unlike `_.remove`, this method returns a new array.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
+ * @returns {Array} Returns the new filtered array.
+ * @see _.reject
+ * @example
+ *
+ * var users = [
+ *   { 'user': 'barney', 'age': 36, 'active': true },
+ *   { 'user': 'fred',   'age': 40, 'active': false }
+ * ];
+ *
+ * _.filter(users, function(o) { return !o.active; });
+ * // => objects for ['fred']
+ *
+ * // The `_.matches` iteratee shorthand.
+ * _.filter(users, { 'age': 36, 'active': true });
+ * // => objects for ['barney']
+ *
+ * // The `_.matchesProperty` iteratee shorthand.
+ * _.filter(users, ['active', false]);
+ * // => objects for ['fred']
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.filter(users, 'active');
+ * // => objects for ['barney']
+ */
+function filter(collection, predicate) {
+  var func = isArray(collection) ? arrayFilter : baseFilter;
+  return func(collection, baseIteratee(predicate, 3));
+}
+
+module.exports = filter;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/find.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/find.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var createFind = __webpack_require__(/*! ./_createFind */ "./node_modules/lodash/_createFind.js"),
+    findIndex = __webpack_require__(/*! ./findIndex */ "./node_modules/lodash/findIndex.js");
+
+/**
+ * Iterates over elements of `collection`, returning the first element
+ * `predicate` returns truthy for. The predicate is invoked with three
+ * arguments: (value, index|key, collection).
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to inspect.
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
+ * @returns {*} Returns the matched element, else `undefined`.
+ * @example
+ *
+ * var users = [
+ *   { 'user': 'barney',  'age': 36, 'active': true },
+ *   { 'user': 'fred',    'age': 40, 'active': false },
+ *   { 'user': 'pebbles', 'age': 1,  'active': true }
+ * ];
+ *
+ * _.find(users, function(o) { return o.age < 40; });
+ * // => object for 'barney'
+ *
+ * // The `_.matches` iteratee shorthand.
+ * _.find(users, { 'age': 1, 'active': true });
+ * // => object for 'pebbles'
+ *
+ * // The `_.matchesProperty` iteratee shorthand.
+ * _.find(users, ['active', false]);
+ * // => object for 'fred'
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.find(users, 'active');
+ * // => object for 'barney'
+ */
+var find = createFind(findIndex);
+
+module.exports = find;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/findIndex.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/findIndex.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    toInteger = __webpack_require__(/*! ./toInteger */ "./node_modules/lodash/toInteger.js");
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMax = Math.max;
+
+/**
+ * This method is like `_.find` except that it returns the index of the first
+ * element `predicate` returns truthy for instead of the element itself.
+ *
+ * @static
+ * @memberOf _
+ * @since 1.1.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
+ * @returns {number} Returns the index of the found element, else `-1`.
+ * @example
+ *
+ * var users = [
+ *   { 'user': 'barney',  'active': false },
+ *   { 'user': 'fred',    'active': false },
+ *   { 'user': 'pebbles', 'active': true }
+ * ];
+ *
+ * _.findIndex(users, function(o) { return o.user == 'barney'; });
+ * // => 0
+ *
+ * // The `_.matches` iteratee shorthand.
+ * _.findIndex(users, { 'user': 'fred', 'active': false });
+ * // => 1
+ *
+ * // The `_.matchesProperty` iteratee shorthand.
+ * _.findIndex(users, ['active', false]);
+ * // => 0
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.findIndex(users, 'active');
+ * // => 2
+ */
+function findIndex(array, predicate, fromIndex) {
+  var length = array == null ? 0 : array.length;
+  if (!length) {
+    return -1;
+  }
+  var index = fromIndex == null ? 0 : toInteger(fromIndex);
+  if (index < 0) {
+    index = nativeMax(length + index, 0);
+  }
+  return baseFindIndex(array, baseIteratee(predicate, 3), index);
+}
+
+module.exports = findIndex;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/flatten.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/flatten.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js");
+
+/**
+ * Flattens `array` a single level deep.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {Array} array The array to flatten.
+ * @returns {Array} Returns the new flattened array.
+ * @example
+ *
+ * _.flatten([1, [2, [3, [4]], 5]]);
+ * // => [1, 2, [3, [4]], 5]
+ */
+function flatten(array) {
+  var length = array == null ? 0 : array.length;
+  return length ? baseFlatten(array, 1) : [];
+}
+
+module.exports = flatten;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/forEach.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/forEach.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"),
+    baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"),
+    castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");
+
+/**
+ * Iterates over elements of `collection` and invokes `iteratee` for each element.
+ * The iteratee is invoked with three arguments: (value, index|key, collection).
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
+ *
+ * **Note:** As with other "Collections" methods, objects with a "length"
+ * property are iterated like arrays. To avoid this behavior use `_.forIn`
+ * or `_.forOwn` for object iteration.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @alias each
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @returns {Array|Object} Returns `collection`.
+ * @see _.forEachRight
+ * @example
+ *
+ * _.forEach([1, 2], function(value) {
+ *   console.log(value);
+ * });
+ * // => Logs `1` then `2`.
+ *
+ * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
+ *   console.log(key);
+ * });
+ * // => Logs 'a' then 'b' (iteration order is not guaranteed).
+ */
+function forEach(collection, iteratee) {
+  var func = isArray(collection) ? arrayEach : baseEach;
+  return func(collection, castFunction(iteratee));
+}
+
+module.exports = forEach;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/forIn.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/forIn.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"),
+    castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"),
+    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js");
+
+/**
+ * Iterates over own and inherited enumerable string keyed properties of an
+ * object and invokes `iteratee` for each property. The iteratee is invoked
+ * with three arguments: (value, key, object). Iteratee functions may exit
+ * iteration early by explicitly returning `false`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.3.0
+ * @category Object
+ * @param {Object} object The object to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @returns {Object} Returns `object`.
+ * @see _.forInRight
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.forIn(new Foo, function(value, key) {
+ *   console.log(key);
+ * });
+ * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
+ */
+function forIn(object, iteratee) {
+  return object == null
+    ? object
+    : baseFor(object, castFunction(iteratee), keysIn);
+}
+
+module.exports = forIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/get.js":
+/*!************************************!*\
+  !*** ./node_modules/lodash/get.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js");
+
+/**
+ * Gets the value at `path` of `object`. If the resolved value is
+ * `undefined`, the `defaultValue` is returned in its place.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.7.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
+ * @returns {*} Returns the resolved value.
+ * @example
+ *
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+ *
+ * _.get(object, 'a[0].b.c');
+ * // => 3
+ *
+ * _.get(object, ['a', '0', 'b', 'c']);
+ * // => 3
+ *
+ * _.get(object, 'a.b.c', 'default');
+ * // => 'default'
+ */
+function get(object, path, defaultValue) {
+  var result = object == null ? undefined : baseGet(object, path);
+  return result === undefined ? defaultValue : result;
+}
+
+module.exports = get;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/has.js":
+/*!************************************!*\
+  !*** ./node_modules/lodash/has.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseHas = __webpack_require__(/*! ./_baseHas */ "./node_modules/lodash/_baseHas.js"),
+    hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js");
+
+/**
+ * Checks if `path` is a direct property of `object`.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ * @example
+ *
+ * var object = { 'a': { 'b': 2 } };
+ * var other = _.create({ 'a': _.create({ 'b': 2 }) });
+ *
+ * _.has(object, 'a');
+ * // => true
+ *
+ * _.has(object, 'a.b');
+ * // => true
+ *
+ * _.has(object, ['a', 'b']);
+ * // => true
+ *
+ * _.has(other, 'a');
+ * // => false
+ */
+function has(object, path) {
+  return object != null && hasPath(object, path, baseHas);
+}
+
+module.exports = has;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/hasIn.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/hasIn.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/lodash/_baseHasIn.js"),
+    hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js");
+
+/**
+ * Checks if `path` is a direct or inherited property of `object`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ * @example
+ *
+ * var object = _.create({ 'a': _.create({ 'b': 2 }) });
+ *
+ * _.hasIn(object, 'a');
+ * // => true
+ *
+ * _.hasIn(object, 'a.b');
+ * // => true
+ *
+ * _.hasIn(object, ['a', 'b']);
+ * // => true
+ *
+ * _.hasIn(object, 'b');
+ * // => false
+ */
+function hasIn(object, path) {
+  return object != null && hasPath(object, path, baseHasIn);
+}
+
+module.exports = hasIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/identity.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/identity.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * This method returns the first argument it receives.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Util
+ * @param {*} value Any value.
+ * @returns {*} Returns `value`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ *
+ * console.log(_.identity(object) === object);
+ * // => true
+ */
+function identity(value) {
+  return value;
+}
+
+module.exports = identity;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isArguments.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/isArguments.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/lodash/_baseIsArguments.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/** Built-in value references. */
+var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+
+/**
+ * Checks if `value` is likely an `arguments` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ *  else `false`.
+ * @example
+ *
+ * _.isArguments(function() { return arguments; }());
+ * // => true
+ *
+ * _.isArguments([1, 2, 3]);
+ * // => false
+ */
+var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
+  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
+    !propertyIsEnumerable.call(value, 'callee');
+};
+
+module.exports = isArguments;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isArray.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/isArray.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+var isArray = Array.isArray;
+
+module.exports = isArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isArrayLike.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/isArrayLike.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"),
+    isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js");
+
+/**
+ * Checks if `value` is array-like. A value is considered array-like if it's
+ * not a function and has a `value.length` that's an integer greater than or
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ * @example
+ *
+ * _.isArrayLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLike(document.body.children);
+ * // => true
+ *
+ * _.isArrayLike('abc');
+ * // => true
+ *
+ * _.isArrayLike(_.noop);
+ * // => false
+ */
+function isArrayLike(value) {
+  return value != null && isLength(value.length) && !isFunction(value);
+}
+
+module.exports = isArrayLike;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isArrayLikeObject.js":
+/*!**************************************************!*\
+  !*** ./node_modules/lodash/isArrayLikeObject.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/**
+ * This method is like `_.isArrayLike` except that it also checks if `value`
+ * is an object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
+ *  else `false`.
+ * @example
+ *
+ * _.isArrayLikeObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLikeObject(document.body.children);
+ * // => true
+ *
+ * _.isArrayLikeObject('abc');
+ * // => false
+ *
+ * _.isArrayLikeObject(_.noop);
+ * // => false
+ */
+function isArrayLikeObject(value) {
+  return isObjectLike(value) && isArrayLike(value);
+}
+
+module.exports = isArrayLikeObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isBuffer.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/isBuffer.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"),
+    stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js");
+
+/** Detect free variable `exports`. */
+var freeExports =  true && exports && !exports.nodeType && exports;
+
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
+
+/** Built-in value references. */
+var Buffer = moduleExports ? root.Buffer : undefined;
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
+
+/**
+ * Checks if `value` is a buffer.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.3.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
+ * @example
+ *
+ * _.isBuffer(new Buffer(2));
+ * // => true
+ *
+ * _.isBuffer(new Uint8Array(2));
+ * // => false
+ */
+var isBuffer = nativeIsBuffer || stubFalse;
+
+module.exports = isBuffer;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isEmpty.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/isEmpty.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"),
+    getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),
+    isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),
+    isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),
+    isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),
+    isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js");
+
+/** `Object#toString` result references. */
+var mapTag = '[object Map]',
+    setTag = '[object Set]';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Checks if `value` is an empty object, collection, map, or set.
+ *
+ * Objects are considered empty if they have no own enumerable string keyed
+ * properties.
+ *
+ * Array-like values such as `arguments` objects, arrays, buffers, strings, or
+ * jQuery-like collections are considered empty if they have a `length` of `0`.
+ * Similarly, maps and sets are considered empty if they have a `size` of `0`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
+ * @example
+ *
+ * _.isEmpty(null);
+ * // => true
+ *
+ * _.isEmpty(true);
+ * // => true
+ *
+ * _.isEmpty(1);
+ * // => true
+ *
+ * _.isEmpty([1, 2, 3]);
+ * // => false
+ *
+ * _.isEmpty({ 'a': 1 });
+ * // => false
+ */
+function isEmpty(value) {
+  if (value == null) {
+    return true;
+  }
+  if (isArrayLike(value) &&
+      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
+        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
+    return !value.length;
+  }
+  var tag = getTag(value);
+  if (tag == mapTag || tag == setTag) {
+    return !value.size;
+  }
+  if (isPrototype(value)) {
+    return !baseKeys(value).length;
+  }
+  for (var key in value) {
+    if (hasOwnProperty.call(value, key)) {
+      return false;
+    }
+  }
+  return true;
+}
+
+module.exports = isEmpty;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isFunction.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/isFunction.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");
+
+/** `Object#toString` result references. */
+var asyncTag = '[object AsyncFunction]',
+    funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]',
+    proxyTag = '[object Proxy]';
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+  if (!isObject(value)) {
+    return false;
+  }
+  // The use of `Object#toString` avoids issues with the `typeof` operator
+  // in Safari 9 which returns 'object' for typed arrays and other constructors.
+  var tag = baseGetTag(value);
+  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
+}
+
+module.exports = isFunction;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isLength.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/isLength.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/** Used as references for various `Number` constants. */
+var MAX_SAFE_INTEGER = 9007199254740991;
+
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ * @example
+ *
+ * _.isLength(3);
+ * // => true
+ *
+ * _.isLength(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isLength(Infinity);
+ * // => false
+ *
+ * _.isLength('3');
+ * // => false
+ */
+function isLength(value) {
+  return typeof value == 'number' &&
+    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+}
+
+module.exports = isLength;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isMap.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/isMap.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMap = __webpack_require__(/*! ./_baseIsMap */ "./node_modules/lodash/_baseIsMap.js"),
+    baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),
+    nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");
+
+/* Node.js helper references. */
+var nodeIsMap = nodeUtil && nodeUtil.isMap;
+
+/**
+ * Checks if `value` is classified as a `Map` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.3.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a map, else `false`.
+ * @example
+ *
+ * _.isMap(new Map);
+ * // => true
+ *
+ * _.isMap(new WeakMap);
+ * // => false
+ */
+var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
+
+module.exports = isMap;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isObject.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/isObject.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+  var type = typeof value;
+  return value != null && (type == 'object' || type == 'function');
+}
+
+module.exports = isObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isObjectLike.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/isObjectLike.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+  return value != null && typeof value == 'object';
+}
+
+module.exports = isObjectLike;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isPlainObject.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/isPlainObject.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),
+    getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** `Object#toString` result references. */
+var objectTag = '[object Object]';
+
+/** Used for built-in method references. */
+var funcProto = Function.prototype,
+    objectProto = Object.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/** Used to infer the `Object` constructor. */
+var objectCtorString = funcToString.call(Object);
+
+/**
+ * Checks if `value` is a plain object, that is, an object created by the
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.8.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ * }
+ *
+ * _.isPlainObject(new Foo);
+ * // => false
+ *
+ * _.isPlainObject([1, 2, 3]);
+ * // => false
+ *
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // => true
+ *
+ * _.isPlainObject(Object.create(null));
+ * // => true
+ */
+function isPlainObject(value) {
+  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
+    return false;
+  }
+  var proto = getPrototype(value);
+  if (proto === null) {
+    return true;
+  }
+  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
+  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
+    funcToString.call(Ctor) == objectCtorString;
+}
+
+module.exports = isPlainObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isSet.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/isSet.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsSet = __webpack_require__(/*! ./_baseIsSet */ "./node_modules/lodash/_baseIsSet.js"),
+    baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),
+    nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");
+
+/* Node.js helper references. */
+var nodeIsSet = nodeUtil && nodeUtil.isSet;
+
+/**
+ * Checks if `value` is classified as a `Set` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.3.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a set, else `false`.
+ * @example
+ *
+ * _.isSet(new Set);
+ * // => true
+ *
+ * _.isSet(new WeakSet);
+ * // => false
+ */
+var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
+
+module.exports = isSet;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isString.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/isString.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** `Object#toString` result references. */
+var stringTag = '[object String]';
+
+/**
+ * Checks if `value` is classified as a `String` primitive or object.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
+ * @example
+ *
+ * _.isString('abc');
+ * // => true
+ *
+ * _.isString(1);
+ * // => false
+ */
+function isString(value) {
+  return typeof value == 'string' ||
+    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
+}
+
+module.exports = isString;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isSymbol.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/isSymbol.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),
+    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");
+
+/** `Object#toString` result references. */
+var symbolTag = '[object Symbol]';
+
+/**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+function isSymbol(value) {
+  return typeof value == 'symbol' ||
+    (isObjectLike(value) && baseGetTag(value) == symbolTag);
+}
+
+module.exports = isSymbol;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isTypedArray.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/isTypedArray.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"),
+    baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),
+    nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");
+
+/* Node.js helper references. */
+var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+
+/**
+ * Checks if `value` is classified as a typed array.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ * @example
+ *
+ * _.isTypedArray(new Uint8Array);
+ * // => true
+ *
+ * _.isTypedArray([]);
+ * // => false
+ */
+var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+
+module.exports = isTypedArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isUndefined.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/isUndefined.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Checks if `value` is `undefined`.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
+ * @example
+ *
+ * _.isUndefined(void 0);
+ * // => true
+ *
+ * _.isUndefined(null);
+ * // => false
+ */
+function isUndefined(value) {
+  return value === undefined;
+}
+
+module.exports = isUndefined;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/keys.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/keys.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"),
+    baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"),
+    isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js");
+
+/**
+ * Creates an array of the own enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
+ */
+function keys(object) {
+  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+}
+
+module.exports = keys;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/keysIn.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/keysIn.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"),
+    baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ "./node_modules/lodash/_baseKeysIn.js"),
+    isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js");
+
+/**
+ * Creates an array of the own and inherited enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keysIn(new Foo);
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
+ */
+function keysIn(object) {
+  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
+}
+
+module.exports = keysIn;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/last.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/last.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * Gets the last element of `array`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {*} Returns the last element of `array`.
+ * @example
+ *
+ * _.last([1, 2, 3]);
+ * // => 3
+ */
+function last(array) {
+  var length = array == null ? 0 : array.length;
+  return length ? array[length - 1] : undefined;
+}
+
+module.exports = last;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/map.js":
+/*!************************************!*\
+  !*** ./node_modules/lodash/map.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");
+
+/**
+ * Creates an array of values by running each element in `collection` thru
+ * `iteratee`. The iteratee is invoked with three arguments:
+ * (value, index|key, collection).
+ *
+ * Many lodash methods are guarded to work as iteratees for methods like
+ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
+ *
+ * The guarded methods are:
+ * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
+ * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
+ * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
+ * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
+ * @example
+ *
+ * function square(n) {
+ *   return n * n;
+ * }
+ *
+ * _.map([4, 8], square);
+ * // => [16, 64]
+ *
+ * _.map({ 'a': 4, 'b': 8 }, square);
+ * // => [16, 64] (iteration order is not guaranteed)
+ *
+ * var users = [
+ *   { 'user': 'barney' },
+ *   { 'user': 'fred' }
+ * ];
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.map(users, 'user');
+ * // => ['barney', 'fred']
+ */
+function map(collection, iteratee) {
+  var func = isArray(collection) ? arrayMap : baseMap;
+  return func(collection, baseIteratee(iteratee, 3));
+}
+
+module.exports = map;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/mapValues.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/mapValues.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),
+    baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js");
+
+/**
+ * Creates an object with the same keys as `object` and values generated
+ * by running each own enumerable string keyed property of `object` thru
+ * `iteratee`. The iteratee is invoked with three arguments:
+ * (value, key, object).
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Object
+ * @param {Object} object The object to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @returns {Object} Returns the new mapped object.
+ * @see _.mapKeys
+ * @example
+ *
+ * var users = {
+ *   'fred':    { 'user': 'fred',    'age': 40 },
+ *   'pebbles': { 'user': 'pebbles', 'age': 1 }
+ * };
+ *
+ * _.mapValues(users, function(o) { return o.age; });
+ * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.mapValues(users, 'age');
+ * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+ */
+function mapValues(object, iteratee) {
+  var result = {};
+  iteratee = baseIteratee(iteratee, 3);
+
+  baseForOwn(object, function(value, key, object) {
+    baseAssignValue(result, key, iteratee(value, key, object));
+  });
+  return result;
+}
+
+module.exports = mapValues;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/max.js":
+/*!************************************!*\
+  !*** ./node_modules/lodash/max.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"),
+    baseGt = __webpack_require__(/*! ./_baseGt */ "./node_modules/lodash/_baseGt.js"),
+    identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js");
+
+/**
+ * Computes the maximum value of `array`. If `array` is empty or falsey,
+ * `undefined` is returned.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Math
+ * @param {Array} array The array to iterate over.
+ * @returns {*} Returns the maximum value.
+ * @example
+ *
+ * _.max([4, 2, 8, 6]);
+ * // => 8
+ *
+ * _.max([]);
+ * // => undefined
+ */
+function max(array) {
+  return (array && array.length)
+    ? baseExtremum(array, identity, baseGt)
+    : undefined;
+}
+
+module.exports = max;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/memoize.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/memoize.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js");
+
+/** Error message constants. */
+var FUNC_ERROR_TEXT = 'Expected a function';
+
+/**
+ * Creates a function that memoizes the result of `func`. If `resolver` is
+ * provided, it determines the cache key for storing the result based on the
+ * arguments provided to the memoized function. By default, the first argument
+ * provided to the memoized function is used as the map cache key. The `func`
+ * is invoked with the `this` binding of the memoized function.
+ *
+ * **Note:** The cache is exposed as the `cache` property on the memoized
+ * function. Its creation may be customized by replacing the `_.memoize.Cache`
+ * constructor with one whose instances implement the
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
+ * method interface of `clear`, `delete`, `get`, `has`, and `set`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Function
+ * @param {Function} func The function to have its output memoized.
+ * @param {Function} [resolver] The function to resolve the cache key.
+ * @returns {Function} Returns the new memoized function.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': 2 };
+ * var other = { 'c': 3, 'd': 4 };
+ *
+ * var values = _.memoize(_.values);
+ * values(object);
+ * // => [1, 2]
+ *
+ * values(other);
+ * // => [3, 4]
+ *
+ * object.a = 2;
+ * values(object);
+ * // => [1, 2]
+ *
+ * // Modify the result cache.
+ * values.cache.set(object, ['a', 'b']);
+ * values(object);
+ * // => ['a', 'b']
+ *
+ * // Replace `_.memoize.Cache`.
+ * _.memoize.Cache = WeakMap;
+ */
+function memoize(func, resolver) {
+  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
+    throw new TypeError(FUNC_ERROR_TEXT);
+  }
+  var memoized = function() {
+    var args = arguments,
+        key = resolver ? resolver.apply(this, args) : args[0],
+        cache = memoized.cache;
+
+    if (cache.has(key)) {
+      return cache.get(key);
+    }
+    var result = func.apply(this, args);
+    memoized.cache = cache.set(key, result) || cache;
+    return result;
+  };
+  memoized.cache = new (memoize.Cache || MapCache);
+  return memoized;
+}
+
+// Expose `MapCache`.
+memoize.Cache = MapCache;
+
+module.exports = memoize;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/merge.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/merge.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseMerge = __webpack_require__(/*! ./_baseMerge */ "./node_modules/lodash/_baseMerge.js"),
+    createAssigner = __webpack_require__(/*! ./_createAssigner */ "./node_modules/lodash/_createAssigner.js");
+
+/**
+ * This method is like `_.assign` except that it recursively merges own and
+ * inherited enumerable string keyed properties of source objects into the
+ * destination object. Source properties that resolve to `undefined` are
+ * skipped if a destination value exists. Array and plain object properties
+ * are merged recursively. Other objects and value types are overridden by
+ * assignment. Source objects are applied from left to right. Subsequent
+ * sources overwrite property assignments of previous sources.
+ *
+ * **Note:** This method mutates `object`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.5.0
+ * @category Object
+ * @param {Object} object The destination object.
+ * @param {...Object} [sources] The source objects.
+ * @returns {Object} Returns `object`.
+ * @example
+ *
+ * var object = {
+ *   'a': [{ 'b': 2 }, { 'd': 4 }]
+ * };
+ *
+ * var other = {
+ *   'a': [{ 'c': 3 }, { 'e': 5 }]
+ * };
+ *
+ * _.merge(object, other);
+ * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
+ */
+var merge = createAssigner(function(object, source, srcIndex) {
+  baseMerge(object, source, srcIndex);
+});
+
+module.exports = merge;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/min.js":
+/*!************************************!*\
+  !*** ./node_modules/lodash/min.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"),
+    baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js"),
+    identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js");
+
+/**
+ * Computes the minimum value of `array`. If `array` is empty or falsey,
+ * `undefined` is returned.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Math
+ * @param {Array} array The array to iterate over.
+ * @returns {*} Returns the minimum value.
+ * @example
+ *
+ * _.min([4, 2, 8, 6]);
+ * // => 2
+ *
+ * _.min([]);
+ * // => undefined
+ */
+function min(array) {
+  return (array && array.length)
+    ? baseExtremum(array, identity, baseLt)
+    : undefined;
+}
+
+module.exports = min;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/minBy.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/minBy.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js");
+
+/**
+ * This method is like `_.min` except that it accepts `iteratee` which is
+ * invoked for each element in `array` to generate the criterion by which
+ * the value is ranked. The iteratee is invoked with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Math
+ * @param {Array} array The array to iterate over.
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+ * @returns {*} Returns the minimum value.
+ * @example
+ *
+ * var objects = [{ 'n': 1 }, { 'n': 2 }];
+ *
+ * _.minBy(objects, function(o) { return o.n; });
+ * // => { 'n': 1 }
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.minBy(objects, 'n');
+ * // => { 'n': 1 }
+ */
+function minBy(array, iteratee) {
+  return (array && array.length)
+    ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)
+    : undefined;
+}
+
+module.exports = minBy;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/noop.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/noop.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * This method returns `undefined`.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.3.0
+ * @category Util
+ * @example
+ *
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
+ */
+function noop() {
+  // No operation performed.
+}
+
+module.exports = noop;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/now.js":
+/*!************************************!*\
+  !*** ./node_modules/lodash/now.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");
+
+/**
+ * Gets the timestamp of the number of milliseconds that have elapsed since
+ * the Unix epoch (1 January 1970 00:00:00 UTC).
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Date
+ * @returns {number} Returns the timestamp.
+ * @example
+ *
+ * _.defer(function(stamp) {
+ *   console.log(_.now() - stamp);
+ * }, _.now());
+ * // => Logs the number of milliseconds it took for the deferred invocation.
+ */
+var now = function() {
+  return root.Date.now();
+};
+
+module.exports = now;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/pick.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/pick.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var basePick = __webpack_require__(/*! ./_basePick */ "./node_modules/lodash/_basePick.js"),
+    flatRest = __webpack_require__(/*! ./_flatRest */ "./node_modules/lodash/_flatRest.js");
+
+/**
+ * Creates an object composed of the picked `object` properties.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The source object.
+ * @param {...(string|string[])} [paths] The property paths to pick.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': '2', 'c': 3 };
+ *
+ * _.pick(object, ['a', 'c']);
+ * // => { 'a': 1, 'c': 3 }
+ */
+var pick = flatRest(function(object, paths) {
+  return object == null ? {} : basePick(object, paths);
+});
+
+module.exports = pick;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/property.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/property.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"),
+    basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/lodash/_basePropertyDeep.js"),
+    isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"),
+    toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");
+
+/**
+ * Creates a function that returns the value at `path` of a given object.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Util
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ * @example
+ *
+ * var objects = [
+ *   { 'a': { 'b': 2 } },
+ *   { 'a': { 'b': 1 } }
+ * ];
+ *
+ * _.map(objects, _.property('a.b'));
+ * // => [2, 1]
+ *
+ * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
+ * // => [1, 2]
+ */
+function property(path) {
+  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+}
+
+module.exports = property;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/range.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/range.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var createRange = __webpack_require__(/*! ./_createRange */ "./node_modules/lodash/_createRange.js");
+
+/**
+ * Creates an array of numbers (positive and/or negative) progressing from
+ * `start` up to, but not including, `end`. A step of `-1` is used if a negative
+ * `start` is specified without an `end` or `step`. If `end` is not specified,
+ * it's set to `start` with `start` then set to `0`.
+ *
+ * **Note:** JavaScript follows the IEEE-754 standard for resolving
+ * floating-point values which can produce unexpected results.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Util
+ * @param {number} [start=0] The start of the range.
+ * @param {number} end The end of the range.
+ * @param {number} [step=1] The value to increment or decrement by.
+ * @returns {Array} Returns the range of numbers.
+ * @see _.inRange, _.rangeRight
+ * @example
+ *
+ * _.range(4);
+ * // => [0, 1, 2, 3]
+ *
+ * _.range(-4);
+ * // => [0, -1, -2, -3]
+ *
+ * _.range(1, 5);
+ * // => [1, 2, 3, 4]
+ *
+ * _.range(0, 20, 5);
+ * // => [0, 5, 10, 15]
+ *
+ * _.range(0, -4, -1);
+ * // => [0, -1, -2, -3]
+ *
+ * _.range(1, 4, 0);
+ * // => [1, 1, 1]
+ *
+ * _.range(0);
+ * // => []
+ */
+var range = createRange();
+
+module.exports = range;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/reduce.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/reduce.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayReduce = __webpack_require__(/*! ./_arrayReduce */ "./node_modules/lodash/_arrayReduce.js"),
+    baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    baseReduce = __webpack_require__(/*! ./_baseReduce */ "./node_modules/lodash/_baseReduce.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");
+
+/**
+ * Reduces `collection` to a value which is the accumulated result of running
+ * each element in `collection` thru `iteratee`, where each successive
+ * invocation is supplied the return value of the previous. If `accumulator`
+ * is not given, the first element of `collection` is used as the initial
+ * value. The iteratee is invoked with four arguments:
+ * (accumulator, value, index|key, collection).
+ *
+ * Many lodash methods are guarded to work as iteratees for methods like
+ * `_.reduce`, `_.reduceRight`, and `_.transform`.
+ *
+ * The guarded methods are:
+ * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
+ * and `sortBy`
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @param {*} [accumulator] The initial value.
+ * @returns {*} Returns the accumulated value.
+ * @see _.reduceRight
+ * @example
+ *
+ * _.reduce([1, 2], function(sum, n) {
+ *   return sum + n;
+ * }, 0);
+ * // => 3
+ *
+ * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
+ *   (result[value] || (result[value] = [])).push(key);
+ *   return result;
+ * }, {});
+ * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
+ */
+function reduce(collection, iteratee, accumulator) {
+  var func = isArray(collection) ? arrayReduce : baseReduce,
+      initAccum = arguments.length < 3;
+
+  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
+}
+
+module.exports = reduce;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/size.js":
+/*!*************************************!*\
+  !*** ./node_modules/lodash/size.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"),
+    getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),
+    isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),
+    isString = __webpack_require__(/*! ./isString */ "./node_modules/lodash/isString.js"),
+    stringSize = __webpack_require__(/*! ./_stringSize */ "./node_modules/lodash/_stringSize.js");
+
+/** `Object#toString` result references. */
+var mapTag = '[object Map]',
+    setTag = '[object Set]';
+
+/**
+ * Gets the size of `collection` by returning its length for array-like
+ * values or the number of own enumerable string keyed properties for objects.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to inspect.
+ * @returns {number} Returns the collection size.
+ * @example
+ *
+ * _.size([1, 2, 3]);
+ * // => 3
+ *
+ * _.size({ 'a': 1, 'b': 2 });
+ * // => 2
+ *
+ * _.size('pebbles');
+ * // => 7
+ */
+function size(collection) {
+  if (collection == null) {
+    return 0;
+  }
+  if (isArrayLike(collection)) {
+    return isString(collection) ? stringSize(collection) : collection.length;
+  }
+  var tag = getTag(collection);
+  if (tag == mapTag || tag == setTag) {
+    return collection.size;
+  }
+  return baseKeys(collection).length;
+}
+
+module.exports = size;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/sortBy.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/sortBy.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"),
+    baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ "./node_modules/lodash/_baseOrderBy.js"),
+    baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"),
+    isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js");
+
+/**
+ * Creates an array of elements, sorted in ascending order by the results of
+ * running each element in a collection thru each iteratee. This method
+ * performs a stable sort, that is, it preserves the original sort order of
+ * equal elements. The iteratees are invoked with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {...(Function|Function[])} [iteratees=[_.identity]]
+ *  The iteratees to sort by.
+ * @returns {Array} Returns the new sorted array.
+ * @example
+ *
+ * var users = [
+ *   { 'user': 'fred',   'age': 48 },
+ *   { 'user': 'barney', 'age': 36 },
+ *   { 'user': 'fred',   'age': 40 },
+ *   { 'user': 'barney', 'age': 34 }
+ * ];
+ *
+ * _.sortBy(users, [function(o) { return o.user; }]);
+ * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
+ *
+ * _.sortBy(users, ['user', 'age']);
+ * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
+ */
+var sortBy = baseRest(function(collection, iteratees) {
+  if (collection == null) {
+    return [];
+  }
+  var length = iteratees.length;
+  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
+    iteratees = [];
+  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
+    iteratees = [iteratees[0]];
+  }
+  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
+});
+
+module.exports = sortBy;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/stubArray.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/stubArray.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * This method returns a new empty array.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {Array} Returns the new empty array.
+ * @example
+ *
+ * var arrays = _.times(2, _.stubArray);
+ *
+ * console.log(arrays);
+ * // => [[], []]
+ *
+ * console.log(arrays[0] === arrays[1]);
+ * // => false
+ */
+function stubArray() {
+  return [];
+}
+
+module.exports = stubArray;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/stubFalse.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/stubFalse.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/**
+ * This method returns `false`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {boolean} Returns `false`.
+ * @example
+ *
+ * _.times(2, _.stubFalse);
+ * // => [false, false]
+ */
+function stubFalse() {
+  return false;
+}
+
+module.exports = stubFalse;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/toFinite.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/toFinite.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toNumber = __webpack_require__(/*! ./toNumber */ "./node_modules/lodash/toNumber.js");
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0,
+    MAX_INTEGER = 1.7976931348623157e+308;
+
+/**
+ * Converts `value` to a finite number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.12.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted number.
+ * @example
+ *
+ * _.toFinite(3.2);
+ * // => 3.2
+ *
+ * _.toFinite(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toFinite(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toFinite('3.2');
+ * // => 3.2
+ */
+function toFinite(value) {
+  if (!value) {
+    return value === 0 ? value : 0;
+  }
+  value = toNumber(value);
+  if (value === INFINITY || value === -INFINITY) {
+    var sign = (value < 0 ? -1 : 1);
+    return sign * MAX_INTEGER;
+  }
+  return value === value ? value : 0;
+}
+
+module.exports = toFinite;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/toInteger.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/toInteger.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js");
+
+/**
+ * Converts `value` to an integer.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted integer.
+ * @example
+ *
+ * _.toInteger(3.2);
+ * // => 3
+ *
+ * _.toInteger(Number.MIN_VALUE);
+ * // => 0
+ *
+ * _.toInteger(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toInteger('3.2');
+ * // => 3
+ */
+function toInteger(value) {
+  var result = toFinite(value),
+      remainder = result % 1;
+
+  return result === result ? (remainder ? result - remainder : result) : 0;
+}
+
+module.exports = toInteger;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/toNumber.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/toNumber.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");
+
+/** Used as references for various `Number` constants. */
+var NAN = 0 / 0;
+
+/** Used to match leading and trailing whitespace. */
+var reTrim = /^\s+|\s+$/g;
+
+/** Used to detect bad signed hexadecimal string values. */
+var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+
+/** Used to detect binary string values. */
+var reIsBinary = /^0b[01]+$/i;
+
+/** Used to detect octal string values. */
+var reIsOctal = /^0o[0-7]+$/i;
+
+/** Built-in method references without a dependency on `root`. */
+var freeParseInt = parseInt;
+
+/**
+ * Converts `value` to a number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {number} Returns the number.
+ * @example
+ *
+ * _.toNumber(3.2);
+ * // => 3.2
+ *
+ * _.toNumber(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toNumber(Infinity);
+ * // => Infinity
+ *
+ * _.toNumber('3.2');
+ * // => 3.2
+ */
+function toNumber(value) {
+  if (typeof value == 'number') {
+    return value;
+  }
+  if (isSymbol(value)) {
+    return NAN;
+  }
+  if (isObject(value)) {
+    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
+    value = isObject(other) ? (other + '') : other;
+  }
+  if (typeof value != 'string') {
+    return value === 0 ? value : +value;
+  }
+  value = value.replace(reTrim, '');
+  var isBinary = reIsBinary.test(value);
+  return (isBinary || reIsOctal.test(value))
+    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
+    : (reIsBadHex.test(value) ? NAN : +value);
+}
+
+module.exports = toNumber;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/toPlainObject.js":
+/*!**********************************************!*\
+  !*** ./node_modules/lodash/toPlainObject.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),
+    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js");
+
+/**
+ * Converts `value` to a plain object flattening inherited enumerable string
+ * keyed properties of `value` to own properties of the plain object.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {Object} Returns the converted plain object.
+ * @example
+ *
+ * function Foo() {
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.assign({ 'a': 1 }, new Foo);
+ * // => { 'a': 1, 'b': 2 }
+ *
+ * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
+ * // => { 'a': 1, 'b': 2, 'c': 3 }
+ */
+function toPlainObject(value) {
+  return copyObject(value, keysIn(value));
+}
+
+module.exports = toPlainObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/toString.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/toString.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/lodash/_baseToString.js");
+
+/**
+ * Converts `value` to a string. An empty string is returned for `null`
+ * and `undefined` values. The sign of `-0` is preserved.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {string} Returns the converted string.
+ * @example
+ *
+ * _.toString(null);
+ * // => ''
+ *
+ * _.toString(-0);
+ * // => '-0'
+ *
+ * _.toString([1, 2, 3]);
+ * // => '1,2,3'
+ */
+function toString(value) {
+  return value == null ? '' : baseToString(value);
+}
+
+module.exports = toString;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/transform.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/transform.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"),
+    baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"),
+    baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"),
+    baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),
+    getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),
+    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),
+    isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),
+    isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"),
+    isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),
+    isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js");
+
+/**
+ * An alternative to `_.reduce`; this method transforms `object` to a new
+ * `accumulator` object which is the result of running each of its own
+ * enumerable string keyed properties thru `iteratee`, with each invocation
+ * potentially mutating the `accumulator` object. If `accumulator` is not
+ * provided, a new object with the same `[[Prototype]]` will be used. The
+ * iteratee is invoked with four arguments: (accumulator, value, key, object).
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
+ *
+ * @static
+ * @memberOf _
+ * @since 1.3.0
+ * @category Object
+ * @param {Object} object The object to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @param {*} [accumulator] The custom accumulator value.
+ * @returns {*} Returns the accumulated value.
+ * @example
+ *
+ * _.transform([2, 3, 4], function(result, n) {
+ *   result.push(n *= n);
+ *   return n % 2 == 0;
+ * }, []);
+ * // => [4, 9]
+ *
+ * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
+ *   (result[value] || (result[value] = [])).push(key);
+ * }, {});
+ * // => { '1': ['a', 'c'], '2': ['b'] }
+ */
+function transform(object, iteratee, accumulator) {
+  var isArr = isArray(object),
+      isArrLike = isArr || isBuffer(object) || isTypedArray(object);
+
+  iteratee = baseIteratee(iteratee, 4);
+  if (accumulator == null) {
+    var Ctor = object && object.constructor;
+    if (isArrLike) {
+      accumulator = isArr ? new Ctor : [];
+    }
+    else if (isObject(object)) {
+      accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
+    }
+    else {
+      accumulator = {};
+    }
+  }
+  (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
+    return iteratee(accumulator, value, index, object);
+  });
+  return accumulator;
+}
+
+module.exports = transform;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/union.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/union.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"),
+    baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"),
+    baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/lodash/_baseUniq.js"),
+    isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js");
+
+/**
+ * Creates an array of unique values, in order, from all given arrays using
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {...Array} [arrays] The arrays to inspect.
+ * @returns {Array} Returns the new array of combined values.
+ * @example
+ *
+ * _.union([2], [1, 2]);
+ * // => [2, 1]
+ */
+var union = baseRest(function(arrays) {
+  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
+});
+
+module.exports = union;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/uniqueId.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/uniqueId.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js");
+
+/** Used to generate unique IDs. */
+var idCounter = 0;
+
+/**
+ * Generates a unique ID. If `prefix` is given, the ID is appended to it.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Util
+ * @param {string} [prefix=''] The value to prefix the ID with.
+ * @returns {string} Returns the unique ID.
+ * @example
+ *
+ * _.uniqueId('contact_');
+ * // => 'contact_104'
+ *
+ * _.uniqueId();
+ * // => '105'
+ */
+function uniqueId(prefix) {
+  var id = ++idCounter;
+  return toString(prefix) + id;
+}
+
+module.exports = uniqueId;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/values.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/values.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseValues = __webpack_require__(/*! ./_baseValues */ "./node_modules/lodash/_baseValues.js"),
+    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");
+
+/**
+ * Creates an array of the own enumerable string keyed property values of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property values.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.values(new Foo);
+ * // => [1, 2] (iteration order is not guaranteed)
+ *
+ * _.values('hi');
+ * // => ['h', 'i']
+ */
+function values(object) {
+  return object == null ? [] : baseValues(object, keys(object));
+}
+
+module.exports = values;
+
+
+/***/ }),
+
+/***/ "./node_modules/lodash/zipObject.js":
+/*!******************************************!*\
+  !*** ./node_modules/lodash/zipObject.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"),
+    baseZipObject = __webpack_require__(/*! ./_baseZipObject */ "./node_modules/lodash/_baseZipObject.js");
+
+/**
+ * This method is like `_.fromPairs` except that it accepts two arrays,
+ * one of property identifiers and one of corresponding values.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.4.0
+ * @category Array
+ * @param {Array} [props=[]] The property identifiers.
+ * @param {Array} [values=[]] The property values.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * _.zipObject(['a', 'b'], [1, 2]);
+ * // => { 'a': 1, 'b': 2 }
+ */
+function zipObject(props, values) {
+  return baseZipObject(props || [], values || [], assignValue);
+}
+
+module.exports = zipObject;
+
+
+/***/ }),
+
+/***/ "./node_modules/moment-mini/locale sync recursive ^\\.\\/.*$":
+/*!*******************************************************!*\
+  !*** ./node_modules/moment-mini/locale sync ^\.\/.*$ ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var map = {
+	"./locale": "./node_modules/moment-mini/locale/locale.js",
+	"./locale.js": "./node_modules/moment-mini/locale/locale.js"
+};
+
+
+function webpackContext(req) {
+	var id = webpackContextResolve(req);
+	return __webpack_require__(id);
+}
+function webpackContextResolve(req) {
+	if(!__webpack_require__.o(map, req)) {
+		var e = new Error("Cannot find module '" + req + "'");
+		e.code = 'MODULE_NOT_FOUND';
+		throw e;
+	}
+	return map[req];
+}
+webpackContext.keys = function webpackContextKeys() {
+	return Object.keys(map);
+};
+webpackContext.resolve = webpackContextResolve;
+module.exports = webpackContext;
+webpackContext.id = "./node_modules/moment-mini/locale sync recursive ^\\.\\/.*$";
+
+/***/ }),
+
+/***/ "./node_modules/moment-mini/locale/locale.js":
+/*!***************************************************!*\
+  !*** ./node_modules/moment-mini/locale/locale.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+
+
+/***/ }),
+
+/***/ "./node_modules/moment-mini/moment.min.js":
+/*!************************************************!*\
+  !*** ./node_modules/moment-mini/moment.min.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(module) {!function(e,t){ true?module.exports=t():undefined}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function h(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Tt(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function v(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function p(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function k(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function S(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function D(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=S(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&D(e[s])!==D(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function b(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function x(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function C(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function H(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function R(e){var t,n,s={};for(n in e)m(e,n)&&(t=H(n))&&(s[t]=e[n]);return s}var U={};function F(e,t){U[e]=t}function L(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return L(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=b(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=b(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(he(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function he(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var de={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),h(n)&&(s=function(e,t){t[n]=D(e)}),t=0;t<e.length;t++)de[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,ve=4,pe=5,we=6,Me=7,ke=8;function Se(e){return De(e)?366:365}function De(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),C("year","y"),F("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):D(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return D(e)+(68<D(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(xe(this,t,e),c.updateOffset(this,n),this):be(this,t)}}function be(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function xe(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&De(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?De(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),C("month","M"),F("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=D(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ce="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var He="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Re(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=D(t);else if(!h(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Ue(e){return null!=e?(Re(this,e),c.updateOffset(this,!0),this):be(this,"Month")}var Fe=ae;var Le=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=he(s[t]),i[t]=he(i[t]);for(t=0;t<24;t++)r[t]=he(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t;if(e<100&&0<=e){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?Se(r=e-1)+o:o>Se(e)?(r=e+1,o-Se(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(Se(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),C("week","w"),C("isoWeek","W"),F("week",5),F("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=D(e)});function je(e,t){return e.slice(t,7).concat(e.slice(0,t))}I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),C("day","d"),C("weekday","e"),C("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=D(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var $e="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var qe=ae;var Je=ae;var Be=ae;function Qe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=he(o[t]),u[t]=he(u[t]),l[t]=he(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Xe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+L(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),C("hour","h"),F("hour",13),ue("a",et),ue("A",et),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=D(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=D(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i))});var tt,nt=Te("Hours",!0),st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:He,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){var t=null;if(!it[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=tt._abbr,__webpack_require__("./node_modules/moment-mini/locale sync recursive ^\\.\\/.*$")("./"+e),ut(t)}catch(e){}return it[e]}function ut(e,t){var n;return e&&((n=l(t)?ht(e):lt(e,t))?tt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),tt._abbr}function lt(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ot(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new P(x(s,t)),rt[e]&&rt[e].forEach(function(e){lt(e.name,e.config)}),ut(e),it[e]}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return tt;if(!o(e)){if(t=ot(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=at(e[r]).split("-")).length,n=(n=at(e[r+1]))?n.split("-"):null;0<t;){if(s=ot(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return tt}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[ve]||0!==n[pe]||0!==n[we])?ge:n[ve]<0||59<n[ve]?ve:n[pe]<0||59<n[pe]?pe:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=ke),g(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ft(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ct(t.GG,e._a[me],Ie(bt(),1,4).year),s=ct(t.W,1),((i=ct(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(bt(),r,a);n=ct(t.gg,e._a[me],l.year),s=ct(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ct(e._a[me],s[me]),(e._dayOfYear>Se(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[ve]&&0===e._a[pe]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var mt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/Z|[+-]\d\d(?::?\d\d)?/,gt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],vt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,n,s,i,r,a,o=e._i,u=mt.exec(o)||_t.exec(o);if(u){for(g(e).iso=!0,t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[1])){i=gt[t][0],s=!1!==gt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=vt.length;t<n;t++)if(vt[t][1].exec(u[3])){r=(u[2]||" ")+vt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!yt.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Yt(e)}else e._isValid=!1}var Mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function kt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),He.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=Mt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var r=kt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function Yt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,h=l.length,d=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),d+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(de,a)&&de[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=h-d,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ft(e),dt(e)}else Dt(e);else wt(e)}function Ot(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||ht(e._l),null===r||void 0===a&&""===r?p({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),k(r)?new M(dt(r)):(d(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Yt(t),v(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?Yt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):d(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(wt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ft(t)):u(n)?function(e){if(!e._d){var t=R(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ft(e)}}(t):h(n)?t._d=new Date(n):c.createFromInputFallback(t),v(e)||(e._d=null),e))}function Tt(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Ot(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function bt(e,t,n,s){return Tt(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:p()}),Pt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:p()});function Wt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return bt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Ct=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=R(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,h=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Ct,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Ct.length;++s)if(e[Ct[s]]){if(n)return!1;parseFloat(e[Ct[s]])!==D(e[Ct[s]])&&(n=!0)}return!0}(t),this._milliseconds=+h+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=ht(),this._bubble()}function Rt(e){return e instanceof Ht}function Ut(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+L(~~(e/60),2)+n+L(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Nt(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Nt(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+D(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Gt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(k(e)||d(e)?e.valueOf():bt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):bt(e).local()}function Vt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Et(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var It=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,At=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function jt(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:h(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:D(a[ye])*n,h:D(a[ge])*n,m:D(a[ve])*n,s:D(a[pe])*n,ms:D(Ut(1e3*a[we]))*n}):(a=At.exec(e))?(n="-"===a[1]?-1:1,r={y:Zt(a[2],n),M:Zt(a[3],n),w:Zt(a[4],n),d:Zt(a[5],n),h:Zt(a[6],n),m:Zt(a[7],n),s:Zt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=zt(e,t):((n=zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(bt(r.from),bt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function Zt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function zt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function $t(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),qt(this,jt(e="string"==typeof e?+e:e,t),s),this}}function qt(e,t,n,s){var i=t._milliseconds,r=Ut(t._days),a=Ut(t._months);e.isValid()&&(s=null==s||s,a&&Re(e,be(e,"Month")+a*n),r&&xe(e,"Date",be(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}jt.fn=Ht.prototype,jt.invalid=function(){return jt(NaN)};var Jt=$t(1,"add"),Bt=$t(-1,"subtract");function Qt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Xt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ht(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Kt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function en(){return this._locale}var tn=126227808e5;function nn(e,t){return(e%t+t)%t}function sn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-tn:new Date(e,t,n).valueOf()}function rn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-tn:Date.UTC(e,t,n)}function an(e,t){I(0,[e,e.length],0,t)}function on(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),an("gggg","weekYear"),an("ggggg","weekYear"),an("GGGG","isoWeekYear"),an("GGGGG","isoWeekYear"),C("weekYear","gg"),C("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=D(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),C("quarter","Q"),F("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(D(e)-1)}),I("D",["DD",2],"Do","date"),C("date","D"),F("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=D(e.match(B)[0])});var un=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),C("dayOfYear","DDD"),F("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=D(e)}),I("m",["mm",2],0,"minute"),C("minute","m"),F("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],ve);var ln=Te("Minutes",!1);I("s",["ss",2],0,"second"),C("second","s"),F("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],pe);var hn,dn=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),C("millisecond","ms"),F("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),hn="SSSS";hn.length<=9;hn+="S")ue(hn,ne);function cn(e,t){t[we]=D(1e3*("0."+e))}for(hn="S";hn.length<=9;hn+="S")ce(hn,cn);var fn=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var mn=M.prototype;function _n(e){return e}mn.add=Jt,mn.calendar=function(e,t){var n=e||bt(),s=Gt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(b(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,bt(n)))},mn.clone=function(){return new M(this)},mn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=H(t)){case"year":r=Qt(this,s)/12;break;case"month":r=Qt(this,s);break;case"quarter":r=Qt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:S(r)},mn.endOf=function(e){var t;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-nn(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-nn(t,1e3)-1;break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},mn.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.fromNow=function(e){return this.from(bt(),e)},mn.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.toNow=function(e){return this.to(bt(),e)},mn.get=function(e){return b(this[e=H(e)])?this[e]():this},mn.invalidAt=function(){return g(this).overflow},mn.isAfter=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},mn.isBefore=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},mn.isBetween=function(e,t,n,s){var i=k(e)?e:bt(e),r=k(t)?t:bt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},mn.isSame=function(e,t){var n,s=k(e)?e:bt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},mn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},mn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},mn.isValid=function(){return v(this)},mn.lang=Kt,mn.locale=Xt,mn.localeData=en,mn.max=Pt,mn.min=xt,mn.parsingFlags=function(){return _({},g(this))},mn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:U[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=R(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(b(this[e=H(e)]))return this[e](t);return this},mn.startOf=function(e){var t;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=nn(t,6e4);break;case"second":t=this._d.valueOf(),t-=nn(t,1e3);break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.subtract=Bt,mn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},mn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},mn.toDate=function(){return new Date(this.valueOf())},mn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):b(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},mn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},mn.toJSON=function(){return this.isValid()?this.toISOString():null},mn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},mn.unix=function(){return Math.floor(this.valueOf()/1e3)},mn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},mn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},mn.year=Oe,mn.isLeapYear=function(){return De(this.year())},mn.weekYear=function(e){return on.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},mn.isoWeekYear=function(e){return on.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},mn.quarter=mn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},mn.month=Ue,mn.daysInMonth=function(){return Pe(this.year(),this.month())},mn.week=mn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},mn.isoWeek=mn.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},mn.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},mn.isoWeeksInYear=function(){return Ae(this.year(),1,4)},mn.date=un,mn.day=mn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},mn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},mn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},mn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},mn.hour=mn.hours=nt,mn.minute=mn.minutes=ln,mn.second=mn.seconds=dn,mn.millisecond=mn.milliseconds=fn,mn.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Vt(this);if("string"==typeof e){if(null===(e=Nt(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Vt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?qt(this,jt(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},mn.utc=function(e){return this.utcOffset(0,e)},mn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Vt(this),"m")),this},mn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Nt(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},mn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?bt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},mn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},mn.isUtc=Et,mn.isUTC=Et,mn.zoneAbbr=function(){return this._isUTC?"UTC":""},mn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},mn.dates=n("dates accessor is deprecated. Use date instead.",un),mn.months=n("months accessor is deprecated. Use month instead",Ue),mn.years=n("years accessor is deprecated. Use year instead",Oe),mn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),mn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Ot(e))._a){var t=e._isUTC?y(e._a):bt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var yn=P.prototype;function gn(e,t,n,s){var i=ht(),r=y().set(s,t);return i[n](r,e)}function vn(e,t,n){if(h(e)&&(t=e,e=void 0),e=e||"",null!=t)return gn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=gn(e,s,n,"month");return i}function pn(e,t,n,s){t=("boolean"==typeof e?h(t)&&(n=t,t=void 0):(t=e,e=!1,h(n=t)&&(n=t,t=void 0)),t||"");var i,r=ht(),a=e?r._week.dow:0;if(null!=n)return gn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=gn(t,(i+a)%7,s,"day");return o}yn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return b(s)?s.call(t,n):s},yn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},yn.invalidDate=function(){return this._invalidDate},yn.ordinal=function(e){return this._ordinal.replace("%d",e)},yn.preparse=_n,yn.postformat=_n,yn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return b(i)?i(e,t,n,s):i.replace(/%d/i,e)},yn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return b(n)?n(t):n.replace(/%s/i,t)},yn.set=function(e){var t,n;for(n in e)b(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},yn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},yn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},yn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},yn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},yn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Fe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},yn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},yn.firstDayOfYear=function(){return this._week.doy},yn.firstDayOfWeek=function(){return this._week.dow},yn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?je(n,this._week.dow):e?n[e.day()]:n},yn.weekdaysMin=function(e){return!0===e?je(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},yn.weekdaysShort=function(e){return!0===e?je(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},yn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},yn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},yn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Je),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},yn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Be),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},yn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},yn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ut("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===D(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ut),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",ht);var wn=Math.abs;function Mn(e,t,n,s){var i=jt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function kn(e){return e<0?Math.floor(e):Math.ceil(e)}function Sn(e){return 4800*e/146097}function Dn(e){return 146097*e/4800}function Yn(e){return function(){return this.as(e)}}var On=Yn("ms"),Tn=Yn("s"),bn=Yn("m"),xn=Yn("h"),Pn=Yn("d"),Wn=Yn("w"),Cn=Yn("M"),Hn=Yn("Q"),Rn=Yn("y");function Un(e){return function(){return this.isValid()?this._data[e]:NaN}}var Fn=Un("milliseconds"),Ln=Un("seconds"),Nn=Un("minutes"),Gn=Un("hours"),Vn=Un("days"),En=Un("months"),In=Un("years");var An=Math.round,jn={ss:44,s:45,m:45,h:22,d:26,M:11};var Zn=Math.abs;function zn(e){return(0<e)-(e<0)||+e}function $n(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Zn(this._milliseconds)/1e3,s=Zn(this._days),i=Zn(this._months);t=S((e=S(n/60))/60),n%=60,e%=60;var r=S(i/12),a=i%=12,o=s,u=t,l=e,h=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var c=d<0?"-":"",f=zn(this._months)!==zn(d)?"-":"",m=zn(this._days)!==zn(d)?"-":"",_=zn(this._milliseconds)!==zn(d)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||h?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(h?_+h+"S":"")}var qn=Ht.prototype;return qn.isValid=function(){return this._isValid},qn.abs=function(){var e=this._data;return this._milliseconds=wn(this._milliseconds),this._days=wn(this._days),this._months=wn(this._months),e.milliseconds=wn(e.milliseconds),e.seconds=wn(e.seconds),e.minutes=wn(e.minutes),e.hours=wn(e.hours),e.months=wn(e.months),e.years=wn(e.years),this},qn.add=function(e,t){return Mn(this,e,t,1)},qn.subtract=function(e,t){return Mn(this,e,t,-1)},qn.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=H(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+Sn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Dn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},qn.asMilliseconds=On,qn.asSeconds=Tn,qn.asMinutes=bn,qn.asHours=xn,qn.asDays=Pn,qn.asWeeks=Wn,qn.asMonths=Cn,qn.asQuarters=Hn,qn.asYears=Rn,qn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*D(this._months/12):NaN},qn._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*kn(Dn(o)+a),o=a=0),u.milliseconds=r%1e3,e=S(r/1e3),u.seconds=e%60,t=S(e/60),u.minutes=t%60,n=S(t/60),u.hours=n%24,o+=i=S(Sn(a+=S(n/24))),a-=kn(Dn(i)),s=S(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},qn.clone=function(){return jt(this)},qn.get=function(e){return e=H(e),this.isValid()?this[e+"s"]():NaN},qn.milliseconds=Fn,qn.seconds=Ln,qn.minutes=Nn,qn.hours=Gn,qn.days=Vn,qn.weeks=function(){return S(this.days()/7)},qn.months=En,qn.years=In,qn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,h,d,c=this.localeData(),f=(n=!e,s=c,i=jt(t=this).abs(),r=An(i.as("s")),a=An(i.as("m")),o=An(i.as("h")),u=An(i.as("d")),l=An(i.as("M")),h=An(i.as("y")),(d=r<=jn.ss&&["s",r]||r<jn.s&&["ss",r]||a<=1&&["m"]||a<jn.m&&["mm",a]||o<=1&&["h"]||o<jn.h&&["hh",o]||u<=1&&["d"]||u<jn.d&&["dd",u]||l<=1&&["M"]||l<jn.M&&["MM",l]||h<=1&&["y"]||["yy",h])[2]=n,d[3]=0<+t,d[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,d));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},qn.toISOString=$n,qn.toString=$n,qn.toJSON=$n,qn.locale=Xt,qn.localeData=en,qn.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",$n),qn.lang=Kt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(D(e))}),c.version="2.24.0",e=bt,c.fn=mn,c.min=function(){return Wt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Wt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return bt(1e3*e)},c.months=function(e,t){return vn(e,t,"months")},c.isDate=d,c.locale=ut,c.invalid=p,c.duration=jt,c.isMoment=k,c.weekdays=function(e,t,n){return pn(e,t,n,"weekdays")},c.parseZone=function(){return bt.apply(null,arguments).parseZone()},c.localeData=ht,c.isDuration=Rt,c.monthsShort=function(e,t){return vn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return pn(e,t,n,"weekdaysMin")},c.defineLocale=lt,c.updateLocale=function(e,t){if(null!=t){var n,s,i=st;null!=(s=ot(e))&&(i=s._config),(n=new P(t=x(i,t))).parentLocale=it[e],it[e]=n,ut(e)}else null!=it[e]&&(null!=it[e].parentLocale?it[e]=it[e].parentLocale:null!=it[e]&&delete it[e]);return it[e]},c.locales=function(){return s(it)},c.weekdaysShort=function(e,t,n){return pn(e,t,n,"weekdaysShort")},c.normalizeUnits=H,c.relativeTimeRounding=function(e){return void 0===e?An:"function"==typeof e&&(An=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==jn[e]&&(void 0===t?jn[e]:(jn[e]=t,"s"===e&&(jn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=mn,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c});
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./node_modules/node-libs-browser/mock/empty.js":
+/*!******************************************************!*\
+  !*** ./node_modules/node-libs-browser/mock/empty.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+
+
+/***/ }),
+
+/***/ "./node_modules/path-browserify/index.js":
+/*!***********************************************!*\
+  !*** ./node_modules/path-browserify/index.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,
+// backported and transplited with Babel, with backwards-compat fixes
+
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// resolves . and .. elements in a path array with directory names there
+// must be no slashes, empty elements, or device names (c:\) in the array
+// (so also no leading and trailing slashes - it does not distinguish
+// relative and absolute paths)
+function normalizeArray(parts, allowAboveRoot) {
+  // if the path tries to go above the root, `up` ends up > 0
+  var up = 0;
+  for (var i = parts.length - 1; i >= 0; i--) {
+    var last = parts[i];
+    if (last === '.') {
+      parts.splice(i, 1);
+    } else if (last === '..') {
+      parts.splice(i, 1);
+      up++;
+    } else if (up) {
+      parts.splice(i, 1);
+      up--;
+    }
+  }
+
+  // if the path is allowed to go above the root, restore leading ..s
+  if (allowAboveRoot) {
+    for (; up--; up) {
+      parts.unshift('..');
+    }
+  }
+
+  return parts;
+}
+
+// path.resolve([from ...], to)
+// posix version
+exports.resolve = function() {
+  var resolvedPath = '',
+      resolvedAbsolute = false;
+
+  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+    var path = (i >= 0) ? arguments[i] : process.cwd();
+
+    // Skip empty and invalid entries
+    if (typeof path !== 'string') {
+      throw new TypeError('Arguments to path.resolve must be strings');
+    } else if (!path) {
+      continue;
+    }
+
+    resolvedPath = path + '/' + resolvedPath;
+    resolvedAbsolute = path.charAt(0) === '/';
+  }
+
+  // At this point the path should be resolved to a full absolute path, but
+  // handle relative paths to be safe (might happen when process.cwd() fails)
+
+  // Normalize the path
+  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
+    return !!p;
+  }), !resolvedAbsolute).join('/');
+
+  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+};
+
+// path.normalize(path)
+// posix version
+exports.normalize = function(path) {
+  var isAbsolute = exports.isAbsolute(path),
+      trailingSlash = substr(path, -1) === '/';
+
+  // Normalize the path
+  path = normalizeArray(filter(path.split('/'), function(p) {
+    return !!p;
+  }), !isAbsolute).join('/');
+
+  if (!path && !isAbsolute) {
+    path = '.';
+  }
+  if (path && trailingSlash) {
+    path += '/';
+  }
+
+  return (isAbsolute ? '/' : '') + path;
+};
+
+// posix version
+exports.isAbsolute = function(path) {
+  return path.charAt(0) === '/';
+};
+
+// posix version
+exports.join = function() {
+  var paths = Array.prototype.slice.call(arguments, 0);
+  return exports.normalize(filter(paths, function(p, index) {
+    if (typeof p !== 'string') {
+      throw new TypeError('Arguments to path.join must be strings');
+    }
+    return p;
+  }).join('/'));
+};
+
+
+// path.relative(from, to)
+// posix version
+exports.relative = function(from, to) {
+  from = exports.resolve(from).substr(1);
+  to = exports.resolve(to).substr(1);
+
+  function trim(arr) {
+    var start = 0;
+    for (; start < arr.length; start++) {
+      if (arr[start] !== '') break;
+    }
+
+    var end = arr.length - 1;
+    for (; end >= 0; end--) {
+      if (arr[end] !== '') break;
+    }
+
+    if (start > end) return [];
+    return arr.slice(start, end - start + 1);
+  }
+
+  var fromParts = trim(from.split('/'));
+  var toParts = trim(to.split('/'));
+
+  var length = Math.min(fromParts.length, toParts.length);
+  var samePartsLength = length;
+  for (var i = 0; i < length; i++) {
+    if (fromParts[i] !== toParts[i]) {
+      samePartsLength = i;
+      break;
+    }
+  }
+
+  var outputParts = [];
+  for (var i = samePartsLength; i < fromParts.length; i++) {
+    outputParts.push('..');
+  }
+
+  outputParts = outputParts.concat(toParts.slice(samePartsLength));
+
+  return outputParts.join('/');
+};
+
+exports.sep = '/';
+exports.delimiter = ':';
+
+exports.dirname = function (path) {
+  if (typeof path !== 'string') path = path + '';
+  if (path.length === 0) return '.';
+  var code = path.charCodeAt(0);
+  var hasRoot = code === 47 /*/*/;
+  var end = -1;
+  var matchedSlash = true;
+  for (var i = path.length - 1; i >= 1; --i) {
+    code = path.charCodeAt(i);
+    if (code === 47 /*/*/) {
+        if (!matchedSlash) {
+          end = i;
+          break;
+        }
+      } else {
+      // We saw the first non-path separator
+      matchedSlash = false;
+    }
+  }
+
+  if (end === -1) return hasRoot ? '/' : '.';
+  if (hasRoot && end === 1) {
+    // return '//';
+    // Backwards-compat fix:
+    return '/';
+  }
+  return path.slice(0, end);
+};
+
+function basename(path) {
+  if (typeof path !== 'string') path = path + '';
+
+  var start = 0;
+  var end = -1;
+  var matchedSlash = true;
+  var i;
+
+  for (i = path.length - 1; i >= 0; --i) {
+    if (path.charCodeAt(i) === 47 /*/*/) {
+        // If we reached a path separator that was not part of a set of path
+        // separators at the end of the string, stop now
+        if (!matchedSlash) {
+          start = i + 1;
+          break;
+        }
+      } else if (end === -1) {
+      // We saw the first non-path separator, mark this as the end of our
+      // path component
+      matchedSlash = false;
+      end = i + 1;
+    }
+  }
+
+  if (end === -1) return '';
+  return path.slice(start, end);
+}
+
+// Uses a mixed approach for backwards-compatibility, as ext behavior changed
+// in new Node.js versions, so only basename() above is backported here
+exports.basename = function (path, ext) {
+  var f = basename(path);
+  if (ext && f.substr(-1 * ext.length) === ext) {
+    f = f.substr(0, f.length - ext.length);
+  }
+  return f;
+};
+
+exports.extname = function (path) {
+  if (typeof path !== 'string') path = path + '';
+  var startDot = -1;
+  var startPart = 0;
+  var end = -1;
+  var matchedSlash = true;
+  // Track the state of characters (if any) we see before our first dot and
+  // after any path separator we find
+  var preDotState = 0;
+  for (var i = path.length - 1; i >= 0; --i) {
+    var code = path.charCodeAt(i);
+    if (code === 47 /*/*/) {
+        // If we reached a path separator that was not part of a set of path
+        // separators at the end of the string, stop now
+        if (!matchedSlash) {
+          startPart = i + 1;
+          break;
+        }
+        continue;
+      }
+    if (end === -1) {
+      // We saw the first non-path separator, mark this as the end of our
+      // extension
+      matchedSlash = false;
+      end = i + 1;
+    }
+    if (code === 46 /*.*/) {
+        // If this is our first dot, mark it as the start of our extension
+        if (startDot === -1)
+          startDot = i;
+        else if (preDotState !== 1)
+          preDotState = 1;
+    } else if (startDot !== -1) {
+      // We saw a non-dot and non-path separator before our dot, so we should
+      // have a good chance at having a non-empty extension
+      preDotState = -1;
+    }
+  }
+
+  if (startDot === -1 || end === -1 ||
+      // We saw a non-dot character immediately before the dot
+      preDotState === 0 ||
+      // The (right-most) trimmed path component is exactly '..'
+      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
+    return '';
+  }
+  return path.slice(startDot, end);
+};
+
+function filter (xs, f) {
+    if (xs.filter) return xs.filter(f);
+    var res = [];
+    for (var i = 0; i < xs.length; i++) {
+        if (f(xs[i], i, xs)) res.push(xs[i]);
+    }
+    return res;
+}
+
+// String.prototype.substr - negative index don't work in IE8
+var substr = 'ab'.substr(-1) === 'b'
+    ? function (str, start, len) { return str.substr(start, len) }
+    : function (str, start, len) {
+        if (start < 0) start = str.length + start;
+        return str.substr(start, len);
+    }
+;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js")))
+
+/***/ }),
+
+/***/ "./node_modules/process/browser.js":
+/*!*****************************************!*\
+  !*** ./node_modules/process/browser.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// shim for using process in browser
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things.  But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals.  It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+function defaultSetTimout() {
+    throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout () {
+    throw new Error('clearTimeout has not been defined');
+}
+(function () {
+    try {
+        if (typeof setTimeout === 'function') {
+            cachedSetTimeout = setTimeout;
+        } else {
+            cachedSetTimeout = defaultSetTimout;
+        }
+    } catch (e) {
+        cachedSetTimeout = defaultSetTimout;
+    }
+    try {
+        if (typeof clearTimeout === 'function') {
+            cachedClearTimeout = clearTimeout;
+        } else {
+            cachedClearTimeout = defaultClearTimeout;
+        }
+    } catch (e) {
+        cachedClearTimeout = defaultClearTimeout;
+    }
+} ())
+function runTimeout(fun) {
+    if (cachedSetTimeout === setTimeout) {
+        //normal enviroments in sane situations
+        return setTimeout(fun, 0);
+    }
+    // if setTimeout wasn't available but was latter defined
+    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+        cachedSetTimeout = setTimeout;
+        return setTimeout(fun, 0);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedSetTimeout(fun, 0);
+    } catch(e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+            return cachedSetTimeout.call(null, fun, 0);
+        } catch(e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+            return cachedSetTimeout.call(this, fun, 0);
+        }
+    }
+
+
+}
+function runClearTimeout(marker) {
+    if (cachedClearTimeout === clearTimeout) {
+        //normal enviroments in sane situations
+        return clearTimeout(marker);
+    }
+    // if clearTimeout wasn't available but was latter defined
+    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+        cachedClearTimeout = clearTimeout;
+        return clearTimeout(marker);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedClearTimeout(marker);
+    } catch (e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
+            return cachedClearTimeout.call(null, marker);
+        } catch (e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+            return cachedClearTimeout.call(this, marker);
+        }
+    }
+
+
+
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+    if (!draining || !currentQueue) {
+        return;
+    }
+    draining = false;
+    if (currentQueue.length) {
+        queue = currentQueue.concat(queue);
+    } else {
+        queueIndex = -1;
+    }
+    if (queue.length) {
+        drainQueue();
+    }
+}
+
+function drainQueue() {
+    if (draining) {
+        return;
+    }
+    var timeout = runTimeout(cleanUpNextTick);
+    draining = true;
+
+    var len = queue.length;
+    while(len) {
+        currentQueue = queue;
+        queue = [];
+        while (++queueIndex < len) {
+            if (currentQueue) {
+                currentQueue[queueIndex].run();
+            }
+        }
+        queueIndex = -1;
+        len = queue.length;
+    }
+    currentQueue = null;
+    draining = false;
+    runClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+    var args = new Array(arguments.length - 1);
+    if (arguments.length > 1) {
+        for (var i = 1; i < arguments.length; i++) {
+            args[i - 1] = arguments[i];
+        }
+    }
+    queue.push(new Item(fun, args));
+    if (queue.length === 1 && !draining) {
+        runTimeout(drainQueue);
+    }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+    this.fun = fun;
+    this.array = array;
+}
+Item.prototype.run = function () {
+    this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
+
+process.listeners = function (name) { return [] }
+
+process.binding = function (name) {
+    throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+    throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
+
+
+/***/ }),
+
+/***/ "./node_modules/stylis/stylis.js":
+/*!***************************************!*\
+  !*** ./node_modules/stylis/stylis.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/*
+ *          __        ___
+ *    _____/ /___  __/ (_)____
+ *   / ___/ __/ / / / / / ___/
+ *  (__  ) /_/ /_/ / / (__  )
+ * /____/\__/\__, /_/_/____/
+ *          /____/
+ *
+ * light - weight css preprocessor @licence MIT
+ */
+(function (factory) {/* eslint-disable */
+	 true ? (module['exports'] = factory(null)) :
+		undefined
+}(/** @param {*=} options */function factory (options) {/* eslint-disable */
+
+	'use strict'
+
+	/**
+	 * Notes
+	 *
+	 * The ['<method name>'] pattern is used to support closure compiler
+	 * the jsdoc signatures are also used to the same effect
+	 *
+	 * ----
+	 *
+	 * int + int + int === n4 [faster]
+	 *
+	 * vs
+	 *
+	 * int === n1 && int === n2 && int === n3
+	 *
+	 * ----
+	 *
+	 * switch (int) { case ints...} [faster]
+	 *
+	 * vs
+	 *
+	 * if (int == 1 && int === 2 ...)
+	 *
+	 * ----
+	 *
+	 * The (first*n1 + second*n2 + third*n3) format used in the property parser
+	 * is a simple way to hash the sequence of characters
+	 * taking into account the index they occur in
+	 * since any number of 3 character sequences could produce duplicates.
+	 *
+	 * On the other hand sequences that are directly tied to the index of the character
+	 * resolve a far more accurate measure, it's also faster
+	 * to evaluate one condition in a switch statement
+	 * than three in an if statement regardless of the added math.
+	 *
+	 * This allows the vendor prefixer to be both small and fast.
+	 */
+
+	var nullptn = /^\0+/g /* matches leading null characters */
+	var formatptn = /[\0\r\f]/g /* matches new line, null and formfeed characters */
+	var colonptn = /: */g /* splits animation rules */
+	var cursorptn = /zoo|gra/ /* assert cursor varient */
+	var transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */
+	var animationptn = /,+\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */
+	var propertiesptn = / +\s*(?![^(]*[)])/g /* animation properties */
+	var elementptn = / *[\0] */g /* selector elements */
+	var selectorptn = /,\r+?/g /* splits selectors */
+	var andptn = /([\t\r\n ])*\f?&/g /* match & */
+	var escapeptn = /:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g /* matches :global(.*) */
+	var invalidptn = /\W+/g /* removes invalid characters from keyframes */
+	var keyframeptn = /@(k\w+)\s*(\S*)\s*/ /* matches @keyframes $1 */
+	var plcholdrptn = /::(place)/g /* match ::placeholder varient */
+	var readonlyptn = /:(read-only)/g /* match :read-only varient */
+	var beforeptn = /\s+(?=[{\];=:>])/g /* matches \s before ] ; = : */
+	var afterptn = /([[}=:>])\s+/g /* matches \s after characters [ } = : */
+	var tailptn = /(\{[^{]+?);(?=\})/g /* matches tail semi-colons ;} */
+	var whiteptn = /\s{2,}/g /* matches repeating whitespace */
+	var pseudoptn = /([^\(])(:+) */g /* pseudo element */
+	var writingptn = /[svh]\w+-[tblr]{2}/ /* match writing mode property values */
+	var gradientptn = /([\w-]+t\()/g /* match *gradient property */
+	var supportsptn = /\(\s*(.*)\s*\)/g /* match supports (groups) */
+	var propertyptn = /([\s\S]*?);/g /* match properties leading semicolon */
+	var selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */
+	var pseudofmt = /[^]*?(:[rp][el]a[\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */
+	var trimptn = /[ \t]+$/ /* match tail whitspace */
+	var dimensionptn = /stretch|:\s*\w+\-(?:conte|avail)/ /* match max/min/fit-content, fill-available */
+	var imgsrcptn = /([^-])(image-set\()/
+
+	/* vendors */
+	var webkit = '-webkit-'
+	var moz = '-moz-'
+	var ms = '-ms-'
+
+	/* character codes */
+	var SEMICOLON = 59 /* ; */
+	var CLOSEBRACES = 125 /* } */
+	var OPENBRACES = 123 /* { */
+	var OPENPARENTHESES = 40 /* ( */
+	var CLOSEPARENTHESES = 41 /* ) */
+	var OPENBRACKET = 91 /* [ */
+	var CLOSEBRACKET = 93 /* ] */
+	var NEWLINE = 10 /* \n */
+	var CARRIAGE = 13 /* \r */
+	var TAB = 9 /* \t */
+	var AT = 64 /* @ */
+	var SPACE = 32 /*   */
+	var AND = 38 /* & */
+	var DASH = 45 /* - */
+	var UNDERSCORE = 95 /* _ */
+	var STAR = 42 /* * */
+	var COMMA = 44 /* , */
+	var COLON = 58 /* : */
+	var SINGLEQUOTE = 39 /* ' */
+	var DOUBLEQUOTE = 34 /* " */
+	var FOWARDSLASH = 47 /* / */
+	var GREATERTHAN = 62 /* > */
+	var PLUS = 43 /* + */
+	var TILDE = 126 /* ~ */
+	var NULL = 0 /* \0 */
+	var FORMFEED = 12 /* \f */
+	var VERTICALTAB = 11 /* \v */
+
+	/* special identifiers */
+	var KEYFRAME = 107 /* k */
+	var MEDIA = 109 /* m */
+	var SUPPORTS = 115 /* s */
+	var PLACEHOLDER = 112 /* p */
+	var READONLY = 111 /* o */
+	var IMPORT = 105 /* <at>i */
+	var CHARSET = 99 /* <at>c */
+	var DOCUMENT = 100 /* <at>d */
+	var PAGE = 112 /* <at>p */
+
+	var column = 1 /* current column */
+	var line = 1 /* current line numebr */
+	var pattern = 0 /* :pattern */
+
+	var cascade = 1 /* #id h1 h2 vs h1#id h2#id  */
+	var prefix = 1 /* vendor prefix */
+	var escape = 1 /* escape :global() pattern */
+	var compress = 0 /* compress output */
+	var semicolon = 0 /* no/semicolon option */
+	var preserve = 0 /* preserve empty selectors */
+
+	/* empty reference */
+	var array = []
+
+	/* plugins */
+	var plugins = []
+	var plugged = 0
+	var should = null
+
+	/* plugin context */
+	var POSTS = -2
+	var PREPS = -1
+	var UNKWN = 0
+	var PROPS = 1
+	var BLCKS = 2
+	var ATRUL = 3
+
+	/* plugin newline context */
+	var unkwn = 0
+
+	/* keyframe animation */
+	var keyed = 1
+	var key = ''
+
+	/* selector namespace */
+	var nscopealt = ''
+	var nscope = ''
+
+	/**
+	 * Compile
+	 *
+	 * @param {Array<string>} parent
+	 * @param {Array<string>} current
+	 * @param {string} body
+	 * @param {number} id
+	 * @param {number} depth
+	 * @return {string}
+	 */
+	function compile (parent, current, body, id, depth) {
+		var bracket = 0 /* brackets [] */
+		var comment = 0 /* comments /* // or /* */
+		var parentheses = 0 /* functions () */
+		var quote = 0 /* quotes '', "" */
+
+		var first = 0 /* first character code */
+		var second = 0 /* second character code */
+		var code = 0 /* current character code */
+		var tail = 0 /* previous character code */
+		var trail = 0 /* character before previous code */
+		var peak = 0 /* previous non-whitespace code */
+
+		var counter = 0 /* count sequence termination */
+		var context = 0 /* track current context */
+		var atrule = 0 /* track @at-rule context */
+		var pseudo = 0 /* track pseudo token index */
+		var caret = 0 /* current character index */
+		var format = 0 /* control character formating context */
+		var insert = 0 /* auto semicolon insertion */
+		var invert = 0 /* inverted selector pattern */
+		var length = 0 /* generic length address */
+		var eof = body.length /* end of file(length) */
+		var eol = eof - 1 /* end of file(characters) */
+
+		var char = '' /* current character */
+		var chars = '' /* current buffer of characters */
+		var child = '' /* next buffer of characters */
+		var out = '' /* compiled body */
+		var children = '' /* compiled children */
+		var flat = '' /* compiled leafs */
+		var selector /* generic selector address */
+		var result /* generic address */
+
+		// ...build body
+		while (caret < eof) {
+			code = body.charCodeAt(caret)
+
+			// eof varient
+			if (caret === eol) {
+				// last character + noop context, add synthetic padding for noop context to terminate
+				if (comment + quote + parentheses + bracket !== 0) {
+					if (comment !== 0) {
+						code = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH
+					}
+
+					quote = parentheses = bracket = 0
+					eof++
+					eol++
+				}
+			}
+
+			if (comment + quote + parentheses + bracket === 0) {
+				// eof varient
+				if (caret === eol) {
+					if (format > 0) {
+						chars = chars.replace(formatptn, '')
+					}
+
+					if (chars.trim().length > 0) {
+						switch (code) {
+							case SPACE:
+							case TAB:
+							case SEMICOLON:
+							case CARRIAGE:
+							case NEWLINE: {
+								break
+							}
+							default: {
+								chars += body.charAt(caret)
+							}
+						}
+
+						code = SEMICOLON
+					}
+				}
+
+				// auto semicolon insertion
+				if (insert === 1) {
+					switch (code) {
+						// false flags
+						case OPENBRACES:
+						case CLOSEBRACES:
+						case SEMICOLON:
+						case DOUBLEQUOTE:
+						case SINGLEQUOTE:
+						case OPENPARENTHESES:
+						case CLOSEPARENTHESES:
+						case COMMA: {
+							insert = 0
+						}
+						// ignore
+						case TAB:
+						case CARRIAGE:
+						case NEWLINE:
+						case SPACE: {
+							break
+						}
+						// valid
+						default: {
+							insert = 0
+							length = caret
+							first = code
+							caret--
+							code = SEMICOLON
+
+							while (length < eof) {
+								switch (body.charCodeAt(length++)) {
+									case NEWLINE:
+									case CARRIAGE:
+									case SEMICOLON: {
+										++caret
+										code = first
+										length = eof
+										break
+									}
+									case COLON: {
+										if (format > 0) {
+											++caret
+											code = first
+										}
+									}
+									case OPENBRACES: {
+										length = eof
+									}
+								}
+							}
+						}
+					}
+				}
+
+				// token varient
+				switch (code) {
+					case OPENBRACES: {
+						chars = chars.trim()
+						first = chars.charCodeAt(0)
+						counter = 1
+						length = ++caret
+
+						while (caret < eof) {
+							switch (code = body.charCodeAt(caret)) {
+								case OPENBRACES: {
+									counter++
+									break
+								}
+								case CLOSEBRACES: {
+									counter--
+									break
+								}
+								case FOWARDSLASH: {
+									switch (second = body.charCodeAt(caret + 1)) {
+										// /*, //
+										case STAR:
+										case FOWARDSLASH: {
+											caret = delimited(second, caret, eol, body)
+										}
+									}
+									break
+								}
+								// given "[" === 91 & "]" === 93 hence forth 91 + 1 + 1 === 93
+								case OPENBRACKET: {
+									code++
+								}
+								// given "(" === 40 & ")" === 41 hence forth 40 + 1 === 41
+								case OPENPARENTHESES: {
+									code++
+								}
+								// quote tail delimiter is identical to the head delimiter hence noop,
+								// fallthrough clauses have been shifted to the correct tail delimiter
+								case DOUBLEQUOTE:
+								case SINGLEQUOTE: {
+									while (caret++ < eol) {
+										if (body.charCodeAt(caret) === code) {
+											break
+										}
+									}
+								}
+							}
+
+							if (counter === 0) {
+								break
+							}
+
+							caret++
+						}
+
+						child = body.substring(length, caret)
+
+						if (first === NULL) {
+							first = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)
+						}
+
+						switch (first) {
+							// @at-rule
+							case AT: {
+								if (format > 0) {
+									chars = chars.replace(formatptn, '')
+								}
+
+								second = chars.charCodeAt(1)
+
+								switch (second) {
+									case DOCUMENT:
+									case MEDIA:
+									case SUPPORTS:
+									case DASH: {
+										selector = current
+										break
+									}
+									default: {
+										selector = array
+									}
+								}
+
+								child = compile(current, selector, child, second, depth+1)
+								length = child.length
+
+								// preserve empty @at-rule
+								if (preserve > 0 && length === 0) {
+									length = chars.length
+								}
+
+								// execute plugins, @at-rule context
+								if (plugged > 0) {
+									selector = select(array, chars, invert)
+									result = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id)
+									chars = selector.join('')
+
+									if (result !== void 0) {
+										if ((length = (child = result.trim()).length) === 0) {
+											second = 0
+											child = ''
+										}
+									}
+								}
+
+								if (length > 0) {
+									switch (second) {
+										case SUPPORTS: {
+											chars = chars.replace(supportsptn, supports)
+										}
+										case DOCUMENT:
+										case MEDIA:
+										case DASH: {
+											child = chars + '{' + child + '}'
+											break
+										}
+										case KEYFRAME: {
+											chars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))
+											child = chars + '{' + child + '}'
+
+											if (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {
+												child = '@' + webkit + child + '@' + child
+											} else {
+												child = '@' + child
+											}
+											break
+										}
+										default: {
+											child = chars + child
+
+											if (id === PAGE) {
+												child = (out += child, '')
+											}
+										}
+									}
+								} else {
+									child = ''
+								}
+
+								break
+							}
+							// selector
+							default: {
+								child = compile(current, select(current, chars, invert), child, id, depth+1)
+							}
+						}
+
+						children += child
+
+						// reset
+						context = 0
+						insert = 0
+						pseudo = 0
+						format = 0
+						invert = 0
+						atrule = 0
+						chars = ''
+						child = ''
+						code = body.charCodeAt(++caret)
+						break
+					}
+					case CLOSEBRACES:
+					case SEMICOLON: {
+						chars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()
+
+						if ((length = chars.length) > 1) {
+							// monkey-patch missing colon
+							if (pseudo === 0) {
+								first = chars.charCodeAt(0)
+
+								// first character is a letter or dash, buffer has a space character
+								if ((first === DASH || first > 96 && first < 123)) {
+									length = (chars = chars.replace(' ', ':')).length
+								}
+							}
+
+							// execute plugins, property context
+							if (plugged > 0) {
+								if ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {
+									if ((length = (chars = result.trim()).length) === 0) {
+										chars = '\0\0'
+									}
+								}
+							}
+
+							first = chars.charCodeAt(0)
+							second = chars.charCodeAt(1)
+
+							switch (first) {
+								case NULL: {
+									break
+								}
+								case AT: {
+									if (second === IMPORT || second === CHARSET) {
+										flat += chars + body.charAt(caret)
+										break
+									}
+								}
+								default: {
+									if (chars.charCodeAt(length-1) === COLON) {
+										break
+									}
+
+									out += property(chars, first, second, chars.charCodeAt(2))
+								}
+							}
+						}
+
+						// reset
+						context = 0
+						insert = 0
+						pseudo = 0
+						format = 0
+						invert = 0
+						chars = ''
+						code = body.charCodeAt(++caret)
+						break
+					}
+				}
+			}
+
+			// parse characters
+			switch (code) {
+				case CARRIAGE:
+				case NEWLINE: {
+					// auto insert semicolon
+					if (comment + quote + parentheses + bracket + semicolon === 0) {
+						// valid non-whitespace characters that
+						// may precede a newline
+						switch (peak) {
+							case CLOSEPARENTHESES:
+							case SINGLEQUOTE:
+							case DOUBLEQUOTE:
+							case AT:
+							case TILDE:
+							case GREATERTHAN:
+							case STAR:
+							case PLUS:
+							case FOWARDSLASH:
+							case DASH:
+							case COLON:
+							case COMMA:
+							case SEMICOLON:
+							case OPENBRACES:
+							case CLOSEBRACES: {
+								break
+							}
+							default: {
+								// current buffer has a colon
+								if (pseudo > 0) {
+									insert = 1
+								}
+							}
+						}
+					}
+
+					// terminate line comment
+					if (comment === FOWARDSLASH) {
+						comment = 0
+					} else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {
+						format = 1
+						chars += '\0'
+					}
+
+					// execute plugins, newline context
+					if (plugged * unkwn > 0) {
+						proxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id)
+					}
+
+					// next line, reset column position
+					column = 1
+					line++
+					break
+				}
+				case SEMICOLON:
+				case CLOSEBRACES: {
+					if (comment + quote + parentheses + bracket === 0) {
+						column++
+						break
+					}
+				}
+				default: {
+					// increment column position
+					column++
+
+					// current character
+					char = body.charAt(caret)
+
+					// remove comments, escape functions, strings, attributes and prepare selectors
+					switch (code) {
+						case TAB:
+						case SPACE: {
+							if (quote + bracket + comment === 0) {
+								switch (tail) {
+									case COMMA:
+									case COLON:
+									case TAB:
+									case SPACE: {
+										char = ''
+										break
+									}
+									default: {
+										if (code !== SPACE) {
+											char = ' '
+										}
+									}
+								}
+							}
+							break
+						}
+						// escape breaking control characters
+						case NULL: {
+							char = '\\0'
+							break
+						}
+						case FORMFEED: {
+							char = '\\f'
+							break
+						}
+						case VERTICALTAB: {
+							char = '\\v'
+							break
+						}
+						// &
+						case AND: {
+							// inverted selector pattern i.e html &
+							if (quote + comment + bracket === 0 && cascade > 0) {
+								invert = 1
+								format = 1
+								char = '\f' + char
+							}
+							break
+						}
+						// ::p<l>aceholder, l
+						// :read-on<l>y, l
+						case 108: {
+							if (quote + comment + bracket + pattern === 0 && pseudo > 0) {
+								switch (caret - pseudo) {
+									// ::placeholder
+									case 2: {
+										if (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {
+											pattern = tail
+										}
+									}
+									// :read-only
+									case 8: {
+										if (trail === READONLY) {
+											pattern = trail
+										}
+									}
+								}
+							}
+							break
+						}
+						// :<pattern>
+						case COLON: {
+							if (quote + comment + bracket === 0) {
+								pseudo = caret
+							}
+							break
+						}
+						// selectors
+						case COMMA: {
+							if (comment + parentheses + quote + bracket === 0) {
+								format = 1
+								char += '\r'
+							}
+							break
+						}
+						// quotes
+						case DOUBLEQUOTE:
+						case SINGLEQUOTE: {
+							if (comment === 0) {
+								quote = quote === code ? 0 : (quote === 0 ? code : quote)
+							}
+							break
+						}
+						// attributes
+						case OPENBRACKET: {
+							if (quote + comment + parentheses === 0) {
+								bracket++
+							}
+							break
+						}
+						case CLOSEBRACKET: {
+							if (quote + comment + parentheses === 0) {
+								bracket--
+							}
+							break
+						}
+						// functions
+						case CLOSEPARENTHESES: {
+							if (quote + comment + bracket === 0) {
+								parentheses--
+							}
+							break
+						}
+						case OPENPARENTHESES: {
+							if (quote + comment + bracket === 0) {
+								if (context === 0) {
+									switch (tail*2 + trail*3) {
+										// :matches
+										case 533: {
+											break
+										}
+										// :global, :not, :nth-child etc...
+										default: {
+											counter = 0
+											context = 1
+										}
+									}
+								}
+
+								parentheses++
+							}
+							break
+						}
+						case AT: {
+							if (comment + parentheses + quote + bracket + pseudo + atrule === 0) {
+								atrule = 1
+							}
+							break
+						}
+						// block/line comments
+						case STAR:
+						case FOWARDSLASH: {
+							if (quote + bracket + parentheses > 0) {
+								break
+							}
+
+							switch (comment) {
+								// initialize line/block comment context
+								case 0: {
+									switch (code*2 + body.charCodeAt(caret+1)*3) {
+										// //
+										case 235: {
+											comment = FOWARDSLASH
+											break
+										}
+										// /*
+										case 220: {
+											length = caret
+											comment = STAR
+											break
+										}
+									}
+									break
+								}
+								// end block comment context
+								case STAR: {
+									if (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {
+										// /*<!> ... */, !
+										if (body.charCodeAt(length+2) === 33) {
+											out += body.substring(length, caret+1)
+										}
+										char = ''
+										comment = 0
+									}
+								}
+							}
+						}
+					}
+
+					// ignore comment blocks
+					if (comment === 0) {
+						// aggressive isolation mode, divide each individual selector
+						// including selectors in :not function but excluding selectors in :global function
+						if (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {
+							switch (code) {
+								case COMMA:
+								case TILDE:
+								case GREATERTHAN:
+								case PLUS:
+								case CLOSEPARENTHESES:
+								case OPENPARENTHESES: {
+									if (context === 0) {
+										// outside of an isolated context i.e nth-child(<...>)
+										switch (tail) {
+											case TAB:
+											case SPACE:
+											case NEWLINE:
+											case CARRIAGE: {
+												char = char + '\0'
+												break
+											}
+											default: {
+												char = '\0' + char + (code === COMMA ? '' : '\0')
+											}
+										}
+										format = 1
+									} else {
+										// within an isolated context, sleep untill it's terminated
+										switch (code) {
+											case OPENPARENTHESES: {
+												// :globa<l>(
+												if (pseudo + 7 === caret && tail === 108) {
+													pseudo = 0
+												}
+												context = ++counter
+												break
+											}
+											case CLOSEPARENTHESES: {
+												if ((context = --counter) === 0) {
+													format = 1
+													char += '\0'
+												}
+												break
+											}
+										}
+									}
+									break
+								}
+								case TAB:
+								case SPACE: {
+									switch (tail) {
+										case NULL:
+										case OPENBRACES:
+										case CLOSEBRACES:
+										case SEMICOLON:
+										case COMMA:
+										case FORMFEED:
+										case TAB:
+										case SPACE:
+										case NEWLINE:
+										case CARRIAGE: {
+											break
+										}
+										default: {
+											// ignore in isolated contexts
+											if (context === 0) {
+												format = 1
+												char += '\0'
+											}
+										}
+									}
+								}
+							}
+						}
+
+						// concat buffer of characters
+						chars += char
+
+						// previous non-whitespace character code
+						if (code !== SPACE && code !== TAB) {
+							peak = code
+						}
+					}
+				}
+			}
+
+			// tail character codes
+			trail = tail
+			tail = code
+
+			// visit every character
+			caret++
+		}
+
+		length = out.length
+
+		// preserve empty selector
+ 		if (preserve > 0) {
+ 			if (length === 0 && children.length === 0 && (current[0].length === 0) === false) {
+ 				if (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {
+					length = current.join(',').length + 2
+ 				}
+ 			}
+		}
+
+		if (length > 0) {
+			// cascade isolation mode?
+			selector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current
+
+			// execute plugins, block context
+			if (plugged > 0) {
+				result = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id)
+
+				if (result !== void 0 && (out = result).length === 0) {
+					return flat + out + children
+				}
+			}
+
+			out = selector.join(',') + '{' + out + '}'
+
+			if (prefix*pattern !== 0) {
+				if (prefix === 2 && !vendor(out, 2))
+					pattern = 0
+
+				switch (pattern) {
+					// ::read-only
+					case READONLY: {
+						out = out.replace(readonlyptn, ':'+moz+'$1')+out
+						break
+					}
+					// ::placeholder
+					case PLACEHOLDER: {
+						out = (
+							out.replace(plcholdrptn, '::' + webkit + 'input-$1') +
+							out.replace(plcholdrptn, '::' + moz + '$1') +
+							out.replace(plcholdrptn, ':' + ms + 'input-$1') + out
+						)
+						break
+					}
+				}
+
+				pattern = 0
+			}
+		}
+
+		return flat + out + children
+	}
+
+	/**
+	 * Select
+	 *
+	 * @param {Array<string>} parent
+	 * @param {string} current
+	 * @param {number} invert
+	 * @return {Array<string>}
+	 */
+	function select (parent, current, invert) {
+		var selectors = current.trim().split(selectorptn)
+		var out = selectors
+
+		var length = selectors.length
+		var l = parent.length
+
+		switch (l) {
+			// 0-1 parent selectors
+			case 0:
+			case 1: {
+				for (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {
+					out[i] = scope(selector, out[i], invert, l).trim()
+				}
+				break
+			}
+			// >2 parent selectors, nested
+			default: {
+				for (var i = 0, j = 0, out = []; i < length; ++i) {
+					for (var k = 0; k < l; ++k) {
+						out[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()
+					}
+				}
+			}
+		}
+
+		return out
+	}
+
+	/**
+	 * Scope
+	 *
+	 * @param {string} parent
+	 * @param {string} current
+	 * @param {number} invert
+	 * @param {number} level
+	 * @return {string}
+	 */
+	function scope (parent, current, invert, level) {
+		var selector = current
+		var code = selector.charCodeAt(0)
+
+		// trim leading whitespace
+		if (code < 33) {
+			code = (selector = selector.trim()).charCodeAt(0)
+		}
+
+		switch (code) {
+			// &
+			case AND: {
+				switch (cascade + level) {
+					case 0:
+					case 1: {
+						if (parent.trim().length === 0) {
+							break
+						}
+					}
+					default: {
+						return selector.replace(andptn, '$1'+parent.trim())
+					}
+				}
+				break
+			}
+			// :
+			case COLON: {
+				switch (selector.charCodeAt(1)) {
+					// g in :global
+					case 103: {
+						if (escape > 0 && cascade > 0) {
+							return selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)
+						}
+						break
+					}
+					default: {
+						// :hover
+						return parent.trim() + selector.replace(andptn, '$1'+parent.trim())
+					}
+				}
+			}
+			default: {
+				// html &
+				if (invert*cascade > 0 && selector.indexOf('\f') > 0) {
+					return selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())
+				}
+			}
+		}
+
+		return parent + selector
+	}
+
+	/**
+	 * Property
+	 *
+	 * @param {string} input
+	 * @param {number} first
+	 * @param {number} second
+	 * @param {number} third
+	 * @return {string}
+	 */
+	function property (input, first, second, third) {
+		var index = 0
+		var out = input + ';'
+		var hash = (first*2) + (second*3) + (third*4)
+		var cache
+
+		// animation: a, n, i characters
+		if (hash === 944) {
+			return animation(out)
+		} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {
+			return out
+		}
+
+		// vendor prefix
+		switch (hash) {
+			// text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x
+			case 1015: {
+				// text-shadow/text-align/text-transform, a
+				return out.charCodeAt(10) === 97 ? webkit + out + out : out
+			}
+			// filter/fill f, i, l
+			case 951: {
+				// filter, t
+				return out.charCodeAt(3) === 116 ? webkit + out + out : out
+			}
+			// color/column, c, o, l
+			case 963: {
+				// column, n
+				return out.charCodeAt(5) === 110 ? webkit + out + out : out
+			}
+			// box-decoration-break, b, o, x
+			case 1009: {
+				if (out.charCodeAt(4) !== 100) {
+					break
+				}
+			}
+			// mask, m, a, s
+			// clip-path, c, l, i
+			case 969:
+			case 942: {
+				return webkit + out + out
+			}
+			// appearance: a, p, p
+			case 978: {
+				return webkit + out + moz + out + out
+			}
+			// hyphens: h, y, p
+			// user-select: u, s, e
+			case 1019:
+			case 983: {
+				return webkit + out + moz + out + ms + out + out
+			}
+			// background/backface-visibility, b, a, c
+			case 883: {
+				// backface-visibility, -
+				if (out.charCodeAt(8) === DASH) {
+					return webkit + out + out
+				}
+
+				// image-set(...)
+				if (out.indexOf('image-set(', 11) > 0) {
+					return out.replace(imgsrcptn, '$1'+webkit+'$2') + out
+				}
+
+				return out
+			}
+			// flex: f, l, e
+			case 932: {
+				if (out.charCodeAt(4) === DASH) {
+					switch (out.charCodeAt(5)) {
+						// flex-grow, g
+						case 103: {
+							return webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out
+						}
+						// flex-shrink, s
+						case 115: {
+							return webkit + out + ms + out.replace('shrink', 'negative') + out
+						}
+						// flex-basis, b
+						case 98: {
+							return webkit + out + ms + out.replace('basis', 'preferred-size') + out
+						}
+					}
+				}
+
+				return webkit + out + ms + out + out
+			}
+			// order: o, r, d
+			case 964: {
+				return webkit + out + ms + 'flex' + '-' + out + out
+			}
+			// justify-items/justify-content, j, u, s
+			case 1023: {
+				// justify-content, c
+				if (out.charCodeAt(8) !== 99) {
+					break
+				}
+
+				cache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')
+				return webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out
+			}
+			// cursor, c, u, r
+			case 1005: {
+				return cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out
+			}
+			// writing-mode, w, r, i
+			case 1000: {
+				cache = out.substring(13).trim()
+				index = cache.indexOf('-') + 1
+
+				switch (cache.charCodeAt(0)+cache.charCodeAt(index)) {
+					// vertical-lr
+					case 226: {
+						cache = out.replace(writingptn, 'tb')
+						break
+					}
+					// vertical-rl
+					case 232: {
+						cache = out.replace(writingptn, 'tb-rl')
+						break
+					}
+					// horizontal-tb
+					case 220: {
+						cache = out.replace(writingptn, 'lr')
+						break
+					}
+					default: {
+						return out
+					}
+				}
+
+				return webkit + out + ms + cache + out
+			}
+			// position: sticky
+			case 1017: {
+				if (out.indexOf('sticky', 9) === -1) {
+					return out
+				}
+			}
+			// display(flex/inline-flex/inline-box): d, i, s
+			case 975: {
+				index = (out = input).length - 10
+				cache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()
+
+				switch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {
+					// inline-
+					case 203: {
+						// inline-box
+						if (cache.charCodeAt(8) < 111) {
+							break
+						}
+					}
+					// inline-box/sticky
+					case 115: {
+						out = out.replace(cache, webkit+cache)+';'+out
+						break
+					}
+					// inline-flex
+					// flex
+					case 207:
+					case 102: {
+						out = (
+							out.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+
+							out.replace(cache, webkit+cache)+';'+
+							out.replace(cache, ms+cache+'box')+';'+
+							out
+						)
+					}
+				}
+
+				return out + ';'
+			}
+			// align-items, align-center, align-self: a, l, i, -
+			case 938: {
+				if (out.charCodeAt(5) === DASH) {
+					switch (out.charCodeAt(6)) {
+						// align-items, i
+						case 105: {
+							cache = out.replace('-items', '')
+							return webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out
+						}
+						// align-self, s
+						case 115: {
+							return webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out
+						}
+						// align-content
+						default: {
+							return webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out
+						}
+					}
+				}
+				break
+			}
+			// min/max
+			case 973:
+			case 989: {
+				// min-/max- height/width/block-size/inline-size
+				if (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {
+					break
+				}
+			}
+			// height/width: min-content / width: max-content
+			case 931:
+			case 953: {
+				if (dimensionptn.test(input) === true) {
+					// stretch
+					if ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115)
+						return property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch')
+					else
+						return out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out
+				}
+				break
+			}
+			// transform, transition: t, r, a
+			case 962: {
+				out = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out
+
+				// transitions
+				if (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {
+					return out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out
+				}
+
+				break
+			}
+		}
+
+		return out
+	}
+
+	/**
+	 * Vendor
+	 *
+	 * @param {string} content
+	 * @param {number} context
+	 * @return {boolean}
+	 */
+	function vendor (content, context) {
+		var index = content.indexOf(context === 1 ? ':' : '{')
+		var key = content.substring(0, context !== 3 ? index : 10)
+		var value = content.substring(index + 1, content.length - 1)
+
+		return should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)
+	}
+
+	/**
+	 * Supports
+	 *
+	 * @param {string} match
+	 * @param {string} group
+	 * @return {string}
+	 */
+	function supports (match, group) {
+		var out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))
+
+		return out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'
+	}
+
+	/**
+	 * Animation
+	 *
+	 * @param {string} input
+	 * @return {string}
+	 */
+	function animation (input) {
+		var length = input.length
+		var index = input.indexOf(':', 9) + 1
+		var declare = input.substring(0, index).trim()
+		var out = input.substring(index, length-1).trim()
+
+		switch (input.charCodeAt(9)*keyed) {
+			case 0: {
+				break
+			}
+			// animation-*, -
+			case DASH: {
+				// animation-name, n
+				if (input.charCodeAt(10) !== 110) {
+					break
+				}
+			}
+			// animation/animation-name
+			default: {
+				// split in case of multiple animations
+				var list = out.split((out = '', animationptn))
+
+				for (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {
+					var value = list[i]
+					var items = value.split(propertiesptn)
+
+					while (value = items[index]) {
+						var peak = value.charCodeAt(0)
+
+						if (keyed === 1 && (
+							// letters
+							(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||
+							// dash but not in sequence i.e --
+							(peak === DASH && value.charCodeAt(1) !== DASH)
+						)) {
+							// not a number/function
+							switch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {
+								case 1: {
+									switch (value) {
+										// not a valid reserved keyword
+										case 'infinite': case 'alternate': case 'backwards': case 'running':
+										case 'normal': case 'forwards': case 'both': case 'none': case 'linear':
+										case 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':
+										case 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':
+										case 'initial': case 'unset': case 'step-start': case 'step-end': {
+											break
+										}
+										default: {
+											value += key
+										}
+									}
+								}
+							}
+						}
+
+						items[index++] = value
+					}
+
+					out += (i === 0 ? '' : ',') + items.join(' ')
+				}
+			}
+		}
+
+		out = declare + out + ';'
+
+		if (prefix === 1 || (prefix === 2 && vendor(out, 1)))
+			return webkit + out + out
+
+		return out
+	}
+
+	/**
+	 * Isolate
+	 *
+	 * @param {Array<string>} current
+	 */
+	function isolate (current) {
+		for (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {
+			// split individual elements in a selector i.e h1 h2 === [h1, h2]
+			var elements = current[i].split(elementptn)
+			var out = ''
+
+			for (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {
+				// empty element
+				if ((size = (element = elements[j]).length) === 0 && l > 1) {
+					continue
+				}
+
+				tail = out.charCodeAt(out.length-1)
+				code = element.charCodeAt(0)
+				padding = ''
+
+				if (j !== 0) {
+					// determine if we need padding
+					switch (tail) {
+						case STAR:
+						case TILDE:
+						case GREATERTHAN:
+						case PLUS:
+						case SPACE:
+						case OPENPARENTHESES:  {
+							break
+						}
+						default: {
+							padding = ' '
+						}
+					}
+				}
+
+				switch (code) {
+					case AND: {
+						element = padding + nscopealt
+					}
+					case TILDE:
+					case GREATERTHAN:
+					case PLUS:
+					case SPACE:
+					case CLOSEPARENTHESES:
+					case OPENPARENTHESES: {
+						break
+					}
+					case OPENBRACKET: {
+						element = padding + element + nscopealt
+						break
+					}
+					case COLON: {
+						switch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {
+							// :global
+							case 530: {
+								if (escape > 0) {
+									element = padding + element.substring(8, size - 1)
+									break
+								}
+							}
+							// :hover, :nth-child(), ...
+							default: {
+								if (j < 1 || elements[j-1].length < 1) {
+									element = padding + nscopealt + element
+								}
+							}
+						}
+						break
+					}
+					case COMMA: {
+						padding = ''
+					}
+					default: {
+						if (size > 1 && element.indexOf(':') > 0) {
+							element = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')
+						} else {
+							element = padding + element + nscopealt
+						}
+					}
+				}
+
+				out += element
+			}
+
+			selector[i] = out.replace(formatptn, '').trim()
+		}
+
+		return selector
+	}
+
+	/**
+	 * Proxy
+	 *
+	 * @param {number} context
+	 * @param {string} content
+	 * @param {Array<string>} selectors
+	 * @param {Array<string>} parents
+	 * @param {number} line
+	 * @param {number} column
+	 * @param {number} length
+	 * @param {number} id
+	 * @param {number} depth
+	 * @param {number} at
+	 * @return {(string|void|*)}
+	 */
+	function proxy (context, content, selectors, parents, line, column, length, id, depth, at) {
+		for (var i = 0, out = content, next; i < plugged; ++i) {
+			switch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {
+				case void 0:
+				case false:
+				case true:
+				case null: {
+					break
+				}
+				default: {
+					out = next
+				}
+			}
+		}
+		if (out !== content) {
+		  return out
+		}
+	}
+
+	/**
+	 * @param {number} code
+	 * @param {number} index
+	 * @param {number} length
+	 * @param {string} body
+	 * @return {number}
+	 */
+	function delimited (code, index, length, body) {
+		for (var i = index + 1; i < length; ++i) {
+			switch (body.charCodeAt(i)) {
+				// /*
+				case FOWARDSLASH: {
+					if (code === STAR) {
+						if (body.charCodeAt(i - 1) === STAR &&  index + 2 !== i) {
+							return i + 1
+						}
+					}
+					break
+				}
+				// //
+				case NEWLINE: {
+					if (code === FOWARDSLASH) {
+						return i + 1
+					}
+				}
+			}
+		}
+
+		return i
+	}
+
+	/**
+	 * @param {number} type
+	 * @param {number} index
+	 * @param {number} length
+	 * @param {number} find
+	 * @param {string} body
+	 * @return {number}
+	 */
+	function match (type, index, length, body) {
+		for (var i = index + 1; i < length; ++i) {
+			switch (body.charCodeAt(i)) {
+				case type: {
+					return i
+				}
+			}
+		}
+
+		return i
+	}
+
+	/**
+	 * Minify
+	 *
+	 * @param {(string|*)} output
+	 * @return {string}
+	 */
+	function minify (output) {
+		return output
+			.replace(formatptn, '')
+			.replace(beforeptn, '')
+			.replace(afterptn, '$1')
+			.replace(tailptn, '$1')
+			.replace(whiteptn, ' ')
+	}
+
+	/**
+	 * Use
+	 *
+	 * @param {(Array<function(...?)>|function(...?)|number|void)?} plugin
+	 */
+	function use (plugin) {
+		switch (plugin) {
+			case void 0:
+			case null: {
+				plugged = plugins.length = 0
+				break
+			}
+			default: {
+				if (typeof plugin === 'function') {
+					plugins[plugged++] = plugin
+				}	else if (typeof plugin === 'object') {
+					for (var i = 0, length = plugin.length; i < length; ++i) {
+						use(plugin[i])
+					}
+				} else {
+					unkwn = !!plugin|0
+				}
+			}
+ 		}
+
+ 		return use
+	}
+
+	/**
+	 * Set
+	 *
+	 * @param {*} options
+	 */
+	function set (options) {
+		for (var name in options) {
+			var value = options[name]
+			switch (name) {
+				case 'keyframe': keyed = value|0; break
+				case 'global': escape = value|0; break
+				case 'cascade': cascade = value|0; break
+				case 'compress': compress = value|0; break
+				case 'semicolon': semicolon = value|0; break
+				case 'preserve': preserve = value|0; break
+				case 'prefix':
+					should = null
+
+					if (!value) {
+						prefix = 0
+					} else if (typeof value !== 'function') {
+						prefix = 1
+					} else {
+						prefix = 2
+						should = value
+					}
+			}
+		}
+
+		return set
+	}
+
+	/**
+	 * Stylis
+	 *
+	 * @param {string} selector
+	 * @param {string} input
+	 * @return {*}
+	 */
+	function stylis (selector, input) {
+		if (this !== void 0 && this.constructor === stylis) {
+			return factory(selector)
+		}
+
+		// setup
+		var ns = selector
+		var code = ns.charCodeAt(0)
+
+		// trim leading whitespace
+		if (code < 33) {
+			code = (ns = ns.trim()).charCodeAt(0)
+		}
+
+		// keyframe/animation namespace
+		if (keyed > 0) {
+			key = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')
+		}
+
+		// reset, used to assert if a plugin is moneky-patching the return value
+		code = 1
+
+		// cascade/isolate
+		if (cascade === 1) {
+			nscope = ns
+		} else {
+			nscopealt = ns
+		}
+
+		var selectors = [nscope]
+		var result
+
+		// execute plugins, pre-process context
+		if (plugged > 0) {
+			result = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0)
+
+			if (result !== void 0 && typeof result === 'string') {
+				input = result
+			}
+		}
+
+		// build
+		var output = compile(array, selectors, input, 0, 0)
+
+		// execute plugins, post-process context
+		if (plugged > 0) {
+			result = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0)
+
+			// bypass minification
+			if (result !== void 0 && typeof(output = result) !== 'string') {
+				code = 0
+			}
+		}
+
+		// reset
+		key = ''
+		nscope = ''
+		nscopealt = ''
+		pattern = 0
+		line = 1
+		column = 1
+
+		return compress*code === 0 ? output : minify(output)
+	}
+
+	stylis['use'] = use
+	stylis['set'] = set
+
+	if (options !== void 0) {
+		set(options)
+	}
+
+	return stylis
+}));
+
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/global.js":
+/*!***********************************!*\
+  !*** (webpack)/buildin/global.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+	return this;
+})();
+
+try {
+	// This works if eval is allowed (see CSP)
+	g = g || new Function("return this")();
+} catch (e) {
+	// This works if the window reference is available
+	if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/module.js":
+/*!***********************************!*\
+  !*** (webpack)/buildin/module.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function(module) {
+	if (!module.webpackPolyfill) {
+		module.deprecate = function() {};
+		module.paths = [];
+		// module.parent = undefined by default
+		if (!module.children) module.children = [];
+		Object.defineProperty(module, "loaded", {
+			enumerable: true,
+			get: function() {
+				return module.l;
+			}
+		});
+		Object.defineProperty(module, "id", {
+			enumerable: true,
+			get: function() {
+				return module.i;
+			}
+		});
+		module.webpackPolyfill = 1;
+	}
+	return module;
+};
+
+
+/***/ }),
+
+/***/ "./package.json":
+/*!**********************!*\
+  !*** ./package.json ***!
+  \**********************/
+/*! exports provided: name, version, description, main, keywords, scripts, repository, author, license, standard, dependencies, devDependencies, files, yarn-upgrade-all, sideEffects, husky, default */
+/***/ (function(module) {
+
+module.exports = JSON.parse("{\"name\":\"mermaid\",\"version\":\"8.8.2\",\"description\":\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\",\"main\":\"dist/mermaid.core.js\",\"keywords\":[\"diagram\",\"markdown\",\"flowchart\",\"sequence diagram\",\"gantt\",\"class diagram\",\"git graph\"],\"scripts\":{\"build:development\":\"webpack --progress --colors\",\"build:production\":\"yarn build:development -p --config webpack.config.prod.babel.js\",\"build\":\"yarn build:development && yarn build:production\",\"postbuild\":\"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false | sed '1i---\\\\nsort: 3\\\\ntitle: Configurations\\\\n---\\\\n' > docs/getting-started/Setup.md\",\"build:watch\":\"yarn build --watch\",\"minify\":\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\",\"release\":\"yarn build\",\"lint\":\"eslint src\",\"e2e:depr\":\"yarn lint && jest e2e --config e2e/jest.config.js\",\"cypress\":\"percy exec -- cypress run\",\"e2e\":\"start-server-and-test dev http://localhost:9000/ cypress\",\"e2e-upd\":\"yarn lint && jest e2e -u --config e2e/jest.config.js\",\"dev\":\"webpack-dev-server --config webpack.config.e2e.js\",\"test\":\"yarn lint && jest src/.*\",\"test:watch\":\"jest --watch src\",\"prepublishOnly\":\"yarn build && yarn test\",\"prepare\":\"yarn build\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/knsv/mermaid\"},\"author\":\"Knut Sveidqvist\",\"license\":\"MIT\",\"standard\":{\"ignore\":[\"**/parser/*.js\",\"dist/**/*.js\",\"cypress/**/*.js\"],\"globals\":[\"page\"]},\"dependencies\":{\"@braintree/sanitize-url\":\"^3.1.0\",\"babel-eslint\":\"^10.1.0\",\"d3\":\"^5.7.0\",\"dagre\":\"^0.8.4\",\"dagre-d3\":\"^0.6.4\",\"entity-decode\":\"^2.0.2\",\"graphlib\":\"^2.1.7\",\"he\":\"^1.2.0\",\"khroma\":\"^1.1.0\",\"minify\":\"^4.1.1\",\"moment-mini\":\"^2.22.1\",\"stylis\":\"^3.5.2\"},\"devDependencies\":{\"@babel/core\":\"^7.2.2\",\"@babel/preset-env\":\"^7.8.4\",\"@babel/register\":\"^7.0.0\",\"@percy/cypress\":\"*\",\"babel-core\":\"7.0.0-bridge.0\",\"babel-jest\":\"^24.9.0\",\"babel-loader\":\"^8.0.4\",\"coveralls\":\"^3.0.2\",\"css-loader\":\"^2.0.1\",\"css-to-string-loader\":\"^0.1.3\",\"cypress\":\"4.0.1\",\"documentation\":\"^12.0.1\",\"eslint\":\"^6.3.0\",\"eslint-config-prettier\":\"^6.3.0\",\"eslint-plugin-prettier\":\"^3.1.0\",\"husky\":\"^1.2.1\",\"identity-obj-proxy\":\"^3.0.0\",\"jest\":\"^24.9.0\",\"jison\":\"^0.4.18\",\"moment\":\"^2.23.0\",\"node-sass\":\"^4.12.0\",\"prettier\":\"^1.18.2\",\"puppeteer\":\"^1.17.0\",\"sass-loader\":\"^7.1.0\",\"start-server-and-test\":\"^1.10.6\",\"terser-webpack-plugin\":\"^2.2.2\",\"webpack\":\"^4.41.2\",\"webpack-bundle-analyzer\":\"^3.7.0\",\"webpack-cli\":\"^3.1.2\",\"webpack-dev-server\":\"^3.4.1\",\"webpack-node-externals\":\"^1.7.2\",\"yarn-upgrade-all\":\"^0.5.0\"},\"files\":[\"dist\"],\"yarn-upgrade-all\":{\"ignore\":[\"babel-core\"]},\"sideEffects\":[\"**/*.css\",\"**/*.scss\"],\"husky\":{\"hooks\":{\"pre-push\":\"yarn test\"}}}");
+
+/***/ }),
+
+/***/ "./src/config.js":
+/*!***********************!*\
+  !*** ./src/config.js ***!
+  \***********************/
+/*! exports provided: defaultConfig, updateCurrentConfig, setSiteConfig, setSiteConfigDelta, updateSiteConfig, getSiteConfig, setConfig, getConfig, sanitize, addDirective, reset */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultConfig", function() { return defaultConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateCurrentConfig", function() { return updateCurrentConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSiteConfig", function() { return setSiteConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSiteConfigDelta", function() { return setSiteConfigDelta; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateSiteConfig", function() { return updateSiteConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSiteConfig", function() { return getSiteConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConfig", function() { return setConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getConfig", function() { return getConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sanitize", function() { return sanitize; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addDirective", function() { return addDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reset", function() { return reset; });
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "./src/utils.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ "./src/logger.js");
+/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./themes */ "./src/themes/index.js");
+/* harmony import */ var _defaultConfig__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultConfig */ "./src/defaultConfig.js");
+
+
+
+ // debugger;
+
+var defaultConfig = Object.freeze(_defaultConfig__WEBPACK_IMPORTED_MODULE_3__["default"]);
+var siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])({}, defaultConfig);
+var siteConfigDelta;
+var directives = [];
+var currentConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])({}, defaultConfig);
+var updateCurrentConfig = function updateCurrentConfig(siteCfg, _directives) {
+  // start with config beeing the siteConfig
+  var cfg = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])({}, siteCfg); // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);
+  // Join directives
+
+  var sumOfDirectives = {};
+
+  for (var i = 0; i < _directives.length; i++) {
+    var d = _directives[i];
+    sanitize(d); // Apply the data from the directive where the the overrides the themeVaraibles
+
+    sumOfDirectives = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])(sumOfDirectives, d);
+  }
+
+  cfg = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])(cfg, sumOfDirectives);
+
+  if (sumOfDirectives.theme) {
+    var themeVariables = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])(siteConfigDelta.themeVariables || {}, sumOfDirectives.themeVariables);
+    cfg.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_2__["default"][cfg.theme].getThemeVariables(themeVariables);
+  } // if (cfg.theme && theme[cfg.theme]) {
+  //   let tVars = assignWithDepth({}, cfg.themeVariables);
+  //   tVars = assignWithDepth(tVars, themeVariables);
+  //   const variables = theme[cfg.theme].getThemeVariables(tVars);
+  //   cfg.themeVariables = variables;
+  // }
+
+
+  currentConfig = cfg;
+  return cfg;
+};
+/**
+ *## setSiteConfig
+ *| Function | Description         | Type    | Values             |
+ *| --------- | ------------------- | ------- | ------------------ |
+ *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|
+ ***Notes:**
+ *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset
+ *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig
+ *to the defaultConfig
+ *Note: currentConfig is set in this function
+ **Default value: At default, will mirror Global Config**
+ * @param conf - the base currentConfig to use as siteConfig
+ * @returns {*} - the siteConfig
+ */
+
+var setSiteConfig = function setSiteConfig(conf) {
+  siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])({}, defaultConfig);
+  siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])(siteConfig, conf);
+
+  if (conf.theme) {
+    siteConfig.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_2__["default"][conf.theme].getThemeVariables(conf.themeVariables);
+  }
+
+  currentConfig = updateCurrentConfig(siteConfig, directives);
+  return siteConfig;
+};
+var setSiteConfigDelta = function setSiteConfigDelta(conf) {
+  siteConfigDelta = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])({}, conf);
+};
+var updateSiteConfig = function updateSiteConfig(conf) {
+  siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])(siteConfig, conf);
+  updateCurrentConfig(siteConfig, directives);
+  return siteConfig;
+};
+/**
+ *## getSiteConfig
+ *| Function | Description         | Type    |  Values             |
+ *| --------- | ------------------- | ------- |  ------------------ |
+ *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values  in siteConfig|
+ ***Notes**:
+ *Returns **any** values in siteConfig.
+ * @returns {*}
+ */
+
+var getSiteConfig = function getSiteConfig() {
+  return Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])({}, siteConfig);
+};
+/**
+ *## setConfig
+ *| Function  | Description         | Type    | Values             |
+ *| --------- | ------------------- | ------- | ------------------ |
+ *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|
+ ***Notes**:
+ *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any
+ *values found in conf with key found in siteConfig.secure will be replaced with the corresponding
+ *siteConfig value.
+ * @param conf - the potential currentConfig
+ * @returns {*} - the currentConfig merged with the sanitized conf
+ */
+
+var setConfig = function setConfig(conf) {
+  // sanitize(conf);
+  // Object.keys(conf).forEach(key => {
+  //   const manipulator = manipulators[key];
+  //   conf[key] = manipulator ? manipulator(conf[key]) : conf[key];
+  // });
+  Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])(currentConfig, conf);
+  return getConfig();
+};
+/**
+ *   ## getConfig
+ *| Function  | Description         | Type    | Return Values            |
+ *| --------- | ------------------- | ------- | ------------------ |
+ *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|
+ ***Notes**:
+ *Returns **any** the currentConfig
+ * @returns {*} - the currentConfig
+ */
+
+var getConfig = function getConfig() {
+  return Object(_utils__WEBPACK_IMPORTED_MODULE_0__["assignWithDepth"])({}, currentConfig);
+};
+/**
+ *## sanitize
+ *| Function | Description         | Type    | Values             |
+ *| --------- | ------------------- | ------- | ------------------ |
+ *| sanitize  |Sets the siteConfig to desired values. | Put Request |None|
+ *Ensures options parameter does not attempt to override siteConfig secure keys
+ *Note: modifies options in-place
+ * @param options - the potential setConfig parameter
+ */
+
+var sanitize = function sanitize(options) {
+  Object.keys(siteConfig.secure).forEach(function (key) {
+    if (typeof options[siteConfig.secure[key]] !== 'undefined') {
+      // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script
+      // can exploit the logger's attempt to stringify the value and execute arbitrary code
+      _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].debug("Denied attempt to modify a secure key ".concat(siteConfig.secure[key]), options[siteConfig.secure[key]]);
+      delete options[siteConfig.secure[key]];
+    }
+  });
+};
+var addDirective = function addDirective(directive) {
+  if (directive.fontFamily) {
+    if (!directive.themeVariables) {
+      directive.themeVariables = {
+        fontFamily: directive.fontFamily
+      };
+    } else {
+      if (!directive.themeVariables.fontFamily) {
+        directive.themeVariables = {
+          fontFamily: directive.fontFamily
+        };
+      }
+    }
+  }
+
+  directives.push(directive);
+  updateCurrentConfig(siteConfig, directives);
+};
+/**
+ *## reset
+ *| Function | Description         | Type    | Required | Values             |
+ *| --------- | ------------------- | ------- | -------- | ------------------ |
+ *| reset|Resets currentConfig to conf| Put Request | Required | None|
+ *
+ *| Parameter | Description |Type | Required | Values|
+ *| --- | --- | --- | --- | --- |
+ *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|
+ *
+ **Notes :
+ (default: current siteConfig ) (optional, default `getSiteConfig()`)
+ * @param conf  the base currentConfig to reset to (default: current siteConfig ) (optional, default `getSiteConfig()`)
+ */
+
+var reset = function reset() {
+  // Replace current config with siteConfig
+  directives = [];
+  updateCurrentConfig(siteConfig, directives);
+};
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/clusters.js":
+/*!***************************************!*\
+  !*** ./src/dagre-wrapper/clusters.js ***!
+  \***************************************/
+/*! exports provided: insertCluster, getClusterTitleWidth, clear, positionCluster */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertCluster", function() { return insertCluster; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getClusterTitleWidth", function() { return getClusterTitleWidth; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "positionCluster", function() { return positionCluster; });
+/* harmony import */ var _intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect/intersect-rect */ "./src/dagre-wrapper/intersect/intersect-rect.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ "./src/logger.js");
+/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createLabel */ "./src/dagre-wrapper/createLabel.js");
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ "./src/config.js");
+
+ // eslint-disable-line
+
+
+
+
+
+var rect = function rect(parent, node) {
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].trace('Creating subgraph rect for ', node.id, node); // Add outer g element
+
+  var shapeSvg = parent.insert('g').attr('class', 'cluster').attr('id', node.id); // add the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child'); // Create the label and insert it after the rect
+
+  var label = shapeSvg.insert('g').attr('class', 'cluster-label');
+  var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_2__["default"])(node.labelText, node.labelStyle, undefined, true)); // Get the size of the label
+
+  var bbox = text.getBBox();
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.htmlLabels) {
+    var div = text.children[0];
+    var dv = Object(d3__WEBPACK_IMPORTED_MODULE_3__["select"])(text);
+    bbox = div.getBoundingClientRect();
+    dv.attr('width', bbox.width);
+    dv.attr('height', bbox.height);
+  }
+
+  var padding = 0 * node.padding;
+  var halfPadding = padding / 2;
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].trace('Data ', node, JSON.stringify(node)); // center the rect around its coordinate
+
+  rect.attr('rx', node.rx).attr('ry', node.ry).attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding).attr('width', node.width + padding).attr('height', node.height + padding); // Center the label
+
+  label.attr('transform', 'translate(' + (node.x - bbox.width / 2) + ', ' + (node.y - node.height / 2 - node.padding / 3 + 3) + ')');
+  var rectBox = rect.node().getBBox();
+  node.width = rectBox.width;
+  node.height = rectBox.height;
+
+  node.intersect = function (point) {
+    return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__["default"])(node, point);
+  };
+
+  return shapeSvg;
+};
+/**
+ * Non visiable cluster where the note is group with its
+ */
+
+
+var noteGroup = function noteGroup(parent, node) {
+  // Add outer g element
+  var shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id); // add the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child');
+  var padding = 0 * node.padding;
+  var halfPadding = padding / 2; // center the rect around its coordinate
+
+  rect.attr('rx', node.rx).attr('ry', node.ry).attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding).attr('width', node.width + padding).attr('height', node.height + padding).attr('fill', 'none');
+  var rectBox = rect.node().getBBox();
+  node.width = rectBox.width;
+  node.height = rectBox.height;
+
+  node.intersect = function (point) {
+    return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__["default"])(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var roundedWithTitle = function roundedWithTitle(parent, node) {
+  // Add outer g element
+  var shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id); // add the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child'); // Create the label and insert it after the rect
+
+  var label = shapeSvg.insert('g').attr('class', 'cluster-label');
+  var innerRect = shapeSvg.append('rect');
+  var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_2__["default"])(node.labelText, node.labelStyle, undefined, true)); // Get the size of the label
+
+  var bbox = text.getBBox();
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.htmlLabels) {
+    var div = text.children[0];
+    var dv = Object(d3__WEBPACK_IMPORTED_MODULE_3__["select"])(text);
+    bbox = div.getBoundingClientRect();
+    dv.attr('width', bbox.width);
+    dv.attr('height', bbox.height);
+  }
+
+  bbox = text.getBBox();
+  var padding = 0 * node.padding;
+  var halfPadding = padding / 2; // center the rect around its coordinate
+
+  rect.attr('class', 'outer').attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding).attr('width', node.width + padding).attr('height', node.height + padding);
+  innerRect.attr('class', 'inner').attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1).attr('width', node.width + padding).attr('height', node.height + padding - bbox.height - 3); // Center the label
+
+  label.attr('transform', 'translate(' + (node.x - bbox.width / 2) + ', ' + (node.y - node.height / 2 - node.padding / 3 + (Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.htmlLabels ? 5 : 3)) + ')');
+  var rectBox = rect.node().getBBox();
+  node.width = rectBox.width;
+  node.height = rectBox.height;
+
+  node.intersect = function (point) {
+    return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__["default"])(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var divider = function divider(parent, node) {
+  // Add outer g element
+  var shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id); // add the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child');
+  var padding = 0 * node.padding;
+  var halfPadding = padding / 2; // center the rect around its coordinate
+
+  rect.attr('class', 'divider').attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2).attr('width', node.width + padding).attr('height', node.height + padding);
+  var rectBox = rect.node().getBBox();
+  node.width = rectBox.width;
+  node.height = rectBox.height;
+
+  node.intersect = function (point) {
+    return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__["default"])(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var shapes = {
+  rect: rect,
+  roundedWithTitle: roundedWithTitle,
+  noteGroup: noteGroup,
+  divider: divider
+};
+var clusterElems = {};
+var insertCluster = function insertCluster(elem, node) {
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].trace('Inserting cluster');
+  var shape = node.shape || 'rect';
+  clusterElems[node.id] = shapes[shape](elem, node);
+};
+var getClusterTitleWidth = function getClusterTitleWidth(elem, node) {
+  var label = Object(_createLabel__WEBPACK_IMPORTED_MODULE_2__["default"])(node.labelText, node.labelStyle, undefined, true);
+  elem.node().appendChild(label);
+  var width = label.getBBox().width;
+  elem.node().removeChild(label);
+  return width;
+};
+var clear = function clear() {
+  clusterElems = {};
+};
+var positionCluster = function positionCluster(node) {
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('Position cluster');
+  var el = clusterElems[node.id];
+  el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');
+};
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/createLabel.js":
+/*!******************************************!*\
+  !*** ./src/dagre-wrapper/createLabel.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ "./src/logger.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ "./src/config.js");
+
+ // eslint-disable-line
+// let vertexNode;
+// if (getConfig().flowchart.htmlLabels) {
+//   // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?
+//   const node = {
+//     label: vertexText.replace(/fa[lrsb]?:fa-[\w-]+/g, s => `<i class='${s.replace(':', ' ')}'></i>`)
+//   };
+//   vertexNode = addHtmlLabel(svg, node).node();
+//   vertexNode.parentNode.removeChild(vertexNode);
+// } else {
+//   const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+//   svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));
+//   const rows = vertexText.split(common.lineBreakRegex);
+//   for (let j = 0; j < rows.length; j++) {
+//     const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
+//     tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
+//     tspan.setAttribute('dy', '1em');
+//     tspan.setAttribute('x', '1');
+//     tspan.textContent = rows[j];
+//     svgLabel.appendChild(tspan);
+//   }
+//   vertexNode = svgLabel;
+// }
+
+
+
+function applyStyle(dom, styleFn) {
+  if (styleFn) {
+    dom.attr('style', styleFn);
+  }
+}
+
+function addHtmlLabel(node) {
+  // var fo = root.append('foreignObject').attr('width', '100000');
+  // var div = fo.append('xhtml:div');
+  // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');
+  // var label = node.label;
+  // switch (typeof label) {
+  //   case 'function':
+  //     div.insert(label);
+  //     break;
+  //   case 'object':
+  //     // Currently we assume this is a DOM object.
+  //     div.insert(function() {
+  //       return label;
+  //     });
+  //     break;
+  //   default:
+  //     div.html(label);
+  // }
+  // applyStyle(div, node.labelStyle);
+  // div.style('display', 'inline-block');
+  // // Fix for firefox
+  // div.style('white-space', 'nowrap');
+  // var client = div.node().getBoundingClientRect();
+  // fo.attr('width', client.width).attr('height', client.height);
+  var fo = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));
+  var div = fo.append('xhtml:div');
+  var label = node.label;
+  var labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';
+  div.html('<span class="' + labelClass + '">' + label + '</span>');
+  applyStyle(div, node.labelStyle);
+  div.style('display', 'inline-block'); // Fix for firefox
+
+  div.style('white-space', 'nowrap');
+  div.attr('xmlns', 'http://www.w3.org/1999/xhtml');
+  return fo.node();
+}
+
+var createLabel = function createLabel(_vertexText, style, isTitle, isNode) {
+  var vertexText = _vertexText || '';
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_2__["getConfig"])().flowchart.htmlLabels) {
+    // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?
+    vertexText = vertexText.replace(/\\n|\n/g, '<br />');
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('vertexText' + vertexText);
+    var node = {
+      isNode: isNode,
+      label: vertexText.replace(/fa[lrsb]?:fa-[\w-]+/g, function (s) {
+        return "<i class='".concat(s.replace(':', ' '), "'></i>");
+      })
+    };
+    var vertexNode = addHtmlLabel(node); // vertexNode.parentNode.removeChild(vertexNode);
+
+    return vertexNode;
+  } else {
+    var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+    svgLabel.setAttribute('style', style.replace('color:', 'fill:'));
+    var rows = [];
+
+    if (typeof vertexText === 'string') {
+      rows = vertexText.split(/\\n|\n|<br\s*\/?>/gi);
+    } else if (Array.isArray(vertexText)) {
+      rows = vertexText;
+    } else {
+      rows = [];
+    }
+
+    for (var j = 0; j < rows.length; j++) {
+      var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
+      tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
+      tspan.setAttribute('dy', '1em');
+      tspan.setAttribute('x', '0');
+
+      if (isTitle) {
+        tspan.setAttribute('class', 'title-row');
+      } else {
+        tspan.setAttribute('class', 'row');
+      }
+
+      tspan.textContent = rows[j].trim();
+      svgLabel.appendChild(tspan);
+    }
+
+    return svgLabel;
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (createLabel);
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/edges.js":
+/*!************************************!*\
+  !*** ./src/dagre-wrapper/edges.js ***!
+  \************************************/
+/*! exports provided: clear, insertEdgeLabel, positionEdgeLabel, intersection, insertEdge */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertEdgeLabel", function() { return insertEdgeLabel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "positionEdgeLabel", function() { return positionEdgeLabel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "intersection", function() { return intersection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertEdge", function() { return insertEdge; });
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ "./src/logger.js");
+/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createLabel */ "./src/dagre-wrapper/createLabel.js");
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./src/utils.js");
+ // eslint-disable-line
+
+
+
+
+ // import { calcLabelPosition } from '../utils';
+
+var edgeLabels = {};
+var terminalLabels = {};
+var clear = function clear() {
+  edgeLabels = {};
+  terminalLabels = {};
+};
+var insertEdgeLabel = function insertEdgeLabel(elem, edge) {
+  // Create the actual text element
+  var labelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__["default"])(edge.label, edge.labelStyle); // Create outer g, edgeLabel, this will be positioned after graph layout
+
+  var edgeLabel = elem.insert('g').attr('class', 'edgeLabel'); // Create inner g, label, this will be positioned now for centering the text
+
+  var label = edgeLabel.insert('g').attr('class', 'label');
+  label.node().appendChild(labelElement); // Center the label
+
+  var bbox = labelElement.getBBox();
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().flowchart.htmlLabels) {
+    var div = labelElement.children[0];
+    var dv = Object(d3__WEBPACK_IMPORTED_MODULE_2__["select"])(labelElement);
+    bbox = div.getBoundingClientRect();
+    dv.attr('width', bbox.width);
+    dv.attr('height', bbox.height);
+  }
+
+  label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')'); // Make element accessible by id for positioning
+
+  edgeLabels[edge.id] = edgeLabel; // Update the abstract data of the edge with the new information about its width and height
+
+  edge.width = bbox.width;
+  edge.height = bbox.height;
+
+  if (edge.startLabelLeft) {
+    // Create the actual text element
+    var startLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__["default"])(edge.startLabelLeft, edge.labelStyle);
+    var startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');
+    var inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');
+    inner.node().appendChild(startLabelElement);
+    var slBox = startLabelElement.getBBox();
+    inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');
+
+    if (!terminalLabels[edge.id]) {
+      terminalLabels[edge.id] = {};
+    }
+
+    terminalLabels[edge.id].startLeft = startEdgeLabelLeft;
+  }
+
+  if (edge.startLabelRight) {
+    // Create the actual text element
+    var _startLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__["default"])(edge.startLabelRight, edge.labelStyle);
+
+    var startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');
+
+    var _inner = startEdgeLabelRight.insert('g').attr('class', 'inner');
+
+    startEdgeLabelRight.node().appendChild(_startLabelElement);
+
+    _inner.node().appendChild(_startLabelElement);
+
+    var _slBox = _startLabelElement.getBBox();
+
+    _inner.attr('transform', 'translate(' + -_slBox.width / 2 + ', ' + -_slBox.height / 2 + ')');
+
+    if (!terminalLabels[edge.id]) {
+      terminalLabels[edge.id] = {};
+    }
+
+    terminalLabels[edge.id].startRight = startEdgeLabelRight;
+  }
+
+  if (edge.endLabelLeft) {
+    // Create the actual text element
+    var endLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__["default"])(edge.endLabelLeft, edge.labelStyle);
+    var endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');
+
+    var _inner2 = endEdgeLabelLeft.insert('g').attr('class', 'inner');
+
+    _inner2.node().appendChild(endLabelElement);
+
+    var _slBox2 = endLabelElement.getBBox();
+
+    _inner2.attr('transform', 'translate(' + -_slBox2.width / 2 + ', ' + -_slBox2.height / 2 + ')');
+
+    endEdgeLabelLeft.node().appendChild(endLabelElement);
+
+    if (!terminalLabels[edge.id]) {
+      terminalLabels[edge.id] = {};
+    }
+
+    terminalLabels[edge.id].endLeft = endEdgeLabelLeft;
+  }
+
+  if (edge.endLabelRight) {
+    // Create the actual text element
+    var _endLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__["default"])(edge.endLabelRight, edge.labelStyle);
+
+    var endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');
+
+    var _inner3 = endEdgeLabelRight.insert('g').attr('class', 'inner');
+
+    _inner3.node().appendChild(_endLabelElement);
+
+    var _slBox3 = _endLabelElement.getBBox();
+
+    _inner3.attr('transform', 'translate(' + -_slBox3.width / 2 + ', ' + -_slBox3.height / 2 + ')');
+
+    endEdgeLabelRight.node().appendChild(_endLabelElement);
+
+    if (!terminalLabels[edge.id]) {
+      terminalLabels[edge.id] = {};
+    }
+
+    terminalLabels[edge.id].endRight = endEdgeLabelRight;
+  }
+};
+var positionEdgeLabel = function positionEdgeLabel(edge, paths) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Moving label', edge.id, edge.label, edgeLabels[edge.id]);
+  var path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
+
+  if (edge.label) {
+    var el = edgeLabels[edge.id];
+    var x = edge.x;
+    var y = edge.y;
+
+    if (path) {
+      //   // debugger;
+      var pos = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].calcLabelPosition(path);
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ')'); // x = pos.x;
+      // y = pos.y;
+    }
+
+    el.attr('transform', 'translate(' + x + ', ' + y + ')');
+  } //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
+
+
+  if (edge.startLabelLeft) {
+    var _el = terminalLabels[edge.id].startLeft;
+    var _x = edge.x;
+    var _y = edge.y;
+
+    if (path) {
+      // debugger;
+      var _pos = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].calcTerminalLabelPosition(0, 'start_left', path);
+
+      _x = _pos.x;
+      _y = _pos.y;
+    }
+
+    _el.attr('transform', 'translate(' + _x + ', ' + _y + ')');
+  }
+
+  if (edge.startLabelRight) {
+    var _el2 = terminalLabels[edge.id].startRight;
+    var _x2 = edge.x;
+    var _y2 = edge.y;
+
+    if (path) {
+      // debugger;
+      var _pos2 = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].calcTerminalLabelPosition(0, 'start_right', path);
+
+      _x2 = _pos2.x;
+      _y2 = _pos2.y;
+    }
+
+    _el2.attr('transform', 'translate(' + _x2 + ', ' + _y2 + ')');
+  }
+
+  if (edge.endLabelLeft) {
+    var _el3 = terminalLabels[edge.id].endLeft;
+    var _x3 = edge.x;
+    var _y3 = edge.y;
+
+    if (path) {
+      // debugger;
+      var _pos3 = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].calcTerminalLabelPosition(0, 'end_left', path);
+
+      _x3 = _pos3.x;
+      _y3 = _pos3.y;
+    }
+
+    _el3.attr('transform', 'translate(' + _x3 + ', ' + _y3 + ')');
+  }
+
+  if (edge.endLabelRight) {
+    var _el4 = terminalLabels[edge.id].endRight;
+    var _x4 = edge.x;
+    var _y4 = edge.y;
+
+    if (path) {
+      // debugger;
+      var _pos4 = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].calcTerminalLabelPosition(0, 'end_right', path);
+
+      _x4 = _pos4.x;
+      _y4 = _pos4.y;
+    }
+
+    _el4.attr('transform', 'translate(' + _x4 + ', ' + _y4 + ')');
+  }
+}; // const getRelationType = function(type) {
+//   switch (type) {
+//     case stateDb.relationType.AGGREGATION:
+//       return 'aggregation';
+//     case stateDb.relationType.EXTENSION:
+//       return 'extension';
+//     case stateDb.relationType.COMPOSITION:
+//       return 'composition';
+//     case stateDb.relationType.DEPENDENCY:
+//       return 'dependency';
+//   }
+// };
+
+var outsideNode = function outsideNode(node, point) {
+  // logger.warn('Checking bounds ', node, point);
+  var x = node.x;
+  var y = node.y;
+  var dx = Math.abs(point.x - x);
+  var dy = Math.abs(point.y - y);
+  var w = node.width / 2;
+  var h = node.height / 2;
+
+  if (dx >= w || dy >= h) {
+    return true;
+  }
+
+  return false;
+};
+
+var intersection = function intersection(node, outsidePoint, insidePoint) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('intersection calc o:', outsidePoint, ' i:', insidePoint, node);
+  var x = node.x;
+  var y = node.y;
+  var dx = Math.abs(x - insidePoint.x);
+  var w = node.width / 2;
+  var r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;
+  var h = node.height / 2;
+  var edges = {
+    x1: x - w,
+    x2: x + w,
+    y1: y - h,
+    y2: y + h
+  };
+
+  if (outsidePoint.x === edges.x1 || outsidePoint.x === edges.x2 || outsidePoint.y === edges.y1 || outsidePoint.y === edges.y2) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('calc equals on edge');
+    return outsidePoint;
+  }
+
+  var Q = Math.abs(outsidePoint.y - insidePoint.y);
+  var R = Math.abs(outsidePoint.x - insidePoint.x); // log.warn();
+
+  if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {
+    // eslint-disable-line
+    // Intersection is top or bottom of rect.
+    // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
+    var q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
+    r = R * q / Q;
+    var res = {
+      x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - r,
+      y: outsidePoint.y + q
+    };
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn("topp/bott calc, Q ".concat(Q, ", q ").concat(q, ", R ").concat(R, ", r ").concat(r), res);
+    return res;
+  } else {
+    // Intersection onn sides of rect
+    // q = (Q * r) / R;
+    // q = 2;
+    // r = (R * q) / Q;
+    if (insidePoint.x < outsidePoint.x) {
+      r = outsidePoint.x - w - x;
+    } else {
+      // r = outsidePoint.x - w - x;
+      r = x - w - outsidePoint.x;
+    }
+
+    var _q = _q = Q * r / R;
+
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn("sides calc, Q ".concat(Q, ", q ").concat(_q, ", R ").concat(R, ", r ").concat(r), {
+      x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,
+      y: insidePoint.y < outsidePoint.y ? insidePoint.y + _q : insidePoint.y - _q
+    });
+    return {
+      x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,
+      y: insidePoint.y < outsidePoint.y ? insidePoint.y + _q : insidePoint.y - _q
+    };
+  }
+}; //(edgePaths, e, edge, clusterDb, diagramtype, graph)
+
+var insertEdge = function insertEdge(elem, e, edge, clusterDb, diagramType, graph) {
+  var points = edge.points;
+  var pointsHasChanged = false;
+  var tail = graph.node(e.v);
+  var head = graph.node(e.w);
+
+  if (head.intersect && tail.intersect) {
+    points = points.slice(1, edge.points.length - 1);
+    points.unshift(tail.intersect(points[0]));
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Last point', points[points.length - 1], head, head.intersect(points[points.length - 1]));
+    points.push(head.intersect(points[points.length - 1]));
+  }
+
+  if (edge.toCluster) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('edge', edge);
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('to cluster', clusterDb[edge.toCluster]);
+    points = [];
+    var lastPointOutside;
+    var isInside = false;
+    edge.points.forEach(function (point) {
+      var node = clusterDb[edge.toCluster].node;
+
+      if (!outsideNode(node, point) && !isInside) {
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('inside', edge.toCluster, point, lastPointOutside); // First point inside the rect
+
+        var inter = intersection(node, lastPointOutside, point);
+        var pointPresent = false;
+        points.forEach(function (p) {
+          pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;
+        }); // if (!pointPresent) {
+
+        if (!points.find(function (e) {
+          return e.x === inter.x && e.y === inter.y;
+        })) {
+          points.push(inter);
+        } else {
+          _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('no intersect', inter, points);
+        }
+
+        isInside = true;
+      } else {
+        if (!isInside) points.push(point);
+      }
+
+      lastPointOutside = point;
+    });
+    pointsHasChanged = true;
+  }
+
+  if (edge.fromCluster) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('edge', edge);
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('from cluster', clusterDb[edge.fromCluster]);
+    var updatedPoints = [];
+
+    var _lastPointOutside;
+
+    var _isInside = false;
+
+    for (var i = points.length - 1; i >= 0; i--) {
+      var point = points[i];
+      var node = clusterDb[edge.fromCluster].node;
+
+      if (!outsideNode(node, point) && !_isInside) {
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('inside', edge.fromCluster, point, node); // First point inside the rect
+
+        var insterection = intersection(node, _lastPointOutside, point); // logger.trace('intersect', intersection(node, lastPointOutside, point));
+
+        updatedPoints.unshift(insterection); // points.push(insterection);
+
+        _isInside = true;
+      } else {
+        // at the outside
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('Outside point', point);
+        if (!_isInside) updatedPoints.unshift(point);
+      }
+
+      _lastPointOutside = point;
+    }
+
+    points = updatedPoints;
+    pointsHasChanged = true;
+  } // The data for our line
+
+
+  var lineData = points.filter(function (p) {
+    return !Number.isNaN(p.y);
+  }); // This is the accessor function we talked about above
+
+  var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_2__["line"])().x(function (d) {
+    return d.x;
+  }).y(function (d) {
+    return d.y;
+  }).curve(d3__WEBPACK_IMPORTED_MODULE_2__["curveBasis"]); // Contruct stroke classes based on properties
+
+  var strokeClasses;
+
+  switch (edge.thickness) {
+    case 'normal':
+      strokeClasses = 'edge-thickness-normal';
+      break;
+
+    case 'thick':
+      strokeClasses = 'edge-thickness-thick';
+      break;
+
+    default:
+      strokeClasses = '';
+  }
+
+  switch (edge.pattern) {
+    case 'solid':
+      strokeClasses += ' edge-pattern-solid';
+      break;
+
+    case 'dotted':
+      strokeClasses += ' edge-pattern-dotted';
+      break;
+
+    case 'dashed':
+      strokeClasses += ' edge-pattern-dashed';
+      break;
+  }
+
+  var svgPath = elem.append('path').attr('d', lineFunction(lineData)).attr('id', edge.id).attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : '')); // DEBUG code, adds a red circle at each edge coordinate
+  // edge.points.forEach(point => {
+  //   elem
+  //     .append('circle')
+  //     .style('stroke', 'red')
+  //     .style('fill', 'red')
+  //     .attr('r', 1)
+  //     .attr('cx', point.x)
+  //     .attr('cy', point.y);
+  // });
+
+  var url = '';
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().state.arrowMarkerAbsolute) {
+    url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
+    url = url.replace(/\(/g, '\\(');
+    url = url.replace(/\)/g, '\\)');
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('arrowTypeStart', edge.arrowTypeStart);
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('arrowTypeEnd', edge.arrowTypeEnd);
+
+  switch (edge.arrowTypeStart) {
+    case 'arrow_cross':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');
+      break;
+
+    case 'arrow_point':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');
+      break;
+
+    case 'arrow_barb':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');
+      break;
+
+    case 'arrow_circle':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');
+      break;
+
+    case 'aggregation':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');
+      break;
+
+    case 'extension':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');
+      break;
+
+    case 'composition':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');
+      break;
+
+    case 'dependency':
+      svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');
+      break;
+
+    default:
+  }
+
+  switch (edge.arrowTypeEnd) {
+    case 'arrow_cross':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');
+      break;
+
+    case 'arrow_point':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');
+      break;
+
+    case 'arrow_barb':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');
+      break;
+
+    case 'arrow_circle':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');
+      break;
+
+    case 'aggregation':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');
+      break;
+
+    case 'extension':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');
+      break;
+
+    case 'composition':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');
+      break;
+
+    case 'dependency':
+      svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');
+      break;
+
+    default:
+  }
+
+  var paths = {};
+
+  if (pointsHasChanged) {
+    paths.updatedPath = points;
+  }
+
+  paths.originalPath = edge.points;
+  return paths;
+};
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/index.js":
+/*!************************************!*\
+  !*** ./src/dagre-wrapper/index.js ***!
+  \************************************/
+/*! exports provided: render */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _markers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./markers */ "./src/dagre-wrapper/markers.js");
+/* harmony import */ var _shapes_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shapes/util */ "./src/dagre-wrapper/shapes/util.js");
+/* harmony import */ var _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mermaid-graphlib */ "./src/dagre-wrapper/mermaid-graphlib.js");
+/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nodes */ "./src/dagre-wrapper/nodes.js");
+/* harmony import */ var _clusters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clusters */ "./src/dagre-wrapper/clusters.js");
+/* harmony import */ var _edges__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./edges */ "./src/dagre-wrapper/edges.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../logger */ "./src/logger.js");
+
+
+
+
+
+
+
+
+
+
+var recursiveRender = function recursiveRender(_elem, graph, diagramtype, parentCluster) {
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Graph in recursive render: XXX', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph), parentCluster);
+  var dir = graph.graph().rankdir;
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].warn('Dir in recursive render - dir:', dir);
+
+  var elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line
+
+
+  if (!graph.nodes()) {
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('No nodes found for', graph);
+  } else {
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Recursive render XXX', graph.nodes());
+  }
+
+  if (graph.edges().length > 0) {
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Recursive edges', graph.edge(graph.edges()[0]));
+  }
+
+  var clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line
+
+  var edgePaths = elem.insert('g').attr('class', 'edgePaths');
+  var edgeLabels = elem.insert('g').attr('class', 'edgeLabels');
+  var nodes = elem.insert('g').attr('class', 'nodes'); // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated
+  // to the abstract node and is later used by dagre for the layout
+
+  graph.nodes().forEach(function (v) {
+    var node = graph.node(v);
+
+    if (typeof parentCluster !== 'undefined') {
+      var data = JSON.parse(JSON.stringify(parentCluster.clusterData)); // data.clusterPositioning = true;
+
+      _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Setting data for cluster XXX (', v, ') ', data, parentCluster);
+      graph.setNode(parentCluster.id, data);
+
+      if (!graph.parent(v)) {
+        _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].warn('Setting parent', v, parentCluster.id);
+        graph.setParent(v, parentCluster.id, data);
+      }
+    }
+
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));
+
+    if (node && node.clusterNode) {
+      // const children = graph.children(v);
+      _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Cluster identified', v, node, graph.node(v));
+      var newEl = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));
+      Object(_shapes_util__WEBPACK_IMPORTED_MODULE_3__["updateNodeBounds"])(node, newEl);
+      Object(_nodes__WEBPACK_IMPORTED_MODULE_5__["setNodeElem"])(newEl, node);
+      _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].warn('Recursive render complete', newEl, node);
+    } else {
+      if (graph.children(v).length > 0) {
+        // This is a cluster but not to be rendered recusively
+        // Render as before
+        _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Cluster - the non recursive path XXX', v, node.id, node, graph);
+        _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info(Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["findNonClusterChild"])(node.id, graph));
+        _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["clusterDb"][node.id] = {
+          id: Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["findNonClusterChild"])(node.id, graph),
+          node: node
+        }; // insertCluster(clusters, graph.node(v));
+      } else {
+        _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Node - the non recursive path', v, node.id, node);
+        Object(_nodes__WEBPACK_IMPORTED_MODULE_5__["insertNode"])(nodes, graph.node(v), dir);
+      }
+    }
+  }); // Insert labels, this will insert them into the dom so that the width can be calculated
+  // Also figure out which edges point to/from clusters and adjust them accordingly
+  // Edges from/to clusters really points to the first child in the cluster.
+  // TODO: pick optimal child in the cluster to us as link anchor
+
+  graph.edges().forEach(function (e) {
+    var edge = graph.edge(e.v, e.w, e.name);
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e))); // Check if link is either from or to a cluster
+
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Fix', _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["clusterDb"], 'ids:', e.v, e.w, 'Translateing: ', _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["clusterDb"][e.v], _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["clusterDb"][e.w]);
+    Object(_edges__WEBPACK_IMPORTED_MODULE_7__["insertEdgeLabel"])(edgeLabels, edge);
+  });
+  graph.edges().forEach(function (e) {
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));
+  });
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('#############################################');
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('###                Layout                 ###');
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('#############################################');
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info(graph);
+  dagre__WEBPACK_IMPORTED_MODULE_0___default.a.layout(graph);
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Graph after layout:', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph)); // Move the nodes to the correct place
+
+  Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["sortNodesByHierarchy"])(graph).forEach(function (v) {
+    var node = graph.node(v);
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Position ' + v + ': (' + node.x, ',' + node.y, ') width: ', node.width, ' height: ', node.height);
+
+    if (node && node.clusterNode) {
+      // clusterDb[node.id].node = node;
+      Object(_nodes__WEBPACK_IMPORTED_MODULE_5__["positionNode"])(node);
+    } else {
+      // Non cluster node
+      if (graph.children(v).length > 0) {
+        // A cluster in the non-recurive way
+        // positionCluster(node);
+        Object(_clusters__WEBPACK_IMPORTED_MODULE_6__["insertCluster"])(clusters, node);
+        _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["clusterDb"][node.id].node = node;
+      } else {
+        Object(_nodes__WEBPACK_IMPORTED_MODULE_5__["positionNode"])(node);
+      }
+    }
+  }); // Move the edge labels to the correct place after layout
+
+  graph.edges().forEach(function (e) {
+    var edge = graph.edge(e);
+    _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);
+    var paths = Object(_edges__WEBPACK_IMPORTED_MODULE_7__["insertEdge"])(edgePaths, e, edge, _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["clusterDb"], diagramtype, graph);
+    Object(_edges__WEBPACK_IMPORTED_MODULE_7__["positionEdgeLabel"])(edge, paths);
+  });
+  return elem;
+};
+
+var render = function render(elem, graph, markers, diagramtype, id) {
+  Object(_markers__WEBPACK_IMPORTED_MODULE_2__["default"])(elem, markers, diagramtype, id);
+  Object(_nodes__WEBPACK_IMPORTED_MODULE_5__["clear"])();
+  Object(_edges__WEBPACK_IMPORTED_MODULE_7__["clear"])();
+  Object(_clusters__WEBPACK_IMPORTED_MODULE_6__["clear"])();
+  Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["clear"])();
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].warn('Graph at first:', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));
+  Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__["adjustClustersAndEdges"])(graph);
+  _logger__WEBPACK_IMPORTED_MODULE_8__["logger"].warn('Graph after:', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph)); // log.warn('Graph ever  after:', graphlib.json.write(graph.node('A').graph));
+
+  recursiveRender(elem, graph, diagramtype);
+}; // const shapeDefinitions = {};
+// export const addShape = ({ shapeType: fun }) => {
+//   shapeDefinitions[shapeType] = fun;
+// };
+// const arrowDefinitions = {};
+// export const addArrow = ({ arrowType: fun }) => {
+//   arrowDefinitions[arrowType] = fun;
+// };
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/intersect/index.js":
+/*!**********************************************!*\
+  !*** ./src/dagre-wrapper/intersect/index.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _intersect_node_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-node.js */ "./src/dagre-wrapper/intersect/intersect-node.js");
+/* harmony import */ var _intersect_node_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_intersect_node_js__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _intersect_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./intersect-circle.js */ "./src/dagre-wrapper/intersect/intersect-circle.js");
+/* harmony import */ var _intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./intersect-ellipse.js */ "./src/dagre-wrapper/intersect/intersect-ellipse.js");
+/* harmony import */ var _intersect_polygon_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./intersect-polygon.js */ "./src/dagre-wrapper/intersect/intersect-polygon.js");
+/* harmony import */ var _intersect_rect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./intersect-rect.js */ "./src/dagre-wrapper/intersect/intersect-rect.js");
+/*
+ * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!
+ */
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  node: _intersect_node_js__WEBPACK_IMPORTED_MODULE_0___default.a,
+  circle: _intersect_circle_js__WEBPACK_IMPORTED_MODULE_1__["default"],
+  ellipse: _intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_2__["default"],
+  polygon: _intersect_polygon_js__WEBPACK_IMPORTED_MODULE_3__["default"],
+  rect: _intersect_rect_js__WEBPACK_IMPORTED_MODULE_4__["default"]
+});
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/intersect/intersect-circle.js":
+/*!*********************************************************!*\
+  !*** ./src/dagre-wrapper/intersect/intersect-circle.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _intersect_ellipse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-ellipse */ "./src/dagre-wrapper/intersect/intersect-ellipse.js");
+
+
+function intersectCircle(node, rx, point) {
+  return Object(_intersect_ellipse__WEBPACK_IMPORTED_MODULE_0__["default"])(node, rx, rx, point);
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (intersectCircle);
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/intersect/intersect-ellipse.js":
+/*!**********************************************************!*\
+  !*** ./src/dagre-wrapper/intersect/intersect-ellipse.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+function intersectEllipse(node, rx, ry, point) {
+  // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html
+  var cx = node.x;
+  var cy = node.y;
+  var px = cx - point.x;
+  var py = cy - point.y;
+  var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);
+  var dx = Math.abs(rx * ry * px / det);
+
+  if (point.x < cx) {
+    dx = -dx;
+  }
+
+  var dy = Math.abs(rx * ry * py / det);
+
+  if (point.y < cy) {
+    dy = -dy;
+  }
+
+  return {
+    x: cx + dx,
+    y: cy + dy
+  };
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (intersectEllipse);
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/intersect/intersect-line.js":
+/*!*******************************************************!*\
+  !*** ./src/dagre-wrapper/intersect/intersect-line.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/*
+ * Returns the point at which two lines, p and q, intersect or returns
+ * undefined if they do not intersect.
+ */
+function intersectLine(p1, p2, q1, q2) {
+  // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,
+  // p7 and p473.
+  var a1, a2, b1, b2, c1, c2;
+  var r1, r2, r3, r4;
+  var denom, offset, num;
+  var x, y; // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +
+  // b1 y + c1 = 0.
+
+  a1 = p2.y - p1.y;
+  b1 = p1.x - p2.x;
+  c1 = p2.x * p1.y - p1.x * p2.y; // Compute r3 and r4.
+
+  r3 = a1 * q1.x + b1 * q1.y + c1;
+  r4 = a1 * q2.x + b1 * q2.y + c1; // Check signs of r3 and r4. If both point 3 and point 4 lie on
+  // same side of line 1, the line segments do not intersect.
+
+  if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {
+    return;
+  } // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0
+
+
+  a2 = q2.y - q1.y;
+  b2 = q1.x - q2.x;
+  c2 = q2.x * q1.y - q1.x * q2.y; // Compute r1 and r2
+
+  r1 = a2 * p1.x + b2 * p1.y + c2;
+  r2 = a2 * p2.x + b2 * p2.y + c2; // Check signs of r1 and r2. If both point 1 and point 2 lie
+  // on same side of second line segment, the line segments do
+  // not intersect.
+
+  if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {
+    return;
+  } // Line segments intersect: compute intersection point.
+
+
+  denom = a1 * b2 - a2 * b1;
+
+  if (denom === 0) {
+    return;
+  }
+
+  offset = Math.abs(denom / 2); // The denom/2 is to get rounding instead of truncating. It
+  // is added or subtracted to the numerator, depending upon the
+  // sign of the numerator.
+
+  num = b1 * c2 - b2 * c1;
+  x = num < 0 ? (num - offset) / denom : (num + offset) / denom;
+  num = a2 * c1 - a1 * c2;
+  y = num < 0 ? (num - offset) / denom : (num + offset) / denom;
+  return {
+    x: x,
+    y: y
+  };
+}
+
+function sameSign(r1, r2) {
+  return r1 * r2 > 0;
+}
+
+/* harmony default export */ __webpack_exports__["default"] = (intersectLine);
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/intersect/intersect-node.js":
+/*!*******************************************************!*\
+  !*** ./src/dagre-wrapper/intersect/intersect-node.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = intersectNode;
+
+function intersectNode(node, point) {
+  // console.info('Intersect Node');
+  return node.intersect(point);
+}
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/intersect/intersect-polygon.js":
+/*!**********************************************************!*\
+  !*** ./src/dagre-wrapper/intersect/intersect-polygon.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _intersect_line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-line */ "./src/dagre-wrapper/intersect/intersect-line.js");
+/* eslint "no-console": off */
+
+/* harmony default export */ __webpack_exports__["default"] = (intersectPolygon);
+/*
+ * Returns the point ({x, y}) at which the point argument intersects with the
+ * node argument assuming that it has the shape specified by polygon.
+ */
+
+function intersectPolygon(node, polyPoints, point) {
+  var x1 = node.x;
+  var y1 = node.y;
+  var intersections = [];
+  var minX = Number.POSITIVE_INFINITY;
+  var minY = Number.POSITIVE_INFINITY;
+
+  if (typeof polyPoints.forEach === 'function') {
+    polyPoints.forEach(function (entry) {
+      minX = Math.min(minX, entry.x);
+      minY = Math.min(minY, entry.y);
+    });
+  } else {
+    minX = Math.min(minX, polyPoints.x);
+    minY = Math.min(minY, polyPoints.y);
+  }
+
+  var left = x1 - node.width / 2 - minX;
+  var top = y1 - node.height / 2 - minY;
+
+  for (var i = 0; i < polyPoints.length; i++) {
+    var p1 = polyPoints[i];
+    var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];
+    var intersect = Object(_intersect_line__WEBPACK_IMPORTED_MODULE_0__["default"])(node, point, {
+      x: left + p1.x,
+      y: top + p1.y
+    }, {
+      x: left + p2.x,
+      y: top + p2.y
+    });
+
+    if (intersect) {
+      intersections.push(intersect);
+    }
+  }
+
+  if (!intersections.length) {
+    // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);
+    return node;
+  }
+
+  if (intersections.length > 1) {
+    // More intersections, find the one nearest to edge end point
+    intersections.sort(function (p, q) {
+      var pdx = p.x - point.x;
+      var pdy = p.y - point.y;
+      var distp = Math.sqrt(pdx * pdx + pdy * pdy);
+      var qdx = q.x - point.x;
+      var qdy = q.y - point.y;
+      var distq = Math.sqrt(qdx * qdx + qdy * qdy);
+      return distp < distq ? -1 : distp === distq ? 0 : 1;
+    });
+  }
+
+  return intersections[0];
+}
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/intersect/intersect-rect.js":
+/*!*******************************************************!*\
+  !*** ./src/dagre-wrapper/intersect/intersect-rect.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var intersectRect = function intersectRect(node, point) {
+  var x = node.x;
+  var y = node.y; // Rectangle intersection algorithm from:
+  // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes
+
+  var dx = point.x - x;
+  var dy = point.y - y;
+  var w = node.width / 2;
+  var h = node.height / 2;
+  var sx, sy;
+
+  if (Math.abs(dy) * w > Math.abs(dx) * h) {
+    // Intersection is top or bottom of rect.
+    if (dy < 0) {
+      h = -h;
+    }
+
+    sx = dy === 0 ? 0 : h * dx / dy;
+    sy = h;
+  } else {
+    // Intersection is left or right of rect.
+    if (dx < 0) {
+      w = -w;
+    }
+
+    sx = w;
+    sy = dx === 0 ? 0 : w * dy / dx;
+  }
+
+  return {
+    x: x + sx,
+    y: y + sy
+  };
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (intersectRect);
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/markers.js":
+/*!**************************************!*\
+  !*** ./src/dagre-wrapper/markers.js ***!
+  \**************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ "./src/logger.js");
+/**
+ * Setup arrow head and define the marker. The result is appended to the svg.
+ */
+ // Only add the number of markers that the diagram needs
+
+var insertMarkers = function insertMarkers(elem, markerArray, type, id) {
+  markerArray.forEach(function (markerName) {
+    markers[markerName](elem, type, id);
+  });
+};
+
+var extension = function extension(elem, type, id) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('Making markers for ', id);
+  elem.append('defs').append('marker').attr('id', type + '-extensionStart').attr('class', 'marker extension ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 1,7 L18,13 V 1 Z');
+  elem.append('defs').append('marker').attr('id', type + '-extensionEnd').attr('class', 'marker extension ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead
+};
+
+var composition = function composition(elem, type) {
+  elem.append('defs').append('marker').attr('id', type + '-compositionStart').attr('class', 'marker composition ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', type + '-compositionEnd').attr('class', 'marker composition ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+};
+
+var aggregation = function aggregation(elem, type) {
+  elem.append('defs').append('marker').attr('id', type + '-aggregationStart').attr('class', 'marker aggregation ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', type + '-aggregationEnd').attr('class', 'marker aggregation ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+};
+
+var dependency = function dependency(elem, type) {
+  elem.append('defs').append('marker').attr('id', type + '-dependencyStart').attr('class', 'marker dependency ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', type + '-dependencyEnd').attr('class', 'marker dependency ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');
+};
+
+var point = function point(elem, type) {
+  elem.append('marker').attr('id', type + '-pointEnd').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 12).attr('markerHeight', 12).attr('orient', 'auto').append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');
+  elem.append('marker').attr('id', type + '-pointStart').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', 0).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 12).attr('markerHeight', 12).attr('orient', 'auto').append('path').attr('d', 'M 0 5 L 10 10 L 10 0 z').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');
+};
+
+var circle = function circle(elem, type) {
+  elem.append('marker').attr('id', type + '-circleEnd').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', 11).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('circle').attr('cx', '5').attr('cy', '5').attr('r', '5').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');
+  elem.append('marker').attr('id', type + '-circleStart').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', -1).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('circle').attr('cx', '5').attr('cy', '5').attr('r', '5').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');
+};
+
+var cross = function cross(elem, type) {
+  elem.append('marker').attr('id', type + '-crossEnd').attr('class', 'marker cross ' + type).attr('viewBox', '0 0 11 11').attr('refX', 12).attr('refY', 5.2).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('path') // .attr('stroke', 'black')
+  .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9').attr('class', 'arrowMarkerPath').style('stroke-width', 2).style('stroke-dasharray', '1,0');
+  elem.append('marker').attr('id', type + '-crossStart').attr('class', 'marker cross ' + type).attr('viewBox', '0 0 11 11').attr('refX', -1).attr('refY', 5.2).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('path') // .attr('stroke', 'black')
+  .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9').attr('class', 'arrowMarkerPath').style('stroke-width', 2).style('stroke-dasharray', '1,0');
+};
+
+var barb = function barb(elem, type) {
+  elem.append('defs').append('marker').attr('id', type + '-barbEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 14).attr('markerUnits', 'strokeWidth').attr('orient', 'auto').append('path').attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');
+}; // TODO rename the class diagram markers to something shape descriptive and semanitc free
+
+
+var markers = {
+  extension: extension,
+  composition: composition,
+  aggregation: aggregation,
+  dependency: dependency,
+  point: point,
+  circle: circle,
+  cross: cross,
+  barb: barb
+};
+/* harmony default export */ __webpack_exports__["default"] = (insertMarkers);
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/mermaid-graphlib.js":
+/*!***********************************************!*\
+  !*** ./src/dagre-wrapper/mermaid-graphlib.js ***!
+  \***********************************************/
+/*! exports provided: clusterDb, clear, extractDecendants, validate, findNonClusterChild, adjustClustersAndEdges, extractor, sortNodesByHierarchy */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clusterDb", function() { return clusterDb; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extractDecendants", function() { return extractDecendants; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validate", function() { return validate; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findNonClusterChild", function() { return findNonClusterChild; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "adjustClustersAndEdges", function() { return adjustClustersAndEdges; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extractor", function() { return extractor; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortNodesByHierarchy", function() { return sortNodesByHierarchy; });
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ "./src/logger.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_1__);
+/**
+ * Decorates with functions required by mermaids dagre-wrapper.
+ */
+
+
+var clusterDb = {};
+var decendants = {};
+var parents = {};
+var clear = function clear() {
+  decendants = {};
+  parents = {};
+  clusterDb = {};
+};
+
+var isDecendant = function isDecendant(id, ancenstorId) {
+  // if (id === ancenstorId) return true;
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('In isDecendant', ancenstorId, ' ', id, ' = ', decendants[ancenstorId].indexOf(id) >= 0);
+  if (decendants[ancenstorId].indexOf(id) >= 0) return true;
+  return false;
+};
+
+var edgeInCluster = function edgeInCluster(edge, clusterId) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Decendants of ', clusterId, ' is ', decendants[clusterId]);
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Edge is ', edge); // Edges to/from the cluster is not in the cluster, they are in the parent
+
+  if (edge.v === clusterId) return false;
+  if (edge.w === clusterId) return false;
+
+  if (!decendants[clusterId]) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Tilt, ', clusterId, ',not in decendants');
+    return false;
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Here ');
+  if (decendants[clusterId].indexOf(edge.v) >= 0) return true;
+  if (isDecendant(edge.v, clusterId)) return true;
+  if (isDecendant(edge.w, clusterId)) return true;
+  if (decendants[clusterId].indexOf(edge.w) >= 0) return true;
+  return false;
+};
+
+var copy = function copy(clusterId, graph, newGraph, rootId) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Copying children of ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);
+  var nodes = graph.children(clusterId) || []; // Include cluster node if it is not the root
+
+  if (clusterId !== rootId) {
+    nodes.push(clusterId);
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);
+  nodes.forEach(function (node) {
+    if (graph.children(node).length > 0) {
+      copy(node, graph, newGraph, rootId);
+    } else {
+      var data = graph.node(node);
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);
+
+      newGraph.setNode(node, data);
+
+      if (rootId !== graph.parent(node)) {
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Setting parent', node, graph.parent(node));
+        newGraph.setParent(node, graph.parent(node));
+      }
+
+      if (clusterId !== rootId && node !== clusterId) {
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Setting parent', node, clusterId);
+        newGraph.setParent(node, clusterId);
+      } else {
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Not Setting parent for node=', node, 'cluster!==rootId', clusterId !== rootId, 'node!==clusterId', node !== clusterId);
+      }
+
+      var edges = graph.edges(node);
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Copying Edges', edges);
+      edges.forEach(function (edge) {
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Edge', edge);
+        var data = graph.edge(edge.v, edge.w, edge.name);
+        _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Edge data', data, rootId);
+
+        try {
+          // Do not copy edges in and out of the root cluster, they belong to the parent graph
+          if (edgeInCluster(edge, rootId)) {
+            _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Copying as ', edge.v, edge.w, data, edge.name);
+            newGraph.setEdge(edge.v, edge.w, data, edge.name);
+            _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));
+          } else {
+            _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Skipping copy of edge ', edge.v, '-->', edge.w, ' rootId: ', rootId, ' clusterId:', clusterId);
+          }
+        } catch (e) {
+          _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].error(e);
+        }
+      });
+    }
+
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Removing node', node);
+    graph.removeNode(node);
+  });
+};
+
+var extractDecendants = function extractDecendants(id, graph) {
+  // log.debug('Extracting ', id);
+  var children = graph.children(id);
+  var res = [].concat(children);
+
+  for (var i = 0; i < children.length; i++) {
+    parents[children[i]] = id;
+    res = res.concat(extractDecendants(children[i], graph));
+  }
+
+  return res;
+};
+/**
+ * Validates the graph, checking that all parent child relation points to existing nodes and that
+ * edges between nodes also ia correct. When not correct the function logs the discrepancies.
+ * @param {graphlib graph} g
+ */
+
+var validate = function validate(graph) {
+  var edges = graph.edges();
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('Edges: ', edges);
+
+  for (var i = 0; i < edges.length; i++) {
+    if (graph.children(edges[i].v).length > 0) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('The node ', edges[i].v, ' is part of and edge even though it has children');
+      return false;
+    }
+
+    if (graph.children(edges[i].w).length > 0) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('The node ', edges[i].w, ' is part of and edge even though it has children');
+      return false;
+    }
+  }
+
+  return true;
+};
+/**
+ * Finds a child that is not a cluster. When faking a edge between a node and a cluster.
+ * @param {Finds a } id
+ * @param {*} graph
+ */
+
+var findNonClusterChild = function findNonClusterChild(id, graph) {
+  // const node = graph.node(id);
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('Searching', id); // const children = graph.children(id).reverse();
+
+  var children = graph.children(id); //.reverse();
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('Searching children of id ', id, children);
+
+  if (children.length < 1) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('This is a valid node', id);
+    return id;
+  }
+
+  for (var i = 0; i < children.length; i++) {
+    var _id = findNonClusterChild(children[i], graph);
+
+    if (_id) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace('Found replacement for', id, ' => ', _id);
+      return _id;
+    }
+  }
+};
+
+var getAnchorId = function getAnchorId(id) {
+  if (!clusterDb[id]) {
+    return id;
+  } // If the cluster has no external connections
+
+
+  if (!clusterDb[id].externalConnections) {
+    return id;
+  } // Return the replacement node
+
+
+  if (clusterDb[id]) {
+    return clusterDb[id].id;
+  }
+
+  return id;
+};
+
+var adjustClustersAndEdges = function adjustClustersAndEdges(graph, depth) {
+  if (!graph || depth > 10) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Opting out, no graph ');
+    return;
+  } else {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Opting in, graph ');
+  } // Go through the nodes and for each cluster found, save a replacment node, this can be used when
+  // faking a link to a cluster
+
+
+  graph.nodes().forEach(function (id) {
+    var children = graph.children(id);
+
+    if (children.length > 0) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Cluster identified', id, ' Replacement id in edges: ', findNonClusterChild(id, graph));
+      decendants[id] = extractDecendants(id, graph);
+      clusterDb[id] = {
+        id: findNonClusterChild(id, graph),
+        clusterData: graph.node(id)
+      };
+    }
+  }); // Check incoming and outgoing edges for each cluster
+
+  graph.nodes().forEach(function (id) {
+    var children = graph.children(id);
+    var edges = graph.edges();
+
+    if (children.length > 0) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Cluster identified', id, decendants);
+      edges.forEach(function (edge) {
+        // log.debug('Edge, decendants: ', edge, decendants[id]);
+        // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)
+        if (edge.v !== id && edge.w !== id) {
+          // Any edge where either the one of the nodes is decending to the cluster but not the other
+          // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {
+          var d1 = isDecendant(edge.v, id);
+          var d2 = isDecendant(edge.w, id); // d1 xor d2 - if either d1 is true and d2 is false or the other way around
+
+          if (d1 ^ d2) {
+            _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Edge: ', edge, ' leaves cluster ', id);
+            _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Decendants of XXX ', id, ': ', decendants[id]);
+            clusterDb[id].externalConnections = true;
+          }
+        }
+      });
+    } else {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Not a cluster ', id, decendants);
+    }
+  }); // For clusters with incoming and/or outgoing edges translate those edges to a real node
+  // in the cluster inorder to fake the edge
+
+  graph.edges().forEach(function (e) {
+    var edge = graph.edge(e);
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));
+    var v = e.v;
+    var w = e.w; // Check if link is either from or to a cluster
+
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Fix XXX', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], ' --- ', clusterDb[e.w]);
+
+    if (clusterDb[e.v] || clusterDb[e.w]) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);
+      v = getAnchorId(e.v);
+      w = getAnchorId(e.w);
+      graph.removeEdge(e.v, e.w, e.name);
+      if (v !== e.v) edge.fromCluster = e.v;
+      if (w !== e.w) edge.toCluster = e.w;
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Fix Replacing with XXX', v, w, e.name);
+      graph.setEdge(v, w, edge, e.name);
+    }
+  });
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Adjusted Graph', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));
+  extractor(graph, 0);
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].trace(clusterDb); // Remove references to extracted cluster
+  // graph.edges().forEach(edge => {
+  //   if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {
+  //     graph.removeEdge(edge);
+  //   }
+  // });
+};
+var extractor = function extractor(graph, depth) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('extractor - ', depth, graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph), graph.children('D'));
+
+  if (depth > 10) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].error('Bailing out');
+    return;
+  } // For clusters without incoming and/or outgoing edges, create a new cluster-node
+  // containing the nodes and edges in the custer in a new graph
+  // for (let i = 0;)
+
+
+  var nodes = graph.nodes();
+  var hasChildren = false;
+
+  for (var i = 0; i < nodes.length; i++) {
+    var node = nodes[i];
+    var children = graph.children(node);
+    hasChildren = hasChildren || children.length > 0;
+  }
+
+  if (!hasChildren) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Done, no node has children', graph.nodes());
+    return;
+  } // const clusters = Object.keys(clusterDb);
+  // clusters.forEach(clusterId => {
+
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Nodes = ', nodes, depth);
+
+  for (var _i = 0; _i < nodes.length; _i++) {
+    var _node = nodes[_i];
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Extracting node', _node, clusterDb, clusterDb[_node] && !clusterDb[_node].externalConnections, !graph.parent(_node), graph.node(_node), graph.children('D'), ' Depth ', depth); // Note that the node might have been removed after the Object.keys call so better check
+    // that it still is in the game
+
+    if (!clusterDb[_node]) {
+      // Skip if the node is not a cluster
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Not a cluster', _node, depth); // break;
+    } else if (!clusterDb[_node].externalConnections && // !graph.parent(node) &&
+    graph.children(_node) && graph.children(_node).length > 0) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Cluster without external connections, without a parent and with children', _node, depth);
+      var graphSettings = graph.graph();
+      var clusterGraph = new graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.Graph({
+        multigraph: true,
+        compound: true
+      }).setGraph({
+        rankdir: graphSettings.rankdir === 'TB' ? 'LR' : 'TB',
+        // Todo: set proper spacing
+        nodesep: 50,
+        ranksep: 50,
+        marginx: 8,
+        marginy: 8
+      }).setDefaultEdgeLabel(function () {
+        return {};
+      });
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Old graph before copy', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));
+      copy(_node, graph, clusterGraph, _node);
+      graph.setNode(_node, {
+        clusterNode: true,
+        id: _node,
+        clusterData: clusterDb[_node].clusterData,
+        labelText: clusterDb[_node].labelText,
+        graph: clusterGraph
+      });
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('New graph after copy node: (', _node, ')', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(clusterGraph));
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Old graph after copy', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));
+    } else {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('Cluster ** ', _node, ' **not meeting the criteria !externalConnections:', !clusterDb[_node].externalConnections, ' no parent: ', !graph.parent(_node), ' children ', graph.children(_node) && graph.children(_node).length > 0, graph.children('D'), depth);
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug(clusterDb);
+    }
+  }
+
+  nodes = graph.nodes();
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn('New list of nodes', nodes);
+
+  for (var _i2 = 0; _i2 < nodes.length; _i2++) {
+    var _node2 = nodes[_i2];
+    var data = graph.node(_node2);
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].warn(' Now next level', _node2, data);
+
+    if (data.clusterNode) {
+      extractor(data.graph, depth + 1);
+    }
+  }
+};
+
+var sorter = function sorter(graph, nodes) {
+  if (nodes.length === 0) return [];
+  var result = Object.assign(nodes);
+  nodes.forEach(function (node) {
+    var children = graph.children(node);
+    var sorted = sorter(graph, children);
+    result = result.concat(sorted);
+  });
+  return result;
+};
+
+var sortNodesByHierarchy = function sortNodesByHierarchy(graph) {
+  return sorter(graph, graph.children());
+};
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/nodes.js":
+/*!************************************!*\
+  !*** ./src/dagre-wrapper/nodes.js ***!
+  \************************************/
+/*! exports provided: insertNode, setNodeElem, clear, positionNode */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertNode", function() { return insertNode; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setNodeElem", function() { return setNodeElem; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "positionNode", function() { return positionNode; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ "./src/logger.js");
+/* harmony import */ var _shapes_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shapes/util */ "./src/dagre-wrapper/shapes/util.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config.js");
+/* harmony import */ var _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./intersect/index.js */ "./src/dagre-wrapper/intersect/index.js");
+/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createLabel */ "./src/dagre-wrapper/createLabel.js");
+/* harmony import */ var _shapes_note__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shapes/note */ "./src/dagre-wrapper/shapes/note.js");
+/* harmony import */ var _diagrams_class_svgDraw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../diagrams/class/svgDraw */ "./src/diagrams/class/svgDraw.js");
+
+ // eslint-disable-line
+
+
+
+
+
+
+
+
+var question = function question(parent, node) {
+  var _labelHelper = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper.shapeSvg,
+      bbox = _labelHelper.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var s = w + h;
+  var points = [{
+    x: s / 2,
+    y: 0
+  }, {
+    x: s,
+    y: -s / 2
+  }, {
+    x: s / 2,
+    y: -s
+  }, {
+    x: 0,
+    y: -s / 2
+  }];
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('Question main (Circle)');
+  var questionElem = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, s, s, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, questionElem);
+
+  node.intersect = function (point) {
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].warn('Intersect called');
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, points, point);
+  };
+
+  return shapeSvg;
+};
+
+var hexagon = function hexagon(parent, node) {
+  var _labelHelper2 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper2.shapeSvg,
+      bbox = _labelHelper2.bbox;
+
+  var f = 4;
+  var h = bbox.height + node.padding;
+  var m = h / f;
+  var w = bbox.width + 2 * m + node.padding;
+  var points = [{
+    x: m,
+    y: 0
+  }, {
+    x: w - m,
+    y: 0
+  }, {
+    x: w,
+    y: -h / 2
+  }, {
+    x: w - m,
+    y: -h
+  }, {
+    x: m,
+    y: -h
+  }, {
+    x: 0,
+    y: -h / 2
+  }];
+  var hex = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, hex);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var rect_left_inv_arrow = function rect_left_inv_arrow(parent, node) {
+  var _labelHelper3 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper3.shapeSvg,
+      bbox = _labelHelper3.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var points = [{
+    x: -h / 2,
+    y: 0
+  }, {
+    x: w,
+    y: 0
+  }, {
+    x: w,
+    y: -h
+  }, {
+    x: -h / 2,
+    y: -h
+  }, {
+    x: 0,
+    y: -h / 2
+  }];
+  var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var lean_right = function lean_right(parent, node) {
+  var _labelHelper4 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper4.shapeSvg,
+      bbox = _labelHelper4.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var points = [{
+    x: -2 * h / 6,
+    y: 0
+  }, {
+    x: w - h / 6,
+    y: 0
+  }, {
+    x: w + 2 * h / 6,
+    y: -h
+  }, {
+    x: h / 6,
+    y: -h
+  }];
+  var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var lean_left = function lean_left(parent, node) {
+  var _labelHelper5 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper5.shapeSvg,
+      bbox = _labelHelper5.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var points = [{
+    x: 2 * h / 6,
+    y: 0
+  }, {
+    x: w + h / 6,
+    y: 0
+  }, {
+    x: w - 2 * h / 6,
+    y: -h
+  }, {
+    x: -h / 6,
+    y: -h
+  }];
+  var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var trapezoid = function trapezoid(parent, node) {
+  var _labelHelper6 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper6.shapeSvg,
+      bbox = _labelHelper6.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var points = [{
+    x: -2 * h / 6,
+    y: 0
+  }, {
+    x: w + 2 * h / 6,
+    y: 0
+  }, {
+    x: w - h / 6,
+    y: -h
+  }, {
+    x: h / 6,
+    y: -h
+  }];
+  var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var inv_trapezoid = function inv_trapezoid(parent, node) {
+  var _labelHelper7 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper7.shapeSvg,
+      bbox = _labelHelper7.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var points = [{
+    x: h / 6,
+    y: 0
+  }, {
+    x: w - h / 6,
+    y: 0
+  }, {
+    x: w + 2 * h / 6,
+    y: -h
+  }, {
+    x: -2 * h / 6,
+    y: -h
+  }];
+  var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var rect_right_inv_arrow = function rect_right_inv_arrow(parent, node) {
+  var _labelHelper8 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper8.shapeSvg,
+      bbox = _labelHelper8.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var points = [{
+    x: 0,
+    y: 0
+  }, {
+    x: w + h / 2,
+    y: 0
+  }, {
+    x: w,
+    y: -h / 2
+  }, {
+    x: w + h / 2,
+    y: -h
+  }, {
+    x: 0,
+    y: -h
+  }];
+  var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var cylinder = function cylinder(parent, node) {
+  var _labelHelper9 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper9.shapeSvg,
+      bbox = _labelHelper9.bbox;
+
+  var w = bbox.width + node.padding;
+  var rx = w / 2;
+  var ry = rx / (2.5 + w / 50);
+  var h = bbox.height + ry + node.padding;
+  var shape = 'M 0,' + ry + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 a ' + rx + ',' + ry + ' 0,0,0 ' + -w + ' 0 l 0,' + h + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 l 0,' + -h;
+  var el = shapeSvg.attr('label-offset-y', ry).insert('path', ':first-child').attr('d', shape).attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    var pos = _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].rect(node, point);
+    var x = pos.x - node.x;
+
+    if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {
+      // ellipsis equation: x*x / a*a + y*y / b*b = 1
+      // solve for y to get adjustion value for pos.y
+      var y = ry * ry * (1 - x * x / (rx * rx));
+      if (y != 0) y = Math.sqrt(y);
+      y = ry - y;
+      if (point.y - node.y > 0) y = -y;
+      pos.y += y;
+    }
+
+    return pos;
+  };
+
+  return shapeSvg;
+};
+
+var rect = function rect(parent, node) {
+  var _labelHelper10 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, 'node ' + node.classes, true),
+      shapeSvg = _labelHelper10.shapeSvg,
+      bbox = _labelHelper10.bbox,
+      halfPadding = _labelHelper10.halfPadding;
+
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].trace('Classes = ', node.classes); // add the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child');
+  rect.attr('class', 'basic label-container').attr('style', node.style).attr('rx', node.rx).attr('ry', node.ry).attr('x', -bbox.width / 2 - halfPadding).attr('y', -bbox.height / 2 - halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, rect);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].rect(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var rectWithTitle = function rectWithTitle(parent, node) {
+  // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);
+  var classes;
+
+  if (!node.classes) {
+    classes = 'node default';
+  } else {
+    classes = 'node ' + node.classes;
+  } // Add outer g element
+
+
+  var shapeSvg = parent.insert('g').attr('class', classes).attr('id', node.domId || node.id); // Create the title label and insert it after the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child'); // const innerRect = shapeSvg.insert('rect');
+
+  var innerLine = shapeSvg.insert('line');
+  var label = shapeSvg.insert('g').attr('class', 'label');
+  var text2 = node.labelText.flat();
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('Label text', text2[0]);
+  var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__["default"])(text2[0], node.labelStyle, true, true));
+  var bbox;
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().flowchart.htmlLabels) {
+    var div = text.children[0];
+    var dv = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(text);
+    bbox = div.getBoundingClientRect();
+    dv.attr('width', bbox.width);
+    dv.attr('height', bbox.height);
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('Text 2', text2);
+  var textRows = text2.slice(1, text2.length);
+  var titleBox = text.getBBox();
+  var descr = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__["default"])(textRows.join('<br/>'), node.labelStyle, true, true));
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().flowchart.htmlLabels) {
+    var _div = descr.children[0];
+
+    var _dv = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(descr);
+
+    bbox = _div.getBoundingClientRect();
+
+    _dv.attr('width', bbox.width);
+
+    _dv.attr('height', bbox.height);
+  } // bbox = label.getBBox();
+  // logger.info(descr);
+
+
+  var halfPadding = node.padding / 2;
+  Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(descr).attr('transform', 'translate( ' + ( // (titleBox.width - bbox.width) / 2 +
+  bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + ', ' + (titleBox.height + halfPadding + 5) + ')');
+  Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(text).attr('transform', 'translate( ' + ( // (titleBox.width - bbox.width) / 2 +
+  bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + ', ' + 0 + ')'); // Get the size of the label
+  // Bounding box for title and text
+
+  bbox = label.node().getBBox(); // Center the label
+
+  label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')');
+  rect.attr('class', 'outer title-state').attr('x', -bbox.width / 2 - halfPadding).attr('y', -bbox.height / 2 - halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);
+  innerLine.attr('class', 'divider').attr('x1', -bbox.width / 2 - halfPadding).attr('x2', bbox.width / 2 + halfPadding).attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, rect);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].rect(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var stadium = function stadium(parent, node) {
+  var _labelHelper11 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper11.shapeSvg,
+      bbox = _labelHelper11.bbox;
+
+  var h = bbox.height + node.padding;
+  var w = bbox.width + h / 4 + node.padding; // add the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child').attr('rx', h / 2).attr('ry', h / 2).attr('x', -w / 2).attr('y', -h / 2).attr('width', w).attr('height', h);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, rect);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].rect(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var circle = function circle(parent, node) {
+  var _labelHelper12 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper12.shapeSvg,
+      bbox = _labelHelper12.bbox,
+      halfPadding = _labelHelper12.halfPadding;
+
+  var circle = shapeSvg.insert('circle', ':first-child'); // center the circle around its coordinate
+
+  circle.attr('rx', node.rx).attr('ry', node.ry).attr('r', bbox.width / 2 + halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('Circle main');
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, circle);
+
+  node.intersect = function (point) {
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('Circle intersect', node, bbox.width / 2 + halfPadding, point);
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].circle(node, bbox.width / 2 + halfPadding, point);
+  };
+
+  return shapeSvg;
+};
+
+var subroutine = function subroutine(parent, node) {
+  var _labelHelper13 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["labelHelper"])(parent, node, undefined, true),
+      shapeSvg = _labelHelper13.shapeSvg,
+      bbox = _labelHelper13.bbox;
+
+  var w = bbox.width + node.padding;
+  var h = bbox.height + node.padding;
+  var points = [{
+    x: 0,
+    y: 0
+  }, {
+    x: w,
+    y: 0
+  }, {
+    x: w,
+    y: -h
+  }, {
+    x: 0,
+    y: -h
+  }, {
+    x: 0,
+    y: 0
+  }, {
+    x: -8,
+    y: 0
+  }, {
+    x: w + 8,
+    y: 0
+  }, {
+    x: w + 8,
+    y: -h
+  }, {
+    x: -8,
+    y: -h
+  }, {
+    x: -8,
+    y: 0
+  }];
+  var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["insertPolygonShape"])(shapeSvg, w, h, points);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, el);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].polygon(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var start = function start(parent, node) {
+  var shapeSvg = parent.insert('g').attr('class', 'node default').attr('id', node.domId || node.id);
+  var circle = shapeSvg.insert('circle', ':first-child'); // center the circle around its coordinate
+
+  circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, circle);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].circle(node, 7, point);
+  };
+
+  return shapeSvg;
+};
+
+var forkJoin = function forkJoin(parent, node, dir) {
+  var shapeSvg = parent.insert('g').attr('class', 'node default').attr('id', node.domId || node.id);
+  var width = 70;
+  var height = 10;
+
+  if (dir === 'LR') {
+    width = 10;
+    height = 70;
+  }
+
+  var shape = shapeSvg.append('rect').style('stroke', 'black').style('fill', 'black').attr('x', -1 * width / 2).attr('y', -1 * height / 2).attr('width', width).attr('height', height).attr('class', 'fork-join');
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, shape);
+  node.height = node.height + node.padding / 2;
+  node.width = node.width + node.padding / 2;
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].rect(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var end = function end(parent, node) {
+  var shapeSvg = parent.insert('g').attr('class', 'node default').attr('id', node.domId || node.id);
+  var innerCircle = shapeSvg.insert('circle', ':first-child');
+  var circle = shapeSvg.insert('circle', ':first-child');
+  circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);
+  innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, circle);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].circle(node, 7, point);
+  };
+
+  return shapeSvg;
+};
+
+var class_box = function class_box(parent, node) {
+  var halfPadding = node.padding / 2;
+  var rowPadding = 4;
+  var lineHeight = 8;
+  var classes;
+
+  if (!node.classes) {
+    classes = 'node default';
+  } else {
+    classes = 'node ' + node.classes;
+  } // Add outer g element
+
+
+  var shapeSvg = parent.insert('g').attr('class', classes).attr('id', node.domId || node.id); // Create the title label and insert it after the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child');
+  var topLine = shapeSvg.insert('line');
+  var bottomLine = shapeSvg.insert('line');
+  var maxWidth = 0;
+  var maxHeight = rowPadding;
+  var labelContainer = shapeSvg.insert('g').attr('class', 'label');
+  var verticalPos = 0;
+  var hasInterface = node.classData.annotations && node.classData.annotations[0]; // 1. Create the labels
+
+  var interfaceLabelText = node.classData.annotations[0] ? '«' + node.classData.annotations[0] + '»' : '';
+  var interfaceLabel = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__["default"])(interfaceLabelText, node.labelStyle, true, true));
+  var interfaceBBox = interfaceLabel.getBBox();
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().flowchart.htmlLabels) {
+    var div = interfaceLabel.children[0];
+    var dv = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(interfaceLabel);
+    interfaceBBox = div.getBoundingClientRect();
+    dv.attr('width', interfaceBBox.width);
+    dv.attr('height', interfaceBBox.height);
+  }
+
+  if (node.classData.annotations[0]) {
+    maxHeight += interfaceBBox.height + rowPadding;
+    maxWidth += interfaceBBox.width;
+  }
+
+  var classTitleString = node.classData.id;
+
+  if (node.classData.type !== undefined && node.classData.type !== '') {
+    classTitleString += '<' + node.classData.type + '>';
+  }
+
+  var classTitleLabel = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__["default"])(classTitleString, node.labelStyle, true, true));
+  Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(classTitleLabel).attr('class', 'classTitle');
+  var classTitleBBox = classTitleLabel.getBBox();
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().flowchart.htmlLabels) {
+    var _div2 = classTitleLabel.children[0];
+
+    var _dv2 = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(classTitleLabel);
+
+    classTitleBBox = _div2.getBoundingClientRect();
+
+    _dv2.attr('width', classTitleBBox.width);
+
+    _dv2.attr('height', classTitleBBox.height);
+  }
+
+  maxHeight += classTitleBBox.height + rowPadding;
+
+  if (classTitleBBox.width > maxWidth) {
+    maxWidth = classTitleBBox.width;
+  }
+
+  var classAttributes = [];
+  node.classData.members.forEach(function (str) {
+    var parsedText = Object(_diagrams_class_svgDraw__WEBPACK_IMPORTED_MODULE_7__["parseMember"])(str).displayText;
+    var lbl = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__["default"])(parsedText, node.labelStyle, true, true));
+    var bbox = lbl.getBBox();
+
+    if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().flowchart.htmlLabels) {
+      var _div3 = lbl.children[0];
+
+      var _dv3 = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(lbl);
+
+      bbox = _div3.getBoundingClientRect();
+
+      _dv3.attr('width', bbox.width);
+
+      _dv3.attr('height', bbox.height);
+    }
+
+    if (bbox.width > maxWidth) {
+      maxWidth = bbox.width;
+    }
+
+    maxHeight += bbox.height + rowPadding;
+    classAttributes.push(lbl);
+  });
+  maxHeight += lineHeight;
+  var classMethods = [];
+  node.classData.methods.forEach(function (str) {
+    var parsedText = Object(_diagrams_class_svgDraw__WEBPACK_IMPORTED_MODULE_7__["parseMember"])(str).displayText;
+    var lbl = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__["default"])(parsedText, node.labelStyle, true, true));
+    var bbox = lbl.getBBox();
+
+    if (Object(_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"])().flowchart.htmlLabels) {
+      var _div4 = lbl.children[0];
+
+      var _dv4 = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(lbl);
+
+      bbox = _div4.getBoundingClientRect();
+
+      _dv4.attr('width', bbox.width);
+
+      _dv4.attr('height', bbox.height);
+    }
+
+    if (bbox.width > maxWidth) {
+      maxWidth = bbox.width;
+    }
+
+    maxHeight += bbox.height + rowPadding;
+    classMethods.push(lbl);
+  });
+  maxHeight += lineHeight; // 2. Position the labels
+  // position the interface label
+
+  if (hasInterface) {
+    var _diffX = (maxWidth - interfaceBBox.width) / 2;
+
+    Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(interfaceLabel).attr('transform', 'translate( ' + (-1 * maxWidth / 2 + _diffX) + ', ' + -1 * maxHeight / 2 + ')');
+    verticalPos = interfaceBBox.height + rowPadding;
+  } // Positin the class title label
+
+
+  var diffX = (maxWidth - classTitleBBox.width) / 2;
+  Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(classTitleLabel).attr('transform', 'translate( ' + (-1 * maxWidth / 2 + diffX) + ', ' + (-1 * maxHeight / 2 + verticalPos) + ')');
+  verticalPos += classTitleBBox.height + rowPadding;
+  topLine.attr('class', 'divider').attr('x1', -maxWidth / 2 - halfPadding).attr('x2', maxWidth / 2 + halfPadding).attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);
+  verticalPos += lineHeight;
+  classAttributes.forEach(function (lbl) {
+    Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(lbl).attr('transform', 'translate( ' + -maxWidth / 2 + ', ' + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + ')');
+    verticalPos += classTitleBBox.height + rowPadding;
+  });
+  verticalPos += lineHeight;
+  bottomLine.attr('class', 'divider').attr('x1', -maxWidth / 2 - halfPadding).attr('x2', maxWidth / 2 + halfPadding).attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);
+  verticalPos += lineHeight;
+  classMethods.forEach(function (lbl) {
+    Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(lbl).attr('transform', 'translate( ' + -maxWidth / 2 + ', ' + (-1 * maxHeight / 2 + verticalPos) + ')');
+    verticalPos += classTitleBBox.height + rowPadding;
+  }); //
+  // let bbox;
+  // if (getConfig().flowchart.htmlLabels) {
+  //   const div = interfaceLabel.children[0];
+  //   const dv = select(interfaceLabel);
+  //   bbox = div.getBoundingClientRect();
+  //   dv.attr('width', bbox.width);
+  //   dv.attr('height', bbox.height);
+  // }
+  // bbox = labelContainer.getBBox();
+  // logger.info('Text 2', text2);
+  // const textRows = text2.slice(1, text2.length);
+  // let titleBox = text.getBBox();
+  // const descr = label
+  //   .node()
+  //   .appendChild(createLabel(textRows.join('<br/>'), node.labelStyle, true, true));
+  // if (getConfig().flowchart.htmlLabels) {
+  //   const div = descr.children[0];
+  //   const dv = select(descr);
+  //   bbox = div.getBoundingClientRect();
+  //   dv.attr('width', bbox.width);
+  //   dv.attr('height', bbox.height);
+  // }
+  // // bbox = label.getBBox();
+  // // logger.info(descr);
+  // select(descr).attr(
+  //   'transform',
+  //   'translate( ' +
+  //     // (titleBox.width - bbox.width) / 2 +
+  //     (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +
+  //     ', ' +
+  //     (titleBox.height + halfPadding + 5) +
+  //     ')'
+  // );
+  // select(text).attr(
+  //   'transform',
+  //   'translate( ' +
+  //     // (titleBox.width - bbox.width) / 2 +
+  //     (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +
+  //     ', ' +
+  //     0 +
+  //     ')'
+  // );
+  // // Get the size of the label
+  // // Bounding box for title and text
+  // bbox = label.node().getBBox();
+  // // Center the label
+  // label.attr(
+  //   'transform',
+  //   'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'
+  // );
+
+  rect.attr('class', 'outer title-state').attr('x', -maxWidth / 2 - halfPadding).attr('y', -(maxHeight / 2) - halfPadding).attr('width', maxWidth + node.padding).attr('height', maxHeight + node.padding); // innerLine
+  //   .attr('class', 'divider')
+  //   .attr('x1', -bbox.width / 2 - halfPadding)
+  //   .attr('x2', bbox.width / 2 + halfPadding)
+  //   .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)
+  //   .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);
+
+  Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__["updateNodeBounds"])(node, rect);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].rect(node, point);
+  };
+
+  return shapeSvg;
+};
+
+var shapes = {
+  question: question,
+  rect: rect,
+  rectWithTitle: rectWithTitle,
+  circle: circle,
+  stadium: stadium,
+  hexagon: hexagon,
+  rect_left_inv_arrow: rect_left_inv_arrow,
+  lean_right: lean_right,
+  lean_left: lean_left,
+  trapezoid: trapezoid,
+  inv_trapezoid: inv_trapezoid,
+  rect_right_inv_arrow: rect_right_inv_arrow,
+  cylinder: cylinder,
+  start: start,
+  end: end,
+  note: _shapes_note__WEBPACK_IMPORTED_MODULE_6__["default"],
+  subroutine: subroutine,
+  fork: forkJoin,
+  join: forkJoin,
+  class_box: class_box
+};
+var nodeElems = {};
+var insertNode = function insertNode(elem, node, dir) {
+  var newEl;
+  var el; // Add link when appropriate
+
+  if (node.link) {
+    newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', node.linkTarget || '_blank');
+    el = shapes[node.shape](newEl, node, dir);
+  } else {
+    el = shapes[node.shape](elem, node, dir);
+    newEl = el;
+  }
+
+  if (node.tooltip) {
+    el.attr('title', node.tooltip);
+  }
+
+  if (node.class) {
+    el.attr('class', 'node default ' + node.class);
+  }
+
+  nodeElems[node.id] = newEl;
+
+  if (node.haveCallback) {
+    nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');
+  }
+};
+var setNodeElem = function setNodeElem(elem, node) {
+  nodeElems[node.id] = elem;
+};
+var clear = function clear() {
+  nodeElems = {};
+};
+var positionNode = function positionNode(node) {
+  var el = nodeElems[node.id];
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].trace('Transforming node', node, 'translate(' + (node.x - node.width / 2 - 5) + ', ' + (node.y - node.height / 2 - 5) + ')');
+  var padding = 8;
+
+  if (node.clusterNode) {
+    el.attr('transform', 'translate(' + (node.x - node.width / 2 - padding) + ', ' + (node.y - node.height / 2 - padding) + ')');
+  } else {
+    el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');
+  }
+};
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/shapes/note.js":
+/*!******************************************!*\
+  !*** ./src/dagre-wrapper/shapes/note.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/dagre-wrapper/shapes/util.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _intersect_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../intersect/index.js */ "./src/dagre-wrapper/intersect/index.js");
+
+ // eslint-disable-line
+
+
+
+var note = function note(parent, node) {
+  var _labelHelper = Object(_util__WEBPACK_IMPORTED_MODULE_0__["labelHelper"])(parent, node, 'node ' + node.classes, true),
+      shapeSvg = _labelHelper.shapeSvg,
+      bbox = _labelHelper.bbox,
+      halfPadding = _labelHelper.halfPadding;
+
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('Classes = ', node.classes); // add the rect
+
+  var rect = shapeSvg.insert('rect', ':first-child');
+  rect.attr('rx', node.rx).attr('ry', node.ry).attr('x', -bbox.width / 2 - halfPadding).attr('y', -bbox.height / 2 - halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);
+  Object(_util__WEBPACK_IMPORTED_MODULE_0__["updateNodeBounds"])(node, rect);
+
+  node.intersect = function (point) {
+    return _intersect_index_js__WEBPACK_IMPORTED_MODULE_2__["default"].rect(node, point);
+  };
+
+  return shapeSvg;
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (note);
+
+/***/ }),
+
+/***/ "./src/dagre-wrapper/shapes/util.js":
+/*!******************************************!*\
+  !*** ./src/dagre-wrapper/shapes/util.js ***!
+  \******************************************/
+/*! exports provided: labelHelper, updateNodeBounds, insertPolygonShape */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "labelHelper", function() { return labelHelper; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateNodeBounds", function() { return updateNodeBounds; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertPolygonShape", function() { return insertPolygonShape; });
+/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLabel */ "./src/dagre-wrapper/createLabel.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+
+
+
+var labelHelper = function labelHelper(parent, node, _classes, isNode) {
+  var classes;
+
+  if (!_classes) {
+    classes = 'node default';
+  } else {
+    classes = _classes;
+  } // Add outer g element
+
+
+  var shapeSvg = parent.insert('g').attr('class', classes).attr('id', node.domId || node.id); // Create the label and insert it after the rect
+
+  var label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);
+  var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_0__["default"])(node.labelText, node.labelStyle, false, isNode)); // Get the size of the label
+
+  var bbox = text.getBBox();
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_1__["getConfig"])().flowchart.htmlLabels) {
+    var div = text.children[0];
+    var dv = Object(d3__WEBPACK_IMPORTED_MODULE_2__["select"])(text);
+    bbox = div.getBoundingClientRect();
+    dv.attr('width', bbox.width);
+    dv.attr('height', bbox.height);
+  }
+
+  var halfPadding = node.padding / 2; // Center the label
+
+  label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');
+  return {
+    shapeSvg: shapeSvg,
+    bbox: bbox,
+    halfPadding: halfPadding,
+    label: label
+  };
+};
+var updateNodeBounds = function updateNodeBounds(node, element) {
+  var bbox = element.node().getBBox();
+  node.width = bbox.width;
+  node.height = bbox.height;
+};
+function insertPolygonShape(parent, w, h, points) {
+  return parent.insert('polygon', ':first-child').attr('points', points.map(function (d) {
+    return d.x + ',' + d.y;
+  }).join(' ')).attr('class', 'label-container').attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');
+}
+
+/***/ }),
+
+/***/ "./src/defaultConfig.js":
+/*!******************************!*\
+  !*** ./src/defaultConfig.js ***!
+  \******************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./themes */ "./src/themes/index.js");
+
+/**
+ * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**
+ *
+ * ## **What follows are config instructions for older versions**
+ * These are the default options which can be overridden with the initialization call like so:
+ * **Example 1:**
+ * <pre>
+ * mermaid.initialize({
+ *   flowchart:{
+ *     htmlLabels: false
+ *   }
+ * });
+ * </pre>
+ *
+ * **Example 2:**
+ * <pre>
+ * &lt;script>
+ *   var config = {
+ *     startOnLoad:true,
+ *     flowchart:{
+ *       useMaxWidth:true,
+ *       htmlLabels:true,
+ *       curve:'cardinal',
+ *     },
+ *
+ *     securityLevel:'loose',
+ *   };
+ *   mermaid.initialize(config);
+ * &lt;/script>
+ * </pre>
+ * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.
+ *
+ * @name Configuration
+ */
+
+var config = {
+  /** theme , the CSS style sheet
+   *
+   * theme , the CSS style sheet
+   *
+   *| Parameter | Description |Type | Required | Values|
+   *| --- | --- | --- | --- | --- |
+   *| Theme |Built in Themes| String | Optional | Values include, default, forest, dark, neutral, null|
+   *
+   ***Notes:**To disable any pre-defined mermaid theme, use "null".
+   * <pre>
+   *  "theme": "forest",
+   *  "themeCSS": ".node rect { fill: red; }"
+   * </pre>
+   */
+  theme: 'default',
+  themeVariables: _themes__WEBPACK_IMPORTED_MODULE_0__["default"]['default'].getThemeVariables(),
+  themeCSS: undefined,
+
+  /* **maxTextSize** - The maximum allowed size of the users text diamgram */
+  maxTextSize: 50000,
+
+  /**
+   *| Parameter | Description |Type | Required | Values|
+   *| --- | --- | --- | --- | --- |
+   *|fontFamily | specifies the font to be used in the rendered diagrams| String | Required | Verdana, Arial, Trebuchet MS,|
+   *
+   ***notes: Default value is \\"trebuchet ms\\".
+   */
+  fontFamily: '"trebuchet ms", verdana, arial;',
+
+  /**
+   *| Parameter | Description |Type | Required | Values|
+   *| --- | --- | --- | --- | --- |
+   *| logLevel |This option decides the amount of logging to be used.| String | Required | 1, 2, 3, 4, 5 |
+   *
+   *
+   ***Notes:**
+   *-   debug: 1.
+   *-   info: 2.
+   *-   warn: 3.
+   *-   error: 4.
+   *-   fatal: 5(default).
+   */
+  logLevel: 5,
+
+  /**
+   *| Parameter | Description |Type | Required | Values|
+   *| --- | --- | --- | --- | --- |
+   *| securitylevel | Level of trust for parsed diagram|String | Required | Strict, Loose, antiscript |
+   *
+   ***Notes:
+   *-   **strict**: (**default**) tags in text are encoded, click functionality is disabeled
+   *-   **loose**: tags in text are allowed, click functionality is enabled
+   *-   **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled
+   */
+  securityLevel: 'strict',
+
+  /**
+   *| Parameter | Description |Type | Required | Values|
+   *| --- | --- | --- | --- | --- |
+   *| startOnLoad| Dictates whether mermaind starts on Page load | Boolean | Required | True, False |
+   *
+   ***Notes:**
+   ***Default value: true**
+   */
+  startOnLoad: true,
+
+  /**
+   *| Parameter | Description |Type | Required |Values|
+   *| --- | --- | --- | --- | --- |
+   *| arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | Boolean | Required |  True, False |
+   *
+   *
+   *## Notes**: This matters if you are using base tag settings.
+   ***Default value: false**.
+   */
+  arrowMarkerAbsolute: false,
+
+  /**
+   * This option controls which currentConfig keys are considered _secure_ and can only be changed via
+   * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to
+   * the `secure` keys in the current currentConfig. This prevents malicious graph directives from
+   * overriding a site's default security.
+   */
+  secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],
+
+  /**
+   * The object containing configurations specific for flowcharts
+   */
+  flowchart: {
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels
+     ***Default value: 8**.
+     */
+    diagramPadding: 8,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | Boolean| Required | True, False|
+     *
+     ***Notes: Default value: true**.
+     */
+    htmlLabels: true,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| nodeSpacing | Defines the spacing between nodes on the same level | Integer| Required | Any positive Numbers |
+     *
+     ***Notes:
+     *Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**
+     ***Default value 50**.
+     */
+    nodeSpacing: 50,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| rankSpacing | Defines the spacing between nodes on different levels | Integer | Required| Any Positive Numbers |
+     *
+     ***Notes: pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.
+     ***Default value 50**.
+     */
+    rankSpacing: 50,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| curve | Defines how mermaid renders curves for flowcharts. | String | Required | Basis, Linear, Cardinal|
+     *
+     ***Notes:
+     *Default Vaue: Linear**
+     */
+    curve: 'linear',
+    // Only used in new experimental rendering
+    // represents the padding between the labels and the shape
+    padding: 15,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See notes | Boolean | 4 | True, False |
+     *
+     ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the
+     *available space if not the absolute space required is used.
+     *
+     ***Default value true**.
+     */
+    useMaxWidth: true
+  },
+
+  /**
+   * The object containing configurations specific for sequence diagrams
+   */
+  sequence: {
+    /**
+     * widt of the activation rect
+     * **Default value 10**.
+     */
+    activationWidth: 10,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Values |
+     *
+     ***Notes:**
+     ***Default value 50**.
+     */
+    diagramMarginX: 50,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Values|
+     *
+     ***Notes:**
+     ***Default value 10**.
+     */
+    diagramMarginY: 10,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 50**.
+     */
+    actorMargin: 50,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| width | Width of actor boxes | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 150**.
+     */
+    width: 150,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| height | Height of actor boxes | Integer | Required | Any Positive Value|
+     *
+     ***Notes:**
+     ***Default value 65**..
+     */
+    height: 65,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     *
+     ***Default value 10**.
+     */
+    boxMargin: 10,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| boxTextMargin| margin around the text in loop/alt/opt boxes | Integer | Required| Any Positive Value|
+     *
+     ***Notes:**
+     *
+     ***Default value 5**.
+     */
+    boxTextMargin: 5,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     *
+     ***Default value 10**.
+     */
+    noteMargin: 10,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| messageMargin | Space between messages. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     *
+     *Space between messages.
+     ***Default value 35**.
+     */
+    messageMargin: 35,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| messageAlign | Multiline message alignment | Integer | Required | left, center, right |
+     *
+     ***Notes:**center **default**
+     */
+    messageAlign: 'center',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| mirrorActors | mirror actors under diagram. | Boolean| Required | True, False |
+     *
+     ***Notes:**
+     *
+     ***Default value true**.
+     */
+    mirrorActors: true,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**Depending on css styling this might need adjustment.
+     ***Default value 1**.
+     */
+    bottomMarginAdj: 1,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See Notes | Boolean | Required | True, False |
+     *
+     ***Notes:**
+     *when this flag is set to true, the height and width is set to 100% and is then scaling with the
+     *available space. If set to false, the absolute space required is used.
+     ***Default value: True**.
+     */
+    useMaxWidth: true,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| rightAngles | display curve arrows as right angles| Boolean | Required | True, False |
+     *
+     ***Notes:**
+     *
+     *This will display arrows that start and begin at the same node as right angles, rather than a curve
+     ***Default value false**.
+     */
+    rightAngles: false,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| showSequenceNumbers | This will show the node numbers | Boolean | Required | True, False |
+     *
+     ***Notes:**
+     ***Default value false**.
+     */
+    showSequenceNumbers: false,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 14**..
+     */
+    actorFontSize: 14,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| actorFontFamily |This sets the font family of the actor's description | 3 | 4 | Open-Sans, Sans-Serif |
+     *
+     ***Notes:**
+     ***Default value "Open-Sans", "sans-serif"**.
+     */
+    actorFontFamily: '"Open-Sans", "sans-serif"',
+
+    /**
+     * This sets the font weight of the actor's description
+     * **Default value 400.
+     */
+    actorFontWeight: 400,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| noteFontSize |This sets the font size of actor-attached notes. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 14**..
+     */
+    noteFontSize: 14,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| noteFontFamily| This sets the font family of actor-attached notes. | String | Required |  trebuchet ms, verdana, arial |
+     *
+     ***Notes:**
+     ***Default value: trebuchet ms **.
+     */
+    noteFontFamily: '"trebuchet ms", verdana, arial',
+
+    /**
+     * This sets the font weight of the note's description
+     * **Default value 400.
+     */
+    noteFontWeight: 400,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| noteAlign | This sets the text alignment of actor-attached notes. | string | required | left, center, right|
+     *
+     ***Notes:**
+     ***Default value center**.
+     */
+    noteAlign: 'center',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| messageFontSize | This sets the font size of actor messages. | Integer | Required | Any Positive Number |
+     *
+     ***Notes:**
+     ***Default value 16**.
+     */
+    messageFontSize: 16,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| messageFontFamily | This sets the font family of actor messages. | String| Required | trebuchet ms", verdana, aria |
+     *
+     ***Notes:**
+     ***Default value:"trebuchet ms**.
+     */
+    messageFontFamily: '"trebuchet ms", verdana, arial',
+
+    /**
+     * This sets the font weight of the message's description
+     * **Default value 400.
+     */
+    messageFontWeight: 400,
+
+    /**
+     * This sets the auto-wrap state for the diagram
+     * **Default value false.
+     */
+    wrap: false,
+
+    /**
+     * This sets the auto-wrap padding for the diagram (sides only)
+     * **Default value 10.
+     */
+    wrapPadding: 10,
+
+    /**
+     * This sets the width of the loop-box (loop, alt, opt, par)
+     * **Default value 50.
+     */
+    labelBoxWidth: 50,
+
+    /**
+     * This sets the height of the loop-box (loop, alt, opt, par)
+     * **Default value 20.
+     */
+    labelBoxHeight: 20,
+    messageFont: function messageFont() {
+      return {
+        fontFamily: this.messageFontFamily,
+        fontSize: this.messageFontSize,
+        fontWeight: this.messageFontWeight
+      };
+    },
+    noteFont: function noteFont() {
+      return {
+        fontFamily: this.noteFontFamily,
+        fontSize: this.noteFontSize,
+        fontWeight: this.noteFontWeight
+      };
+    },
+    actorFont: function actorFont() {
+      return {
+        fontFamily: this.actorFontFamily,
+        fontSize: this.actorFontSize,
+        fontWeight: this.actorFontWeight
+      };
+    }
+  },
+
+  /**
+   * The object containing configurations specific for gantt diagrams*
+   */
+  gantt: {
+    /**
+     *### titleTopMargin
+     *
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 25**.
+     */
+    titleTopMargin: 25,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 20**.
+     */
+    barHeight: 20,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| barGap | The margin between the different activities in the gantt diagram. | Integer | Optional |Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 4**.
+     */
+    barGap: 4,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 50**.
+     */
+    topPadding: 50,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| leftPadding | The space allocated for the section name to the left of the activities. | Integer| Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 75**.
+     */
+    leftPadding: 75,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| gridLineStartPadding | Vertical starting position of the grid lines. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 35**.
+     */
+    gridLineStartPadding: 35,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| fontSize | Font size| Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 11**.
+     */
+    fontSize: 11,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| fontFamily | font Family | string | required |"Open-Sans", "sans-serif" |
+     *
+     ***Notes:**
+     *
+     ***Default value '"Open-Sans", "sans-serif"'**.
+     */
+    fontFamily: '"Open-Sans", "sans-serif"',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 4**.
+     */
+    numberSectionStyles: 4,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| axisFormat | Datetime format of the axis. | 3 | Required | Date in yy-mm-dd |
+     *
+     ***Notes:**
+     *
+     * This might need adjustment to match your locale and preferences
+     ***Default value '%Y-%m-%d'**.
+     */
+    axisFormat: '%Y-%m-%d',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See notes | Boolean | 4 | True, False |
+     *
+     ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the
+     *available space if not the absolute space required is used.
+     *
+     ***Default value true**.
+     */
+    useMaxWidth: true,
+    useWidth: undefined
+  },
+
+  /**
+   * The object containing configurations specific for journey diagrams
+   */
+  journey: {
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 50**.
+     */
+    diagramMarginX: 50,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| diagramMarginY | margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value|
+     *
+     ***Notes:**
+     ***Default value 10**..
+     */
+    diagramMarginY: 10,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value|
+     *
+     ***Notes:**
+     ***Default value 50**.
+     */
+    actorMargin: 50,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| width | Width of actor boxes | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 150**.
+     */
+    width: 150,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| height | Height of actor boxes | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 65**.
+     */
+    height: 65,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 10**.
+     */
+    boxMargin: 10,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| boxTextMargin | margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     */
+    boxTextMargin: 5,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     ***Default value 10**.
+     */
+    noteMargin: 10,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| messageMargin |Space between messages. | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**
+     *
+     *Space between messages.
+     ***Default value 35**.
+     */
+    messageMargin: 35,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| messageAlign |Multiline message alignment | 3 | 4 | left, center, right |
+     *
+     ***Notes:**default:center**
+     */
+    messageAlign: 'center',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | 4 | Any Positive Value |
+     *
+     ***Notes:**Depending on css styling this might need adjustment.
+     ***Default value 1**.
+     */
+    bottomMarginAdj: 1,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See notes | Boolean | 4 | True, False |
+     *
+     ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the
+     *available space if not the absolute space required is used.
+     *
+     ***Default value true**.
+     */
+    useMaxWidth: true,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| rightAngles | Curved Arrows become Right Angles,  | 3 | 4 | True, False |
+     *
+     ***Notes:**This will display arrows that start and begin at the same node as right angles, rather than a curves
+     ***Default value false**.
+     */
+    rightAngles: false
+  },
+  class: {
+    arrowMarkerAbsolute: false,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See notes | Boolean | 4 | True, False |
+     *
+     ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the
+     *available space if not the absolute space required is used.
+     *
+     ***Default value true**.
+     */
+    useMaxWidth: true
+  },
+  git: {
+    arrowMarkerAbsolute: false,
+    useWidth: undefined,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See notes | Boolean | 4 | True, False |
+     *
+     ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the
+     *available space if not the absolute space required is used.
+     *
+     ***Default value true**.
+     */
+    useMaxWidth: true
+  },
+  state: {
+    dividerMargin: 10,
+    sizeUnit: 5,
+    padding: 8,
+    textHeight: 10,
+    titleShift: -15,
+    noteMargin: 10,
+    forkWidth: 70,
+    forkHeight: 7,
+    // Used
+    miniPadding: 2,
+    // Font size factor, this is used to guess the width of the edges labels before rendering by dagre
+    // layout. This might need updating if/when switching font
+    fontSizeFactor: 5.02,
+    fontSize: 24,
+    labelHeight: 16,
+    edgeLengthFactor: '20',
+    compositTitleSize: 35,
+    radius: 5,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See notes | Boolean | 4 | True, False |
+     *
+     ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the
+     *available space if not the absolute space required is used.
+     *
+     ***Default value true**.
+     */
+    useMaxWidth: true
+  },
+
+  /**
+   * The object containing configurations specific for entity relationship diagrams
+   */
+  er: {
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |
+     *
+     ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels
+     ***Default value: 20**.
+     */
+    diagramPadding: 20,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| layoutDirection | Directional bias for layout of entities. | String | Required | "TB", "BT","LR","RL" |
+     *
+     ***Notes:**
+     *'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.
+     * T = top, B = bottom, L = left, and R = right.
+     ***Default value: TB **.
+     */
+    layoutDirection: 'TB',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| minEntityWidth | The mimimum width of an entity box, | Integer | Required| Any Positive Value  |
+     *
+     ***Notes:**expressed in pixels
+     ***Default value: 100**.
+     */
+    minEntityWidth: 100,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| minEntityHeight| The minimum height of an entity box, | Integer | 4 | Any Positive Value |
+     *
+     ***Notes:**expressed in pixels
+     ***Default value: 75 **
+     */
+    minEntityHeight: 75,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| entityPadding|minimum internal padding betweentext in box and  box borders| Integer | 4 | Any Positive Value |
+     *
+     ***Notes:**The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.
+     ***Default value: 15 **
+     */
+    entityPadding: 15,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| stroke | Stroke color of box edges and lines | String | 4 | Any recognized color |
+     ***Default value: gray **
+     */
+    stroke: 'gray',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| fill | Fill color of entity boxes | String | 4 | Any recognized color |
+     *
+     ***Notes:**
+     ***Default value:'honeydew'**
+     */
+    fill: 'honeydew',
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| fontSize| Font Size in pixels| Integer |  | Any Positive Value |
+     *
+     ***Notes:**Font size (expressed as an integer representing a number of pixels)
+     ***Default value: 12 **
+     */
+    fontSize: 12,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See Notes | Boolean | Required | true, false |
+     *
+     ***Notes:**
+     *When this flag is set to true, the diagram width is locked to 100% and
+     *scaled based on available space. If set to false, the diagram reserves its
+     *absolute width.
+     ***Default value: true**.
+     */
+    useMaxWidth: true
+  },
+
+  /**
+   * The object containing configurations specific for pie diagrams
+   */
+  pie: {
+    useWidth: undefined,
+
+    /**
+     *| Parameter | Description |Type | Required | Values|
+     *| --- | --- | --- | --- | --- |
+     *| useMaxWidth | See Notes | Boolean | Required | true, false |
+     *
+     ***Notes:**
+     *When this flag is set to true, the diagram width is locked to 100% and
+     *scaled based on available space. If set to false, the diagram reserves its
+     *absolute width.
+     ***Default value: true**.
+     */
+    useMaxWidth: true
+  }
+};
+config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
+config.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
+/* harmony default export */ __webpack_exports__["default"] = (config);
+
+/***/ }),
+
+/***/ "./src/diagrams/class/classDb.js":
+/*!***************************************!*\
+  !*** ./src/diagrams/class/classDb.js ***!
+  \***************************************/
+/*! exports provided: parseDirective, addClass, lookUpDomId, clear, getClass, getClasses, getRelations, addRelation, addAnnotation, addMember, addMembers, cleanupLabel, setCssClass, setLink, setClickEvent, bindFunctions, lineType, relationType, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClass", function() { return addClass; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lookUpDomId", function() { return lookUpDomId; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getClass", function() { return getClass; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getClasses", function() { return getClasses; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRelations", function() { return getRelations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addRelation", function() { return addRelation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addAnnotation", function() { return addAnnotation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addMember", function() { return addMember; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addMembers", function() { return addMembers; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cleanupLabel", function() { return cleanupLabel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setCssClass", function() { return setCssClass; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setLink", function() { return setLink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setClickEvent", function() { return setClickEvent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindFunctions", function() { return bindFunctions; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lineType", function() { return lineType; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "relationType", function() { return relationType; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+
+
+
+
+
+
+var MERMAID_DOM_ID_PREFIX = 'classid-';
+var relations = [];
+var classes = {};
+var classCounter = 0;
+var funs = [];
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__["default"].parseDirective(this, statement, context, type);
+};
+
+var splitClassNameAndType = function splitClassNameAndType(id) {
+  var genericType = '';
+  var className = id;
+
+  if (id.indexOf('~') > 0) {
+    var split = id.split('~');
+    className = split[0];
+    genericType = split[1];
+  }
+
+  return {
+    className: className,
+    type: genericType
+  };
+};
+/**
+ * Function called by parser when a node definition has been found.
+ * @param id
+ * @public
+ */
+
+
+var addClass = function addClass(id) {
+  var classId = splitClassNameAndType(id); // Only add class if not exists
+
+  if (typeof classes[classId.className] !== 'undefined') return;
+  classes[classId.className] = {
+    id: classId.className,
+    type: classId.type,
+    cssClasses: [],
+    methods: [],
+    members: [],
+    annotations: [],
+    domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter
+  };
+  classCounter++;
+};
+/**
+ * Function to lookup domId from id in the graph definition.
+ * @param id
+ * @public
+ */
+
+var lookUpDomId = function lookUpDomId(id) {
+  var classKeys = Object.keys(classes);
+
+  for (var i = 0; i < classKeys.length; i++) {
+    if (classes[classKeys[i]].id === id) {
+      return classes[classKeys[i]].domId;
+    }
+  }
+};
+var clear = function clear() {
+  relations = [];
+  classes = {};
+  funs = [];
+  funs.push(setupToolTips);
+};
+var getClass = function getClass(id) {
+  return classes[id];
+};
+var getClasses = function getClasses() {
+  return classes;
+};
+var getRelations = function getRelations() {
+  return relations;
+};
+var addRelation = function addRelation(relation) {
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].debug('Adding relation: ' + JSON.stringify(relation));
+  addClass(relation.id1);
+  addClass(relation.id2);
+  relation.id1 = splitClassNameAndType(relation.id1).className;
+  relation.id2 = splitClassNameAndType(relation.id2).className;
+  relations.push(relation);
+};
+/**
+ * Adds an annotation to the specified class
+ * Annotations mark special properties of the given type (like 'interface' or 'service')
+ * @param className The class name
+ * @param annotation The name of the annotation without any brackets
+ * @public
+ */
+
+var addAnnotation = function addAnnotation(className, annotation) {
+  var validatedClassName = splitClassNameAndType(className).className;
+  classes[validatedClassName].annotations.push(annotation);
+};
+/**
+ * Adds a member to the specified class
+ * @param className The class name
+ * @param member The full name of the member.
+ * If the member is enclosed in <<brackets>> it is treated as an annotation
+ * If the member is ending with a closing bracket ) it is treated as a method
+ * Otherwise the member will be treated as a normal property
+ * @public
+ */
+
+var addMember = function addMember(className, member) {
+  var validatedClassName = splitClassNameAndType(className).className;
+  var theClass = classes[validatedClassName];
+
+  if (typeof member === 'string') {
+    // Member can contain white spaces, we trim them out
+    var memberString = member.trim();
+
+    if (memberString.startsWith('<<') && memberString.endsWith('>>')) {
+      // Remove leading and trailing brackets
+      theClass.annotations.push(memberString.substring(2, memberString.length - 2));
+    } else if (memberString.indexOf(')') > 0) {
+      theClass.methods.push(memberString);
+    } else if (memberString) {
+      theClass.members.push(memberString);
+    }
+  }
+};
+var addMembers = function addMembers(className, members) {
+  if (Array.isArray(members)) {
+    members.reverse();
+    members.forEach(function (member) {
+      return addMember(className, member);
+    });
+  }
+};
+var cleanupLabel = function cleanupLabel(label) {
+  if (label.substring(0, 1) === ':') {
+    return label.substr(1).trim();
+  } else {
+    return label.trim();
+  }
+};
+/**
+ * Called by parser when a special node is found, e.g. a clickable element.
+ * @param ids Comma separated list of ids
+ * @param className Class to add
+ */
+
+var setCssClass = function setCssClass(ids, className) {
+  ids.split(',').forEach(function (_id) {
+    var id = _id;
+    if (_id[0].match(/\d/)) id = MERMAID_DOM_ID_PREFIX + id;
+
+    if (typeof classes[id] !== 'undefined') {
+      classes[id].cssClasses.push(className);
+    }
+  });
+};
+/**
+ * Called by parser when a link is found. Adds the URL to the vertex data.
+ * @param ids Comma separated list of ids
+ * @param linkStr URL to create a link for
+ * @param tooltip Tooltip for the clickable element
+ */
+
+var setLink = function setLink(ids, linkStr, tooltip) {
+  var config = _config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]();
+  ids.split(',').forEach(function (_id) {
+    var id = _id;
+    if (_id[0].match(/\d/)) id = MERMAID_DOM_ID_PREFIX + id;
+
+    if (typeof classes[id] !== 'undefined') {
+      classes[id].link = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].formatUrl(linkStr, config);
+
+      if (tooltip) {
+        classes[id].tooltip = _common_common__WEBPACK_IMPORTED_MODULE_3__["default"].sanitizeText(tooltip, config);
+      }
+    }
+  });
+  setCssClass(ids, 'clickable');
+};
+/**
+ * Called by parser when a click definition is found. Registers an event handler.
+ * @param ids Comma separated list of ids
+ * @param functionName Function to be called on click
+ * @param tooltip Tooltip for the clickable element
+ */
+
+var setClickEvent = function setClickEvent(ids, functionName, tooltip) {
+  ids.split(',').forEach(function (id) {
+    setClickFunc(id, functionName, tooltip);
+    classes[id].haveCallback = true;
+  });
+  setCssClass(ids, 'clickable');
+};
+
+var setClickFunc = function setClickFunc(domId, functionName, tooltip) {
+  var config = _config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]();
+  var id = domId;
+  var elemId = lookUpDomId(id);
+
+  if (config.securityLevel !== 'loose') {
+    return;
+  }
+
+  if (typeof functionName === 'undefined') {
+    return;
+  }
+
+  if (typeof classes[id] !== 'undefined') {
+    if (tooltip) {
+      classes[id].tooltip = _common_common__WEBPACK_IMPORTED_MODULE_3__["default"].sanitizeText(tooltip, config);
+    }
+
+    funs.push(function () {
+      var elem = document.querySelector("[id=\"".concat(elemId, "\"]"));
+
+      if (elem !== null) {
+        elem.addEventListener('click', function () {
+          _utils__WEBPACK_IMPORTED_MODULE_4__["default"].runFunc(functionName, elemId);
+        }, false);
+      }
+    });
+  }
+};
+
+var bindFunctions = function bindFunctions(element) {
+  funs.forEach(function (fun) {
+    fun(element);
+  });
+};
+var lineType = {
+  LINE: 0,
+  DOTTED_LINE: 1
+};
+var relationType = {
+  AGGREGATION: 0,
+  EXTENSION: 1,
+  COMPOSITION: 2,
+  DEPENDENCY: 3
+};
+
+var setupToolTips = function setupToolTips(element) {
+  var tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('.mermaidTooltip');
+
+  if ((tooltipElem._groups || tooltipElem)[0][0] === null) {
+    tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);
+  }
+
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(element).select('svg');
+  var nodes = svg.selectAll('g.node');
+  nodes.on('mouseover', function () {
+    var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(this);
+    var title = el.attr('title'); // Dont try to draw a tooltip if no data is provided
+
+    if (title === null) {
+      return;
+    }
+
+    var rect = this.getBoundingClientRect();
+    tooltipElem.transition().duration(200).style('opacity', '.9');
+    tooltipElem.html(el.attr('title')).style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px').style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');
+    el.classed('hover', true);
+  }).on('mouseout', function () {
+    tooltipElem.transition().duration(500).style('opacity', 0);
+    var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(this);
+    el.classed('hover', false);
+  });
+};
+
+funs.push(setupToolTips);
+/* harmony default export */ __webpack_exports__["default"] = ({
+  parseDirective: parseDirective,
+  getConfig: function getConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]().class;
+  },
+  addClass: addClass,
+  bindFunctions: bindFunctions,
+  clear: clear,
+  getClass: getClass,
+  getClasses: getClasses,
+  addAnnotation: addAnnotation,
+  getRelations: getRelations,
+  addRelation: addRelation,
+  addMember: addMember,
+  addMembers: addMembers,
+  cleanupLabel: cleanupLabel,
+  lineType: lineType,
+  relationType: relationType,
+  setClickEvent: setClickEvent,
+  setCssClass: setCssClass,
+  setLink: setLink,
+  lookUpDomId: lookUpDomId
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/class/classRenderer-v2.js":
+/*!************************************************!*\
+  !*** ./src/diagrams/class/classRenderer-v2.js ***!
+  \************************************************/
+/*! exports provided: addClasses, addRelations, setConf, drawOld, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClasses", function() { return addClasses; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addRelations", function() { return addRelations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawOld", function() { return drawOld; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _classDb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./classDb */ "./src/diagrams/class/classDb.js");
+/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./parser/classDiagram */ "./src/diagrams/class/parser/classDiagram.jison");
+/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__);
+/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgDraw */ "./src/diagrams/class/svgDraw.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../dagre-wrapper/index.js */ "./src/dagre-wrapper/index.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+
+
+
+
+
+
+
+
+ // import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';
+
+
+
+
+_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__["parser"].yy = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"];
+var idCache = {};
+var padding = 20;
+var conf = {
+  dividerMargin: 10,
+  padding: 5,
+  textHeight: 10
+};
+/**
+ * Function that adds the vertices found during parsing to the graph to be rendered.
+ * @param vert Object containing the vertices.
+ * @param g The graph that is to be drawn.
+ */
+
+var addClasses = function addClasses(classes, g) {
+  // const svg = select(`[id="${svgId}"]`);
+  var keys = Object.keys(classes);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('keys:', keys);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info(classes); // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition
+
+  keys.forEach(function (id) {
+    var vertex = classes[id];
+    /**
+     * Variable for storing the classes for the vertex
+     * @type {string}
+     */
+
+    var cssClassStr = '';
+
+    if (vertex.cssClasses.length > 0) {
+      cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');
+    } // if (vertex.classes.length > 0) {
+    //   classStr = vertex.classes.join(' ');
+    // }
+
+
+    var styles = {
+      labelStyle: ''
+    }; //getStylesFromArray(vertex.styles);
+    // Use vertex id as text in the box if no text is provided by the graph definition
+
+    var vertexText = vertex.text !== undefined ? vertex.text : vertex.id; // We create a SVG label, either by delegating to addHtmlLabel or manually
+    // let vertexNode;
+    // if (getConfig().flowchart.htmlLabels) {
+    //   const node = {
+    //     label: vertexText.replace(
+    //       /fa[lrsb]?:fa-[\w-]+/g,
+    //       s => `<i class='${s.replace(':', ' ')}'></i>`
+    //     )
+    //   };
+    //   vertexNode = addHtmlLabel(svg, node).node();
+    //   vertexNode.parentNode.removeChild(vertexNode);
+    // } else {
+    //   const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+    //   svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));
+    //   const rows = vertexText.split(common.lineBreakRegex);
+    //   for (let j = 0; j < rows.length; j++) {
+    //     const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
+    //     tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
+    //     tspan.setAttribute('dy', '1em');
+    //     tspan.setAttribute('x', '1');
+    //     tspan.textContent = rows[j];
+    //     svgLabel.appendChild(tspan);
+    //   }
+    //   vertexNode = svgLabel;
+    // }
+
+    var radious = 0;
+    var _shape = ''; // Set the shape based parameters
+
+    switch (vertex.type) {
+      case 'class':
+        _shape = 'class_box';
+        break;
+
+      default:
+        _shape = 'class_box';
+    } // Add the node
+
+
+    g.setNode(vertex.id, {
+      labelStyle: styles.labelStyle,
+      shape: _shape,
+      labelText: vertexText,
+      classData: vertex,
+      rx: radious,
+      ry: radious,
+      class: cssClassStr,
+      style: styles.style,
+      id: vertex.id,
+      domId: vertex.domId,
+      haveCallback: vertex.haveCallback,
+      link: vertex.link,
+      width: vertex.type === 'group' ? 500 : undefined,
+      type: vertex.type,
+      padding: Object(_config__WEBPACK_IMPORTED_MODULE_7__["getConfig"])().flowchart.padding
+    });
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('setNode', {
+      labelStyle: styles.labelStyle,
+      shape: _shape,
+      labelText: vertexText,
+      rx: radious,
+      ry: radious,
+      class: cssClassStr,
+      style: styles.style,
+      id: vertex.id,
+      width: vertex.type === 'group' ? 500 : undefined,
+      type: vertex.type,
+      padding: Object(_config__WEBPACK_IMPORTED_MODULE_7__["getConfig"])().flowchart.padding
+    });
+  });
+};
+/**
+ * Add edges to graph based on parsed graph defninition
+ * @param {Object} edges The edges to add to the graph
+ * @param {Object} g The graph object
+ */
+
+var addRelations = function addRelations(relations, g) {
+  var cnt = 0;
+  var defaultStyle;
+  var defaultLabelStyle; // if (typeof relations.defaultStyle !== 'undefined') {
+  //   const defaultStyles = getStylesFromArray(relations.defaultStyle);
+  //   defaultStyle = defaultStyles.style;
+  //   defaultLabelStyle = defaultStyles.labelStyle;
+  // }
+
+  relations.forEach(function (edge) {
+    cnt++;
+    var edgeData = {}; //Set relationship style and line type
+
+    edgeData.classes = 'relation';
+    edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';
+    edgeData.id = 'id' + cnt; // Set link type for rendering
+
+    if (edge.type === 'arrow_open') {
+      edgeData.arrowhead = 'none';
+    } else {
+      edgeData.arrowhead = 'normal';
+    }
+
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info(edgeData, edge); //Set edge extra labels
+    //edgeData.startLabelLeft = edge.relationTitle1;
+
+    edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;
+    edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2; //edgeData.endLabelRight = edge.relationTitle2;
+    //Set relation arrow types
+
+    edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);
+    edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);
+    var style = '';
+    var labelStyle = '';
+
+    if (typeof edge.style !== 'undefined') {
+      var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["getStylesFromArray"])(edge.style);
+      style = styles.style;
+      labelStyle = styles.labelStyle;
+    } else {
+      style = 'fill:none';
+
+      if (typeof defaultStyle !== 'undefined') {
+        style = defaultStyle;
+      }
+
+      if (typeof defaultLabelStyle !== 'undefined') {
+        labelStyle = defaultLabelStyle;
+      }
+    }
+
+    edgeData.style = style;
+    edgeData.labelStyle = labelStyle;
+
+    if (typeof edge.interpolate !== 'undefined') {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_0__["curveLinear"]);
+    } else if (typeof relations.defaultInterpolate !== 'undefined') {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(relations.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_0__["curveLinear"]);
+    } else {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(conf.curve, d3__WEBPACK_IMPORTED_MODULE_0__["curveLinear"]);
+    }
+
+    edge.text = edge.title;
+
+    if (typeof edge.text === 'undefined') {
+      if (typeof edge.style !== 'undefined') {
+        edgeData.arrowheadStyle = 'fill: #333';
+      }
+    } else {
+      edgeData.arrowheadStyle = 'fill: #333';
+      edgeData.labelpos = 'c';
+
+      if (Object(_config__WEBPACK_IMPORTED_MODULE_7__["getConfig"])().flowchart.htmlLabels && false) {
+        // eslint-disable-line
+        edgeData.labelType = 'html';
+        edgeData.label = '<span class="edgeLabel">' + edge.text + '</span>';
+      } else {
+        edgeData.labelType = 'text';
+        edgeData.label = edge.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_10__["default"].lineBreakRegex, '\n');
+
+        if (typeof edge.style === 'undefined') {
+          edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';
+        }
+
+        edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');
+      }
+    } // Add the edge to the graph
+
+
+    g.setEdge(edge.id1, edge.id2, edgeData, cnt);
+  });
+}; // Todo optimize
+
+var getGraphId = function getGraphId(label) {
+  var keys = Object.keys(idCache);
+
+  for (var i = 0; i < keys.length; i++) {
+    if (idCache[keys[i]].label === label) {
+      return keys[i];
+    }
+  }
+
+  return undefined;
+};
+
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+  keys.forEach(function (key) {
+    conf[key] = cnf[key];
+  });
+};
+/**
+ * Draws a flowchart in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+var drawOld = function drawOld(text, id) {
+  idCache = {};
+  _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__["parser"].yy.clear();
+  _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__["parser"].parse(text);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('Rendering diagram ' + text); // Fetch the default direction, use TD if none was found
+
+  var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])("[id='".concat(id, "']")); // insertMarkers(diagram);
+  // Layout graph, Create a new directed graph
+
+  var g = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({
+    multigraph: true
+  }); // Set an object for the graph label
+
+  g.setGraph({
+    isMultiGraph: true
+  }); // Default to assigning a new object as a label for each new edge.
+
+  g.setDefaultEdgeLabel(function () {
+    return {};
+  });
+  var classes = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"].getClasses();
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('classes:');
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info(classes);
+  var keys = Object.keys(classes);
+
+  for (var i = 0; i < keys.length; i++) {
+    var classDef = classes[keys[i]];
+    var node = _svgDraw__WEBPACK_IMPORTED_MODULE_6__["default"].drawClass(diagram, classDef, conf);
+    idCache[node.id] = node; // Add nodes to the graph. The first argument is the node id. The second is
+    // metadata about the node. In this case we're going to add labels to each of
+    // our nodes.
+
+    g.setNode(node.id, node);
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('Org height: ' + node.height);
+  }
+
+  var relations = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"].getRelations();
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('relations:', relations);
+  relations.forEach(function (relation) {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation));
+    g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), {
+      relation: relation
+    }, relation.title || 'DEFAULT');
+  });
+  dagre__WEBPACK_IMPORTED_MODULE_1___default.a.layout(g);
+  g.nodes().forEach(function (v) {
+    if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));
+      Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + Object(_classDb__WEBPACK_IMPORTED_MODULE_4__["lookUpDomId"])(v)).attr('transform', 'translate(' + (g.node(v).x - g.node(v).width / 2) + ',' + (g.node(v).y - g.node(v).height / 2) + ' )');
+    }
+  });
+  g.edges().forEach(function (e) {
+    if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));
+      _svgDraw__WEBPACK_IMPORTED_MODULE_6__["default"].drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);
+    }
+  });
+  var svgBounds = diagram.node().getBBox();
+  var width = svgBounds.width + padding * 2;
+  var height = svgBounds.height + padding * 2;
+  Object(_utils__WEBPACK_IMPORTED_MODULE_9__["configureSvgSize"])(diagram, height, width, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding
+
+  var vBox = "".concat(svgBounds.x - padding, " ").concat(svgBounds.y - padding, " ").concat(width, " ").concat(height);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug("viewBox ".concat(vBox));
+  diagram.attr('viewBox', vBox);
+};
+var draw = function draw(text, id) {
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('Drawing class');
+  _classDb__WEBPACK_IMPORTED_MODULE_4__["default"].clear(); // const parser = classDb.parser;
+  // parser.yy = classDb;
+  // Parse the graph definition
+  // try {
+
+  _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__["parser"].parse(text); // } catch (err) {
+  // logger.debug('Parsing failed');
+  // }
+  // Fetch the default direction, use TD if none was found
+
+  var dir = 'TD';
+  var conf = Object(_config__WEBPACK_IMPORTED_MODULE_7__["getConfig"])().flowchart;
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('config:', conf);
+  var nodeSpacing = conf.nodeSpacing || 50;
+  var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph
+
+  var g = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({
+    multigraph: true,
+    compound: true
+  }).setGraph({
+    rankdir: dir,
+    nodesep: nodeSpacing,
+    ranksep: rankSpacing,
+    marginx: 8,
+    marginy: 8
+  }).setDefaultEdgeLabel(function () {
+    return {};
+  }); // let subG;
+  // const subGraphs = flowDb.getSubGraphs();
+  // logger.info('Subgraphs - ', subGraphs);
+  // for (let i = subGraphs.length - 1; i >= 0; i--) {
+  //   subG = subGraphs[i];
+  //   logger.info('Subgraph - ', subG);
+  //   flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);
+  // }
+  // Fetch the verices/nodes and edges/links from the parsed graph definition
+
+  var classes = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"].getClasses();
+  var relations = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"].getRelations();
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info(relations); // let i = 0;
+  // for (i = subGraphs.length - 1; i >= 0; i--) {
+  //   subG = subGraphs[i];
+  //   selectAll('cluster').append('text');
+  //   for (let j = 0; j < subG.nodes.length; j++) {
+  //     g.setParent(subG.nodes[j], subG.id);
+  //   }
+  // }
+
+  addClasses(classes, g, id);
+  addRelations(relations, g); // Add custom shapes
+  // flowChartShapes.addToRenderV2(addShape);
+  // Set up an SVG group so that we can translate the final graph.
+
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])("[id=\"".concat(id, "\"]"));
+  svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink'); // Run the renderer. This is what draws the final graph.
+
+  var element = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + id + ' g');
+  Object(_dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_8__["render"])(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id); // element.selectAll('g.node').attr('title', function() {
+  //   return flowDb.getTooltip(this.id);
+  // });
+
+  var padding = 8;
+  var svgBounds = svg.node().getBBox();
+  var width = svgBounds.width + padding * 2;
+  var height = svgBounds.height + padding * 2;
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug("new ViewBox 0 0 ".concat(width, " ").concat(height), "translate(".concat(padding - g._label.marginx, ", ").concat(padding - g._label.marginy, ")"));
+  Object(_utils__WEBPACK_IMPORTED_MODULE_9__["configureSvgSize"])(svg, height, width, conf.useMaxWidth);
+  svg.attr('viewBox', "0 0 ".concat(width, " ").concat(height));
+  svg.select('g').attr('transform', "translate(".concat(padding - g._label.marginx, ", ").concat(padding - svgBounds.y, ")")); // Index nodes
+  // flowDb.indexNodes('subGraph' + i);
+  // Add label rects for non html labels
+
+  if (!conf.htmlLabels) {
+    var labels = document.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
+
+    for (var k = 0; k < labels.length; k++) {
+      var label = labels[k]; // Get dimensions of label
+
+      var dim = label.getBBox();
+      var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
+      rect.setAttribute('rx', 0);
+      rect.setAttribute('ry', 0);
+      rect.setAttribute('width', dim.width);
+      rect.setAttribute('height', dim.height);
+      rect.setAttribute('style', 'fill:#e8e8e8;');
+      label.insertBefore(rect, label.firstChild);
+    }
+  } // If node has a link, wrap it in an anchor SVG object.
+  // const keys = Object.keys(classes);
+  // keys.forEach(function(key) {
+  //   const vertex = classes[key];
+  //   if (vertex.link) {
+  //     const node = select('#' + id + ' [id="' + key + '"]');
+  //     if (node) {
+  //       const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');
+  //       link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));
+  //       link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);
+  //       link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');
+  //       const linkNode = node.insert(function() {
+  //         return link;
+  //       }, ':first-child');
+  //       const shape = node.select('.label-container');
+  //       if (shape) {
+  //         linkNode.append(function() {
+  //           return shape.node();
+  //         });
+  //       }
+  //       const label = node.select('.label');
+  //       if (label) {
+  //         linkNode.append(function() {
+  //           return label.node();
+  //         });
+  //       }
+  //     }
+  //   }
+  // });
+
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+function getArrowMarker(type) {
+  var marker;
+
+  switch (type) {
+    case 0:
+      marker = 'aggregation';
+      break;
+
+    case 1:
+      marker = 'extension';
+      break;
+
+    case 2:
+      marker = 'composition';
+      break;
+
+    case 3:
+      marker = 'dependency';
+      break;
+
+    default:
+      marker = 'none';
+  }
+
+  return marker;
+}
+
+/***/ }),
+
+/***/ "./src/diagrams/class/classRenderer.js":
+/*!*********************************************!*\
+  !*** ./src/diagrams/class/classRenderer.js ***!
+  \*********************************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _classDb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./classDb */ "./src/diagrams/class/classDb.js");
+/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./parser/classDiagram */ "./src/diagrams/class/parser/classDiagram.jison");
+/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__);
+/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgDraw */ "./src/diagrams/class/svgDraw.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+
+
+
+_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__["parser"].yy = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"];
+var idCache = {};
+var padding = 20;
+var conf = {
+  dividerMargin: 10,
+  padding: 5,
+  textHeight: 10
+}; // Todo optimize
+
+var getGraphId = function getGraphId(label) {
+  var keys = Object.keys(idCache);
+
+  for (var i = 0; i < keys.length; i++) {
+    if (idCache[keys[i]].label === label) {
+      return keys[i];
+    }
+  }
+
+  return undefined;
+};
+/**
+ * Setup arrow head and define the marker. The result is appended to the svg.
+ */
+
+
+var insertMarkers = function insertMarkers(elem) {
+  elem.append('defs').append('marker').attr('id', 'extensionStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 1,7 L18,13 V 1 Z');
+  elem.append('defs').append('marker').attr('id', 'extensionEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead
+
+  elem.append('defs').append('marker').attr('id', 'compositionStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', 'compositionEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', 'aggregationStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', 'aggregationEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', 'dependencyStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');
+  elem.append('defs').append('marker').attr('id', 'dependencyEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');
+};
+
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+  keys.forEach(function (key) {
+    conf[key] = cnf[key];
+  });
+};
+/**
+ * Draws a flowchart in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+var draw = function draw(text, id) {
+  idCache = {};
+  _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__["parser"].yy.clear();
+  _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__["parser"].parse(text);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('Rendering diagram ' + text); // Fetch the default direction, use TD if none was found
+
+  var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])("[id='".concat(id, "']"));
+  diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');
+  insertMarkers(diagram); // Layout graph, Create a new directed graph
+
+  var g = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({
+    multigraph: true
+  }); // Set an object for the graph label
+
+  g.setGraph({
+    isMultiGraph: true
+  }); // Default to assigning a new object as a label for each new edge.
+
+  g.setDefaultEdgeLabel(function () {
+    return {};
+  });
+  var classes = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"].getClasses();
+  var keys = Object.keys(classes);
+
+  for (var i = 0; i < keys.length; i++) {
+    var classDef = classes[keys[i]];
+    var node = _svgDraw__WEBPACK_IMPORTED_MODULE_6__["default"].drawClass(diagram, classDef, conf);
+    idCache[node.id] = node; // Add nodes to the graph. The first argument is the node id. The second is
+    // metadata about the node. In this case we're going to add labels to each of
+    // our nodes.
+
+    g.setNode(node.id, node);
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('Org height: ' + node.height);
+  }
+
+  var relations = _classDb__WEBPACK_IMPORTED_MODULE_4__["default"].getRelations();
+  relations.forEach(function (relation) {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation));
+    g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), {
+      relation: relation
+    }, relation.title || 'DEFAULT');
+  });
+  dagre__WEBPACK_IMPORTED_MODULE_1___default.a.layout(g);
+  g.nodes().forEach(function (v) {
+    if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));
+      Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + Object(_classDb__WEBPACK_IMPORTED_MODULE_4__["lookUpDomId"])(v)).attr('transform', 'translate(' + (g.node(v).x - g.node(v).width / 2) + ',' + (g.node(v).y - g.node(v).height / 2) + ' )');
+    }
+  });
+  g.edges().forEach(function (e) {
+    if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));
+      _svgDraw__WEBPACK_IMPORTED_MODULE_6__["default"].drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);
+    }
+  });
+  var svgBounds = diagram.node().getBBox();
+  var width = svgBounds.width + padding * 2;
+  var height = svgBounds.height + padding * 2;
+  Object(_utils__WEBPACK_IMPORTED_MODULE_7__["configureSvgSize"])(diagram, height, width, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding
+
+  var vBox = "".concat(svgBounds.x - padding, " ").concat(svgBounds.y - padding, " ").concat(width, " ").concat(height);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug("viewBox ".concat(vBox));
+  diagram.attr('viewBox', vBox);
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/class/parser/classDiagram.jison":
+/*!******************************************************!*\
+  !*** ./src/diagrams/class/parser/classDiagram.jison ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,7],$V1=[1,6],$V2=[1,14],$V3=[1,25],$V4=[1,28],$V5=[1,26],$V6=[1,27],$V7=[1,29],$V8=[1,30],$V9=[1,31],$Va=[1,33],$Vb=[1,34],$Vc=[1,35],$Vd=[10,19],$Ve=[1,47],$Vf=[1,48],$Vg=[1,49],$Vh=[1,50],$Vi=[1,51],$Vj=[1,52],$Vk=[10,19,25,32,33,41,44,45,46,47,48,49],$Vl=[10,19,23,25,32,33,37,41,44,45,46,47,48,49,66,67,68],$Vm=[10,13,17,19],$Vn=[41,66,67,68],$Vo=[41,48,49,66,67,68],$Vp=[41,44,45,46,47,66,67,68],$Vq=[10,19,25],$Vr=[1,81];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"mermaidDoc":4,"directive":5,"graphConfig":6,"openDirective":7,"typeDirective":8,"closeDirective":9,"NEWLINE":10,":":11,"argDirective":12,"open_directive":13,"type_directive":14,"arg_directive":15,"close_directive":16,"CLASS_DIAGRAM":17,"statements":18,"EOF":19,"statement":20,"className":21,"alphaNumToken":22,"GENERICTYPE":23,"relationStatement":24,"LABEL":25,"classStatement":26,"methodStatement":27,"annotationStatement":28,"clickStatement":29,"cssClassStatement":30,"CLASS":31,"STYLE_SEPARATOR":32,"STRUCT_START":33,"members":34,"STRUCT_STOP":35,"ANNOTATION_START":36,"ANNOTATION_END":37,"MEMBER":38,"SEPARATOR":39,"relation":40,"STR":41,"relationType":42,"lineType":43,"AGGREGATION":44,"EXTENSION":45,"COMPOSITION":46,"DEPENDENCY":47,"LINE":48,"DOTTED_LINE":49,"CALLBACK":50,"LINK":51,"CSSCLASS":52,"commentToken":53,"textToken":54,"graphCodeTokens":55,"textNoTagsToken":56,"TAGSTART":57,"TAGEND":58,"==":59,"--":60,"PCT":61,"DEFAULT":62,"SPACE":63,"MINUS":64,"keywords":65,"UNICODE_TEXT":66,"NUM":67,"ALPHA":68,"$accept":0,"$end":1},
+terminals_: {2:"error",10:"NEWLINE",11:":",13:"open_directive",14:"type_directive",15:"arg_directive",16:"close_directive",17:"CLASS_DIAGRAM",19:"EOF",23:"GENERICTYPE",25:"LABEL",31:"CLASS",32:"STYLE_SEPARATOR",33:"STRUCT_START",35:"STRUCT_STOP",36:"ANNOTATION_START",37:"ANNOTATION_END",38:"MEMBER",39:"SEPARATOR",41:"STR",44:"AGGREGATION",45:"EXTENSION",46:"COMPOSITION",47:"DEPENDENCY",48:"LINE",49:"DOTTED_LINE",50:"CALLBACK",51:"LINK",52:"CSSCLASS",55:"graphCodeTokens",57:"TAGSTART",58:"TAGEND",59:"==",60:"--",61:"PCT",62:"DEFAULT",63:"SPACE",64:"MINUS",65:"keywords",66:"UNICODE_TEXT",67:"NUM",68:"ALPHA"},
+productions_: [0,[3,1],[3,2],[4,1],[5,4],[5,6],[7,1],[8,1],[12,1],[9,1],[6,4],[18,1],[18,2],[18,3],[21,1],[21,2],[21,3],[21,2],[20,1],[20,2],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[26,2],[26,4],[26,5],[26,7],[28,4],[34,1],[34,2],[27,1],[27,2],[27,1],[27,1],[24,3],[24,4],[24,4],[24,5],[40,3],[40,2],[40,2],[40,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[29,3],[29,4],[29,3],[29,4],[30,3],[53,1],[53,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[22,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 6:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 7:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 8:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 9:
+ yy.parseDirective('}%%', 'close_directive', 'class'); 
+break;
+case 14:
+ this.$=$$[$0]; 
+break;
+case 15:
+ this.$=$$[$0-1]+$$[$0]; 
+break;
+case 16:
+ this.$=$$[$0-2]+'~'+$$[$0-1]+$$[$0]; 
+break;
+case 17:
+ this.$=$$[$0-1]+'~'+$$[$0]; 
+break;
+case 18:
+ yy.addRelation($$[$0]); 
+break;
+case 19:
+ $$[$0-1].title =  yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]);        
+break;
+case 26:
+yy.addClass($$[$0]);
+break;
+case 27:
+yy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);
+break;
+case 28:
+/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);
+break;
+case 29:
+yy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);
+break;
+case 30:
+ yy.addAnnotation($$[$0],$$[$0-2]); 
+break;
+case 31:
+ this.$ = [$$[$0]]; 
+break;
+case 32:
+ $$[$0].push($$[$0-1]);this.$=$$[$0];
+break;
+case 33:
+/*console.log('Rel found',$$[$0]);*/
+break;
+case 34:
+yy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));
+break;
+case 35:
+/*console.warn('Member',$$[$0]);*/
+break;
+case 36:
+/*console.log('sep found',$$[$0]);*/
+break;
+case 37:
+ this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; 
+break;
+case 38:
+ this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}
+break;
+case 39:
+ this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; 
+break;
+case 40:
+ this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} 
+break;
+case 41:
+ this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; 
+break;
+case 42:
+ this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; 
+break;
+case 43:
+ this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; 
+break;
+case 44:
+ this.$={type1:'none',type2:'none',lineType:$$[$0]}; 
+break;
+case 45:
+ this.$=yy.relationType.AGGREGATION;
+break;
+case 46:
+ this.$=yy.relationType.EXTENSION;
+break;
+case 47:
+ this.$=yy.relationType.COMPOSITION;
+break;
+case 48:
+ this.$=yy.relationType.DEPENDENCY;
+break;
+case 49:
+this.$=yy.lineType.LINE;
+break;
+case 50:
+this.$=yy.lineType.DOTTED_LINE;
+break;
+case 51:
+this.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0], undefined);
+break;
+case 52:
+this.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);
+break;
+case 53:
+this.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0], undefined);
+break;
+case 54:
+this.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);
+break;
+case 55:
+yy.setCssClass($$[$0-1], $$[$0]);
+break;
+}
+},
+table: [{3:1,4:2,5:3,6:4,7:5,13:$V0,17:$V1},{1:[3]},{1:[2,1]},{3:8,4:2,5:3,6:4,7:5,13:$V0,17:$V1},{1:[2,3]},{8:9,14:[1,10]},{10:[1,11]},{14:[2,6]},{1:[2,2]},{9:12,11:[1,13],16:$V2},o([11,16],[2,7]),{5:23,7:5,13:$V0,18:15,20:16,21:24,22:32,24:17,26:18,27:19,28:20,29:21,30:22,31:$V3,36:$V4,38:$V5,39:$V6,50:$V7,51:$V8,52:$V9,66:$Va,67:$Vb,68:$Vc},{10:[1,36]},{12:37,15:[1,38]},{10:[2,9]},{19:[1,39]},{10:[1,40],19:[2,11]},o($Vd,[2,18],{25:[1,41]}),o($Vd,[2,20]),o($Vd,[2,21]),o($Vd,[2,22]),o($Vd,[2,23]),o($Vd,[2,24]),o($Vd,[2,25]),o($Vd,[2,33],{40:42,42:45,43:46,25:[1,44],41:[1,43],44:$Ve,45:$Vf,46:$Vg,47:$Vh,48:$Vi,49:$Vj}),{21:53,22:32,66:$Va,67:$Vb,68:$Vc},o($Vd,[2,35]),o($Vd,[2,36]),{22:54,66:$Va,67:$Vb,68:$Vc},{21:55,22:32,66:$Va,67:$Vb,68:$Vc},{21:56,22:32,66:$Va,67:$Vb,68:$Vc},{41:[1,57]},o($Vk,[2,14],{22:32,21:58,23:[1,59],66:$Va,67:$Vb,68:$Vc}),o($Vl,[2,69]),o($Vl,[2,70]),o($Vl,[2,71]),o($Vm,[2,4]),{9:60,16:$V2},{16:[2,8]},{1:[2,10]},{5:23,7:5,13:$V0,18:61,19:[2,12],20:16,21:24,22:32,24:17,26:18,27:19,28:20,29:21,30:22,31:$V3,36:$V4,38:$V5,39:$V6,50:$V7,51:$V8,52:$V9,66:$Va,67:$Vb,68:$Vc},o($Vd,[2,19]),{21:62,22:32,41:[1,63],66:$Va,67:$Vb,68:$Vc},{40:64,42:45,43:46,44:$Ve,45:$Vf,46:$Vg,47:$Vh,48:$Vi,49:$Vj},o($Vd,[2,34]),{43:65,48:$Vi,49:$Vj},o($Vn,[2,44],{42:66,44:$Ve,45:$Vf,46:$Vg,47:$Vh}),o($Vo,[2,45]),o($Vo,[2,46]),o($Vo,[2,47]),o($Vo,[2,48]),o($Vp,[2,49]),o($Vp,[2,50]),o($Vd,[2,26],{32:[1,67],33:[1,68]}),{37:[1,69]},{41:[1,70]},{41:[1,71]},{22:72,66:$Va,67:$Vb,68:$Vc},o($Vk,[2,15]),o($Vk,[2,17],{22:32,21:73,66:$Va,67:$Vb,68:$Vc}),{10:[1,74]},{19:[2,13]},o($Vq,[2,37]),{21:75,22:32,66:$Va,67:$Vb,68:$Vc},{21:76,22:32,41:[1,77],66:$Va,67:$Vb,68:$Vc},o($Vn,[2,43],{42:78,44:$Ve,45:$Vf,46:$Vg,47:$Vh}),o($Vn,[2,42]),{22:79,66:$Va,67:$Vb,68:$Vc},{34:80,38:$Vr},{21:82,22:32,66:$Va,67:$Vb,68:$Vc},o($Vd,[2,51],{41:[1,83]}),o($Vd,[2,53],{41:[1,84]}),o($Vd,[2,55]),o($Vk,[2,16]),o($Vm,[2,5]),o($Vq,[2,39]),o($Vq,[2,38]),{21:85,22:32,66:$Va,67:$Vb,68:$Vc},o($Vn,[2,41]),o($Vd,[2,27],{33:[1,86]}),{35:[1,87]},{34:88,35:[2,31],38:$Vr},o($Vd,[2,30]),o($Vd,[2,52]),o($Vd,[2,54]),o($Vq,[2,40]),{34:89,38:$Vr},o($Vd,[2,28]),{35:[2,32]},{35:[1,90]},o($Vd,[2,29])],
+defaultActions: {2:[2,1],4:[2,3],7:[2,6],8:[2,2],14:[2,9],38:[2,8],39:[2,10],61:[2,13],88:[2,32]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 13; 
+break;
+case 1: this.begin('type_directive'); return 14; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 11; 
+break;
+case 3: this.popState(); this.popState(); return 16; 
+break;
+case 4:return 15;
+break;
+case 5:/* skip comments */
+break;
+case 6:/* skip comments */
+break;
+case 7:return 10;
+break;
+case 8:/* skip whitespace */
+break;
+case 9:return 17;
+break;
+case 10:return 17;
+break;
+case 11: this.begin("struct"); /*console.log('Starting struct');*/ return 33;
+break;
+case 12:return "EOF_IN_STRUCT";
+break;
+case 13:return "OPEN_IN_STRUCT";
+break;
+case 14: /*console.log('Ending struct');*/this.popState(); return 35;
+break;
+case 15:/* nothing */
+break;
+case 16: /*console.log('lex-member: ' + yy_.yytext);*/  return "MEMBER";
+break;
+case 17:return 31;
+break;
+case 18:return 52;
+break;
+case 19:return 50;
+break;
+case 20:return 51;
+break;
+case 21:return 36;
+break;
+case 22:return 37;
+break;
+case 23:this.begin("generic");
+break;
+case 24:this.popState();
+break;
+case 25:return "GENERICTYPE";
+break;
+case 26:this.begin("string");
+break;
+case 27:this.popState();
+break;
+case 28:return "STR";
+break;
+case 29:return 45;
+break;
+case 30:return 45;
+break;
+case 31:return 47;
+break;
+case 32:return 47;
+break;
+case 33:return 46;
+break;
+case 34:return 44;
+break;
+case 35:return 48;
+break;
+case 36:return 49;
+break;
+case 37:return 25;
+break;
+case 38:return 32;
+break;
+case 39:return 64;
+break;
+case 40:return 'DOT';
+break;
+case 41:return 'PLUS';
+break;
+case 42:return 61;
+break;
+case 43:return 'EQUALS';
+break;
+case 44:return 'EQUALS';
+break;
+case 45:return 68;
+break;
+case 46:return 'PUNCTUATION';
+break;
+case 47:return 67;
+break;
+case 48:return 66;
+break;
+case 49:return 63;
+break;
+case 50:return 19;
+break;
+}
+},
+rules: [/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],
+conditions: {"string":{"rules":[27,28],"inclusive":false},"generic":{"rules":[24,25],"inclusive":false},"struct":{"rules":[12,13,14,15,16],"inclusive":false},"open_directive":{"rules":[1],"inclusive":false},"type_directive":{"rules":[2,3],"inclusive":false},"arg_directive":{"rules":[3,4],"inclusive":false},"INITIAL":{"rules":[0,5,6,7,8,9,10,11,17,18,19,20,21,22,23,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/class/styles.js":
+/*!**************************************!*\
+  !*** ./src/diagrams/class/styles.js ***!
+  \**************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return "g.classGroup text {\n  fill: ".concat(options.nodeBorder, ";\n  fill: ").concat(options.classText, ";\n  stroke: none;\n  font-family: ").concat(options.fontFamily, ";\n  font-size: 10px;\n\n  .title {\n    font-weight: bolder;\n  }\n\n}\n\n.classTitle {\n  font-weight: bolder;\n}\n.node rect,\n  .node circle,\n  .node ellipse,\n  .node polygon,\n  .node path {\n    fill: ").concat(options.mainBkg, ";\n    stroke: ").concat(options.nodeBorder, ";\n    stroke-width: 1px;\n  }\n\n\n.divider {\n  stroke: ").concat(options.nodeBorder, ";\n  stroke: 1;\n}\n\ng.clickable {\n  cursor: pointer;\n}\n\ng.classGroup rect {\n  fill: ").concat(options.mainBkg, ";\n  stroke: ").concat(options.nodeBorder, ";\n}\n\ng.classGroup line {\n  stroke: ").concat(options.nodeBorder, ";\n  stroke-width: 1;\n}\n\n.classLabel .box {\n  stroke: none;\n  stroke-width: 0;\n  fill: ").concat(options.mainBkg, ";\n  opacity: 0.5;\n}\n\n.classLabel .label {\n  fill: ").concat(options.nodeBorder, ";\n  font-size: 10px;\n}\n\n.relation {\n  stroke: ").concat(options.lineColor, ";\n  stroke-width: 1;\n  fill: none;\n}\n\n.dashed-line{\n  stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n  fill: ").concat(options.lineColor, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n  fill: ").concat(options.lineColor, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n  fill: ").concat(options.lineColor, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n  fill: ").concat(options.lineColor, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n#extensionStart, .extension {\n  fill: ").concat(options.lineColor, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n  fill: ").concat(options.lineColor, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n  fill: ").concat(options.mainBkg, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n  fill: ").concat(options.mainBkg, " !important;\n  stroke: ").concat(options.lineColor, " !important;\n  stroke-width: 1;\n}\n\n.edgeTerminals {\n  font-size: 11px;\n}\n\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/class/svgDraw.js":
+/*!***************************************!*\
+  !*** ./src/diagrams/class/svgDraw.js ***!
+  \***************************************/
+/*! exports provided: drawEdge, drawClass, parseMember, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawEdge", function() { return drawEdge; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawClass", function() { return drawClass; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseMember", function() { return parseMember; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _classDb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./classDb */ "./src/diagrams/class/classDb.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+
+
+
+
+var edgeCount = 0;
+var drawEdge = function drawEdge(elem, path, relation, conf) {
+  var getRelationType = function getRelationType(type) {
+    switch (type) {
+      case _classDb__WEBPACK_IMPORTED_MODULE_1__["relationType"].AGGREGATION:
+        return 'aggregation';
+
+      case _classDb__WEBPACK_IMPORTED_MODULE_1__["relationType"].EXTENSION:
+        return 'extension';
+
+      case _classDb__WEBPACK_IMPORTED_MODULE_1__["relationType"].COMPOSITION:
+        return 'composition';
+
+      case _classDb__WEBPACK_IMPORTED_MODULE_1__["relationType"].DEPENDENCY:
+        return 'dependency';
+    }
+  };
+
+  path.points = path.points.filter(function (p) {
+    return !Number.isNaN(p.y);
+  }); // The data for our line
+
+  var lineData = path.points; // This is the accessor function we talked about above
+
+  var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_0__["line"])().x(function (d) {
+    return d.x;
+  }).y(function (d) {
+    return d.y;
+  }).curve(d3__WEBPACK_IMPORTED_MODULE_0__["curveBasis"]);
+  var svgPath = elem.append('path').attr('d', lineFunction(lineData)).attr('id', 'edge' + edgeCount).attr('class', 'relation');
+  var url = '';
+
+  if (conf.arrowMarkerAbsolute) {
+    url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
+    url = url.replace(/\(/g, '\\(');
+    url = url.replace(/\)/g, '\\)');
+  }
+
+  if (relation.relation.lineType == 1) {
+    svgPath.attr('class', 'relation dashed-line');
+  }
+
+  if (relation.relation.type1 !== 'none') {
+    svgPath.attr('marker-start', 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')');
+  }
+
+  if (relation.relation.type2 !== 'none') {
+    svgPath.attr('marker-end', 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')');
+  }
+
+  var x, y;
+  var l = path.points.length; // Calculate Label position
+
+  var labelPosition = _utils__WEBPACK_IMPORTED_MODULE_2__["default"].calcLabelPosition(path.points);
+  x = labelPosition.x;
+  y = labelPosition.y;
+  var p1_card_x, p1_card_y;
+  var p2_card_x, p2_card_y;
+
+  if (l % 2 !== 0 && l > 1) {
+    var cardinality_1_point = _utils__WEBPACK_IMPORTED_MODULE_2__["default"].calcCardinalityPosition(relation.relation.type1 !== 'none', path.points, path.points[0]);
+    var cardinality_2_point = _utils__WEBPACK_IMPORTED_MODULE_2__["default"].calcCardinalityPosition(relation.relation.type2 !== 'none', path.points, path.points[l - 1]);
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));
+    p1_card_x = cardinality_1_point.x;
+    p1_card_y = cardinality_1_point.y;
+    p2_card_x = cardinality_2_point.x;
+    p2_card_y = cardinality_2_point.y;
+  }
+
+  if (typeof relation.title !== 'undefined') {
+    var g = elem.append('g').attr('class', 'classLabel');
+    var label = g.append('text').attr('class', 'label').attr('x', x).attr('y', y).attr('fill', 'red').attr('text-anchor', 'middle').text(relation.title);
+    window.label = label;
+    var bounds = label.node().getBBox();
+    g.insert('rect', ':first-child').attr('class', 'box').attr('x', bounds.x - conf.padding / 2).attr('y', bounds.y - conf.padding / 2).attr('width', bounds.width + conf.padding).attr('height', bounds.height + conf.padding);
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('Rendering relation ' + JSON.stringify(relation));
+
+  if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {
+    var _g = elem.append('g').attr('class', 'cardinality');
+
+    _g.append('text').attr('class', 'type1').attr('x', p1_card_x).attr('y', p1_card_y).attr('fill', 'black').attr('font-size', '6').text(relation.relationTitle1);
+  }
+
+  if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {
+    var _g2 = elem.append('g').attr('class', 'cardinality');
+
+    _g2.append('text').attr('class', 'type2').attr('x', p2_card_x).attr('y', p2_card_y).attr('fill', 'black').attr('font-size', '6').text(relation.relationTitle2);
+  }
+
+  edgeCount++;
+};
+var drawClass = function drawClass(elem, classDef, conf) {
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].info('Rendering class ' + classDef);
+  var id = classDef.id;
+  var classInfo = {
+    id: id,
+    label: classDef.id,
+    width: 0,
+    height: 0
+  }; // add class group
+
+  var g = elem.append('g').attr('id', Object(_classDb__WEBPACK_IMPORTED_MODULE_1__["lookUpDomId"])(id)).attr('class', 'classGroup'); // add title
+
+  var title;
+
+  if (classDef.link) {
+    title = g.append('svg:a').attr('xlink:href', classDef.link).attr('target', '_blank').append('text').attr('y', conf.textHeight + conf.padding).attr('x', 0);
+  } else {
+    title = g.append('text').attr('y', conf.textHeight + conf.padding).attr('x', 0);
+  } // add annotations
+
+
+  var isFirst = true;
+  classDef.annotations.forEach(function (member) {
+    var titleText2 = title.append('tspan').text('«' + member + '»');
+    if (!isFirst) titleText2.attr('dy', conf.textHeight);
+    isFirst = false;
+  });
+  var classTitleString = classDef.id;
+
+  if (classDef.type !== undefined && classDef.type !== '') {
+    classTitleString += '<' + classDef.type + '>';
+  }
+
+  var classTitle = title.append('tspan').text(classTitleString).attr('class', 'title'); // If class has annotations the title needs to have an offset of the text height
+
+  if (!isFirst) classTitle.attr('dy', conf.textHeight);
+  var titleHeight = title.node().getBBox().height;
+  var membersLine = g.append('line') // text label for the x axis
+  .attr('x1', 0).attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2).attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);
+  var members = g.append('text') // text label for the x axis
+  .attr('x', conf.padding).attr('y', titleHeight + conf.dividerMargin + conf.textHeight).attr('fill', 'white').attr('class', 'classText');
+  isFirst = true;
+  classDef.members.forEach(function (member) {
+    addTspan(members, member, isFirst, conf);
+    isFirst = false;
+  });
+  var membersBox = members.node().getBBox();
+  var methodsLine = g.append('line') // text label for the x axis
+  .attr('x1', 0).attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);
+  var methods = g.append('text') // text label for the x axis
+  .attr('x', conf.padding).attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr('fill', 'white').attr('class', 'classText');
+  isFirst = true;
+  classDef.methods.forEach(function (method) {
+    addTspan(methods, method, isFirst, conf);
+    isFirst = false;
+  });
+  var classBox = g.node().getBBox();
+  var cssClassStr = ' ';
+
+  if (classDef.cssClasses.length > 0) {
+    cssClassStr = cssClassStr + classDef.cssClasses.join(' ');
+  }
+
+  var rect = g.insert('rect', ':first-child').attr('x', 0).attr('y', 0).attr('width', classBox.width + 2 * conf.padding).attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr('class', cssClassStr);
+  var rectWidth = rect.node().getBBox().width; // Center title
+  // We subtract the width of each text element from the class box width and divide it by 2
+
+  title.node().childNodes.forEach(function (x) {
+    x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);
+  });
+
+  if (classDef.tooltip) {
+    title.insert('title').text(classDef.tooltip);
+  }
+
+  membersLine.attr('x2', rectWidth);
+  methodsLine.attr('x2', rectWidth);
+  classInfo.width = rectWidth;
+  classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;
+  return classInfo;
+};
+var parseMember = function parseMember(text) {
+  var fieldRegEx = /(\+|-|~|#)?(\w+)(~\w+~|\[\])?\s+(\w+)/;
+  var methodRegEx = /^([+|\-|~|#])?(\w+) *\( *(.*)\) *(\*|\$)? *(\w*[~|[\]]*\s*\w*~?)$/;
+  var fieldMatch = text.match(fieldRegEx);
+  var methodMatch = text.match(methodRegEx);
+
+  if (fieldMatch && !methodMatch) {
+    return buildFieldDisplay(fieldMatch);
+  } else if (methodMatch) {
+    return buildMethodDisplay(methodMatch);
+  } else {
+    return buildLegacyDisplay(text);
+  }
+};
+
+var buildFieldDisplay = function buildFieldDisplay(parsedText) {
+  var displayText = '';
+
+  try {
+    var visibility = parsedText[1] ? parsedText[1].trim() : '';
+    var fieldType = parsedText[2] ? parsedText[2].trim() : '';
+    var genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';
+    var fieldName = parsedText[4] ? parsedText[4].trim() : '';
+    displayText = visibility + fieldType + genericType + ' ' + fieldName;
+  } catch (err) {
+    displayText = parsedText;
+  }
+
+  return {
+    displayText: displayText,
+    cssStyle: ''
+  };
+};
+
+var buildMethodDisplay = function buildMethodDisplay(parsedText) {
+  var cssStyle = '';
+  var displayText = '';
+
+  try {
+    var visibility = parsedText[1] ? parsedText[1].trim() : '';
+    var methodName = parsedText[2] ? parsedText[2].trim() : '';
+    var parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';
+    var classifier = parsedText[4] ? parsedText[4].trim() : '';
+    var returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';
+    displayText = visibility + methodName + '(' + parameters + ')' + returnType;
+    cssStyle = parseClassifier(classifier);
+  } catch (err) {
+    displayText = parsedText;
+  }
+
+  return {
+    displayText: displayText,
+    cssStyle: cssStyle
+  };
+};
+
+var buildLegacyDisplay = function buildLegacyDisplay(text) {
+  // if for some reason we dont have any match, use old format to parse text
+  var displayText = '';
+  var cssStyle = '';
+  var memberText = '';
+  var returnType = '';
+  var methodStart = text.indexOf('(');
+  var methodEnd = text.indexOf(')');
+
+  if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {
+    var visibility = '';
+    var methodName = '';
+    var firstChar = text.substring(0, 1);
+
+    if (firstChar.match(/\w/)) {
+      methodName = text.substring(0, methodStart).trim();
+    } else {
+      if (firstChar.match(/\+|-|~|#/)) {
+        visibility = firstChar;
+      }
+
+      methodName = text.substring(1, methodStart).trim();
+    }
+
+    var parameters = text.substring(methodStart + 1, methodEnd);
+    var classifier = text.substring(methodEnd + 1, 1);
+    cssStyle = parseClassifier(classifier);
+    displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';
+
+    if (methodEnd < memberText.length) {
+      returnType = text.substring(methodEnd + 2).trim();
+
+      if (returnType !== '') {
+        returnType = ' : ' + parseGenericTypes(returnType);
+      }
+    }
+  } else {
+    // finally - if all else fails, just send the text back as written (other than parsing for generic types)
+    displayText = parseGenericTypes(text);
+  }
+
+  return {
+    displayText: displayText,
+    cssStyle: cssStyle
+  };
+};
+
+var addTspan = function addTspan(textEl, txt, isFirst, conf) {
+  var member = parseMember(txt);
+  var tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);
+
+  if (member.cssStyle !== '') {
+    tSpan.attr('style', member.cssStyle);
+  }
+
+  if (!isFirst) {
+    tSpan.attr('dy', conf.textHeight);
+  }
+};
+
+var parseGenericTypes = function parseGenericTypes(text) {
+  var cleanedText = text;
+
+  if (text.indexOf('~') != -1) {
+    cleanedText = cleanedText.replace('~', '<');
+    cleanedText = cleanedText.replace('~', '>');
+    return parseGenericTypes(cleanedText);
+  } else {
+    return cleanedText;
+  }
+};
+
+var parseClassifier = function parseClassifier(classifier) {
+  switch (classifier) {
+    case '*':
+      return 'font-style:italic;';
+
+    case '$':
+      return 'text-decoration:underline;';
+
+    default:
+      return '';
+  }
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  drawClass: drawClass,
+  drawEdge: drawEdge,
+  parseMember: parseMember
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/common/common.js":
+/*!***************************************!*\
+  !*** ./src/diagrams/common/common.js ***!
+  \***************************************/
+/*! exports provided: getRows, removeScript, sanitizeText, lineBreakRegex, hasBreaks, splitBreaks, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRows", function() { return getRows; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeScript", function() { return removeScript; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sanitizeText", function() { return sanitizeText; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lineBreakRegex", function() { return lineBreakRegex; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasBreaks", function() { return hasBreaks; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "splitBreaks", function() { return splitBreaks; });
+var getRows = function getRows(s) {
+  if (!s) return 1;
+  var str = breakToPlaceholder(s);
+  str = str.replace(/\\n/g, '#br#');
+  return str.split('#br#');
+};
+var removeScript = function removeScript(txt) {
+  var rs = '';
+  var idx = 0;
+
+  while (idx >= 0) {
+    idx = txt.indexOf('<script');
+
+    if (idx >= 0) {
+      rs += txt.substr(0, idx);
+      txt = txt.substr(idx + 1);
+      idx = txt.indexOf('</script>');
+
+      if (idx >= 0) {
+        idx += 9;
+        txt = txt.substr(idx);
+      }
+    } else {
+      rs += txt;
+      idx = -1;
+      break;
+    }
+  }
+
+  return rs;
+};
+var sanitizeText = function sanitizeText(text, config) {
+  var txt = text;
+  var htmlLabels = true;
+
+  if (config.flowchart && (config.flowchart.htmlLabels === false || config.flowchart.htmlLabels === 'false')) {
+    htmlLabels = false;
+  }
+
+  if (htmlLabels) {
+    var level = config.securityLevel;
+
+    if (level === 'antiscript') {
+      txt = removeScript(txt);
+    } else if (level !== 'loose') {
+      // eslint-disable-line
+      txt = breakToPlaceholder(txt);
+      txt = txt.replace(/</g, '&lt;').replace(/>/g, '&gt;');
+      txt = txt.replace(/=/g, '&equals;');
+      txt = placeholderToBreak(txt);
+    }
+  }
+
+  return txt;
+};
+var lineBreakRegex = /<br\s*\/?>/gi;
+var hasBreaks = function hasBreaks(text) {
+  return /<br\s*[/]?>/gi.test(text);
+};
+var splitBreaks = function splitBreaks(text) {
+  return text.split(/<br\s*[/]?>/gi);
+};
+
+var breakToPlaceholder = function breakToPlaceholder(s) {
+  return s.replace(lineBreakRegex, '#br#');
+};
+
+var placeholderToBreak = function placeholderToBreak(s) {
+  return s.replace(/#br#/g, '<br/>');
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  getRows: getRows,
+  sanitizeText: sanitizeText,
+  hasBreaks: hasBreaks,
+  splitBreaks: splitBreaks,
+  lineBreakRegex: lineBreakRegex,
+  removeScript: removeScript
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/er/erDb.js":
+/*!*********************************!*\
+  !*** ./src/diagrams/er/erDb.js ***!
+  \*********************************/
+/*! exports provided: parseDirective, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/**
+ *
+ */
+
+
+
+var entities = {};
+var relationships = [];
+var title = '';
+var Cardinality = {
+  ZERO_OR_ONE: 'ZERO_OR_ONE',
+  ZERO_OR_MORE: 'ZERO_OR_MORE',
+  ONE_OR_MORE: 'ONE_OR_MORE',
+  ONLY_ONE: 'ONLY_ONE'
+};
+var Identification = {
+  NON_IDENTIFYING: 'NON_IDENTIFYING',
+  IDENTIFYING: 'IDENTIFYING'
+};
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].parseDirective(this, statement, context, type);
+};
+
+var addEntity = function addEntity(name) {
+  if (typeof entities[name] === 'undefined') {
+    entities[name] = name;
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Added new entity :', name);
+  }
+};
+
+var getEntities = function getEntities() {
+  return entities;
+};
+/**
+ * Add a relationship
+ * @param entA The first entity in the relationship
+ * @param rolA The role played by the first entity in relation to the second
+ * @param entB The second entity in the relationship
+ * @param rSpec The details of the relationship between the two entities
+ */
+
+
+var addRelationship = function addRelationship(entA, rolA, entB, rSpec) {
+  var rel = {
+    entityA: entA,
+    roleA: rolA,
+    entityB: entB,
+    relSpec: rSpec
+  };
+  relationships.push(rel);
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Added new relationship :', rel);
+};
+
+var getRelationships = function getRelationships() {
+  return relationships;
+}; // Keep this - TODO: revisit...allow the diagram to have a title
+
+
+var setTitle = function setTitle(txt) {
+  title = txt;
+};
+
+var getTitle = function getTitle() {
+  return title;
+};
+
+var clear = function clear() {
+  entities = {};
+  relationships = [];
+  title = '';
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  Cardinality: Cardinality,
+  Identification: Identification,
+  parseDirective: parseDirective,
+  getConfig: function getConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]().er;
+  },
+  addEntity: addEntity,
+  getEntities: getEntities,
+  addRelationship: addRelationship,
+  getRelationships: getRelationships,
+  clear: clear,
+  setTitle: setTitle,
+  getTitle: getTitle
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/er/erMarkers.js":
+/*!**************************************!*\
+  !*** ./src/diagrams/er/erMarkers.js ***!
+  \**************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var ERMarkers = {
+  ONLY_ONE_START: 'ONLY_ONE_START',
+  ONLY_ONE_END: 'ONLY_ONE_END',
+  ZERO_OR_ONE_START: 'ZERO_OR_ONE_START',
+  ZERO_OR_ONE_END: 'ZERO_OR_ONE_END',
+  ONE_OR_MORE_START: 'ONE_OR_MORE_START',
+  ONE_OR_MORE_END: 'ONE_OR_MORE_END',
+  ZERO_OR_MORE_START: 'ZERO_OR_MORE_START',
+  ZERO_OR_MORE_END: 'ZERO_OR_MORE_END'
+};
+/**
+ * Put the markers into the svg DOM for later use with edge paths
+ */
+
+var insertMarkers = function insertMarkers(elem, conf) {
+  var marker;
+  elem.append('defs').append('marker').attr('id', ERMarkers.ONLY_ONE_START).attr('refX', 0).attr('refY', 9).attr('markerWidth', 18).attr('markerHeight', 18).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M9,0 L9,18 M15,0 L15,18');
+  elem.append('defs').append('marker').attr('id', ERMarkers.ONLY_ONE_END).attr('refX', 18).attr('refY', 9).attr('markerWidth', 18).attr('markerHeight', 18).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M3,0 L3,18 M9,0 L9,18');
+  marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_ONE_START).attr('refX', 0).attr('refY', 9).attr('markerWidth', 30).attr('markerHeight', 18).attr('orient', 'auto');
+  marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 21).attr('cy', 9).attr('r', 6);
+  marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M9,0 L9,18');
+  marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_ONE_END).attr('refX', 30).attr('refY', 9).attr('markerWidth', 30).attr('markerHeight', 18).attr('orient', 'auto');
+  marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 9).attr('cy', 9).attr('r', 6);
+  marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M21,0 L21,18');
+  elem.append('defs').append('marker').attr('id', ERMarkers.ONE_OR_MORE_START).attr('refX', 18).attr('refY', 18).attr('markerWidth', 45).attr('markerHeight', 36).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');
+  elem.append('defs').append('marker').attr('id', ERMarkers.ONE_OR_MORE_END).attr('refX', 27).attr('refY', 18).attr('markerWidth', 45).attr('markerHeight', 36).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');
+  marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_MORE_START).attr('refX', 18).attr('refY', 18).attr('markerWidth', 57).attr('markerHeight', 36).attr('orient', 'auto');
+  marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 48).attr('cy', 18).attr('r', 6);
+  marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');
+  marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_MORE_END).attr('refX', 39).attr('refY', 18).attr('markerWidth', 57).attr('markerHeight', 36).attr('orient', 'auto');
+  marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 9).attr('cy', 18).attr('r', 6);
+  marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');
+  return;
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  ERMarkers: ERMarkers,
+  insertMarkers: insertMarkers
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/er/erRenderer.js":
+/*!***************************************!*\
+  !*** ./src/diagrams/er/erRenderer.js ***!
+  \***************************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _erDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./erDb */ "./src/diagrams/er/erDb.js");
+/* harmony import */ var _parser_erDiagram__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/erDiagram */ "./src/diagrams/er/parser/erDiagram.jison");
+/* harmony import */ var _parser_erDiagram__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_erDiagram__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_4__);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _erMarkers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./erMarkers */ "./src/diagrams/er/erMarkers.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+
+
+
+
+var conf = {};
+/**
+ * Allows the top-level API module to inject config specific to this renderer,
+ * storing it in the local conf object. Note that generic config still needs to be
+ * retrieved using getConfig() imported from the config module
+ */
+
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+
+  for (var i = 0; i < keys.length; i++) {
+    conf[keys[i]] = cnf[keys[i]];
+  }
+};
+/**
+ * Use D3 to construct the svg elements for the entities
+ * @param svgNode the svg node that contains the diagram
+ * @param entities The entities to be drawn
+ * @param graph The graph that contains the vertex and edge definitions post-layout
+ * @return The first entity that was inserted
+ */
+
+var drawEntities = function drawEntities(svgNode, entities, graph) {
+  var keys = Object.keys(entities);
+  var firstOne;
+  keys.forEach(function (id) {
+    // Create a group for each entity
+    var groupNode = svgNode.append('g').attr('id', id);
+    firstOne = firstOne === undefined ? id : firstOne; // Label the entity - this is done first so that we can get the bounding box
+    // which then determines the size of the rectangle
+
+    var textId = 'entity-' + id;
+    var textNode = groupNode.append('text').attr('class', 'er entityLabel').attr('id', textId).attr('x', 0).attr('y', 0).attr('dominant-baseline', 'middle').attr('text-anchor', 'middle').attr('style', 'font-family: ' + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().fontFamily + '; font-size: ' + conf.fontSize + 'px').text(id); // Calculate the width and height of the entity
+
+    var textBBox = textNode.node().getBBox();
+    var entityWidth = Math.max(conf.minEntityWidth, textBBox.width + conf.entityPadding * 2);
+    var entityHeight = Math.max(conf.minEntityHeight, textBBox.height + conf.entityPadding * 2); // Make sure the text gets centred relative to the entity box
+
+    textNode.attr('transform', 'translate(' + entityWidth / 2 + ',' + entityHeight / 2 + ')'); // Draw the rectangle - insert it before the text so that the text is not obscured
+
+    var rectNode = groupNode.insert('rect', '#' + textId).attr('class', 'er entityBox').attr('fill', conf.fill).attr('fill-opacity', '100%').attr('stroke', conf.stroke).attr('x', 0).attr('y', 0).attr('width', entityWidth).attr('height', entityHeight);
+    var rectBBox = rectNode.node().getBBox(); // Add the entity to the graph
+
+    graph.setNode(id, {
+      width: rectBBox.width,
+      height: rectBBox.height,
+      shape: 'rect',
+      id: id
+    });
+  });
+  return firstOne;
+}; // drawEntities
+
+
+var adjustEntities = function adjustEntities(svgNode, graph) {
+  graph.nodes().forEach(function (v) {
+    if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {
+      svgNode.select('#' + v).attr('transform', 'translate(' + (graph.node(v).x - graph.node(v).width / 2) + ',' + (graph.node(v).y - graph.node(v).height / 2) + ' )');
+    }
+  });
+  return;
+};
+
+var getEdgeName = function getEdgeName(rel) {
+  return (rel.entityA + rel.roleA + rel.entityB).replace(/\s/g, '');
+};
+/**
+ * Add each relationship to the graph
+ * @param relationships the relationships to be added
+ * @param g the graph
+ * @return {Array} The array of relationships
+ */
+
+
+var addRelationships = function addRelationships(relationships, g) {
+  relationships.forEach(function (r) {
+    g.setEdge(r.entityA, r.entityB, {
+      relationship: r
+    }, getEdgeName(r));
+  });
+  return relationships;
+}; // addRelationships
+
+
+var relCnt = 0;
+/**
+ * Draw a relationship using edge information from the graph
+ * @param svg the svg node
+ * @param rel the relationship to draw in the svg
+ * @param g the graph containing the edge information
+ * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes)
+ */
+
+var drawRelationshipFromLayout = function drawRelationshipFromLayout(svg, rel, g, insert) {
+  relCnt++; // Find the edge relating to this relationship
+
+  var edge = g.edge(rel.entityA, rel.entityB, getEdgeName(rel)); // Get a function that will generate the line path
+
+  var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_1__["line"])().x(function (d) {
+    return d.x;
+  }).y(function (d) {
+    return d.y;
+  }).curve(d3__WEBPACK_IMPORTED_MODULE_1__["curveBasis"]); // Insert the line at the right place
+
+  var svgPath = svg.insert('path', '#' + insert).attr('class', 'er relationshipLine').attr('d', lineFunction(edge.points)).attr('stroke', conf.stroke).attr('fill', 'none'); // ...and with dashes if necessary
+
+  if (rel.relSpec.relType === _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Identification.NON_IDENTIFYING) {
+    svgPath.attr('stroke-dasharray', '8,8');
+  } // TODO: Understand this better
+
+
+  var url = '';
+
+  if (conf.arrowMarkerAbsolute) {
+    url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
+    url = url.replace(/\(/g, '\\(');
+    url = url.replace(/\)/g, '\\)');
+  } // Decide which start and end markers it needs. It may be possible to be more concise here
+  // by reversing a start marker to make an end marker...but this will do for now
+  // Note that the 'A' entity's marker is at the end of the relationship and the 'B' entity's marker is at the start
+
+
+  switch (rel.relSpec.cardA) {
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ZERO_OR_ONE:
+      svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ZERO_OR_ONE_END + ')');
+      break;
+
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ZERO_OR_MORE:
+      svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ZERO_OR_MORE_END + ')');
+      break;
+
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ONE_OR_MORE:
+      svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ONE_OR_MORE_END + ')');
+      break;
+
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ONLY_ONE:
+      svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ONLY_ONE_END + ')');
+      break;
+  }
+
+  switch (rel.relSpec.cardB) {
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ZERO_OR_ONE:
+      svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ZERO_OR_ONE_START + ')');
+      break;
+
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ZERO_OR_MORE:
+      svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ZERO_OR_MORE_START + ')');
+      break;
+
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ONE_OR_MORE:
+      svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ONE_OR_MORE_START + ')');
+      break;
+
+    case _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].Cardinality.ONLY_ONE:
+      svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].ERMarkers.ONLY_ONE_START + ')');
+      break;
+  } // Now label the relationship
+  // Find the half-way point
+
+
+  var len = svgPath.node().getTotalLength();
+  var labelPoint = svgPath.node().getPointAtLength(len * 0.5); // Append a text node containing the label
+
+  var labelId = 'rel' + relCnt;
+  var labelNode = svg.append('text').attr('class', 'er relationshipLabel').attr('id', labelId).attr('x', labelPoint.x).attr('y', labelPoint.y).attr('text-anchor', 'middle').attr('dominant-baseline', 'middle').attr('style', 'font-family: ' + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().fontFamily + '; font-size: ' + conf.fontSize + 'px').text(rel.roleA); // Figure out how big the opaque 'container' rectangle needs to be
+
+  var labelBBox = labelNode.node().getBBox(); // Insert the opaque rectangle before the text label
+
+  svg.insert('rect', '#' + labelId).attr('class', 'er relationshipLabelBox').attr('x', labelPoint.x - labelBBox.width / 2).attr('y', labelPoint.y - labelBBox.height / 2).attr('width', labelBBox.width).attr('height', labelBBox.height).attr('fill', 'white').attr('fill-opacity', '85%');
+  return;
+};
+/**
+ * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram
+ * @param text the text of the diagram
+ * @param id the unique id of the DOM node that contains the diagram
+ */
+
+
+var draw = function draw(text, id) {
+  _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info('Drawing ER diagram');
+  _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].clear();
+  var parser = _parser_erDiagram__WEBPACK_IMPORTED_MODULE_3___default.a.parser;
+  parser.yy = _erDb__WEBPACK_IMPORTED_MODULE_2__["default"]; // Parse the text to populate erDb
+
+  try {
+    parser.parse(text);
+  } catch (err) {
+    _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].debug('Parsing failed');
+  } // Get a reference to the svg node that contains the text
+
+
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])("[id='".concat(id, "']")); // Add cardinality marker definitions to the svg
+
+  _erMarkers__WEBPACK_IMPORTED_MODULE_7__["default"].insertMarkers(svg, conf); // Now we have to construct the diagram in a specific way:
+  // ---
+  // 1. Create all the entities in the svg node at 0,0, but with the correct dimensions (allowing for text content)
+  // 2. Make sure they are all added to the graph
+  // 3. Add all the edges (relationships) to the graph aswell
+  // 4. Let dagre do its magic to layout the graph.  This assigns:
+  //    - the centre co-ordinates for each node, bearing in mind the dimensions and edge relationships
+  //    - the path co-ordinates for each edge
+  //    But it has no impact on the svg child nodes - the diagram remains with every entity rooted at 0,0
+  // 5. Now assign a transform to each entity in the svg node so that it gets drawn in the correct place, as determined by
+  //    its centre point, which is obtained from the graph, and it's width and height
+  // 6. And finally, create all the edges in the svg node using information from the graph
+  // ---
+  // Create the graph
+
+  var g; // TODO: Explore directed vs undirected graphs, and how the layout is affected
+  // An E-R diagram could be said to be undirected, but there is merit in setting
+  // the direction from parent to child in a one-to-many as this influences graphlib to
+  // put the parent above the child (does it?), which is intuitive.  Most relationships
+  // in ER diagrams are one-to-many.
+
+  g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({
+    multigraph: true,
+    directed: true,
+    compound: false
+  }).setGraph({
+    rankdir: conf.layoutDirection,
+    marginx: 20,
+    marginy: 20,
+    nodesep: 100,
+    edgesep: 100,
+    ranksep: 100
+  }).setDefaultEdgeLabel(function () {
+    return {};
+  }); // Draw the entities (at 0,0), returning the first svg node that got
+  // inserted - this represents the insertion point for relationship paths
+
+  var firstEntity = drawEntities(svg, _erDb__WEBPACK_IMPORTED_MODULE_2__["default"].getEntities(), g); // TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above
+  // Add all the relationships to the graph
+
+  var relationships = addRelationships(_erDb__WEBPACK_IMPORTED_MODULE_2__["default"].getRelationships(), g);
+  dagre__WEBPACK_IMPORTED_MODULE_4___default.a.layout(g); // Node and edge positions will be updated
+  // Adjust the positions of the entities so that they adhere to the layout
+
+  adjustEntities(svg, g); // Draw the relationships
+
+  relationships.forEach(function (rel) {
+    drawRelationshipFromLayout(svg, rel, g, firstEntity);
+  });
+  var padding = conf.diagramPadding;
+  var svgBounds = svg.node().getBBox();
+  var width = svgBounds.width + padding * 2;
+  var height = svgBounds.height + padding * 2;
+  Object(_utils__WEBPACK_IMPORTED_MODULE_8__["configureSvgSize"])(svg, height, width, conf.useMaxWidth);
+  svg.attr('viewBox', "".concat(svgBounds.x - padding, " ").concat(svgBounds.y - padding, " ").concat(width, " ").concat(height));
+}; // draw
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/er/parser/erDiagram.jison":
+/*!************************************************!*\
+  !*** ./src/diagrams/er/parser/erDiagram.jison ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,20,30],$V3=[1,17],$V4=[1,20],$V5=[1,24],$V6=[1,25],$V7=[1,26],$V8=[1,27],$V9=[20,27,28],$Va=[4,6,9,11,20,30],$Vb=[23,24,25,26];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"ER_DIAGRAM":4,"document":5,"EOF":6,"directive":7,"line":8,"SPACE":9,"statement":10,"NEWLINE":11,"openDirective":12,"typeDirective":13,"closeDirective":14,":":15,"argDirective":16,"entityName":17,"relSpec":18,"role":19,"ALPHANUM":20,"cardinality":21,"relType":22,"ZERO_OR_ONE":23,"ZERO_OR_MORE":24,"ONE_OR_MORE":25,"ONLY_ONE":26,"NON_IDENTIFYING":27,"IDENTIFYING":28,"WORD":29,"open_directive":30,"type_directive":31,"arg_directive":32,"close_directive":33,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"ALPHANUM",23:"ZERO_OR_ONE",24:"ZERO_OR_MORE",25:"ONE_OR_MORE",26:"ONLY_ONE",27:"NON_IDENTIFYING",28:"IDENTIFYING",29:"WORD",30:"open_directive",31:"type_directive",32:"arg_directive",33:"close_directive"},
+productions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[17,1],[18,3],[21,1],[21,1],[21,1],[21,1],[22,1],[22,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+ /*console.log('finished parsing');*/ 
+break;
+case 3:
+ this.$ = [] 
+break;
+case 4:
+$$[$0-1].push($$[$0]);this.$ = $$[$0-1]
+break;
+case 5: case 6:
+ this.$ = $$[$0] 
+break;
+case 7: case 8:
+ this.$=[];
+break;
+case 12:
+
+          yy.addEntity($$[$0-4]);
+          yy.addEntity($$[$0-2]);
+          yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);
+          /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/
+      
+break;
+case 13:
+ this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ 
+break;
+case 14:
+
+        this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };
+        /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/
+      
+break;
+case 15:
+ this.$ = yy.Cardinality.ZERO_OR_ONE; 
+break;
+case 16:
+ this.$ = yy.Cardinality.ZERO_OR_MORE; 
+break;
+case 17:
+ this.$ = yy.Cardinality.ONE_OR_MORE; 
+break;
+case 18:
+ this.$ = yy.Cardinality.ONLY_ONE; 
+break;
+case 19:
+ this.$ = yy.Identification.NON_IDENTIFYING;  
+break;
+case 20:
+ this.$ = yy.Identification.IDENTIFYING; 
+break;
+case 21:
+ this.$ = $$[$0].replace(/"/g, ''); 
+break;
+case 22:
+ this.$ = $$[$0]; 
+break;
+case 23:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 24:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 25:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 26:
+ yy.parseDirective('}%%', 'close_directive', 'er'); 
+break;
+}
+},
+table: [{3:1,4:$V0,7:3,12:4,30:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,30:$V1},{13:8,31:[1,9]},{31:[2,23]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,20:$V3,30:$V1},{1:[2,2]},{14:18,15:[1,19],33:$V4},o([15,33],[2,24]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:21,12:4,17:16,20:$V3,30:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),{18:22,21:23,23:$V5,24:$V6,25:$V7,26:$V8},o([15,23,24,25,26],[2,13]),{11:[1,28]},{16:29,32:[1,30]},{11:[2,26]},o($V2,[2,5]),{17:31,20:$V3},{22:32,27:[1,33],28:[1,34]},o($V9,[2,15]),o($V9,[2,16]),o($V9,[2,17]),o($V9,[2,18]),o($Va,[2,9]),{14:35,33:$V4},{33:[2,25]},{15:[1,36]},{21:37,23:$V5,24:$V6,25:$V7,26:$V8},o($Vb,[2,19]),o($Vb,[2,20]),{11:[1,38]},{19:39,20:[1,41],29:[1,40]},{20:[2,14]},o($Va,[2,10]),o($V2,[2,12]),o($V2,[2,21]),o($V2,[2,22])],
+defaultActions: {5:[2,23],7:[2,2],20:[2,26],30:[2,25],37:[2,14]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 30; 
+break;
+case 1: this.begin('type_directive'); return 31; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 15; 
+break;
+case 3: this.popState(); this.popState(); return 33; 
+break;
+case 4:return 32;
+break;
+case 5:/* skip comments */
+break;
+case 6:/* skip comments */
+break;
+case 7:return 11;
+break;
+case 8:/* skip whitespace */
+break;
+case 9:return 9;
+break;
+case 10:return 29;
+break;
+case 11:return 4;
+break;
+case 12:return 23;
+break;
+case 13:return 24;
+break;
+case 14:return 25;
+break;
+case 15:return 26;
+break;
+case 16:return 23;
+break;
+case 17:return 24;
+break;
+case 18:return 25;
+break;
+case 19:return 27;
+break;
+case 20:return 28;
+break;
+case 21:return 27;
+break;
+case 22:return 27;
+break;
+case 23:return 20;
+break;
+case 24:return yy_.yytext[0];
+break;
+case 25:return 6;
+break;
+}
+},
+rules: [/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-]*)/i,/^(?:.)/i,/^(?:$)/i],
+conditions: {"open_directive":{"rules":[1],"inclusive":false},"type_directive":{"rules":[2,3],"inclusive":false},"arg_directive":{"rules":[3,4],"inclusive":false},"INITIAL":{"rules":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/er/styles.js":
+/*!***********************************!*\
+  !*** ./src/diagrams/er/styles.js ***!
+  \***********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return "\n  .entityBox {\n    fill: ".concat(options.mainBkg, ";\n    stroke: ").concat(options.nodeBorder, ";\n  }\n\n  .relationshipLabelBox {\n    fill: ").concat(options.tertiaryColor, ";\n    opacity: 0.7;\n    background-color: ").concat(options.tertiaryColor, ";\n      rect {\n        opacity: 0.5;\n      }\n  }\n\n    .relationshipLine {\n      stroke: ").concat(options.lineColor, ";\n    }\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/flowchart/flowChartShapes.js":
+/*!***************************************************!*\
+  !*** ./src/diagrams/flowchart/flowChartShapes.js ***!
+  \***************************************************/
+/*! exports provided: addToRender, addToRenderV2, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addToRender", function() { return addToRender; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addToRenderV2", function() { return addToRenderV2; });
+/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3 */ "./node_modules/dagre-d3/index.js");
+/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dagre_d3__WEBPACK_IMPORTED_MODULE_0__);
+
+
+function question(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var s = (w + h) * 0.9;
+  var points = [{
+    x: s / 2,
+    y: 0
+  }, {
+    x: s,
+    y: -s / 2
+  }, {
+    x: s / 2,
+    y: -s
+  }, {
+    x: 0,
+    y: -s / 2
+  }];
+  var shapeSvg = insertPolygonShape(parent, s, s, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function hexagon(parent, bbox, node) {
+  var f = 4;
+  var h = bbox.height;
+  var m = h / f;
+  var w = bbox.width + 2 * m;
+  var points = [{
+    x: m,
+    y: 0
+  }, {
+    x: w - m,
+    y: 0
+  }, {
+    x: w,
+    y: -h / 2
+  }, {
+    x: w - m,
+    y: -h
+  }, {
+    x: m,
+    y: -h
+  }, {
+    x: 0,
+    y: -h / 2
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function rect_left_inv_arrow(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var points = [{
+    x: -h / 2,
+    y: 0
+  }, {
+    x: w,
+    y: 0
+  }, {
+    x: w,
+    y: -h
+  }, {
+    x: -h / 2,
+    y: -h
+  }, {
+    x: 0,
+    y: -h / 2
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function lean_right(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var points = [{
+    x: -2 * h / 6,
+    y: 0
+  }, {
+    x: w - h / 6,
+    y: 0
+  }, {
+    x: w + 2 * h / 6,
+    y: -h
+  }, {
+    x: h / 6,
+    y: -h
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function lean_left(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var points = [{
+    x: 2 * h / 6,
+    y: 0
+  }, {
+    x: w + h / 6,
+    y: 0
+  }, {
+    x: w - 2 * h / 6,
+    y: -h
+  }, {
+    x: -h / 6,
+    y: -h
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function trapezoid(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var points = [{
+    x: -2 * h / 6,
+    y: 0
+  }, {
+    x: w + 2 * h / 6,
+    y: 0
+  }, {
+    x: w - h / 6,
+    y: -h
+  }, {
+    x: h / 6,
+    y: -h
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function inv_trapezoid(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var points = [{
+    x: h / 6,
+    y: 0
+  }, {
+    x: w - h / 6,
+    y: 0
+  }, {
+    x: w + 2 * h / 6,
+    y: -h
+  }, {
+    x: -2 * h / 6,
+    y: -h
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function rect_right_inv_arrow(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var points = [{
+    x: 0,
+    y: 0
+  }, {
+    x: w + h / 2,
+    y: 0
+  }, {
+    x: w,
+    y: -h / 2
+  }, {
+    x: w + h / 2,
+    y: -h
+  }, {
+    x: 0,
+    y: -h
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function stadium(parent, bbox, node) {
+  var h = bbox.height;
+  var w = bbox.width + h / 4;
+  var shapeSvg = parent.insert('rect', ':first-child').attr('rx', h / 2).attr('ry', h / 2).attr('x', -w / 2).attr('y', -h / 2).attr('width', w).attr('height', h);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.rect(node, point);
+  };
+
+  return shapeSvg;
+}
+
+function subroutine(parent, bbox, node) {
+  var w = bbox.width;
+  var h = bbox.height;
+  var points = [{
+    x: 0,
+    y: 0
+  }, {
+    x: w,
+    y: 0
+  }, {
+    x: w,
+    y: -h
+  }, {
+    x: 0,
+    y: -h
+  }, {
+    x: 0,
+    y: 0
+  }, {
+    x: -8,
+    y: 0
+  }, {
+    x: w + 8,
+    y: 0
+  }, {
+    x: w + 8,
+    y: -h
+  }, {
+    x: -8,
+    y: -h
+  }, {
+    x: -8,
+    y: 0
+  }];
+  var shapeSvg = insertPolygonShape(parent, w, h, points);
+
+  node.intersect = function (point) {
+    return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);
+  };
+
+  return shapeSvg;
+}
+
+function cylinder(parent, bbox, node) {
+  var w = bbox.width;
+  var rx = w / 2;
+  var ry = rx / (2.5 + w / 50);
+  var h = bbox.height + ry;
+  var shape = 'M 0,' + ry + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 a ' + rx + ',' + ry + ' 0,0,0 ' + -w + ' 0 l 0,' + h + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 l 0,' + -h;
+  var shapeSvg = parent.attr('label-offset-y', ry).insert('path', ':first-child').attr('d', shape).attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');
+
+  node.intersect = function (point) {
+    var pos = dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.rect(node, point);
+    var x = pos.x - node.x;
+
+    if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {
+      // ellipsis equation: x*x / a*a + y*y / b*b = 1
+      // solve for y to get adjustion value for pos.y
+      var y = ry * ry * (1 - x * x / (rx * rx));
+      if (y != 0) y = Math.sqrt(y);
+      y = ry - y;
+      if (point.y - node.y > 0) y = -y;
+      pos.y += y;
+    }
+
+    return pos;
+  };
+
+  return shapeSvg;
+}
+
+function addToRender(render) {
+  render.shapes().question = question;
+  render.shapes().hexagon = hexagon;
+  render.shapes().stadium = stadium;
+  render.shapes().subroutine = subroutine;
+  render.shapes().cylinder = cylinder; // Add custom shape for box with inverted arrow on left side
+
+  render.shapes().rect_left_inv_arrow = rect_left_inv_arrow; // Add custom shape for box with inverted arrow on left side
+
+  render.shapes().lean_right = lean_right; // Add custom shape for box with inverted arrow on left side
+
+  render.shapes().lean_left = lean_left; // Add custom shape for box with inverted arrow on left side
+
+  render.shapes().trapezoid = trapezoid; // Add custom shape for box with inverted arrow on left side
+
+  render.shapes().inv_trapezoid = inv_trapezoid; // Add custom shape for box with inverted arrow on right side
+
+  render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;
+}
+function addToRenderV2(addShape) {
+  addShape({
+    question: question
+  });
+  addShape({
+    hexagon: hexagon
+  });
+  addShape({
+    stadium: stadium
+  });
+  addShape({
+    subroutine: subroutine
+  });
+  addShape({
+    cylinder: cylinder
+  }); // Add custom shape for box with inverted arrow on left side
+
+  addShape({
+    rect_left_inv_arrow: rect_left_inv_arrow
+  }); // Add custom shape for box with inverted arrow on left side
+
+  addShape({
+    lean_right: lean_right
+  }); // Add custom shape for box with inverted arrow on left side
+
+  addShape({
+    lean_left: lean_left
+  }); // Add custom shape for box with inverted arrow on left side
+
+  addShape({
+    trapezoid: trapezoid
+  }); // Add custom shape for box with inverted arrow on left side
+
+  addShape({
+    inv_trapezoid: inv_trapezoid
+  }); // Add custom shape for box with inverted arrow on right side
+
+  addShape({
+    rect_right_inv_arrow: rect_right_inv_arrow
+  });
+}
+
+function insertPolygonShape(parent, w, h, points) {
+  return parent.insert('polygon', ':first-child').attr('points', points.map(function (d) {
+    return d.x + ',' + d.y;
+  }).join(' ')).attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');
+}
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  addToRender: addToRender,
+  addToRenderV2: addToRenderV2
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/flowchart/flowDb.js":
+/*!******************************************!*\
+  !*** ./src/diagrams/flowchart/flowDb.js ***!
+  \******************************************/
+/*! exports provided: parseDirective, lookUpDomId, addVertex, addSingleLink, addLink, updateLinkInterpolate, updateLink, addClass, setDirection, setClass, setLink, getTooltip, setClickEvent, bindFunctions, getDirection, getVertices, getEdges, getClasses, clear, setGen, defaultStyle, addSubGraph, getDepthFirstPos, indexNodes, getSubGraphs, firstGraph, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lookUpDomId", function() { return lookUpDomId; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addVertex", function() { return addVertex; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSingleLink", function() { return addSingleLink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addLink", function() { return addLink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateLinkInterpolate", function() { return updateLinkInterpolate; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateLink", function() { return updateLink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClass", function() { return addClass; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDirection", function() { return setDirection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setClass", function() { return setClass; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setLink", function() { return setLink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTooltip", function() { return getTooltip; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setClickEvent", function() { return setClickEvent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindFunctions", function() { return bindFunctions; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDirection", function() { return getDirection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getVertices", function() { return getVertices; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getEdges", function() { return getEdges; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getClasses", function() { return getClasses; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setGen", function() { return setGen; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultStyle", function() { return defaultStyle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSubGraph", function() { return addSubGraph; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDepthFirstPos", function() { return getDepthFirstPos; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "indexNodes", function() { return indexNodes; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSubGraphs", function() { return getSubGraphs; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "firstGraph", function() { return firstGraph; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+
+
+
+
+
+
+var MERMAID_DOM_ID_PREFIX = 'flowchart-';
+var vertexCounter = 0;
+var config = _config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]();
+var vertices = {};
+var edges = [];
+var classes = [];
+var subGraphs = [];
+var subGraphLookup = {};
+var tooltips = {};
+var subCount = 0;
+var firstGraphFlag = true;
+var direction;
+var version; // As in graph
+// Functions to be run after graph rendering
+
+var funs = [];
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_4__["default"].parseDirective(this, statement, context, type);
+};
+/**
+ * Function to lookup domId from id in the graph definition.
+ * @param id
+ * @public
+ */
+
+var lookUpDomId = function lookUpDomId(id) {
+  var veritceKeys = Object.keys(vertices);
+
+  for (var i = 0; i < veritceKeys.length; i++) {
+    if (vertices[veritceKeys[i]].id === id) {
+      return vertices[veritceKeys[i]].domId;
+    }
+  }
+
+  return id;
+};
+/**
+ * Function called by parser when a node definition has been found
+ * @param id
+ * @param text
+ * @param type
+ * @param style
+ * @param classes
+ */
+
+var addVertex = function addVertex(_id, text, type, style, classes) {
+  var txt;
+  var id = _id;
+
+  if (typeof id === 'undefined') {
+    return;
+  }
+
+  if (id.trim().length === 0) {
+    return;
+  } // if (id[0].match(/\d/)) id = MERMAID_DOM_ID_PREFIX + id;
+
+
+  if (typeof vertices[id] === 'undefined') {
+    vertices[id] = {
+      id: id,
+      domId: MERMAID_DOM_ID_PREFIX + id + '-' + vertexCounter,
+      styles: [],
+      classes: []
+    };
+  }
+
+  vertexCounter++;
+
+  if (typeof text !== 'undefined') {
+    config = _config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]();
+    txt = _common_common__WEBPACK_IMPORTED_MODULE_3__["default"].sanitizeText(text.trim(), config); // strip quotes if string starts and ends with a quote
+
+    if (txt[0] === '"' && txt[txt.length - 1] === '"') {
+      txt = txt.substring(1, txt.length - 1);
+    }
+
+    vertices[id].text = txt;
+  } else {
+    if (typeof vertices[id].text === 'undefined') {
+      vertices[id].text = _id;
+    }
+  }
+
+  if (typeof type !== 'undefined') {
+    vertices[id].type = type;
+  }
+
+  if (typeof style !== 'undefined') {
+    if (style !== null) {
+      style.forEach(function (s) {
+        vertices[id].styles.push(s);
+      });
+    }
+  }
+
+  if (typeof classes !== 'undefined') {
+    if (classes !== null) {
+      classes.forEach(function (s) {
+        vertices[id].classes.push(s);
+      });
+    }
+  }
+};
+/**
+ * Function called by parser when a link/edge definition has been found
+ * @param start
+ * @param end
+ * @param type
+ * @param linktext
+ */
+
+var addSingleLink = function addSingleLink(_start, _end, type, linktext) {
+  var start = _start;
+  var end = _end; // if (start[0].match(/\d/)) start = MERMAID_DOM_ID_PREFIX + start;
+  // if (end[0].match(/\d/)) end = MERMAID_DOM_ID_PREFIX + end;
+  // logger.info('Got edge...', start, end);
+
+  var edge = {
+    start: start,
+    end: end,
+    type: undefined,
+    text: ''
+  };
+  linktext = type.text;
+
+  if (typeof linktext !== 'undefined') {
+    edge.text = _common_common__WEBPACK_IMPORTED_MODULE_3__["default"].sanitizeText(linktext.trim(), config); // strip quotes if string starts and exnds with a quote
+
+    if (edge.text[0] === '"' && edge.text[edge.text.length - 1] === '"') {
+      edge.text = edge.text.substring(1, edge.text.length - 1);
+    }
+  }
+
+  if (typeof type !== 'undefined') {
+    edge.type = type.type;
+    edge.stroke = type.stroke;
+    edge.length = type.length;
+  }
+
+  edges.push(edge);
+};
+var addLink = function addLink(_start, _end, type, linktext) {
+  var i, j;
+
+  for (i = 0; i < _start.length; i++) {
+    for (j = 0; j < _end.length; j++) {
+      addSingleLink(_start[i], _end[j], type, linktext);
+    }
+  }
+};
+/**
+ * Updates a link's line interpolation algorithm
+ * @param pos
+ * @param interpolate
+ */
+
+var updateLinkInterpolate = function updateLinkInterpolate(positions, interp) {
+  positions.forEach(function (pos) {
+    if (pos === 'default') {
+      edges.defaultInterpolate = interp;
+    } else {
+      edges[pos].interpolate = interp;
+    }
+  });
+};
+/**
+ * Updates a link with a style
+ * @param pos
+ * @param style
+ */
+
+var updateLink = function updateLink(positions, style) {
+  positions.forEach(function (pos) {
+    if (pos === 'default') {
+      edges.defaultStyle = style;
+    } else {
+      if (_utils__WEBPACK_IMPORTED_MODULE_1__["default"].isSubstringInArray('fill', style) === -1) {
+        style.push('fill:none');
+      }
+
+      edges[pos].style = style;
+    }
+  });
+};
+var addClass = function addClass(id, style) {
+  if (typeof classes[id] === 'undefined') {
+    classes[id] = {
+      id: id,
+      styles: [],
+      textStyles: []
+    };
+  }
+
+  if (typeof style !== 'undefined') {
+    if (style !== null) {
+      style.forEach(function (s) {
+        if (s.match('color')) {
+          var newStyle1 = s.replace('fill', 'bgFill');
+          var newStyle2 = newStyle1.replace('color', 'fill');
+          classes[id].textStyles.push(newStyle2);
+        }
+
+        classes[id].styles.push(s);
+      });
+    }
+  }
+};
+/**
+ * Called by parser when a graph definition is found, stores the direction of the chart.
+ * @param dir
+ */
+
+var setDirection = function setDirection(dir) {
+  direction = dir;
+
+  if (direction.match(/.*</)) {
+    direction = 'RL';
+  }
+
+  if (direction.match(/.*\^/)) {
+    direction = 'BT';
+  }
+
+  if (direction.match(/.*>/)) {
+    direction = 'LR';
+  }
+
+  if (direction.match(/.*v/)) {
+    direction = 'TB';
+  }
+};
+/**
+ * Called by parser when a special node is found, e.g. a clickable element.
+ * @param ids Comma separated list of ids
+ * @param className Class to add
+ */
+
+var setClass = function setClass(ids, className) {
+  ids.split(',').forEach(function (_id) {
+    // let id = version === 'gen-2' ? lookUpDomId(_id) : _id;
+    var id = _id; // if (_id[0].match(/\d/)) id = MERMAID_DOM_ID_PREFIX + id;
+
+    if (typeof vertices[id] !== 'undefined') {
+      vertices[id].classes.push(className);
+    }
+
+    if (typeof subGraphLookup[id] !== 'undefined') {
+      subGraphLookup[id].classes.push(className);
+    }
+  });
+};
+
+var setTooltip = function setTooltip(ids, tooltip) {
+  ids.split(',').forEach(function (id) {
+    if (typeof tooltip !== 'undefined') {
+      tooltips[version === 'gen-1' ? lookUpDomId(id) : id] = _common_common__WEBPACK_IMPORTED_MODULE_3__["default"].sanitizeText(tooltip, config);
+    }
+  });
+};
+
+var setClickFun = function setClickFun(id, functionName) {
+  var domId = lookUpDomId(id); // if (_id[0].match(/\d/)) id = MERMAID_DOM_ID_PREFIX + id;
+
+  if (_config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]().securityLevel !== 'loose') {
+    return;
+  }
+
+  if (typeof functionName === 'undefined') {
+    return;
+  }
+
+  if (typeof vertices[id] !== 'undefined') {
+    vertices[id].haveCallback = true;
+    funs.push(function () {
+      var elem = document.querySelector("[id=\"".concat(domId, "\"]"));
+
+      if (elem !== null) {
+        elem.addEventListener('click', function () {
+          _utils__WEBPACK_IMPORTED_MODULE_1__["default"].runFunc(functionName, id);
+        }, false);
+      }
+    });
+  }
+};
+/**
+ * Called by parser when a link is found. Adds the URL to the vertex data.
+ * @param ids Comma separated list of ids
+ * @param linkStr URL to create a link for
+ * @param tooltip Tooltip for the clickable element
+ */
+
+
+var setLink = function setLink(ids, linkStr, tooltip, target) {
+  ids.split(',').forEach(function (id) {
+    if (typeof vertices[id] !== 'undefined') {
+      vertices[id].link = _utils__WEBPACK_IMPORTED_MODULE_1__["default"].formatUrl(linkStr, config);
+      vertices[id].linkTarget = target;
+    }
+  });
+  setTooltip(ids, tooltip);
+  setClass(ids, 'clickable');
+};
+var getTooltip = function getTooltip(id) {
+  return tooltips[id];
+};
+/**
+ * Called by parser when a click definition is found. Registers an event handler.
+ * @param ids Comma separated list of ids
+ * @param functionName Function to be called on click
+ * @param tooltip Tooltip for the clickable element
+ */
+
+var setClickEvent = function setClickEvent(ids, functionName, tooltip) {
+  ids.split(',').forEach(function (id) {
+    setClickFun(id, functionName);
+  });
+  setTooltip(ids, tooltip);
+  setClass(ids, 'clickable');
+};
+var bindFunctions = function bindFunctions(element) {
+  funs.forEach(function (fun) {
+    fun(element);
+  });
+};
+var getDirection = function getDirection() {
+  return direction.trim();
+};
+/**
+ * Retrieval function for fetching the found nodes after parsing has completed.
+ * @returns {{}|*|vertices}
+ */
+
+var getVertices = function getVertices() {
+  return vertices;
+};
+/**
+ * Retrieval function for fetching the found links after parsing has completed.
+ * @returns {{}|*|edges}
+ */
+
+var getEdges = function getEdges() {
+  return edges;
+};
+/**
+ * Retrieval function for fetching the found class definitions after parsing has completed.
+ * @returns {{}|*|classes}
+ */
+
+var getClasses = function getClasses() {
+  return classes;
+};
+
+var setupToolTips = function setupToolTips(element) {
+  var tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('.mermaidTooltip');
+
+  if ((tooltipElem._groups || tooltipElem)[0][0] === null) {
+    tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);
+  }
+
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(element).select('svg');
+  var nodes = svg.selectAll('g.node');
+  nodes.on('mouseover', function () {
+    var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(this);
+    var title = el.attr('title'); // Dont try to draw a tooltip if no data is provided
+
+    if (title === null) {
+      return;
+    }
+
+    var rect = this.getBoundingClientRect();
+    tooltipElem.transition().duration(200).style('opacity', '.9');
+    tooltipElem.html(el.attr('title')).style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px').style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');
+    el.classed('hover', true);
+  }).on('mouseout', function () {
+    tooltipElem.transition().duration(500).style('opacity', 0);
+    var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])(this);
+    el.classed('hover', false);
+  });
+};
+
+funs.push(setupToolTips);
+/**
+ * Clears the internal graph db so that a new graph can be parsed.
+ */
+
+var clear = function clear(ver) {
+  vertices = {};
+  classes = {};
+  edges = [];
+  funs = [];
+  funs.push(setupToolTips);
+  subGraphs = [];
+  subGraphLookup = {};
+  subCount = 0;
+  tooltips = [];
+  firstGraphFlag = true;
+  version = ver || 'gen-1';
+};
+var setGen = function setGen(ver) {
+  version = ver || 'gen-1';
+};
+/**
+ *
+ * @returns {string}
+ */
+
+var defaultStyle = function defaultStyle() {
+  return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';
+};
+/**
+ * Clears the internal graph db so that a new graph can be parsed.
+ */
+
+var addSubGraph = function addSubGraph(_id, list, _title) {
+  var id = _id.trim();
+
+  var title = _title;
+
+  if (_id === _title && _title.match(/\s/)) {
+    id = undefined;
+  }
+
+  function uniq(a) {
+    var prims = {
+      boolean: {},
+      number: {},
+      string: {}
+    };
+    var objs = [];
+    return a.filter(function (item) {
+      var type = _typeof(item);
+
+      if (item.trim() === '') {
+        return false;
+      }
+
+      if (type in prims) {
+        return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true; // eslint-disable-line
+      } else {
+        return objs.indexOf(item) >= 0 ? false : objs.push(item);
+      }
+    });
+  }
+
+  var nodeList = [];
+  nodeList = uniq(nodeList.concat.apply(nodeList, list));
+
+  if (version === 'gen-1') {
+    _logger__WEBPACK_IMPORTED_MODULE_5__["logger"].warn('LOOKING UP');
+
+    for (var i = 0; i < nodeList.length; i++) {
+      nodeList[i] = lookUpDomId(nodeList[i]);
+    }
+  }
+
+  id = id || 'subGraph' + subCount; // if (id[0].match(/\d/)) id = lookUpDomId(id);
+
+  title = title || '';
+  title = _common_common__WEBPACK_IMPORTED_MODULE_3__["default"].sanitizeText(title, config);
+  subCount = subCount + 1;
+  var subGraph = {
+    id: id,
+    nodes: nodeList,
+    title: title.trim(),
+    classes: []
+  };
+  console.log('Adding', subGraph.id, subGraph.nodes);
+  /**
+   * Deletes an id from all subgraphs
+   */
+  // const del = _id => {
+  //   subGraphs.forEach(sg => {
+  //     const pos = sg.nodes.indexOf(_id);
+  //     if (pos >= 0) {
+  //       sg.nodes.splice(pos, 1);
+  //     }
+  //   });
+  // };
+  // // Removes the members of this subgraph from any other subgraphs, a node only belong to one subgraph
+  // subGraph.nodes.forEach(_id => del(_id));
+  // Remove the members in the new subgraph if they already belong to another subgraph
+
+  subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;
+  subGraphs.push(subGraph);
+  subGraphLookup[id] = subGraph;
+  return id;
+};
+
+var getPosForId = function getPosForId(id) {
+  for (var i = 0; i < subGraphs.length; i++) {
+    if (subGraphs[i].id === id) {
+      return i;
+    }
+  }
+
+  return -1;
+};
+
+var secCount = -1;
+var posCrossRef = [];
+
+var indexNodes2 = function indexNodes2(id, pos) {
+  var nodes = subGraphs[pos].nodes;
+  secCount = secCount + 1;
+
+  if (secCount > 2000) {
+    return;
+  }
+
+  posCrossRef[secCount] = pos; // Check if match
+
+  if (subGraphs[pos].id === id) {
+    return {
+      result: true,
+      count: 0
+    };
+  }
+
+  var count = 0;
+  var posCount = 1;
+
+  while (count < nodes.length) {
+    var childPos = getPosForId(nodes[count]); // Ignore regular nodes (pos will be -1)
+
+    if (childPos >= 0) {
+      var res = indexNodes2(id, childPos);
+
+      if (res.result) {
+        return {
+          result: true,
+          count: posCount + res.count
+        };
+      } else {
+        posCount = posCount + res.count;
+      }
+    }
+
+    count = count + 1;
+  }
+
+  return {
+    result: false,
+    count: posCount
+  };
+};
+
+var getDepthFirstPos = function getDepthFirstPos(pos) {
+  return posCrossRef[pos];
+};
+var indexNodes = function indexNodes() {
+  secCount = -1;
+
+  if (subGraphs.length > 0) {
+    indexNodes2('none', subGraphs.length - 1, 0);
+  }
+};
+var getSubGraphs = function getSubGraphs() {
+  return subGraphs;
+};
+var firstGraph = function firstGraph() {
+  if (firstGraphFlag) {
+    firstGraphFlag = false;
+    return true;
+  }
+
+  return false;
+};
+
+var destructStartLink = function destructStartLink(_str) {
+  var str = _str.trim();
+
+  var type = 'arrow_open';
+
+  switch (str[0]) {
+    case '<':
+      type = 'arrow_point';
+      str = str.slice(1);
+      break;
+
+    case 'x':
+      type = 'arrow_cross';
+      str = str.slice(1);
+      break;
+
+    case 'o':
+      type = 'arrow_circle';
+      str = str.slice(1);
+      break;
+  }
+
+  var stroke = 'normal';
+
+  if (str.indexOf('=') !== -1) {
+    stroke = 'thick';
+  }
+
+  if (str.indexOf('.') !== -1) {
+    stroke = 'dotted';
+  }
+
+  return {
+    type: type,
+    stroke: stroke
+  };
+};
+
+var countChar = function countChar(char, str) {
+  var length = str.length;
+  var count = 0;
+
+  for (var i = 0; i < length; ++i) {
+    if (str[i] === char) {
+      ++count;
+    }
+  }
+
+  return count;
+};
+
+var destructEndLink = function destructEndLink(_str) {
+  var str = _str.trim();
+
+  var line = str.slice(0, -1);
+  var type = 'arrow_open';
+
+  switch (str.slice(-1)) {
+    case 'x':
+      type = 'arrow_cross';
+
+      if (str[0] === 'x') {
+        type = 'double_' + type;
+        line = line.slice(1);
+      }
+
+      break;
+
+    case '>':
+      type = 'arrow_point';
+
+      if (str[0] === '<') {
+        type = 'double_' + type;
+        line = line.slice(1);
+      }
+
+      break;
+
+    case 'o':
+      type = 'arrow_circle';
+
+      if (str[0] === 'o') {
+        type = 'double_' + type;
+        line = line.slice(1);
+      }
+
+      break;
+  }
+
+  var stroke = 'normal';
+  var length = line.length - 1;
+
+  if (line[0] === '=') {
+    stroke = 'thick';
+  }
+
+  var dots = countChar('.', line);
+
+  if (dots) {
+    stroke = 'dotted';
+    length = dots;
+  }
+
+  return {
+    type: type,
+    stroke: stroke,
+    length: length
+  };
+};
+
+var destructLink = function destructLink(_str, _startStr) {
+  var info = destructEndLink(_str);
+  var startInfo;
+
+  if (_startStr) {
+    startInfo = destructStartLink(_startStr);
+
+    if (startInfo.stroke !== info.stroke) {
+      return {
+        type: 'INVALID',
+        stroke: 'INVALID'
+      };
+    }
+
+    if (startInfo.type === 'arrow_open') {
+      // -- xyz -->  - take arrow type from ending
+      startInfo.type = info.type;
+    } else {
+      // x-- xyz -->  - not supported
+      if (startInfo.type !== info.type) return {
+        type: 'INVALID',
+        stroke: 'INVALID'
+      };
+      startInfo.type = 'double_' + startInfo.type;
+    }
+
+    if (startInfo.type === 'double_arrow') {
+      startInfo.type = 'double_arrow_point';
+    }
+
+    startInfo.length = info.length;
+    return startInfo;
+  }
+
+  return info;
+}; // Todo optimizer this by caching existing nodes
+
+
+var exists = function exists(allSgs, _id) {
+  var res = false;
+  allSgs.forEach(function (sg) {
+    var pos = sg.nodes.indexOf(_id);
+
+    if (pos >= 0) {
+      res = true;
+    }
+  });
+  return res;
+};
+/**
+ * Deletes an id from all subgraphs
+ */
+
+
+var makeUniq = function makeUniq(sg, allSubgraphs) {
+  var res = [];
+  sg.nodes.forEach(function (_id, pos) {
+    if (!exists(allSubgraphs, _id)) {
+      res.push(sg.nodes[pos]);
+    }
+  });
+  return {
+    nodes: res
+  };
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  parseDirective: parseDirective,
+  defaultConfig: function defaultConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_2__["defaultConfig"].flowchart;
+  },
+  addVertex: addVertex,
+  lookUpDomId: lookUpDomId,
+  addLink: addLink,
+  updateLinkInterpolate: updateLinkInterpolate,
+  updateLink: updateLink,
+  addClass: addClass,
+  setDirection: setDirection,
+  setClass: setClass,
+  getTooltip: getTooltip,
+  setClickEvent: setClickEvent,
+  setLink: setLink,
+  bindFunctions: bindFunctions,
+  getDirection: getDirection,
+  getVertices: getVertices,
+  getEdges: getEdges,
+  getClasses: getClasses,
+  clear: clear,
+  setGen: setGen,
+  defaultStyle: defaultStyle,
+  addSubGraph: addSubGraph,
+  getDepthFirstPos: getDepthFirstPos,
+  indexNodes: indexNodes,
+  getSubGraphs: getSubGraphs,
+  destructLink: destructLink,
+  lex: {
+    firstGraph: firstGraph
+  },
+  exists: exists,
+  makeUniq: makeUniq
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/flowchart/flowRenderer-v2.js":
+/*!***************************************************!*\
+  !*** ./src/diagrams/flowchart/flowRenderer-v2.js ***!
+  \***************************************************/
+/*! exports provided: setConf, addVertices, addEdges, getClasses, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addVertices", function() { return addVertices; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addEdges", function() { return addEdges; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getClasses", function() { return getClasses; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _flowDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flowDb */ "./src/diagrams/flowchart/flowDb.js");
+/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/flow */ "./src/diagrams/flowchart/parser/flow.jison");
+/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_flow__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../dagre-wrapper/index.js */ "./src/dagre-wrapper/index.js");
+/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dagre-d3/lib/label/add-html-label.js */ "./node_modules/dagre-d3/lib/label/add-html-label.js");
+/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+
+
+
+
+
+var conf = {};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+
+  for (var i = 0; i < keys.length; i++) {
+    conf[keys[i]] = cnf[keys[i]];
+  }
+};
+/**
+ * Function that adds the vertices found during parsing to the graph to be rendered.
+ * @param vert Object containing the vertices.
+ * @param g The graph that is to be drawn.
+ */
+
+var addVertices = function addVertices(vert, g, svgId) {
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])("[id=\"".concat(svgId, "\"]"));
+  var keys = Object.keys(vert); // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition
+
+  keys.forEach(function (id) {
+    var vertex = vert[id];
+    /**
+     * Variable for storing the classes for the vertex
+     * @type {string}
+     */
+
+    var classStr = 'default';
+
+    if (vertex.classes.length > 0) {
+      classStr = vertex.classes.join(' ');
+    }
+
+    var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["getStylesFromArray"])(vertex.styles); // Use vertex id as text in the box if no text is provided by the graph definition
+
+    var vertexText = vertex.text !== undefined ? vertex.text : vertex.id; // We create a SVG label, either by delegating to addHtmlLabel or manually
+
+    var vertexNode;
+
+    if (Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.htmlLabels) {
+      // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?
+      var node = {
+        label: vertexText.replace(/fa[lrsb]?:fa-[\w-]+/g, function (s) {
+          return "<i class='".concat(s.replace(':', ' '), "'></i>");
+        })
+      };
+      vertexNode = dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default()(svg, node).node();
+      vertexNode.parentNode.removeChild(vertexNode);
+    } else {
+      var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+      svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));
+      var rows = vertexText.split(_common_common__WEBPACK_IMPORTED_MODULE_8__["default"].lineBreakRegex);
+
+      for (var j = 0; j < rows.length; j++) {
+        var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
+        tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
+        tspan.setAttribute('dy', '1em');
+        tspan.setAttribute('x', '1');
+        tspan.textContent = rows[j];
+        svgLabel.appendChild(tspan);
+      }
+
+      vertexNode = svgLabel;
+    }
+
+    var radious = 0;
+    var _shape = ''; // Set the shape based parameters
+
+    switch (vertex.type) {
+      case 'round':
+        radious = 5;
+        _shape = 'rect';
+        break;
+
+      case 'square':
+        _shape = 'rect';
+        break;
+
+      case 'diamond':
+        _shape = 'question';
+        break;
+
+      case 'hexagon':
+        _shape = 'hexagon';
+        break;
+
+      case 'odd':
+        _shape = 'rect_left_inv_arrow';
+        break;
+
+      case 'lean_right':
+        _shape = 'lean_right';
+        break;
+
+      case 'lean_left':
+        _shape = 'lean_left';
+        break;
+
+      case 'trapezoid':
+        _shape = 'trapezoid';
+        break;
+
+      case 'inv_trapezoid':
+        _shape = 'inv_trapezoid';
+        break;
+
+      case 'odd_right':
+        _shape = 'rect_left_inv_arrow';
+        break;
+
+      case 'circle':
+        _shape = 'circle';
+        break;
+
+      case 'ellipse':
+        _shape = 'ellipse';
+        break;
+
+      case 'stadium':
+        _shape = 'stadium';
+        break;
+
+      case 'subroutine':
+        _shape = 'subroutine';
+        break;
+
+      case 'cylinder':
+        _shape = 'cylinder';
+        break;
+
+      case 'group':
+        _shape = 'rect';
+        break;
+
+      default:
+        _shape = 'rect';
+    } // Add the node
+
+
+    g.setNode(vertex.id, {
+      labelStyle: styles.labelStyle,
+      shape: _shape,
+      labelText: vertexText,
+      rx: radious,
+      ry: radious,
+      class: classStr,
+      style: styles.style,
+      id: vertex.id,
+      link: vertex.link,
+      linkTarget: vertex.linkTarget,
+      tooltip: _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getTooltip(vertex.id) || '',
+      domId: _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(vertex.id),
+      haveCallback: vertex.haveCallback,
+      width: vertex.type === 'group' ? 500 : undefined,
+      type: vertex.type,
+      padding: Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.padding
+    });
+    _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('setNode', {
+      labelStyle: styles.labelStyle,
+      shape: _shape,
+      labelText: vertexText,
+      rx: radious,
+      ry: radious,
+      class: classStr,
+      style: styles.style,
+      id: vertex.id,
+      domId: _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(vertex.id),
+      width: vertex.type === 'group' ? 500 : undefined,
+      type: vertex.type,
+      padding: Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.padding
+    });
+  });
+};
+/**
+ * Add edges to graph based on parsed graph defninition
+ * @param {Object} edges The edges to add to the graph
+ * @param {Object} g The graph object
+ */
+
+var addEdges = function addEdges(edges, g) {
+  var cnt = 0;
+  var defaultStyle;
+  var defaultLabelStyle;
+
+  if (typeof edges.defaultStyle !== 'undefined') {
+    var defaultStyles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["getStylesFromArray"])(edges.defaultStyle);
+    defaultStyle = defaultStyles.style;
+    defaultLabelStyle = defaultStyles.labelStyle;
+  }
+
+  edges.forEach(function (edge) {
+    cnt++; // Identify Link
+
+    var linkId = 'L-' + edge.start + '-' + edge.end;
+    var linkNameStart = 'LS-' + edge.start;
+    var linkNameEnd = 'LE-' + edge.end;
+    var edgeData = {};
+    edgeData.minlen = edge.length || 1; //edgeData.id = 'id' + cnt;
+    // Set link type for rendering
+
+    if (edge.type === 'arrow_open') {
+      edgeData.arrowhead = 'none';
+    } else {
+      edgeData.arrowhead = 'normal';
+    } // Check of arrow types, placed here in order not to break old rendering
+
+
+    edgeData.arrowTypeStart = 'arrow_open';
+    edgeData.arrowTypeEnd = 'arrow_open';
+    /* eslint-disable no-fallthrough */
+
+    switch (edge.type) {
+      case 'double_arrow_cross':
+        edgeData.arrowTypeStart = 'arrow_cross';
+
+      case 'arrow_cross':
+        edgeData.arrowTypeEnd = 'arrow_cross';
+        break;
+
+      case 'double_arrow_point':
+        edgeData.arrowTypeStart = 'arrow_point';
+
+      case 'arrow_point':
+        edgeData.arrowTypeEnd = 'arrow_point';
+        break;
+
+      case 'double_arrow_circle':
+        edgeData.arrowTypeStart = 'arrow_circle';
+
+      case 'arrow_circle':
+        edgeData.arrowTypeEnd = 'arrow_circle';
+        break;
+    } // logger.info('apa', edgeData, edge);
+    // edgeData.arrowTypeStart = edge.arrowTypeStart;
+    // edgeData.arrowTypeStart = edge.arrowTypeStart;
+    // edgeData.arrowType = edgeData.arrowTypeEnd;
+    // logger.info('apa', edgeData, edge);
+
+
+    var style = '';
+    var labelStyle = '';
+
+    if (typeof edge.style !== 'undefined') {
+      var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["getStylesFromArray"])(edge.style);
+      style = styles.style;
+      labelStyle = styles.labelStyle;
+    } else {
+      switch (edge.stroke) {
+        case 'normal':
+          style = 'fill:none';
+
+          if (typeof defaultStyle !== 'undefined') {
+            style = defaultStyle;
+          }
+
+          if (typeof defaultLabelStyle !== 'undefined') {
+            labelStyle = defaultLabelStyle;
+          }
+
+          edgeData.thickness = 'normal';
+          edgeData.pattern = 'solid';
+          break;
+
+        case 'dotted':
+          edgeData.thickness = 'normal';
+          edgeData.pattern = 'dotted';
+          break;
+
+        case 'thick':
+          edgeData.thickness = 'thick';
+          edgeData.pattern = 'solid';
+          break;
+      }
+    }
+
+    edgeData.style = style;
+    edgeData.labelStyle = labelStyle;
+
+    if (typeof edge.interpolate !== 'undefined') {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_1__["curveLinear"]);
+    } else if (typeof edges.defaultInterpolate !== 'undefined') {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(edges.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_1__["curveLinear"]);
+    } else {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(conf.curve, d3__WEBPACK_IMPORTED_MODULE_1__["curveLinear"]);
+    }
+
+    if (typeof edge.text === 'undefined') {
+      if (typeof edge.style !== 'undefined') {
+        edgeData.arrowheadStyle = 'fill: #333';
+      }
+    } else {
+      edgeData.arrowheadStyle = 'fill: #333';
+      edgeData.labelpos = 'c';
+
+      if (Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.htmlLabels && false) {
+        // eslint-disable-line
+        edgeData.labelType = 'html';
+        edgeData.label = "<span id=\"L-".concat(linkId, "\" class=\"edgeLabel L-").concat(linkNameStart, "' L-").concat(linkNameEnd, "\">").concat(edge.text, "</span>");
+      } else {
+        edgeData.labelType = 'text';
+        edgeData.label = edge.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_8__["default"].lineBreakRegex, '\n');
+
+        if (typeof edge.style === 'undefined') {
+          edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';
+        }
+
+        edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');
+      }
+    }
+
+    edgeData.id = linkId;
+    edgeData.classes = 'flowchart-link ' + linkNameStart + ' ' + linkNameEnd; // Add the edge to the graph
+
+    g.setEdge(edge.start, edge.end, edgeData, cnt);
+  });
+};
+/**
+ * Returns the all the styles from classDef statements in the graph definition.
+ * @returns {object} classDef styles
+ */
+
+var getClasses = function getClasses(text) {
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('Extracting classes');
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].clear();
+  var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;
+  parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"];
+
+  try {
+    // Parse the graph definition
+    parser.parse(text);
+  } catch (e) {
+    return;
+  }
+
+  return _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getClasses();
+};
+/**
+ * Draws a flowchart in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+var draw = function draw(text, id) {
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('Drawing flowchart');
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].clear();
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].setGen('gen-2');
+  var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;
+  parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"]; // Parse the graph definition
+  // try {
+
+  parser.parse(text); // } catch (err) {
+  // logger.debug('Parsing failed');
+  // }
+  // Fetch the default direction, use TD if none was found
+
+  var dir = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getDirection();
+
+  if (typeof dir === 'undefined') {
+    dir = 'TD';
+  }
+
+  var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart;
+  var nodeSpacing = conf.nodeSpacing || 50;
+  var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph
+
+  var g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({
+    multigraph: true,
+    compound: true
+  }).setGraph({
+    rankdir: dir,
+    nodesep: nodeSpacing,
+    ranksep: rankSpacing,
+    marginx: 8,
+    marginy: 8
+  }).setDefaultEdgeLabel(function () {
+    return {};
+  });
+  var subG;
+  var subGraphs = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getSubGraphs();
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('Subgraphs - ', subGraphs);
+
+  for (var _i = subGraphs.length - 1; _i >= 0; _i--) {
+    subG = subGraphs[_i];
+    _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('Subgraph - ', subG);
+    _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].addVertex(subG.id, subG.title, 'group', undefined, subG.classes);
+  } // Fetch the verices/nodes and edges/links from the parsed graph definition
+
+
+  var vert = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getVertices();
+  var edges = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getEdges();
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info(edges);
+  var i = 0;
+
+  for (i = subGraphs.length - 1; i >= 0; i--) {
+    // for (let i = 0; i < subGraphs.length; i++) {
+    subG = subGraphs[i];
+    Object(d3__WEBPACK_IMPORTED_MODULE_1__["selectAll"])('cluster').append('text');
+
+    for (var j = 0; j < subG.nodes.length; j++) {
+      _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('Setting up subgraphs', subG.nodes[j], subG.id);
+      g.setParent(subG.nodes[j], subG.id);
+    }
+  }
+
+  addVertices(vert, g, id);
+  addEdges(edges, g); // Add custom shapes
+  // flowChartShapes.addToRenderV2(addShape);
+  // Set up an SVG group so that we can translate the final graph.
+
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])("[id=\"".concat(id, "\"]"));
+  svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink'); // Run the renderer. This is what draws the final graph.
+
+  var element = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#' + id + ' g');
+  Object(_dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__["render"])(element, g, ['point', 'circle', 'cross'], 'flowchart', id);
+  var padding = conf.diagramPadding;
+  var svgBounds = svg.node().getBBox();
+  var width = svgBounds.width + padding * 2;
+  var height = svgBounds.height + padding * 2;
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].debug("new ViewBox 0 0 ".concat(width, " ").concat(height), "translate(".concat(padding - g._label.marginx, ", ").concat(padding - g._label.marginy, ")"));
+  Object(_utils__WEBPACK_IMPORTED_MODULE_9__["configureSvgSize"])(svg, height, width, conf.useMaxWidth);
+  svg.attr('viewBox', "0 0 ".concat(width, " ").concat(height));
+  svg.select('g').attr('transform', "translate(".concat(padding - g._label.marginx, ", ").concat(padding - svgBounds.y, ")")); // Index nodes
+
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].indexNodes('subGraph' + i); // Add label rects for non html labels
+
+  if (!conf.htmlLabels) {
+    var labels = document.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
+
+    for (var k = 0; k < labels.length; k++) {
+      var label = labels[k]; // Get dimensions of label
+
+      var dim = label.getBBox();
+      var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
+      rect.setAttribute('rx', 0);
+      rect.setAttribute('ry', 0);
+      rect.setAttribute('width', dim.width);
+      rect.setAttribute('height', dim.height); // rect.setAttribute('style', 'fill:#e8e8e8;');
+
+      label.insertBefore(rect, label.firstChild);
+    }
+  } // If node has a link, wrap it in an anchor SVG object.
+
+
+  var keys = Object.keys(vert);
+  keys.forEach(function (key) {
+    var vertex = vert[key];
+
+    if (vertex.link) {
+      var node = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#' + id + ' [id="' + key + '"]');
+
+      if (node) {
+        var link = document.createElementNS('http://www.w3.org/2000/svg', 'a');
+        link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));
+        link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);
+        link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');
+
+        if (vertex.linkTarget) {
+          link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);
+        }
+
+        var linkNode = node.insert(function () {
+          return link;
+        }, ':first-child');
+        var shape = node.select('.label-container');
+
+        if (shape) {
+          linkNode.append(function () {
+            return shape.node();
+          });
+        }
+
+        var _label = node.select('.label');
+
+        if (_label) {
+          linkNode.append(function () {
+            return _label.node();
+          });
+        }
+      }
+    }
+  });
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  addVertices: addVertices,
+  addEdges: addEdges,
+  getClasses: getClasses,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/flowchart/flowRenderer.js":
+/*!************************************************!*\
+  !*** ./src/diagrams/flowchart/flowRenderer.js ***!
+  \************************************************/
+/*! exports provided: setConf, addVertices, addEdges, getClasses, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addVertices", function() { return addVertices; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addEdges", function() { return addEdges; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getClasses", function() { return getClasses; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _flowDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flowDb */ "./src/diagrams/flowchart/flowDb.js");
+/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/flow */ "./src/diagrams/flowchart/parser/flow.jison");
+/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_flow__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! dagre-d3 */ "./node_modules/dagre-d3/index.js");
+/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(dagre_d3__WEBPACK_IMPORTED_MODULE_5__);
+/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dagre-d3/lib/label/add-html-label.js */ "./node_modules/dagre-d3/lib/label/add-html-label.js");
+/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _flowChartShapes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./flowChartShapes */ "./src/diagrams/flowchart/flowChartShapes.js");
+
+
+
+
+
+
+
+
+
+
+
+var conf = {};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+
+  for (var i = 0; i < keys.length; i++) {
+    conf[keys[i]] = cnf[keys[i]];
+  }
+};
+/**
+ * Function that adds the vertices found in the graph definition to the graph to be rendered.
+ * @param vert Object containing the vertices.
+ * @param g The graph that is to be drawn.
+ */
+
+var addVertices = function addVertices(vert, g, svgId) {
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])("[id=\"".concat(svgId, "\"]"));
+  var keys = Object.keys(vert); // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition
+
+  keys.forEach(function (id) {
+    var vertex = vert[id];
+    /**
+     * Variable for storing the classes for the vertex
+     * @type {string}
+     */
+
+    var classStr = 'default';
+
+    if (vertex.classes.length > 0) {
+      classStr = vertex.classes.join(' ');
+    }
+
+    var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["getStylesFromArray"])(vertex.styles); // Use vertex id as text in the box if no text is provided by the graph definition
+
+    var vertexText = vertex.text !== undefined ? vertex.text : vertex.id; // We create a SVG label, either by delegating to addHtmlLabel or manually
+
+    var vertexNode;
+
+    if (Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.htmlLabels) {
+      // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?
+      var node = {
+        label: vertexText.replace(/fa[lrsb]?:fa-[\w-]+/g, function (s) {
+          return "<i class='".concat(s.replace(':', ' '), "'></i>");
+        })
+      };
+      vertexNode = dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default()(svg, node).node();
+      vertexNode.parentNode.removeChild(vertexNode);
+    } else {
+      var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+      svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));
+      var rows = vertexText.split(_common_common__WEBPACK_IMPORTED_MODULE_8__["default"].lineBreakRegex);
+
+      for (var j = 0; j < rows.length; j++) {
+        var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
+        tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
+        tspan.setAttribute('dy', '1em');
+        tspan.setAttribute('x', '1');
+        tspan.textContent = rows[j];
+        svgLabel.appendChild(tspan);
+      }
+
+      vertexNode = svgLabel;
+    }
+
+    var radious = 0;
+    var _shape = ''; // Set the shape based parameters
+
+    switch (vertex.type) {
+      case 'round':
+        radious = 5;
+        _shape = 'rect';
+        break;
+
+      case 'square':
+        _shape = 'rect';
+        break;
+
+      case 'diamond':
+        _shape = 'question';
+        break;
+
+      case 'hexagon':
+        _shape = 'hexagon';
+        break;
+
+      case 'odd':
+        _shape = 'rect_left_inv_arrow';
+        break;
+
+      case 'lean_right':
+        _shape = 'lean_right';
+        break;
+
+      case 'lean_left':
+        _shape = 'lean_left';
+        break;
+
+      case 'trapezoid':
+        _shape = 'trapezoid';
+        break;
+
+      case 'inv_trapezoid':
+        _shape = 'inv_trapezoid';
+        break;
+
+      case 'odd_right':
+        _shape = 'rect_left_inv_arrow';
+        break;
+
+      case 'circle':
+        _shape = 'circle';
+        break;
+
+      case 'ellipse':
+        _shape = 'ellipse';
+        break;
+
+      case 'stadium':
+        _shape = 'stadium';
+        break;
+
+      case 'subroutine':
+        _shape = 'subroutine';
+        break;
+
+      case 'cylinder':
+        _shape = 'cylinder';
+        break;
+
+      case 'group':
+        _shape = 'rect';
+        break;
+
+      default:
+        _shape = 'rect';
+    } // Add the node
+
+
+    _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].warn('Adding node', vertex.id, vertex.domId);
+    g.setNode(_flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(vertex.id), {
+      labelType: 'svg',
+      labelStyle: styles.labelStyle,
+      shape: _shape,
+      label: vertexNode,
+      rx: radious,
+      ry: radious,
+      class: classStr,
+      style: styles.style,
+      id: _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(vertex.id)
+    });
+  });
+};
+/**
+ * Add edges to graph based on parsed graph defninition
+ * @param {Object} edges The edges to add to the graph
+ * @param {Object} g The graph object
+ */
+
+var addEdges = function addEdges(edges, g) {
+  var cnt = 0;
+  var defaultStyle;
+  var defaultLabelStyle;
+
+  if (typeof edges.defaultStyle !== 'undefined') {
+    var defaultStyles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["getStylesFromArray"])(edges.defaultStyle);
+    defaultStyle = defaultStyles.style;
+    defaultLabelStyle = defaultStyles.labelStyle;
+  }
+
+  edges.forEach(function (edge) {
+    cnt++; // Identify Link
+
+    var linkId = 'L-' + edge.start + '-' + edge.end;
+    var linkNameStart = 'LS-' + edge.start;
+    var linkNameEnd = 'LE-' + edge.end;
+    var edgeData = {}; // Set link type for rendering
+
+    if (edge.type === 'arrow_open') {
+      edgeData.arrowhead = 'none';
+    } else {
+      edgeData.arrowhead = 'normal';
+    }
+
+    var style = '';
+    var labelStyle = '';
+
+    if (typeof edge.style !== 'undefined') {
+      var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["getStylesFromArray"])(edge.style);
+      style = styles.style;
+      labelStyle = styles.labelStyle;
+    } else {
+      switch (edge.stroke) {
+        case 'normal':
+          style = 'fill:none';
+
+          if (typeof defaultStyle !== 'undefined') {
+            style = defaultStyle;
+          }
+
+          if (typeof defaultLabelStyle !== 'undefined') {
+            labelStyle = defaultLabelStyle;
+          }
+
+          break;
+
+        case 'dotted':
+          style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';
+          break;
+
+        case 'thick':
+          style = ' stroke-width: 3.5px;fill:none';
+          break;
+      }
+    }
+
+    edgeData.style = style;
+    edgeData.labelStyle = labelStyle;
+
+    if (typeof edge.interpolate !== 'undefined') {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_1__["curveLinear"]);
+    } else if (typeof edges.defaultInterpolate !== 'undefined') {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(edges.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_1__["curveLinear"]);
+    } else {
+      edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__["interpolateToCurve"])(conf.curve, d3__WEBPACK_IMPORTED_MODULE_1__["curveLinear"]);
+    }
+
+    if (typeof edge.text === 'undefined') {
+      if (typeof edge.style !== 'undefined') {
+        edgeData.arrowheadStyle = 'fill: #333';
+      }
+    } else {
+      edgeData.arrowheadStyle = 'fill: #333';
+      edgeData.labelpos = 'c';
+
+      if (Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart.htmlLabels) {
+        edgeData.labelType = 'html';
+        edgeData.label = "<span id=\"L-".concat(linkId, "\" class=\"edgeLabel L-").concat(linkNameStart, "' L-").concat(linkNameEnd, "\">").concat(edge.text, "</span>");
+      } else {
+        edgeData.labelType = 'text';
+        edgeData.label = edge.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_8__["default"].lineBreakRegex, '\n');
+
+        if (typeof edge.style === 'undefined') {
+          edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';
+        }
+
+        edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');
+      }
+    }
+
+    edgeData.id = linkId;
+    edgeData.class = linkNameStart + ' ' + linkNameEnd;
+    edgeData.minlen = edge.length || 1; // Add the edge to the graph
+
+    g.setEdge(_flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(edge.start), _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(edge.end), edgeData, cnt);
+  });
+};
+/**
+ * Returns the all the styles from classDef statements in the graph definition.
+ * @returns {object} classDef styles
+ */
+
+var getClasses = function getClasses(text) {
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('Extracting classes');
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].clear();
+
+  try {
+    var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;
+    parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"]; // Parse the graph definition
+
+    parser.parse(text);
+    return _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getClasses();
+  } catch (e) {
+    return;
+  }
+};
+/**
+ * Draws a flowchart in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+var draw = function draw(text, id) {
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].info('Drawing flowchart');
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].clear();
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].setGen('gen-1');
+  var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;
+  parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"]; // Parse the graph definition
+  // try {
+
+  parser.parse(text); // } catch (err) {
+  // logger.debug('Parsing failed');
+  // }
+  // Fetch the default direction, use TD if none was found
+
+  var dir = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getDirection();
+
+  if (typeof dir === 'undefined') {
+    dir = 'TD';
+  }
+
+  var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().flowchart;
+  var nodeSpacing = conf.nodeSpacing || 50;
+  var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph
+
+  var g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({
+    multigraph: true,
+    compound: true
+  }).setGraph({
+    rankdir: dir,
+    nodesep: nodeSpacing,
+    ranksep: rankSpacing,
+    marginx: 8,
+    marginy: 8
+  }).setDefaultEdgeLabel(function () {
+    return {};
+  });
+  var subG;
+  var subGraphs = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getSubGraphs();
+
+  for (var _i = subGraphs.length - 1; _i >= 0; _i--) {
+    subG = subGraphs[_i];
+    _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].addVertex(subG.id, subG.title, 'group', undefined, subG.classes);
+  } // Fetch the verices/nodes and edges/links from the parsed graph definition
+
+
+  var vert = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getVertices();
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].warn('Get vertices', vert);
+  var edges = _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getEdges();
+  var i = 0;
+
+  for (i = subGraphs.length - 1; i >= 0; i--) {
+    subG = subGraphs[i];
+    Object(d3__WEBPACK_IMPORTED_MODULE_1__["selectAll"])('cluster').append('text');
+
+    for (var j = 0; j < subG.nodes.length; j++) {
+      _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].warn('Setting subgraph', subG.nodes[j], _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(subG.nodes[j]), _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(subG.id));
+      g.setParent(_flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(subG.nodes[j]), _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(subG.id));
+    }
+  }
+
+  addVertices(vert, g, id);
+  addEdges(edges, g); // Create the renderer
+
+  var Render = dagre_d3__WEBPACK_IMPORTED_MODULE_5___default.a.render;
+  var render = new Render(); // Add custom shapes
+
+  _flowChartShapes__WEBPACK_IMPORTED_MODULE_10__["default"].addToRender(render); // Add our custom arrow - an empty arrowhead
+
+  render.arrows().none = function normal(parent, id, edge, type) {
+    var marker = parent.append('marker').attr('id', id).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'strokeWidth').attr('markerWidth', 8).attr('markerHeight', 6).attr('orient', 'auto');
+    var path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');
+    dagre_d3__WEBPACK_IMPORTED_MODULE_5___default.a.util.applyStyle(path, edge[type + 'Style']);
+  }; // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.
+
+
+  render.arrows().normal = function normal(parent, id) {
+    var marker = parent.append('marker').attr('id', id).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'strokeWidth').attr('markerWidth', 8).attr('markerHeight', 6).attr('orient', 'auto');
+    marker.append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z').attr('class', 'arrowheadPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');
+  }; // Set up an SVG group so that we can translate the final graph.
+
+
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])("[id=\"".concat(id, "\"]"));
+  svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].warn(g); // Run the renderer. This is what draws the final graph.
+
+  var element = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#' + id + ' g');
+  render(element, g);
+  element.selectAll('g.node').attr('title', function () {
+    return _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].getTooltip(this.id);
+  });
+  var padding = conf.diagramPadding;
+  var svgBounds = svg.node().getBBox();
+  var width = svgBounds.width + padding * 2;
+  var height = svgBounds.height + padding * 2;
+  Object(_utils__WEBPACK_IMPORTED_MODULE_9__["configureSvgSize"])(svg, height, width, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding
+
+  var vBox = "".concat(svgBounds.x - padding, " ").concat(svgBounds.y - padding, " ").concat(width, " ").concat(height);
+  _logger__WEBPACK_IMPORTED_MODULE_7__["logger"].debug("viewBox ".concat(vBox));
+  svg.attr('viewBox', vBox); // Index nodes
+
+  _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].indexNodes('subGraph' + i); // reposition labels
+
+  for (i = 0; i < subGraphs.length; i++) {
+    subG = subGraphs[i];
+
+    if (subG.title !== 'undefined') {
+      var clusterRects = document.querySelectorAll('#' + id + ' [id="' + _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(subG.id) + '"] rect');
+      var clusterEl = document.querySelectorAll('#' + id + ' [id="' + _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(subG.id) + '"]');
+      var xPos = clusterRects[0].x.baseVal.value;
+      var yPos = clusterRects[0].y.baseVal.value;
+      var _width = clusterRects[0].width.baseVal.value;
+      var cluster = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])(clusterEl[0]);
+      var te = cluster.select('.label');
+      te.attr('transform', "translate(".concat(xPos + _width / 2, ", ").concat(yPos + 14, ")"));
+      te.attr('id', id + 'Text');
+
+      for (var _j = 0; _j < subG.classes.length; _j++) {
+        clusterEl[0].classList.add(subG.classes[_j]);
+      }
+    }
+  } // Add label rects for non html labels
+
+
+  if (!conf.htmlLabels || true) {
+    // eslint-disable-line
+    var labels = document.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
+
+    for (var k = 0; k < labels.length; k++) {
+      var label = labels[k]; // Get dimensions of label
+
+      var dim = label.getBBox();
+      var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
+      rect.setAttribute('rx', 0);
+      rect.setAttribute('ry', 0);
+      rect.setAttribute('width', dim.width);
+      rect.setAttribute('height', dim.height); // rect.setAttribute('style', 'fill:#e8e8e8;');
+
+      label.insertBefore(rect, label.firstChild);
+    }
+  } // If node has a link, wrap it in an anchor SVG object.
+
+
+  var keys = Object.keys(vert);
+  keys.forEach(function (key) {
+    var vertex = vert[key];
+
+    if (vertex.link) {
+      var node = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#' + id + ' [id="' + _flowDb__WEBPACK_IMPORTED_MODULE_2__["default"].lookUpDomId(key) + '"]');
+
+      if (node) {
+        var link = document.createElementNS('http://www.w3.org/2000/svg', 'a');
+        link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));
+        link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);
+        link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');
+
+        if (vertex.linkTarget) {
+          link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);
+        }
+
+        var linkNode = node.insert(function () {
+          return link;
+        }, ':first-child');
+        var shape = node.select('.label-container');
+
+        if (shape) {
+          linkNode.append(function () {
+            return shape.node();
+          });
+        }
+
+        var _label = node.select('.label');
+
+        if (_label) {
+          linkNode.append(function () {
+            return _label.node();
+          });
+        }
+      }
+    }
+  });
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  addVertices: addVertices,
+  addEdges: addEdges,
+  getClasses: getClasses,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/flowchart/parser/flow.jison":
+/*!**************************************************!*\
+  !*** ./src/diagrams/flowchart/parser/flow.jison ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,46,75,76,77,78,79,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,54],$Vc=[1,32],$Vd=[1,33],$Ve=[1,34],$Vf=[1,35],$Vg=[1,36],$Vh=[1,48],$Vi=[1,43],$Vj=[1,45],$Vk=[1,40],$Vl=[1,44],$Vm=[1,47],$Vn=[1,51],$Vo=[1,52],$Vp=[1,53],$Vq=[1,42],$Vr=[1,46],$Vs=[1,49],$Vt=[1,50],$Vu=[1,41],$Vv=[1,57],$Vw=[1,62],$Vx=[1,20,21,22,23,38,42,46,75,76,77,78,79,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$Vy=[1,66],$Vz=[1,65],$VA=[1,67],$VB=[20,21,23,69,70],$VC=[20,21,22,23,69,70],$VD=[20,21,22,23,47,69,70],$VE=[20,21,22,23,40,46,47,49,51,53,55,57,59,61,62,64,69,70,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$VF=[20,21,23],$VG=[20,21,23,46,69,70,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$VH=[1,12,20,21,22,23,24,38,42,46,75,76,77,78,79,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$VI=[46,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$VJ=[1,115],$VK=[1,136],$VL=[1,137],$VM=[1,138],$VN=[1,139],$VO=[1,119],$VP=[1,110],$VQ=[1,111],$VR=[1,107],$VS=[1,131],$VT=[1,132],$VU=[1,133],$VV=[1,134],$VW=[1,135],$VX=[1,140],$VY=[1,141],$VZ=[1,113],$V_=[1,121],$V$=[1,124],$V01=[1,122],$V11=[1,123],$V21=[1,116],$V31=[1,129],$V41=[1,128],$V51=[1,112],$V61=[1,109],$V71=[1,118],$V81=[1,120],$V91=[1,125],$Va1=[1,126],$Vb1=[1,127],$Vc1=[1,130],$Vd1=[20,21,22,23,38,42,46,75,76,77,78,79,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$Ve1=[1,144],$Vf1=[1,148],$Vg1=[1,150],$Vh1=[1,151],$Vi1=[12,21,22,24],$Vj1=[20,21,22,23,24,26,38,40,41,42,46,50,52,54,56,58,60,61,63,65,69,70,71,75,76,77,78,79,80,81,84,91,92,95,96,97,99,100,101,102,106,107,108,109,110,111],$Vk1=[20,21,22,23,26,46,80,91,92,95,96,97,99,100,106,107,108,109,110,111],$Vl1=[22,92],$Vm1=[1,220],$Vn1=[1,224],$Vo1=[1,221],$Vp1=[1,218],$Vq1=[1,215],$Vr1=[1,216],$Vs1=[1,217],$Vt1=[1,219],$Vu1=[1,222],$Vv1=[1,223],$Vw1=[1,225],$Vx1=[1,241],$Vy1=[20,21,23,92],$Vz1=[20,21,22,23,75,88,91,92,95,96,97,98,99,100,101];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"mermaidDoc":4,"directive":5,"openDirective":6,"typeDirective":7,"closeDirective":8,"separator":9,":":10,"argDirective":11,"open_directive":12,"type_directive":13,"arg_directive":14,"close_directive":15,"graphConfig":16,"document":17,"line":18,"statement":19,"SEMI":20,"NEWLINE":21,"SPACE":22,"EOF":23,"GRAPH":24,"NODIR":25,"DIR":26,"FirstStmtSeperator":27,"ending":28,"endToken":29,"spaceList":30,"spaceListNewline":31,"verticeStatement":32,"styleStatement":33,"linkStyleStatement":34,"classDefStatement":35,"classStatement":36,"clickStatement":37,"subgraph":38,"text":39,"SQS":40,"SQE":41,"end":42,"link":43,"node":44,"vertex":45,"AMP":46,"STYLE_SEPARATOR":47,"idString":48,"PS":49,"PE":50,"(-":51,"-)":52,"STADIUMSTART":53,"STADIUMEND":54,"SUBROUTINESTART":55,"SUBROUTINEEND":56,"CYLINDERSTART":57,"CYLINDEREND":58,"DIAMOND_START":59,"DIAMOND_STOP":60,"TAGEND":61,"TRAPSTART":62,"TRAPEND":63,"INVTRAPSTART":64,"INVTRAPEND":65,"linkStatement":66,"arrowText":67,"TESTSTR":68,"START_LINK":69,"LINK":70,"PIPE":71,"textToken":72,"STR":73,"keywords":74,"STYLE":75,"LINKSTYLE":76,"CLASSDEF":77,"CLASS":78,"CLICK":79,"DOWN":80,"UP":81,"textNoTags":82,"textNoTagsToken":83,"DEFAULT":84,"stylesOpt":85,"alphaNum":86,"LINK_TARGET":87,"HEX":88,"numList":89,"INTERPOLATE":90,"NUM":91,"COMMA":92,"style":93,"styleComponent":94,"ALPHA":95,"COLON":96,"MINUS":97,"UNIT":98,"BRKT":99,"DOT":100,"PCT":101,"TAGSTART":102,"alphaNumToken":103,"idStringToken":104,"alphaNumStatement":105,"PUNCTUATION":106,"UNICODE_TEXT":107,"PLUS":108,"EQUALS":109,"MULT":110,"UNDERSCORE":111,"graphCodeTokens":112,"ARROW_CROSS":113,"ARROW_POINT":114,"ARROW_CIRCLE":115,"ARROW_OPEN":116,"QUOTE":117,"$accept":0,"$end":1},
+terminals_: {2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",46:"AMP",47:"STYLE_SEPARATOR",49:"PS",50:"PE",51:"(-",52:"-)",53:"STADIUMSTART",54:"STADIUMEND",55:"SUBROUTINESTART",56:"SUBROUTINEEND",57:"CYLINDERSTART",58:"CYLINDEREND",59:"DIAMOND_START",60:"DIAMOND_STOP",61:"TAGEND",62:"TRAPSTART",63:"TRAPEND",64:"INVTRAPSTART",65:"INVTRAPEND",68:"TESTSTR",69:"START_LINK",70:"LINK",71:"PIPE",73:"STR",75:"STYLE",76:"LINKSTYLE",77:"CLASSDEF",78:"CLASS",79:"CLICK",80:"DOWN",81:"UP",84:"DEFAULT",87:"LINK_TARGET",88:"HEX",90:"INTERPOLATE",91:"NUM",92:"COMMA",95:"ALPHA",96:"COLON",97:"MINUS",98:"UNIT",99:"BRKT",100:"DOT",101:"PCT",102:"TAGSTART",106:"PUNCTUATION",107:"UNICODE_TEXT",108:"PLUS",109:"EQUALS",110:"MULT",111:"UNDERSCORE",113:"ARROW_CROSS",114:"ARROW_POINT",115:"ARROW_CIRCLE",116:"ARROW_OPEN",117:"QUOTE"},
+productions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[44,1],[44,5],[44,3],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[43,2],[43,3],[43,3],[43,1],[43,3],[66,1],[67,3],[39,1],[39,2],[39,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[82,1],[82,2],[35,5],[35,5],[36,5],[37,5],[37,7],[37,5],[37,7],[37,7],[37,9],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[89,1],[89,3],[85,1],[85,3],[93,1],[93,2],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[72,1],[72,1],[72,1],[72,1],[72,1],[72,1],[83,1],[83,1],[83,1],[83,1],[48,1],[48,2],[86,1],[86,2],[105,1],[105,1],[105,1],[105,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[104,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 5:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 6:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 7:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 8:
+ yy.parseDirective('}%%', 'close_directive', 'flowchart'); 
+break;
+case 10:
+ this.$ = [];
+break;
+case 11:
+
+	    if($$[$0] !== []){
+	        $$[$0-1].push($$[$0]);
+	    }
+	    this.$=$$[$0-1];
+break;
+case 12: case 76: case 78: case 90: case 138: case 140: case 141:
+this.$=$$[$0];
+break;
+case 19:
+ yy.setDirection('TB');this.$ = 'TB';
+break;
+case 20:
+ yy.setDirection($$[$0-1]);this.$ = $$[$0-1];
+break;
+case 35:
+ /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes
+break;
+case 36: case 37: case 38: case 39: case 40:
+this.$=[];
+break;
+case 41:
+this.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);
+break;
+case 42:
+this.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);
+break;
+case 43:
+this.$=yy.addSubGraph(undefined,$$[$0-1],undefined);
+break;
+case 47:
+ /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } 
+break;
+case 48:
+ /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } 
+break;
+case 49:
+/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }
+break;
+case 50:
+ /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }
+break;
+case 51:
+ /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];
+break;
+case 52:
+ this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ 
+break;
+case 53:
+this.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])
+break;
+case 54:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');
+break;
+case 55:
+this.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');
+break;
+case 56:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');
+break;
+case 57:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');
+break;
+case 58:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');
+break;
+case 59:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');
+break;
+case 60:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');
+break;
+case 61:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');
+break;
+case 62:
+this.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');
+break;
+case 63:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');
+break;
+case 64:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');
+break;
+case 65:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');
+break;
+case 66:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');
+break;
+case 67:
+this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');
+break;
+case 68:
+ /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);
+break;
+case 69:
+$$[$0-1].text = $$[$0];this.$ = $$[$0-1];
+break;
+case 70: case 71:
+$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];
+break;
+case 72:
+this.$ = $$[$0];
+break;
+case 73:
+var inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {"type":inf.type,"stroke":inf.stroke,"length":inf.length,"text":$$[$0-1]};
+break;
+case 74:
+var inf = yy.destructLink($$[$0]);this.$ = {"type":inf.type,"stroke":inf.stroke,"length":inf.length};
+break;
+case 75:
+this.$ = $$[$0-1];
+break;
+case 77: case 91: case 139:
+this.$=$$[$0-1]+''+$$[$0];
+break;
+case 92: case 93:
+this.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);
+break;
+case 94:
+this.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);
+break;
+case 95:
+this.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0], undefined);
+break;
+case 96:
+this.$ = $$[$0-6];yy.setClickEvent($$[$0-4], $$[$0-2], $$[$0])       ;
+break;
+case 97:
+this.$ = $$[$0-4];yy.setLink($$[$0-2], $$[$0], undefined, undefined);
+break;
+case 98:
+this.$ = $$[$0-6];yy.setLink($$[$0-4], $$[$0-2], $$[$0], undefined       );
+break;
+case 99:
+this.$ = $$[$0-6];yy.setLink($$[$0-4], $$[$0-2], undefined, $$[$0]       );
+break;
+case 100:
+this.$ = $$[$0-8];yy.setLink($$[$0-6], $$[$0-4], $$[$0-2], $$[$0]              );
+break;
+case 101:
+this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);
+break;
+case 102: case 104:
+this.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);
+break;
+case 103:
+this.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);
+break;
+case 105:
+this.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);
+break;
+case 106:
+this.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);
+break;
+case 107:
+this.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);
+break;
+case 108:
+this.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);
+break;
+case 109: case 111:
+this.$ = [$$[$0]]
+break;
+case 110: case 112:
+$$[$0-2].push($$[$0]);this.$ = $$[$0-2];
+break;
+case 114:
+this.$ = $$[$0-1] + $$[$0];
+break;
+case 136:
+this.$=$$[$0]
+break;
+case 137:
+this.$=$$[$0-1]+''+$$[$0]
+break;
+case 142:
+this.$='v';
+break;
+case 143:
+this.$='-';
+break;
+}
+},
+table: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,104:39,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu},{8:55,10:[1,56],15:$Vv},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,59],21:[1,60],22:$Vw,27:58,30:61},o($Vx,[2,11]),o($Vx,[2,12]),o($Vx,[2,13]),o($Vx,[2,14]),o($Vx,[2,15]),o($Vx,[2,16]),{9:63,20:$Vy,21:$Vz,23:$VA,43:64,66:68,69:[1,69],70:[1,70]},{9:71,20:$Vy,21:$Vz,23:$VA},{9:72,20:$Vy,21:$Vz,23:$VA},{9:73,20:$Vy,21:$Vz,23:$VA},{9:74,20:$Vy,21:$Vz,23:$VA},{9:75,20:$Vy,21:$Vz,23:$VA},{9:77,20:$Vy,21:$Vz,22:[1,76],23:$VA},o($VB,[2,50],{30:78,22:$Vw}),{22:[1,79]},{22:[1,80]},{22:[1,81]},{22:[1,82]},{22:[1,83]},o($VC,[2,51],{47:[1,84]}),o($VD,[2,68],{104:95,40:[1,85],46:$Vb,49:[1,86],51:[1,87],53:[1,88],55:[1,89],57:[1,90],59:[1,91],61:[1,92],62:[1,93],64:[1,94],80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu}),o($VE,[2,136]),o($VE,[2,157]),o($VE,[2,158]),o($VE,[2,159]),o($VE,[2,160]),o($VE,[2,161]),o($VE,[2,162]),o($VE,[2,163]),o($VE,[2,164]),o($VE,[2,165]),o($VE,[2,166]),o($VE,[2,167]),o($VE,[2,168]),o($VE,[2,169]),o($VE,[2,170]),o($VE,[2,171]),{9:96,20:$Vy,21:$Vz,23:$VA},{11:97,14:[1,98]},o($VF,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,99]},o($VG,[2,34],{30:100,22:$Vw}),o($Vx,[2,35]),{44:101,45:37,46:$Vb,48:38,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,104:39,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu},o($VH,[2,44]),o($VH,[2,45]),o($VH,[2,46]),o($VI,[2,72],{67:102,68:[1,103],71:[1,104]}),{22:$VJ,24:$VK,26:$VL,38:$VM,39:105,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o([46,68,71,80,91,92,95,96,97,99,100,106,107,108,109,110,111],[2,74]),o($Vx,[2,36]),o($Vx,[2,37]),o($Vx,[2,38]),o($Vx,[2,39]),o($Vx,[2,40]),{22:$VJ,24:$VK,26:$VL,38:$VM,39:142,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($Vd1,$V5,{17:143}),o($VB,[2,49],{46:$Ve1}),{26:$Vf1,46:$VO,80:$Vg1,86:145,88:[1,146],91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{84:[1,152],89:153,91:[1,154]},{26:$Vf1,46:$VO,80:$Vg1,84:[1,155],86:156,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{26:$Vf1,46:$VO,80:$Vg1,86:157,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{26:$Vf1,46:$VO,80:$Vg1,86:158,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{46:$Vb,48:159,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,104:39,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu},{22:$VJ,24:$VK,26:$VL,38:$VM,39:160,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:162,42:$VN,46:$VO,49:[1,161],61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:163,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:164,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:165,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:166,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:167,42:$VN,46:$VO,59:[1,168],61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:169,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:170,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:171,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($VE,[2,137]),o($Vi1,[2,3]),{8:172,15:$Vv},{15:[2,7]},o($V4,[2,28]),o($VG,[2,33]),o($VB,[2,47],{30:173,22:$Vw}),o($VI,[2,69],{22:[1,174]}),{22:[1,175]},{22:$VJ,24:$VK,26:$VL,38:$VM,39:176,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,61:$VP,69:$VQ,70:[1,177],72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($Vj1,[2,76]),o($Vj1,[2,78]),o($Vj1,[2,126]),o($Vj1,[2,127]),o($Vj1,[2,128]),o($Vj1,[2,129]),o($Vj1,[2,130]),o($Vj1,[2,131]),o($Vj1,[2,132]),o($Vj1,[2,133]),o($Vj1,[2,134]),o($Vj1,[2,135]),o($Vj1,[2,144]),o($Vj1,[2,145]),o($Vj1,[2,146]),o($Vj1,[2,147]),o($Vj1,[2,148]),o($Vj1,[2,149]),o($Vj1,[2,150]),o($Vj1,[2,151]),o($Vj1,[2,152]),o($Vj1,[2,153]),o($Vj1,[2,154]),o($Vj1,[2,155]),o($Vj1,[2,156]),o($Vj1,[2,79]),o($Vj1,[2,80]),o($Vj1,[2,81]),o($Vj1,[2,82]),o($Vj1,[2,83]),o($Vj1,[2,84]),o($Vj1,[2,85]),o($Vj1,[2,86]),o($Vj1,[2,87]),o($Vj1,[2,88]),o($Vj1,[2,89]),{9:180,20:$Vy,21:$Vz,22:$VJ,23:$VA,24:$VK,26:$VL,38:$VM,40:[1,179],42:$VN,46:$VO,61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,181],44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,104:39,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu},{22:$Vw,30:182},{22:[1,183],26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:184,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:[1,185]},o($Vk1,[2,138]),o($Vk1,[2,140]),o($Vk1,[2,141]),o($Vk1,[2,142]),o($Vk1,[2,143]),{22:[1,186]},{22:[1,187],92:[1,188]},o($Vl1,[2,109]),{22:[1,189]},{22:[1,190],26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:184,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:[1,191],26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:184,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:[1,192],26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:184,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($VC,[2,53],{104:95,46:$Vb,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu}),{22:$VJ,24:$VK,26:$VL,38:$VM,41:[1,193],42:$VN,46:$VO,61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:194,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,50:[1,195],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,52:[1,196],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,54:[1,197],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,56:[1,198],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,58:[1,199],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,60:[1,200],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,39:201,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,41:[1,202],42:$VN,46:$VO,61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,61:$VP,63:[1,203],65:[1,204],69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,61:$VP,63:[1,206],65:[1,205],69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{9:207,20:$Vy,21:$Vz,23:$VA},o($VB,[2,48],{46:$Ve1}),o($VI,[2,71]),o($VI,[2,70]),{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,61:$VP,69:$VQ,71:[1,208],72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($VI,[2,73]),o($Vj1,[2,77]),{22:$VJ,24:$VK,26:$VL,38:$VM,39:209,42:$VN,46:$VO,61:$VP,69:$VQ,72:106,73:$VR,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($Vd1,$V5,{17:210}),o($Vx,[2,43]),{45:211,46:$Vb,48:38,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,104:39,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu},{22:$Vm1,75:$Vn1,85:212,88:$Vo1,91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},o($Vk1,[2,139]),{22:$Vm1,75:$Vn1,85:226,88:$Vo1,91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},{22:$Vm1,75:$Vn1,85:227,88:$Vo1,90:[1,228],91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},{22:$Vm1,75:$Vn1,85:229,88:$Vo1,90:[1,230],91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},{91:[1,231]},{22:$Vm1,75:$Vn1,85:232,88:$Vo1,91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},{22:$Vm1,75:$Vn1,85:233,88:$Vo1,91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},{26:$Vf1,46:$VO,80:$Vg1,86:234,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{26:$Vf1,46:$VO,73:[1,236],80:$Vg1,86:235,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($VD,[2,54]),{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,50:[1,237],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($VD,[2,60]),o($VD,[2,56]),o($VD,[2,57]),o($VD,[2,58]),o($VD,[2,59]),o($VD,[2,61]),{22:$VJ,24:$VK,26:$VL,38:$VM,42:$VN,46:$VO,60:[1,238],61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},o($VD,[2,63]),o($VD,[2,64]),o($VD,[2,66]),o($VD,[2,65]),o($VD,[2,67]),o($Vi1,[2,4]),o([22,46,80,91,92,95,96,97,99,100,106,107,108,109,110,111],[2,75]),{22:$VJ,24:$VK,26:$VL,38:$VM,41:[1,239],42:$VN,46:$VO,61:$VP,69:$VQ,72:178,74:117,75:$VS,76:$VT,77:$VU,78:$VV,79:$VW,80:$VX,81:$VY,83:108,84:$VZ,91:$V_,92:$V$,95:$V01,96:$V11,97:$V21,99:$V31,100:$V41,101:$V51,102:$V61,103:114,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,240],44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,104:39,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu},o($VC,[2,52]),o($VF,[2,101],{92:$Vx1}),o($Vy1,[2,111],{94:242,22:$Vm1,75:$Vn1,88:$Vo1,91:$Vp1,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1}),o($Vz1,[2,113]),o($Vz1,[2,115]),o($Vz1,[2,116]),o($Vz1,[2,117]),o($Vz1,[2,118]),o($Vz1,[2,119]),o($Vz1,[2,120]),o($Vz1,[2,121]),o($Vz1,[2,122]),o($Vz1,[2,123]),o($Vz1,[2,124]),o($Vz1,[2,125]),o($VF,[2,102],{92:$Vx1}),o($VF,[2,103],{92:$Vx1}),{22:[1,243]},o($VF,[2,104],{92:$Vx1}),{22:[1,244]},o($Vl1,[2,110]),o($VF,[2,92],{92:$Vx1}),o($VF,[2,93],{92:$Vx1}),o($VF,[2,94],{103:149,105:184,26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1}),o($VF,[2,95],{103:149,105:184,22:[1,245],26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1}),o($VF,[2,97],{22:[1,246]}),{50:[1,247]},{60:[1,248]},{9:249,20:$Vy,21:$Vz,23:$VA},o($Vx,[2,42]),{22:$Vm1,75:$Vn1,88:$Vo1,91:$Vp1,93:250,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},o($Vz1,[2,114]),{26:$Vf1,46:$VO,80:$Vg1,86:251,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{26:$Vf1,46:$VO,80:$Vg1,86:252,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,103:149,105:147,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1},{73:[1,253]},{73:[1,254],87:[1,255]},o($VD,[2,55]),o($VD,[2,62]),o($Vd1,$V5,{17:256}),o($Vy1,[2,112],{94:242,22:$Vm1,75:$Vn1,88:$Vo1,91:$Vp1,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1}),o($VF,[2,107],{103:149,105:184,22:[1,257],26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1}),o($VF,[2,108],{103:149,105:184,22:[1,258],26:$Vf1,46:$VO,80:$Vg1,91:$V_,92:$V$,95:$V01,96:$V11,97:$Vh1,99:$V31,100:$V41,106:$V71,107:$V81,108:$V91,109:$Va1,110:$Vb1,111:$Vc1}),o($VF,[2,96]),o($VF,[2,98],{22:[1,259]}),o($VF,[2,99]),{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,260],44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,91:$Vi,92:$Vj,95:$Vk,96:$Vl,97:$Vm,99:$Vn,100:$Vo,104:39,106:$Vp,107:$Vq,108:$Vr,109:$Vs,110:$Vt,111:$Vu},{22:$Vm1,75:$Vn1,85:261,88:$Vo1,91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},{22:$Vm1,75:$Vn1,85:262,88:$Vo1,91:$Vp1,93:213,94:214,95:$Vq1,96:$Vr1,97:$Vs1,98:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1},{87:[1,263]},o($Vx,[2,41]),o($VF,[2,105],{92:$Vx1}),o($VF,[2,106],{92:$Vx1}),o($VF,[2,100])],
+defaultActions: {2:[2,1],9:[2,5],10:[2,2],98:[2,7]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 12; 
+break;
+case 1: this.begin('type_directive'); return 13; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 10; 
+break;
+case 3: this.popState(); this.popState(); return 15; 
+break;
+case 4:return 14;
+break;
+case 5:/* skip comments */
+break;
+case 6:/* skip comments */
+break;
+case 7:this.begin("string");
+break;
+case 8:this.popState();
+break;
+case 9:return "STR";
+break;
+case 10:return 75;
+break;
+case 11:return 84;
+break;
+case 12:return 76;
+break;
+case 13:return 90;
+break;
+case 14:return 77;
+break;
+case 15:return 78;
+break;
+case 16:return 79;
+break;
+case 17:if(yy.lex.firstGraph()){this.begin("dir");}  return 24;
+break;
+case 18:if(yy.lex.firstGraph()){this.begin("dir");}  return 24;
+break;
+case 19:return 38;
+break;
+case 20:return 42;
+break;
+case 21:return 87;
+break;
+case 22:return 87;
+break;
+case 23:return 87;
+break;
+case 24:return 87;
+break;
+case 25:   this.popState();  return 25; 
+break;
+case 26:   this.popState();  return 26; 
+break;
+case 27:   this.popState();  return 26; 
+break;
+case 28:   this.popState();  return 26; 
+break;
+case 29:   this.popState();  return 26; 
+break;
+case 30:   this.popState();  return 26; 
+break;
+case 31:   this.popState();  return 26; 
+break;
+case 32:   this.popState();  return 26; 
+break;
+case 33:   this.popState();  return 26; 
+break;
+case 34:   this.popState();  return 26; 
+break;
+case 35:   this.popState();  return 26; 
+break;
+case 36: return 91;
+break;
+case 37:return 99;
+break;
+case 38:return 47;
+break;
+case 39:return 96;
+break;
+case 40:return 46;
+break;
+case 41:return 20;
+break;
+case 42:return 92;
+break;
+case 43:return 110;
+break;
+case 44:return 70;
+break;
+case 45:return 70;
+break;
+case 46:return 70;
+break;
+case 47:return 69;
+break;
+case 48:return 69;
+break;
+case 49:return 69;
+break;
+case 50:return 51;
+break;
+case 51:return 52;
+break;
+case 52:return 53;
+break;
+case 53:return 54;
+break;
+case 54:return 55;
+break;
+case 55:return 56;
+break;
+case 56:return 57;
+break;
+case 57:return 58;
+break;
+case 58:return 97;
+break;
+case 59:return 100;
+break;
+case 60:return 111;
+break;
+case 61:return 108;
+break;
+case 62:return 101;
+break;
+case 63:return 109;
+break;
+case 64:return 109;
+break;
+case 65:return 102;
+break;
+case 66:return 61;
+break;
+case 67:return 81;
+break;
+case 68:return 'SEP';
+break;
+case 69:return 80;
+break;
+case 70:return 95;
+break;
+case 71:return 63;
+break;
+case 72:return 62;
+break;
+case 73:return 65;
+break;
+case 74:return 64;
+break;
+case 75:return 106;
+break;
+case 76:return 107;
+break;
+case 77:return 71;
+break;
+case 78:return 49;
+break;
+case 79:return 50;
+break;
+case 80:return 40;
+break;
+case 81:return 41;
+break;
+case 82:return 59
+break;
+case 83:return 60
+break;
+case 84:return 117;
+break;
+case 85:return 21;
+break;
+case 86:return 22;
+break;
+case 87:return 23;
+break;
+}
+},
+rules: [/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],
+conditions: {"close_directive":{"rules":[],"inclusive":false},"arg_directive":{"rules":[3,4],"inclusive":false},"type_directive":{"rules":[2,3],"inclusive":false},"open_directive":{"rules":[1],"inclusive":false},"vertex":{"rules":[],"inclusive":false},"dir":{"rules":[25,26,27,28,29,30,31,32,33,34,35],"inclusive":false},"string":{"rules":[8,9],"inclusive":false},"INITIAL":{"rules":[0,5,6,7,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/flowchart/styles.js":
+/*!******************************************!*\
+  !*** ./src/diagrams/flowchart/styles.js ***!
+  \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return ".label {\n    font-family: ".concat(options.fontFamily, ";\n    color: ").concat(options.nodeTextColor || options.textColor, ";\n  }\n\n  .label text {\n    fill: ").concat(options.nodeTextColor || options.textColor, ";\n  }\n\n  .node rect,\n  .node circle,\n  .node ellipse,\n  .node polygon,\n  .node path {\n    fill: ").concat(options.mainBkg, ";\n    stroke: ").concat(options.nodeBorder, ";\n    stroke-width: 1px;\n  }\n\n  .node .label {\n    text-align: center;\n  }\n  .node.clickable {\n    cursor: pointer;\n  }\n\n  .arrowheadPath {\n    fill: ").concat(options.arrowheadColor, ";\n  }\n\n  .edgePath .path {\n    stroke: ").concat(options.lineColor, ";\n    stroke-width: 1.5px;\n  }\n\n  .flowchart-link {\n    stroke: ").concat(options.lineColor, ";\n    fill: none;\n  }\n\n  .edgeLabel {\n    background-color: ").concat(options.edgeLabelBackground, ";\n    rect {\n      opacity: 0.5;\n      background-color: ").concat(options.edgeLabelBackground, ";\n      fill: ").concat(options.edgeLabelBackground, ";\n    }\n    text-align: center;\n  }\n\n  .cluster rect {\n    fill: ").concat(options.clusterBkg, ";\n    stroke: ").concat(options.clusterBorder, ";\n    stroke-width: 1px;\n  }\n\n  .cluster text {\n    fill: ").concat(options.titleColor, ";\n  }\n\n  div.mermaidTooltip {\n    position: absolute;\n    text-align: center;\n    max-width: 200px;\n    padding: 2px;\n    font-family: ").concat(options.fontFamily, ";\n    font-size: 12px;\n    background: ").concat(options.tertiaryColor, ";\n    border: 1px solid ").concat(options.border2, ";\n    border-radius: 2px;\n    pointer-events: none;\n    z-index: 100;\n  }\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/gantt/ganttDb.js":
+/*!***************************************!*\
+  !*** ./src/diagrams/gantt/ganttDb.js ***!
+  \***************************************/
+/*! exports provided: parseDirective, clear, setAxisFormat, getAxisFormat, setTodayMarker, getTodayMarker, setDateFormat, enableInclusiveEndDates, endDatesAreInclusive, getDateFormat, setExcludes, getExcludes, setTitle, getTitle, addSection, getSections, getTasks, addTask, findTaskById, addTaskOrg, setLink, setClass, setClickEvent, bindFunctions, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAxisFormat", function() { return setAxisFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAxisFormat", function() { return getAxisFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setTodayMarker", function() { return setTodayMarker; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTodayMarker", function() { return getTodayMarker; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDateFormat", function() { return setDateFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "enableInclusiveEndDates", function() { return enableInclusiveEndDates; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endDatesAreInclusive", function() { return endDatesAreInclusive; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDateFormat", function() { return getDateFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setExcludes", function() { return setExcludes; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getExcludes", function() { return getExcludes; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setTitle", function() { return setTitle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTitle", function() { return getTitle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSection", function() { return addSection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSections", function() { return getSections; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTasks", function() { return getTasks; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addTask", function() { return addTask; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findTaskById", function() { return findTaskById; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addTaskOrg", function() { return addTaskOrg; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setLink", function() { return setLink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setClass", function() { return setClass; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setClickEvent", function() { return setClickEvent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindFunctions", function() { return bindFunctions; });
+/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-mini */ "./node_modules/moment-mini/moment.min.js");
+/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_mini__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @braintree/sanitize-url */ "./node_modules/@braintree/sanitize-url/index.js");
+/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
+
+function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
+
+
+
+
+
+
+
+var dateFormat = '';
+var axisFormat = '';
+var todayMarker = '';
+var excludes = [];
+var title = '';
+var sections = [];
+var tasks = [];
+var currentSection = '';
+var tags = ['active', 'done', 'crit', 'milestone'];
+var funs = [];
+var inclusiveEndDates = false; // The serial order of the task in the script
+
+var lastOrder = 0;
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__["default"].parseDirective(this, statement, context, type);
+};
+var clear = function clear() {
+  sections = [];
+  tasks = [];
+  currentSection = '';
+  funs = [];
+  title = '';
+  taskCnt = 0;
+  lastTask = undefined;
+  lastTaskID = undefined;
+  rawTasks = [];
+  dateFormat = '';
+  axisFormat = '';
+  todayMarker = '';
+  excludes = [];
+  inclusiveEndDates = false;
+  lastOrder = 0;
+};
+var setAxisFormat = function setAxisFormat(txt) {
+  axisFormat = txt;
+};
+var getAxisFormat = function getAxisFormat() {
+  return axisFormat;
+};
+var setTodayMarker = function setTodayMarker(txt) {
+  todayMarker = txt;
+};
+var getTodayMarker = function getTodayMarker() {
+  return todayMarker;
+};
+var setDateFormat = function setDateFormat(txt) {
+  dateFormat = txt;
+};
+var enableInclusiveEndDates = function enableInclusiveEndDates() {
+  inclusiveEndDates = true;
+};
+var endDatesAreInclusive = function endDatesAreInclusive() {
+  return inclusiveEndDates;
+};
+var getDateFormat = function getDateFormat() {
+  return dateFormat;
+};
+var setExcludes = function setExcludes(txt) {
+  excludes = txt.toLowerCase().split(/[\s,]+/);
+};
+var getExcludes = function getExcludes() {
+  return excludes;
+};
+var setTitle = function setTitle(txt) {
+  title = txt;
+};
+var getTitle = function getTitle() {
+  return title;
+};
+var addSection = function addSection(txt) {
+  currentSection = txt;
+  sections.push(txt);
+};
+var getSections = function getSections() {
+  return sections;
+};
+var getTasks = function getTasks() {
+  var allItemsPricessed = compileTasks();
+  var maxDepth = 10;
+  var iterationCount = 0;
+
+  while (!allItemsPricessed && iterationCount < maxDepth) {
+    allItemsPricessed = compileTasks();
+    iterationCount++;
+  }
+
+  tasks = rawTasks;
+  return tasks;
+};
+
+var isInvalidDate = function isInvalidDate(date, dateFormat, excludes) {
+  if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {
+    return true;
+  }
+
+  if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {
+    return true;
+  }
+
+  return excludes.indexOf(date.format(dateFormat.trim())) >= 0;
+};
+
+var checkTaskDates = function checkTaskDates(task, dateFormat, excludes) {
+  if (!excludes.length || task.manualEndTime) return;
+  var startTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(task.startTime, dateFormat, true);
+  startTime.add(1, 'd');
+  var endTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(task.endTime, dateFormat, true);
+  var renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes);
+  task.endTime = endTime.toDate();
+  task.renderEndTime = renderEndTime;
+};
+
+var fixTaskDates = function fixTaskDates(startTime, endTime, dateFormat, excludes) {
+  var invalid = false;
+  var renderEndTime = null;
+
+  while (startTime <= endTime) {
+    if (!invalid) {
+      renderEndTime = endTime.toDate();
+    }
+
+    invalid = isInvalidDate(startTime, dateFormat, excludes);
+
+    if (invalid) {
+      endTime.add(1, 'd');
+    }
+
+    startTime.add(1, 'd');
+  }
+
+  return renderEndTime;
+};
+
+var getStartDate = function getStartDate(prevTime, dateFormat, str) {
+  str = str.trim(); // Test for after
+
+  var re = /^after\s+([\d\w- ]+)/;
+  var afterStatement = re.exec(str.trim());
+
+  if (afterStatement !== null) {
+    // check all after ids and take the latest
+    var latestEndingTask = null;
+    afterStatement[1].split(' ').forEach(function (id) {
+      var task = findTaskById(id);
+
+      if (typeof task !== 'undefined') {
+        if (!latestEndingTask) {
+          latestEndingTask = task;
+        } else {
+          if (task.endTime > latestEndingTask.endTime) {
+            latestEndingTask = task;
+          }
+        }
+      }
+    });
+
+    if (!latestEndingTask) {
+      var dt = new Date();
+      dt.setHours(0, 0, 0, 0);
+      return dt;
+    } else {
+      return latestEndingTask.endTime;
+    }
+  } // Check for actual date set
+
+
+  var mDate = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(str, dateFormat.trim(), true);
+
+  if (mDate.isValid()) {
+    return mDate.toDate();
+  } else {
+    _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('Invalid date:' + str);
+    _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('With date format:' + dateFormat.trim());
+  } // Default date - now
+
+
+  return new Date();
+};
+
+var durationToDate = function durationToDate(durationStatement, relativeTime) {
+  if (durationStatement !== null) {
+    switch (durationStatement[2]) {
+      case 's':
+        relativeTime.add(durationStatement[1], 'seconds');
+        break;
+
+      case 'm':
+        relativeTime.add(durationStatement[1], 'minutes');
+        break;
+
+      case 'h':
+        relativeTime.add(durationStatement[1], 'hours');
+        break;
+
+      case 'd':
+        relativeTime.add(durationStatement[1], 'days');
+        break;
+
+      case 'w':
+        relativeTime.add(durationStatement[1], 'weeks');
+        break;
+    }
+  } // Default date - now
+
+
+  return relativeTime.toDate();
+};
+
+var getEndDate = function getEndDate(prevTime, dateFormat, str, inclusive) {
+  inclusive = inclusive || false;
+  str = str.trim(); // Check for actual date
+
+  var mDate = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(str, dateFormat.trim(), true);
+
+  if (mDate.isValid()) {
+    if (inclusive) {
+      mDate.add(1, 'd');
+    }
+
+    return mDate.toDate();
+  }
+
+  return durationToDate(/^([\d]+)([wdhms])/.exec(str.trim()), moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(prevTime));
+};
+
+var taskCnt = 0;
+
+var parseId = function parseId(idStr) {
+  if (typeof idStr === 'undefined') {
+    taskCnt = taskCnt + 1;
+    return 'task' + taskCnt;
+  }
+
+  return idStr;
+}; // id, startDate, endDate
+// id, startDate, length
+// id, after x, endDate
+// id, after x, length
+// startDate, endDate
+// startDate, length
+// after x, endDate
+// after x, length
+// endDate
+// length
+
+
+var compileData = function compileData(prevTask, dataStr) {
+  var ds;
+
+  if (dataStr.substr(0, 1) === ':') {
+    ds = dataStr.substr(1, dataStr.length);
+  } else {
+    ds = dataStr;
+  }
+
+  var data = ds.split(',');
+  var task = {}; // Get tags like active, done, crit and milestone
+
+  getTaskTags(data, task, tags);
+
+  for (var i = 0; i < data.length; i++) {
+    data[i] = data[i].trim();
+  }
+
+  var endTimeData = '';
+
+  switch (data.length) {
+    case 1:
+      task.id = parseId();
+      task.startTime = prevTask.endTime;
+      endTimeData = data[0];
+      break;
+
+    case 2:
+      task.id = parseId();
+      task.startTime = getStartDate(undefined, dateFormat, data[0]);
+      endTimeData = data[1];
+      break;
+
+    case 3:
+      task.id = parseId(data[0]);
+      task.startTime = getStartDate(undefined, dateFormat, data[1]);
+      endTimeData = data[2];
+      break;
+
+    default:
+  }
+
+  if (endTimeData) {
+    task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);
+    task.manualEndTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(endTimeData, 'YYYY-MM-DD', true).isValid();
+    checkTaskDates(task, dateFormat, excludes);
+  }
+
+  return task;
+};
+
+var parseData = function parseData(prevTaskId, dataStr) {
+  var ds;
+
+  if (dataStr.substr(0, 1) === ':') {
+    ds = dataStr.substr(1, dataStr.length);
+  } else {
+    ds = dataStr;
+  }
+
+  var data = ds.split(',');
+  var task = {}; // Get tags like active, done, crit and milestone
+
+  getTaskTags(data, task, tags);
+
+  for (var i = 0; i < data.length; i++) {
+    data[i] = data[i].trim();
+  }
+
+  switch (data.length) {
+    case 1:
+      task.id = parseId();
+      task.startTime = {
+        type: 'prevTaskEnd',
+        id: prevTaskId
+      };
+      task.endTime = {
+        data: data[0]
+      };
+      break;
+
+    case 2:
+      task.id = parseId();
+      task.startTime = {
+        type: 'getStartDate',
+        startData: data[0]
+      };
+      task.endTime = {
+        data: data[1]
+      };
+      break;
+
+    case 3:
+      task.id = parseId(data[0]);
+      task.startTime = {
+        type: 'getStartDate',
+        startData: data[1]
+      };
+      task.endTime = {
+        data: data[2]
+      };
+      break;
+
+    default:
+  }
+
+  return task;
+};
+
+var lastTask;
+var lastTaskID;
+var rawTasks = [];
+var taskDb = {};
+var addTask = function addTask(descr, data) {
+  var rawTask = {
+    section: currentSection,
+    type: currentSection,
+    processed: false,
+    manualEndTime: false,
+    renderEndTime: null,
+    raw: {
+      data: data
+    },
+    task: descr,
+    classes: []
+  };
+  var taskInfo = parseData(lastTaskID, data);
+  rawTask.raw.startTime = taskInfo.startTime;
+  rawTask.raw.endTime = taskInfo.endTime;
+  rawTask.id = taskInfo.id;
+  rawTask.prevTaskId = lastTaskID;
+  rawTask.active = taskInfo.active;
+  rawTask.done = taskInfo.done;
+  rawTask.crit = taskInfo.crit;
+  rawTask.milestone = taskInfo.milestone;
+  rawTask.order = lastOrder;
+  lastOrder++;
+  var pos = rawTasks.push(rawTask);
+  lastTaskID = rawTask.id; // Store cross ref
+
+  taskDb[rawTask.id] = pos - 1;
+};
+var findTaskById = function findTaskById(id) {
+  var pos = taskDb[id];
+  return rawTasks[pos];
+};
+var addTaskOrg = function addTaskOrg(descr, data) {
+  var newTask = {
+    section: currentSection,
+    type: currentSection,
+    description: descr,
+    task: descr,
+    classes: []
+  };
+  var taskInfo = compileData(lastTask, data);
+  newTask.startTime = taskInfo.startTime;
+  newTask.endTime = taskInfo.endTime;
+  newTask.id = taskInfo.id;
+  newTask.active = taskInfo.active;
+  newTask.done = taskInfo.done;
+  newTask.crit = taskInfo.crit;
+  newTask.milestone = taskInfo.milestone;
+  lastTask = newTask;
+  tasks.push(newTask);
+};
+
+var compileTasks = function compileTasks() {
+  var compileTask = function compileTask(pos) {
+    var task = rawTasks[pos];
+    var startTime = '';
+
+    switch (rawTasks[pos].raw.startTime.type) {
+      case 'prevTaskEnd':
+        {
+          var prevTask = findTaskById(task.prevTaskId);
+          task.startTime = prevTask.endTime;
+          break;
+        }
+
+      case 'getStartDate':
+        startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);
+
+        if (startTime) {
+          rawTasks[pos].startTime = startTime;
+        }
+
+        break;
+    }
+
+    if (rawTasks[pos].startTime) {
+      rawTasks[pos].endTime = getEndDate(rawTasks[pos].startTime, dateFormat, rawTasks[pos].raw.endTime.data, inclusiveEndDates);
+
+      if (rawTasks[pos].endTime) {
+        rawTasks[pos].processed = true;
+        rawTasks[pos].manualEndTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(rawTasks[pos].raw.endTime.data, 'YYYY-MM-DD', true).isValid();
+        checkTaskDates(rawTasks[pos], dateFormat, excludes);
+      }
+    }
+
+    return rawTasks[pos].processed;
+  };
+
+  var allProcessed = true;
+
+  for (var i = 0; i < rawTasks.length; i++) {
+    compileTask(i);
+    allProcessed = allProcessed && rawTasks[i].processed;
+  }
+
+  return allProcessed;
+};
+/**
+ * Called by parser when a link is found. Adds the URL to the vertex data.
+ * @param ids Comma separated list of ids
+ * @param linkStr URL to create a link for
+ */
+
+
+var setLink = function setLink(ids, _linkStr) {
+  var linkStr = _linkStr;
+
+  if (_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"]().securityLevel !== 'loose') {
+    linkStr = Object(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__["sanitizeUrl"])(_linkStr);
+  }
+
+  ids.split(',').forEach(function (id) {
+    var rawTask = findTaskById(id);
+
+    if (typeof rawTask !== 'undefined') {
+      pushFun(id, function () {
+        window.open(linkStr, '_self');
+      });
+    }
+  });
+  setClass(ids, 'clickable');
+};
+/**
+ * Called by parser when a special node is found, e.g. a clickable element.
+ * @param ids Comma separated list of ids
+ * @param className Class to add
+ */
+
+var setClass = function setClass(ids, className) {
+  ids.split(',').forEach(function (id) {
+    var rawTask = findTaskById(id);
+
+    if (typeof rawTask !== 'undefined') {
+      rawTask.classes.push(className);
+    }
+  });
+};
+
+var setClickFun = function setClickFun(id, functionName, functionArgs) {
+  if (_config__WEBPACK_IMPORTED_MODULE_3__["getConfig"]().securityLevel !== 'loose') {
+    return;
+  }
+
+  if (typeof functionName === 'undefined') {
+    return;
+  }
+
+  var argList = [];
+
+  if (typeof functionArgs === 'string') {
+    /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */
+    argList = functionArgs.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
+
+    for (var i = 0; i < argList.length; i++) {
+      var item = argList[i].trim();
+      /* Removes all double quotes at the start and end of an argument */
+
+      /* This preserves all starting and ending whitespace inside */
+
+      if (item.charAt(0) === '"' && item.charAt(item.length - 1) === '"') {
+        item = item.substr(1, item.length - 2);
+      }
+
+      argList[i] = item;
+    }
+  }
+  /* if no arguments passed into callback, default to passing in id */
+
+
+  if (argList.length === 0) {
+    argList.push(id);
+  }
+
+  var rawTask = findTaskById(id);
+
+  if (typeof rawTask !== 'undefined') {
+    pushFun(id, function () {
+      _utils__WEBPACK_IMPORTED_MODULE_4__["default"].runFunc.apply(_utils__WEBPACK_IMPORTED_MODULE_4__["default"], [functionName].concat(_toConsumableArray(argList)));
+    });
+  }
+};
+/**
+ * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text
+ * @param id The task's id
+ * @param callbackFunction A function to be executed when clicked on the task or the task's text
+ */
+
+
+var pushFun = function pushFun(id, callbackFunction) {
+  funs.push(function () {
+    // const elem = d3.select(element).select(`[id="${id}"]`)
+    var elem = document.querySelector("[id=\"".concat(id, "\"]"));
+
+    if (elem !== null) {
+      elem.addEventListener('click', function () {
+        callbackFunction();
+      });
+    }
+  });
+  funs.push(function () {
+    // const elem = d3.select(element).select(`[id="${id}-text"]`)
+    var elem = document.querySelector("[id=\"".concat(id, "-text\"]"));
+
+    if (elem !== null) {
+      elem.addEventListener('click', function () {
+        callbackFunction();
+      });
+    }
+  });
+};
+/**
+ * Called by parser when a click definition is found. Registers an event handler.
+ * @param ids Comma separated list of ids
+ * @param functionName Function to be called on click
+ * @param functionArgs Function args the function should be called with
+ */
+
+
+var setClickEvent = function setClickEvent(ids, functionName, functionArgs) {
+  ids.split(',').forEach(function (id) {
+    setClickFun(id, functionName, functionArgs);
+  });
+  setClass(ids, 'clickable');
+};
+/**
+ * Binds all functions previously added to fun (specified through click) to the element
+ * @param element
+ */
+
+var bindFunctions = function bindFunctions(element) {
+  funs.forEach(function (fun) {
+    fun(element);
+  });
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  parseDirective: parseDirective,
+  getConfig: function getConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_3__["getConfig"]().gantt;
+  },
+  clear: clear,
+  setDateFormat: setDateFormat,
+  getDateFormat: getDateFormat,
+  enableInclusiveEndDates: enableInclusiveEndDates,
+  endDatesAreInclusive: endDatesAreInclusive,
+  setAxisFormat: setAxisFormat,
+  getAxisFormat: getAxisFormat,
+  setTodayMarker: setTodayMarker,
+  getTodayMarker: getTodayMarker,
+  setTitle: setTitle,
+  getTitle: getTitle,
+  addSection: addSection,
+  getSections: getSections,
+  getTasks: getTasks,
+  addTask: addTask,
+  findTaskById: findTaskById,
+  addTaskOrg: addTaskOrg,
+  setExcludes: setExcludes,
+  getExcludes: getExcludes,
+  setClickEvent: setClickEvent,
+  setLink: setLink,
+  bindFunctions: bindFunctions,
+  durationToDate: durationToDate
+});
+
+function getTaskTags(data, task, tags) {
+  var matchFound = true;
+
+  while (matchFound) {
+    matchFound = false;
+    tags.forEach(function (t) {
+      var pattern = '^\\s*' + t + '\\s*$';
+      var regex = new RegExp(pattern);
+
+      if (data[0].match(regex)) {
+        task[t] = true;
+        data.shift(1);
+        matchFound = true;
+      }
+    });
+  }
+}
+
+/***/ }),
+
+/***/ "./src/diagrams/gantt/ganttRenderer.js":
+/*!*********************************************!*\
+  !*** ./src/diagrams/gantt/ganttRenderer.js ***!
+  \*********************************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _parser_gantt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parser/gantt */ "./src/diagrams/gantt/parser/gantt.jison");
+/* harmony import */ var _parser_gantt__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_parser_gantt__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _ganttDb__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ganttDb */ "./src/diagrams/gantt/ganttDb.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+_parser_gantt__WEBPACK_IMPORTED_MODULE_1__["parser"].yy = _ganttDb__WEBPACK_IMPORTED_MODULE_3__["default"];
+var conf = {
+  titleTopMargin: 25,
+  barHeight: 20,
+  barGap: 4,
+  topPadding: 50,
+  rightPadding: 75,
+  leftPadding: 75,
+  gridLineStartPadding: 35,
+  fontSize: 11,
+  fontFamily: '"Open-Sans", "sans-serif"'
+};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+  keys.forEach(function (key) {
+    conf[key] = cnf[key];
+  });
+};
+var w;
+var draw = function draw(text, id) {
+  _parser_gantt__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.clear();
+  _parser_gantt__WEBPACK_IMPORTED_MODULE_1__["parser"].parse(text);
+  var elem = document.getElementById(id);
+  w = elem.parentElement.offsetWidth;
+
+  if (typeof w === 'undefined') {
+    w = 1200;
+  }
+
+  if (typeof conf.useWidth !== 'undefined') {
+    w = conf.useWidth;
+  }
+
+  var taskArray = _parser_gantt__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.getTasks(); // Set height based on number of tasks
+
+  var h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding; // Set viewBox
+
+  elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])("[id=\"".concat(id, "\"]")); // Set timescale
+
+  var timeScale = Object(d3__WEBPACK_IMPORTED_MODULE_0__["scaleTime"])().domain([Object(d3__WEBPACK_IMPORTED_MODULE_0__["min"])(taskArray, function (d) {
+    return d.startTime;
+  }), Object(d3__WEBPACK_IMPORTED_MODULE_0__["max"])(taskArray, function (d) {
+    return d.endTime;
+  })]).rangeRound([0, w - conf.leftPadding - conf.rightPadding]);
+  var categories = [];
+
+  for (var i = 0; i < taskArray.length; i++) {
+    categories.push(taskArray[i].type);
+  }
+
+  var catsUnfiltered = categories; // for vert labels
+
+  categories = checkUnique(categories);
+
+  function taskCompare(a, b) {
+    var taskA = a.startTime;
+    var taskB = b.startTime;
+    var result = 0;
+
+    if (taskA > taskB) {
+      result = 1;
+    } else if (taskA < taskB) {
+      result = -1;
+    }
+
+    return result;
+  } // Sort the task array using the above taskCompare() so that
+  // tasks are created based on their order of startTime
+
+
+  taskArray.sort(taskCompare);
+  makeGant(taskArray, w, h);
+  Object(_utils__WEBPACK_IMPORTED_MODULE_4__["configureSvgSize"])(svg, h, w, conf.useMaxWidth);
+  svg.append('text').text(_parser_gantt__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.getTitle()).attr('x', w / 2).attr('y', conf.titleTopMargin).attr('class', 'titleText');
+
+  function makeGant(tasks, pageWidth, pageHeight) {
+    var barHeight = conf.barHeight;
+    var gap = barHeight + conf.barGap;
+    var topPadding = conf.topPadding;
+    var leftPadding = conf.leftPadding;
+    var colorScale = Object(d3__WEBPACK_IMPORTED_MODULE_0__["scaleLinear"])().domain([0, categories.length]).range(['#00B9FA', '#F95002']).interpolate(d3__WEBPACK_IMPORTED_MODULE_0__["interpolateHcl"]);
+    makeGrid(leftPadding, topPadding, pageWidth, pageHeight);
+    drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);
+    vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);
+    drawToday(leftPadding, topPadding, pageWidth, pageHeight);
+  }
+
+  function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {
+    // Draw background rects covering the entire width of the graph, these form the section rows.
+    svg.append('g').selectAll('rect').data(theArray).enter().append('rect').attr('x', 0).attr('y', function (d, i) {
+      // Ignore the incoming i value and use our order instead
+      i = d.order;
+      return i * theGap + theTopPad - 2;
+    }).attr('width', function () {
+      return w - conf.rightPadding / 2;
+    }).attr('height', theGap).attr('class', function (d) {
+      for (var _i = 0; _i < categories.length; _i++) {
+        if (d.type === categories[_i]) {
+          return 'section section' + _i % conf.numberSectionStyles;
+        }
+      }
+
+      return 'section section0';
+    }); // Draw the rects representing the tasks
+
+    var rectangles = svg.append('g').selectAll('rect').data(theArray).enter();
+    rectangles.append('rect').attr('id', function (d) {
+      return d.id;
+    }).attr('rx', 3).attr('ry', 3).attr('x', function (d) {
+      if (d.milestone) {
+        return timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;
+      }
+
+      return timeScale(d.startTime) + theSidePad;
+    }).attr('y', function (d, i) {
+      // Ignore the incoming i value and use our order instead
+      i = d.order;
+      return i * theGap + theTopPad;
+    }).attr('width', function (d) {
+      if (d.milestone) {
+        return theBarHeight;
+      }
+
+      return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);
+    }).attr('height', theBarHeight).attr('transform-origin', function (d, i) {
+      return (timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))).toString() + 'px ' + (i * theGap + theTopPad + 0.5 * theBarHeight).toString() + 'px';
+    }).attr('class', function (d) {
+      var res = 'task';
+      var classStr = '';
+
+      if (d.classes.length > 0) {
+        classStr = d.classes.join(' ');
+      }
+
+      var secNum = 0;
+
+      for (var _i2 = 0; _i2 < categories.length; _i2++) {
+        if (d.type === categories[_i2]) {
+          secNum = _i2 % conf.numberSectionStyles;
+        }
+      }
+
+      var taskClass = '';
+
+      if (d.active) {
+        if (d.crit) {
+          taskClass += ' activeCrit';
+        } else {
+          taskClass = ' active';
+        }
+      } else if (d.done) {
+        if (d.crit) {
+          taskClass = ' doneCrit';
+        } else {
+          taskClass = ' done';
+        }
+      } else {
+        if (d.crit) {
+          taskClass += ' crit';
+        }
+      }
+
+      if (taskClass.length === 0) {
+        taskClass = ' task';
+      }
+
+      if (d.milestone) {
+        taskClass = ' milestone ' + taskClass;
+      }
+
+      taskClass += secNum;
+      taskClass += ' ' + classStr;
+      return res + taskClass;
+    }); // Append task labels
+
+    rectangles.append('text').attr('id', function (d) {
+      return d.id + '-text';
+    }).text(function (d) {
+      return d.task;
+    }).attr('font-size', conf.fontSize).attr('x', function (d) {
+      var startX = timeScale(d.startTime);
+      var endX = timeScale(d.renderEndTime || d.endTime);
+
+      if (d.milestone) {
+        startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;
+      }
+
+      if (d.milestone) {
+        endX = startX + theBarHeight;
+      }
+
+      var textWidth = this.getBBox().width; // Check id text width > width of rectangle
+
+      if (textWidth > endX - startX) {
+        if (endX + textWidth + 1.5 * conf.leftPadding > w) {
+          return startX + theSidePad - 5;
+        } else {
+          return endX + theSidePad + 5;
+        }
+      } else {
+        return (endX - startX) / 2 + startX + theSidePad;
+      }
+    }).attr('y', function (d, i) {
+      // Ignore the incoming i value and use our order instead
+      i = d.order;
+      return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;
+    }).attr('text-height', theBarHeight).attr('class', function (d) {
+      var startX = timeScale(d.startTime);
+      var endX = timeScale(d.endTime);
+
+      if (d.milestone) {
+        endX = startX + theBarHeight;
+      }
+
+      var textWidth = this.getBBox().width;
+      var classStr = '';
+
+      if (d.classes.length > 0) {
+        classStr = d.classes.join(' ');
+      }
+
+      var secNum = 0;
+
+      for (var _i3 = 0; _i3 < categories.length; _i3++) {
+        if (d.type === categories[_i3]) {
+          secNum = _i3 % conf.numberSectionStyles;
+        }
+      }
+
+      var taskType = '';
+
+      if (d.active) {
+        if (d.crit) {
+          taskType = 'activeCritText' + secNum;
+        } else {
+          taskType = 'activeText' + secNum;
+        }
+      }
+
+      if (d.done) {
+        if (d.crit) {
+          taskType = taskType + ' doneCritText' + secNum;
+        } else {
+          taskType = taskType + ' doneText' + secNum;
+        }
+      } else {
+        if (d.crit) {
+          taskType = taskType + ' critText' + secNum;
+        }
+      }
+
+      if (d.milestone) {
+        taskType += ' milestoneText';
+      } // Check id text width > width of rectangle
+
+
+      if (textWidth > endX - startX) {
+        if (endX + textWidth + 1.5 * conf.leftPadding > w) {
+          return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;
+        } else {
+          return classStr + ' taskTextOutsideRight taskTextOutside' + secNum + ' ' + taskType + ' width-' + textWidth;
+        }
+      } else {
+        return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;
+      }
+    });
+  }
+
+  function makeGrid(theSidePad, theTopPad, w, h) {
+    var xAxis = Object(d3__WEBPACK_IMPORTED_MODULE_0__["axisBottom"])(timeScale).tickSize(-h + theTopPad + conf.gridLineStartPadding).tickFormat(Object(d3__WEBPACK_IMPORTED_MODULE_0__["timeFormat"])(_parser_gantt__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));
+    svg.append('g').attr('class', 'grid').attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')').call(xAxis).selectAll('text').style('text-anchor', 'middle').attr('fill', '#000').attr('stroke', 'none').attr('font-size', 10).attr('dy', '1em');
+  }
+
+  function vertLabels(theGap, theTopPad) {
+    var numOccurances = [];
+    var prevGap = 0;
+
+    for (var _i4 = 0; _i4 < categories.length; _i4++) {
+      numOccurances[_i4] = [categories[_i4], getCount(categories[_i4], catsUnfiltered)];
+    }
+
+    svg.append('g') // without doing this, impossible to put grid lines behind text
+    .selectAll('text').data(numOccurances).enter().append(function (d) {
+      var rows = d[0].split(_common_common__WEBPACK_IMPORTED_MODULE_2__["default"].lineBreakRegex);
+      var dy = -(rows.length - 1) / 2;
+      var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+      svgLabel.setAttribute('dy', dy + 'em');
+
+      for (var j = 0; j < rows.length; j++) {
+        var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
+        tspan.setAttribute('alignment-baseline', 'central');
+        tspan.setAttribute('x', '10');
+        if (j > 0) tspan.setAttribute('dy', '1em');
+        tspan.textContent = rows[j];
+        svgLabel.appendChild(tspan);
+      }
+
+      return svgLabel;
+    }).attr('x', 10).attr('y', function (d, i) {
+      if (i > 0) {
+        for (var j = 0; j < i; j++) {
+          prevGap += numOccurances[i - 1][1];
+          return d[1] * theGap / 2 + prevGap * theGap + theTopPad;
+        }
+      } else {
+        return d[1] * theGap / 2 + theTopPad;
+      }
+    }).attr('class', function (d) {
+      for (var _i5 = 0; _i5 < categories.length; _i5++) {
+        if (d[0] === categories[_i5]) {
+          return 'sectionTitle sectionTitle' + _i5 % conf.numberSectionStyles;
+        }
+      }
+
+      return 'sectionTitle';
+    });
+  }
+
+  function drawToday(theSidePad, theTopPad, w, h) {
+    var todayMarker = _ganttDb__WEBPACK_IMPORTED_MODULE_3__["default"].getTodayMarker();
+
+    if (todayMarker === 'off') {
+      return;
+    }
+
+    var todayG = svg.append('g').attr('class', 'today');
+    var today = new Date();
+    var todayLine = todayG.append('line');
+    todayLine.attr('x1', timeScale(today) + theSidePad).attr('x2', timeScale(today) + theSidePad).attr('y1', conf.titleTopMargin).attr('y2', h - conf.titleTopMargin).attr('class', 'today');
+
+    if (todayMarker !== '') {
+      todayLine.attr('style', todayMarker.replace(/,/g, ';'));
+    }
+  } // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript
+
+
+  function checkUnique(arr) {
+    var hash = {};
+    var result = [];
+
+    for (var _i6 = 0, l = arr.length; _i6 < l; ++_i6) {
+      if (!hash.hasOwnProperty(arr[_i6])) {
+        // eslint-disable-line
+        // it works with objects! in FF, at least
+        hash[arr[_i6]] = true;
+        result.push(arr[_i6]);
+      }
+    }
+
+    return result;
+  } // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array
+
+
+  function getCounts(arr) {
+    var i = arr.length; // const to loop over
+
+    var obj = {}; // obj to store results
+
+    while (i) {
+      obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences
+    }
+
+    return obj;
+  } // get specific from everything
+
+
+  function getCount(word, arr) {
+    return getCounts(arr)[word] || 0;
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/gantt/parser/gantt.jison":
+/*!***********************************************!*\
+  !*** ./src/diagrams/gantt/parser/gantt.jison ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,20,27,32],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,23],$Vb=[1,25],$Vc=[1,28],$Vd=[5,7,9,11,12,13,14,15,16,17,18,20,27,32];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"directive":4,"gantt":5,"document":6,"EOF":7,"line":8,"SPACE":9,"statement":10,"NL":11,"dateFormat":12,"inclusiveEndDates":13,"axisFormat":14,"excludes":15,"todayMarker":16,"title":17,"section":18,"clickStatement":19,"taskTxt":20,"taskData":21,"openDirective":22,"typeDirective":23,"closeDirective":24,":":25,"argDirective":26,"click":27,"callbackname":28,"callbackargs":29,"href":30,"clickStatementDebug":31,"open_directive":32,"type_directive":33,"arg_directive":34,"close_directive":35,"$accept":0,"$end":1},
+terminals_: {2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"axisFormat",15:"excludes",16:"todayMarker",17:"title",18:"section",20:"taskTxt",21:"taskData",25:":",27:"click",28:"callbackname",29:"callbackargs",30:"href",32:"open_directive",33:"type_directive",34:"arg_directive",35:"close_directive"},
+productions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[19,2],[19,3],[19,3],[19,4],[19,3],[19,4],[19,2],[31,2],[31,3],[31,3],[31,4],[31,3],[31,4],[31,2],[22,1],[23,1],[26,1],[24,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 2:
+ return $$[$0-1]; 
+break;
+case 3:
+ this.$ = [] 
+break;
+case 4:
+$$[$0-1].push($$[$0]);this.$ = $$[$0-1]
+break;
+case 5: case 6:
+ this.$ = $$[$0] 
+break;
+case 7: case 8:
+ this.$=[];
+break;
+case 9:
+yy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);
+break;
+case 10:
+yy.enableInclusiveEndDates();this.$=$$[$0].substr(18);
+break;
+case 11:
+yy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);
+break;
+case 12:
+yy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);
+break;
+case 13:
+yy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);
+break;
+case 14:
+yy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);
+break;
+case 15:
+yy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);
+break;
+case 17:
+yy.addTask($$[$0-1],$$[$0]);this.$='task';
+break;
+case 21:
+this.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);
+break;
+case 22:
+this.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);
+break;
+case 23:
+this.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);
+break;
+case 24:
+this.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);
+break;
+case 25:
+this.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);
+break;
+case 26:
+this.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);
+break;
+case 27:
+this.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);
+break;
+case 28: case 34:
+this.$=$$[$0-1] + ' ' + $$[$0];
+break;
+case 29: case 30: case 32:
+this.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];
+break;
+case 31: case 33:
+this.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];
+break;
+case 35:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 36:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 37:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 38:
+ yy.parseDirective('}%%', 'close_directive', 'gantt'); 
+break;
+}
+},
+table: [{3:1,4:2,5:$V0,22:4,32:$V1},{1:[3]},{3:6,4:2,5:$V0,22:4,32:$V1},o($V2,[2,3],{6:7}),{23:8,33:[1,9]},{33:[2,35]},{1:[2,1]},{4:24,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:22,20:$Va,22:4,27:$Vb,32:$V1},{24:26,25:[1,27],35:$Vc},o([25,35],[2,36]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:24,10:29,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:22,20:$Va,22:4,27:$Vb,32:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),{21:[1,30]},o($V2,[2,18]),{28:[1,31],30:[1,32]},{11:[1,33]},{26:34,34:[1,35]},{11:[2,38]},o($V2,[2,5]),o($V2,[2,17]),o($V2,[2,21],{29:[1,36],30:[1,37]}),o($V2,[2,27],{28:[1,38]}),o($Vd,[2,19]),{24:39,35:$Vc},{35:[2,37]},o($V2,[2,22],{30:[1,40]}),o($V2,[2,23]),o($V2,[2,25],{29:[1,41]}),{11:[1,42]},o($V2,[2,24]),o($V2,[2,26]),o($Vd,[2,20])],
+defaultActions: {5:[2,35],6:[2,1],28:[2,38],35:[2,37]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 32; 
+break;
+case 1: this.begin('type_directive'); return 33; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 25; 
+break;
+case 3: this.popState(); this.popState(); return 35; 
+break;
+case 4:return 34;
+break;
+case 5:/* skip comments */
+break;
+case 6:/* skip comments */
+break;
+case 7:/* do nothing */
+break;
+case 8:return 11;
+break;
+case 9:/* skip whitespace */
+break;
+case 10:/* skip comments */
+break;
+case 11:/* skip comments */
+break;
+case 12:this.begin("href");
+break;
+case 13:this.popState();
+break;
+case 14:return 30;
+break;
+case 15:this.begin("callbackname");
+break;
+case 16:this.popState();
+break;
+case 17:this.popState(); this.begin("callbackargs");
+break;
+case 18:return 28;
+break;
+case 19:this.popState();
+break;
+case 20:return 29;
+break;
+case 21:this.begin("click");
+break;
+case 22:this.popState();
+break;
+case 23:return 27;
+break;
+case 24:return 5;
+break;
+case 25:return 12;
+break;
+case 26:return 13;
+break;
+case 27:return 14;
+break;
+case 28:return 15;
+break;
+case 29:return 16;
+break;
+case 30:return 'date';
+break;
+case 31:return 17;
+break;
+case 32:return 18;
+break;
+case 33:return 20;
+break;
+case 34:return 21;
+break;
+case 35:return 25;
+break;
+case 36:return 7;
+break;
+case 37:return 'INVALID';
+break;
+}
+},
+rules: [/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],
+conditions: {"close_directive":{"rules":[],"inclusive":false},"arg_directive":{"rules":[3,4],"inclusive":false},"type_directive":{"rules":[2,3],"inclusive":false},"open_directive":{"rules":[1],"inclusive":false},"callbackargs":{"rules":[19,20],"inclusive":false},"callbackname":{"rules":[16,17,18],"inclusive":false},"href":{"rules":[13,14],"inclusive":false},"click":{"rules":[22,23],"inclusive":false},"INITIAL":{"rules":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/gantt/styles.js":
+/*!**************************************!*\
+  !*** ./src/diagrams/gantt/styles.js ***!
+  \**************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return "\n  .mermaid-main-font {\n    font-family: \"trebuchet ms\", verdana, arial;\n    font-family: var(--mermaid-font-family);\n  }\n\n  .section {\n    stroke: none;\n    opacity: 0.2;\n  }\n\n  .section0 {\n    fill: ".concat(options.sectionBkgColor, ";\n  }\n\n  .section2 {\n    fill: ").concat(options.sectionBkgColor2, ";\n  }\n\n  .section1,\n  .section3 {\n    fill: ").concat(options.altSectionBkgColor, ";\n    opacity: 0.2;\n  }\n\n  .sectionTitle0 {\n    fill: ").concat(options.titleColor, ";\n  }\n\n  .sectionTitle1 {\n    fill: ").concat(options.titleColor, ";\n  }\n\n  .sectionTitle2 {\n    fill: ").concat(options.titleColor, ";\n  }\n\n  .sectionTitle3 {\n    fill: ").concat(options.titleColor, ";\n  }\n\n  .sectionTitle {\n    text-anchor: start;\n    font-size: 11px;\n    text-height: 14px;\n    font-family: 'trebuchet ms', verdana, arial;\n    font-family: var(--mermaid-font-family);\n\n  }\n\n\n  /* Grid and axis */\n\n  .grid .tick {\n    stroke: ").concat(options.gridColor, ";\n    opacity: 0.8;\n    shape-rendering: crispEdges;\n    text {\n      font-family: ").concat(options.fontFamily, ";\n      fill: ").concat(options.textColor, ";\n    }\n  }\n\n  .grid path {\n    stroke-width: 0;\n  }\n\n\n  /* Today line */\n\n  .today {\n    fill: none;\n    stroke: ").concat(options.todayLineColor, ";\n    stroke-width: 2px;\n  }\n\n\n  /* Task styling */\n\n  /* Default task */\n\n  .task {\n    stroke-width: 2;\n  }\n\n  .taskText {\n    text-anchor: middle;\n    font-family: 'trebuchet ms', verdana, arial;\n    font-family: var(--mermaid-font-family);\n  }\n\n  .taskText:not([font-size]) {\n    font-size: 11px;\n  }\n\n  .taskTextOutsideRight {\n    fill: ").concat(options.taskTextDarkColor, ";\n    text-anchor: start;\n    font-size: 11px;\n    font-family: 'trebuchet ms', verdana, arial;\n    font-family: var(--mermaid-font-family);\n\n  }\n\n  .taskTextOutsideLeft {\n    fill: ").concat(options.taskTextDarkColor, ";\n    text-anchor: end;\n    font-size: 11px;\n  }\n\n  /* Special case clickable */\n  .task.clickable {\n    cursor: pointer;\n  }\n  .taskText.clickable {\n    cursor: pointer;\n    fill: ").concat(options.taskTextClickableColor, " !important;\n    font-weight: bold;\n  }\n\n  .taskTextOutsideLeft.clickable {\n    cursor: pointer;\n    fill: ").concat(options.taskTextClickableColor, " !important;\n    font-weight: bold;\n  }\n\n  .taskTextOutsideRight.clickable {\n    cursor: pointer;\n    fill: ").concat(options.taskTextClickableColor, " !important;\n    font-weight: bold;\n  }\n\n  /* Specific task settings for the sections*/\n\n  .taskText0,\n  .taskText1,\n  .taskText2,\n  .taskText3 {\n    fill: ").concat(options.taskTextColor, ";\n  }\n\n  .task0,\n  .task1,\n  .task2,\n  .task3 {\n    fill: ").concat(options.taskBkgColor, ";\n    stroke: ").concat(options.taskBorderColor, ";\n  }\n\n  .taskTextOutside0,\n  .taskTextOutside2\n  {\n    fill: ").concat(options.taskTextOutsideColor, ";\n  }\n\n  .taskTextOutside1,\n  .taskTextOutside3 {\n    fill: ").concat(options.taskTextOutsideColor, ";\n  }\n\n\n  /* Active task */\n\n  .active0,\n  .active1,\n  .active2,\n  .active3 {\n    fill: ").concat(options.activeTaskBkgColor, ";\n    stroke: ").concat(options.activeTaskBorderColor, ";\n  }\n\n  .activeText0,\n  .activeText1,\n  .activeText2,\n  .activeText3 {\n    fill: ").concat(options.taskTextDarkColor, " !important;\n  }\n\n\n  /* Completed task */\n\n  .done0,\n  .done1,\n  .done2,\n  .done3 {\n    stroke: ").concat(options.doneTaskBorderColor, ";\n    fill: ").concat(options.doneTaskBkgColor, ";\n    stroke-width: 2;\n  }\n\n  .doneText0,\n  .doneText1,\n  .doneText2,\n  .doneText3 {\n    fill: ").concat(options.taskTextDarkColor, " !important;\n  }\n\n\n  /* Tasks on the critical line */\n\n  .crit0,\n  .crit1,\n  .crit2,\n  .crit3 {\n    stroke: ").concat(options.critBorderColor, ";\n    fill: ").concat(options.critBkgColor, ";\n    stroke-width: 2;\n  }\n\n  .activeCrit0,\n  .activeCrit1,\n  .activeCrit2,\n  .activeCrit3 {\n    stroke: ").concat(options.critBorderColor, ";\n    fill: ").concat(options.activeTaskBkgColor, ";\n    stroke-width: 2;\n  }\n\n  .doneCrit0,\n  .doneCrit1,\n  .doneCrit2,\n  .doneCrit3 {\n    stroke: ").concat(options.critBorderColor, ";\n    fill: ").concat(options.doneTaskBkgColor, ";\n    stroke-width: 2;\n    cursor: pointer;\n    shape-rendering: crispEdges;\n  }\n\n  .milestone {\n    transform: rotate(45deg) scale(0.8,0.8);\n  }\n\n  .milestoneText {\n    font-style: italic;\n  }\n  .doneCritText0,\n  .doneCritText1,\n  .doneCritText2,\n  .doneCritText3 {\n    fill: ").concat(options.taskTextDarkColor, " !important;\n  }\n\n  .activeCritText0,\n  .activeCritText1,\n  .activeCritText2,\n  .activeCritText3 {\n    fill: ").concat(options.taskTextDarkColor, " !important;\n  }\n\n  .titleText {\n    text-anchor: middle;\n    font-size: 18px;\n    fill: ").concat(options.textColor, "    ;\n    font-family: 'trebuchet ms', verdana, arial;\n    font-family: var(--mermaid-font-family);\n  }\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/git/gitGraphAst.js":
+/*!*****************************************!*\
+  !*** ./src/diagrams/git/gitGraphAst.js ***!
+  \*****************************************/
+/*! exports provided: setDirection, setOptions, getOptions, commit, branch, merge, checkout, reset, prettyPrint, clear, getBranchesAsObjArray, getBranches, getCommits, getCommitsArray, getCurrentBranch, getDirection, getHead, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDirection", function() { return setDirection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setOptions", function() { return setOptions; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getOptions", function() { return getOptions; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commit", function() { return commit; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "branch", function() { return branch; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkout", function() { return checkout; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reset", function() { return reset; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prettyPrint", function() { return prettyPrint; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBranchesAsObjArray", function() { return getBranchesAsObjArray; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBranches", function() { return getBranches; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCommits", function() { return getCommits; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCommitsArray", function() { return getCommitsArray; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCurrentBranch", function() { return getCurrentBranch; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDirection", function() { return getDirection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getHead", function() { return getHead; });
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+var commits = {};
+var head = null;
+var branches = {
+  master: head
+};
+var curBranch = 'master';
+var direction = 'LR';
+var seq = 0;
+
+function getId() {
+  return Object(_utils__WEBPACK_IMPORTED_MODULE_1__["random"])({
+    length: 7
+  });
+}
+
+function isfastforwardable(currentCommit, otherCommit) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);
+
+  while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {
+    // only if other branch has more commits
+    if (otherCommit.parent == null) break;
+
+    if (Array.isArray(otherCommit.parent)) {
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('In merge commit:', otherCommit.parent);
+      return isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) || isfastforwardable(currentCommit, commits[otherCommit.parent[1]]);
+    } else {
+      otherCommit = commits[otherCommit.parent];
+    }
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug(currentCommit.id, otherCommit.id);
+  return currentCommit.id === otherCommit.id;
+}
+
+function isReachableFrom(currentCommit, otherCommit) {
+  var currentSeq = currentCommit.seq;
+  var otherSeq = otherCommit.seq;
+  if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);
+  return false;
+}
+
+function uniqBy(list, fn) {
+  var recordMap = Object.create(null);
+  return list.reduce(function (out, item) {
+    var key = fn(item);
+
+    if (!recordMap[key]) {
+      recordMap[key] = true;
+      out.push(item);
+    }
+
+    return out;
+  }, []);
+}
+
+var setDirection = function setDirection(dir) {
+  direction = dir;
+};
+var options = {};
+var setOptions = function setOptions(rawOptString) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('options str', rawOptString);
+  rawOptString = rawOptString && rawOptString.trim();
+  rawOptString = rawOptString || '{}';
+
+  try {
+    options = JSON.parse(rawOptString);
+  } catch (e) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].error('error while parsing gitGraph options', e.message);
+  }
+};
+var getOptions = function getOptions() {
+  return options;
+};
+var commit = function commit(msg) {
+  var commit = {
+    id: getId(),
+    message: msg,
+    seq: seq++,
+    parent: head == null ? null : head.id
+  };
+  head = commit;
+  commits[commit.id] = commit;
+  branches[curBranch] = commit.id;
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('in pushCommit ' + commit.id);
+};
+var branch = function branch(name) {
+  branches[name] = head != null ? head.id : null;
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('in createBranch');
+};
+var merge = function merge(otherBranch) {
+  var currentCommit = commits[branches[curBranch]];
+  var otherCommit = commits[branches[otherBranch]];
+
+  if (isReachableFrom(currentCommit, otherCommit)) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Already merged');
+    return;
+  }
+
+  if (isfastforwardable(currentCommit, otherCommit)) {
+    branches[curBranch] = branches[otherBranch];
+    head = commits[branches[curBranch]];
+  } else {
+    // create merge commit
+    var _commit = {
+      id: getId(),
+      message: 'merged branch ' + otherBranch + ' into ' + curBranch,
+      seq: seq++,
+      parent: [head == null ? null : head.id, branches[otherBranch]]
+    };
+    head = _commit;
+    commits[_commit.id] = _commit;
+    branches[curBranch] = _commit.id;
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug(branches);
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('in mergeBranch');
+};
+var checkout = function checkout(branch) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('in checkout');
+  curBranch = branch;
+  var id = branches[curBranch];
+  head = commits[id];
+};
+var reset = function reset(commitRef) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('in reset', commitRef);
+  var ref = commitRef.split(':')[0];
+  var parentCount = parseInt(commitRef.split(':')[1]);
+  var commit = ref === 'HEAD' ? head : commits[branches[ref]];
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug(commit, parentCount);
+
+  while (parentCount > 0) {
+    commit = commits[commit.parent];
+    parentCount--;
+
+    if (!commit) {
+      var err = 'Critical error - unique parent commit not found during reset';
+      _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].error(err);
+      throw err;
+    }
+  }
+
+  head = commit;
+  branches[curBranch] = commit.id;
+};
+
+function upsert(arr, key, newval) {
+  var index = arr.indexOf(key);
+
+  if (index === -1) {
+    arr.push(newval);
+  } else {
+    arr.splice(index, 1, newval);
+  }
+}
+
+function prettyPrintCommitHistory(commitArr) {
+  var commit = commitArr.reduce(function (out, commit) {
+    if (out.seq > commit.seq) return out;
+    return commit;
+  }, commitArr[0]);
+  var line = '';
+  commitArr.forEach(function (c) {
+    if (c === commit) {
+      line += '\t*';
+    } else {
+      line += '\t|';
+    }
+  });
+  var label = [line, commit.id, commit.seq];
+
+  for (var _branch in branches) {
+    if (branches[_branch] === commit.id) label.push(_branch);
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug(label.join(' '));
+
+  if (Array.isArray(commit.parent)) {
+    var newCommit = commits[commit.parent[0]];
+    upsert(commitArr, commit, newCommit);
+    commitArr.push(commits[commit.parent[1]]);
+  } else if (commit.parent == null) {
+    return;
+  } else {
+    var nextCommit = commits[commit.parent];
+    upsert(commitArr, commit, nextCommit);
+  }
+
+  commitArr = uniqBy(commitArr, function (c) {
+    return c.id;
+  });
+  prettyPrintCommitHistory(commitArr);
+}
+
+var prettyPrint = function prettyPrint() {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug(commits);
+  var node = getCommitsArray()[0];
+  prettyPrintCommitHistory([node]);
+};
+var clear = function clear() {
+  commits = {};
+  head = null;
+  branches = {
+    master: head
+  };
+  curBranch = 'master';
+  seq = 0;
+};
+var getBranchesAsObjArray = function getBranchesAsObjArray() {
+  var branchArr = [];
+
+  for (var _branch2 in branches) {
+    branchArr.push({
+      name: _branch2,
+      commit: commits[branches[_branch2]]
+    });
+  }
+
+  return branchArr;
+};
+var getBranches = function getBranches() {
+  return branches;
+};
+var getCommits = function getCommits() {
+  return commits;
+};
+var getCommitsArray = function getCommitsArray() {
+  var commitArr = Object.keys(commits).map(function (key) {
+    return commits[key];
+  });
+  commitArr.forEach(function (o) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug(o.id);
+  });
+  commitArr.sort(function (a, b) {
+    return b.seq - a.seq;
+  });
+  return commitArr;
+};
+var getCurrentBranch = function getCurrentBranch() {
+  return curBranch;
+};
+var getDirection = function getDirection() {
+  return direction;
+};
+var getHead = function getHead() {
+  return head;
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setDirection: setDirection,
+  setOptions: setOptions,
+  getOptions: getOptions,
+  commit: commit,
+  branch: branch,
+  merge: merge,
+  checkout: checkout,
+  reset: reset,
+  prettyPrint: prettyPrint,
+  clear: clear,
+  getBranchesAsObjArray: getBranchesAsObjArray,
+  getBranches: getBranches,
+  getCommits: getCommits,
+  getCommitsArray: getCommitsArray,
+  getCurrentBranch: getCurrentBranch,
+  getDirection: getDirection,
+  getHead: getHead
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/git/gitGraphRenderer.js":
+/*!**********************************************!*\
+  !*** ./src/diagrams/git/gitGraphRenderer.js ***!
+  \**********************************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gitGraphAst */ "./src/diagrams/git/gitGraphAst.js");
+/* harmony import */ var _parser_gitGraph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/gitGraph */ "./src/diagrams/git/parser/gitGraph.jison");
+/* harmony import */ var _parser_gitGraph__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_parser_gitGraph__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+var allCommitsDict = {};
+var branchNum;
+var config = {
+  nodeSpacing: 150,
+  nodeFillColor: 'yellow',
+  nodeStrokeWidth: 2,
+  nodeStrokeColor: 'grey',
+  lineStrokeWidth: 4,
+  branchOffset: 50,
+  lineColor: 'grey',
+  leftMargin: 50,
+  branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],
+  nodeRadius: 10,
+  nodeLabel: {
+    width: 75,
+    height: 100,
+    x: -25,
+    y: 0
+  }
+};
+var apiConfig = {};
+var setConf = function setConf(c) {
+  apiConfig = c;
+};
+
+function svgCreateDefs(svg) {
+  svg.append('defs').append('g').attr('id', 'def-commit').append('circle').attr('r', config.nodeRadius).attr('cx', 0).attr('cy', 0);
+  svg.select('#def-commit').append('foreignObject').attr('width', config.nodeLabel.width).attr('height', config.nodeLabel.height).attr('x', config.nodeLabel.x).attr('y', config.nodeLabel.y).attr('class', 'node-label').attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility').append('p').html('');
+}
+
+function svgDrawLine(svg, points, colorIdx, interpolate) {
+  var curve = Object(_utils__WEBPACK_IMPORTED_MODULE_4__["interpolateToCurve"])(interpolate, d3__WEBPACK_IMPORTED_MODULE_0__["curveBasis"]);
+  var color = config.branchColors[colorIdx % config.branchColors.length];
+  var lineGen = Object(d3__WEBPACK_IMPORTED_MODULE_0__["line"])().x(function (d) {
+    return Math.round(d.x);
+  }).y(function (d) {
+    return Math.round(d.y);
+  }).curve(curve);
+  svg.append('svg:path').attr('d', lineGen(points)).style('stroke', color).style('stroke-width', config.lineStrokeWidth).style('fill', 'none');
+} // Pass in the element and its pre-transform coords
+
+
+function getElementCoords(element, coords) {
+  coords = coords || element.node().getBBox();
+  var ctm = element.node().getCTM();
+  var xn = ctm.e + coords.x * ctm.a;
+  var yn = ctm.f + coords.y * ctm.d;
+  return {
+    left: xn,
+    top: yn,
+    width: coords.width,
+    height: coords.height
+  };
+}
+
+function svgDrawLineForCommits(svg, fromId, toId, direction, color) {
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('svgDrawLineForCommits: ', fromId, toId);
+  var fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'));
+  var toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'));
+
+  switch (direction) {
+    case 'LR':
+      // (toBbox)
+      //  +--------
+      //          + (fromBbox)
+      if (fromBbox.left - toBbox.left > config.nodeSpacing) {
+        var lineStart = {
+          x: fromBbox.left - config.nodeSpacing,
+          y: toBbox.top + toBbox.height / 2
+        };
+        var lineEnd = {
+          x: toBbox.left + toBbox.width,
+          y: toBbox.top + toBbox.height / 2
+        };
+        svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');
+        svgDrawLine(svg, [{
+          x: fromBbox.left,
+          y: fromBbox.top + fromBbox.height / 2
+        }, {
+          x: fromBbox.left - config.nodeSpacing / 2,
+          y: fromBbox.top + fromBbox.height / 2
+        }, {
+          x: fromBbox.left - config.nodeSpacing / 2,
+          y: lineStart.y
+        }, lineStart], color);
+      } else {
+        svgDrawLine(svg, [{
+          x: fromBbox.left,
+          y: fromBbox.top + fromBbox.height / 2
+        }, {
+          x: fromBbox.left - config.nodeSpacing / 2,
+          y: fromBbox.top + fromBbox.height / 2
+        }, {
+          x: fromBbox.left - config.nodeSpacing / 2,
+          y: toBbox.top + toBbox.height / 2
+        }, {
+          x: toBbox.left + toBbox.width,
+          y: toBbox.top + toBbox.height / 2
+        }], color);
+      }
+
+      break;
+
+    case 'BT':
+      //      +           (fromBbox)
+      //      |
+      //      |
+      //              +   (toBbox)
+      if (toBbox.top - fromBbox.top > config.nodeSpacing) {
+        var _lineStart = {
+          x: toBbox.left + toBbox.width / 2,
+          y: fromBbox.top + fromBbox.height + config.nodeSpacing
+        };
+        var _lineEnd = {
+          x: toBbox.left + toBbox.width / 2,
+          y: toBbox.top
+        };
+        svgDrawLine(svg, [_lineStart, _lineEnd], color, 'linear');
+        svgDrawLine(svg, [{
+          x: fromBbox.left + fromBbox.width / 2,
+          y: fromBbox.top + fromBbox.height
+        }, {
+          x: fromBbox.left + fromBbox.width / 2,
+          y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2
+        }, {
+          x: toBbox.left + toBbox.width / 2,
+          y: _lineStart.y - config.nodeSpacing / 2
+        }, _lineStart], color);
+      } else {
+        svgDrawLine(svg, [{
+          x: fromBbox.left + fromBbox.width / 2,
+          y: fromBbox.top + fromBbox.height
+        }, {
+          x: fromBbox.left + fromBbox.width / 2,
+          y: fromBbox.top + config.nodeSpacing / 2
+        }, {
+          x: toBbox.left + toBbox.width / 2,
+          y: toBbox.top - config.nodeSpacing / 2
+        }, {
+          x: toBbox.left + toBbox.width / 2,
+          y: toBbox.top
+        }], color);
+      }
+
+      break;
+  }
+}
+
+function cloneNode(svg, selector) {
+  return svg.select(selector).node().cloneNode(true);
+}
+
+function renderCommitHistory(svg, commitid, branches, direction) {
+  var commit;
+  var numCommits = Object.keys(allCommitsDict).length;
+
+  if (typeof commitid === 'string') {
+    do {
+      commit = allCommitsDict[commitid];
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('in renderCommitHistory', commit.id, commit.seq);
+
+      if (svg.select('#node-' + commitid).size() > 0) {
+        return;
+      }
+
+      svg.append(function () {
+        return cloneNode(svg, '#def-commit');
+      }).attr('class', 'commit').attr('id', function () {
+        return 'node-' + commit.id;
+      }).attr('transform', function () {
+        switch (direction) {
+          case 'LR':
+            return 'translate(' + (commit.seq * config.nodeSpacing + config.leftMargin) + ', ' + branchNum * config.branchOffset + ')';
+
+          case 'BT':
+            return 'translate(' + (branchNum * config.branchOffset + config.leftMargin) + ', ' + (numCommits - commit.seq) * config.nodeSpacing + ')';
+        }
+      }).attr('fill', config.nodeFillColor).attr('stroke', config.nodeStrokeColor).attr('stroke-width', config.nodeStrokeWidth);
+      var branch = void 0;
+
+      for (var branchName in branches) {
+        if (branches[branchName].commit === commit) {
+          branch = branches[branchName];
+          break;
+        }
+      }
+
+      if (branch) {
+        _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('found branch ', branch.name);
+        svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'branch-label').text(branch.name + ', ');
+      }
+
+      svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'commit-id').text(commit.id);
+
+      if (commit.message !== '' && direction === 'BT') {
+        svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'commit-msg').text(', ' + commit.message);
+      }
+
+      commitid = commit.parent;
+    } while (commitid && allCommitsDict[commitid]);
+  }
+
+  if (Array.isArray(commitid)) {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('found merge commmit', commitid);
+    renderCommitHistory(svg, commitid[0], branches, direction);
+    branchNum++;
+    renderCommitHistory(svg, commitid[1], branches, direction);
+    branchNum--;
+  }
+}
+
+function renderLines(svg, commit, direction, branchColor) {
+  branchColor = branchColor || 0;
+
+  while (commit.seq > 0 && !commit.lineDrawn) {
+    if (typeof commit.parent === 'string') {
+      svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor);
+      commit.lineDrawn = true;
+      commit = allCommitsDict[commit.parent];
+    } else if (Array.isArray(commit.parent)) {
+      svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor);
+      svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1);
+      renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1);
+      commit.lineDrawn = true;
+      commit = allCommitsDict[commit.parent[0]];
+    }
+  }
+}
+
+var draw = function draw(txt, id, ver) {
+  try {
+    var parser = _parser_gitGraph__WEBPACK_IMPORTED_MODULE_2___default.a.parser;
+    parser.yy = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__["default"];
+    parser.yy.clear();
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('in gitgraph renderer', txt + '\n', 'id:', id, ver); // Parse the graph definition
+
+    parser.parse(txt + '\n');
+    config = Object.assign(config, apiConfig, _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__["default"].getOptions());
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('effective options', config);
+    var direction = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__["default"].getDirection();
+    allCommitsDict = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__["default"].getCommits();
+    var branches = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__["default"].getBranchesAsObjArray();
+
+    if (direction === 'BT') {
+      config.nodeLabel.x = branches.length * config.branchOffset;
+      config.nodeLabel.width = '100%';
+      config.nodeLabel.y = -1 * 2 * config.nodeRadius;
+    }
+
+    var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])("[id=\"".concat(id, "\"]"));
+    svgCreateDefs(svg);
+    branchNum = 1;
+
+    for (var branch in branches) {
+      var v = branches[branch];
+      renderCommitHistory(svg, v.commit.id, branches, direction);
+      renderLines(svg, v.commit, direction);
+      branchNum++;
+    }
+
+    svg.attr('height', function () {
+      if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing;
+      return (branches.length + 1) * config.branchOffset;
+    });
+  } catch (e) {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error('Error while rendering gitgraph');
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error(e.message);
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/git/parser/gitGraph.jison":
+/*!************************************************!*\
+  !*** ./src/diagrams/git/parser/gitGraph.jison ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"GG":4,":":5,"document":6,"EOF":7,"DIR":8,"options":9,"body":10,"OPT":11,"NL":12,"line":13,"statement":14,"COMMIT":15,"commit_arg":16,"BRANCH":17,"ID":18,"CHECKOUT":19,"MERGE":20,"RESET":21,"reset_arg":22,"STR":23,"HEAD":24,"reset_parents":25,"CARET":26,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},
+productions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+ return $$[$0-1]; 
+break;
+case 2:
+yy.setDirection($$[$0-3]); return $$[$0-1];
+break;
+case 4:
+ yy.setOptions($$[$0-1]); this.$ = $$[$0]
+break;
+case 5:
+$$[$0-1] +=$$[$0]; this.$=$$[$0-1]
+break;
+case 7:
+this.$ = []
+break;
+case 8:
+$$[$0-1].push($$[$0]); this.$=$$[$0-1];
+break;
+case 9:
+this.$ =$$[$0-1]
+break;
+case 11:
+yy.commit($$[$0])
+break;
+case 12:
+yy.branch($$[$0])
+break;
+case 13:
+yy.checkout($$[$0])
+break;
+case 14:
+yy.merge($$[$0])
+break;
+case 15:
+yy.reset($$[$0])
+break;
+case 16:
+this.$ = ""
+break;
+case 17:
+this.$=$$[$0]
+break;
+case 18:
+this.$ = $$[$0-1]+ ":" + $$[$0] 
+break;
+case 19:
+this.$ = $$[$0-1]+ ":"  + yy.count; yy.count = 0
+break;
+case 20:
+yy.count = 0
+break;
+case 21:
+ yy.count += 1 
+break;
+}
+},
+table: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],
+defaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0:return 12;
+break;
+case 1:/* skip all whitespace */
+break;
+case 2:/* skip comments */
+break;
+case 3:/* skip comments */
+break;
+case 4:return 4;
+break;
+case 5:return 15;
+break;
+case 6:return 17;
+break;
+case 7:return 20;
+break;
+case 8:return 21;
+break;
+case 9:return 19;
+break;
+case 10:return 8;
+break;
+case 11:return 8;
+break;
+case 12:return 5;
+break;
+case 13:return 26
+break;
+case 14:this.begin("options");
+break;
+case 15:this.popState();
+break;
+case 16:return 11;
+break;
+case 17:this.begin("string");
+break;
+case 18:this.popState();
+break;
+case 19:return 23;
+break;
+case 20:return 18;
+break;
+case 21:return 7;
+break;
+}
+},
+rules: [/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],
+conditions: {"options":{"rules":[15,16],"inclusive":false},"string":{"rules":[18,19],"inclusive":false},"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/git/styles.js":
+/*!************************************!*\
+  !*** ./src/diagrams/git/styles.js ***!
+  \************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles() {
+  return "\n  .commit-id,\n  .commit-msg,\n  .branch-label {\n    fill: lightgrey;\n    color: lightgrey;\n    font-family: 'trebuchet ms', verdana, arial;\n    font-family: var(--mermaid-font-family);\n  }\n";
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/info/infoDb.js":
+/*!*************************************!*\
+  !*** ./src/diagrams/info/infoDb.js ***!
+  \*************************************/
+/*! exports provided: setMessage, getMessage, setInfo, getInfo, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setMessage", function() { return setMessage; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMessage", function() { return getMessage; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setInfo", function() { return setInfo; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getInfo", function() { return getInfo; });
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/**
+ * Created by knut on 15-01-14.
+ */
+
+var message = '';
+var info = false;
+var setMessage = function setMessage(txt) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Setting message to: ' + txt);
+  message = txt;
+};
+var getMessage = function getMessage() {
+  return message;
+};
+var setInfo = function setInfo(inf) {
+  info = inf;
+};
+var getInfo = function getInfo() {
+  return info;
+}; // export const parseError = (err, hash) => {
+//   global.mermaidAPI.parseError(err, hash)
+// }
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setMessage: setMessage,
+  getMessage: getMessage,
+  setInfo: setInfo,
+  getInfo: getInfo // parseError
+
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/info/infoRenderer.js":
+/*!*******************************************!*\
+  !*** ./src/diagrams/info/infoRenderer.js ***!
+  \*******************************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _infoDb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./infoDb */ "./src/diagrams/info/infoDb.js");
+/* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/info */ "./src/diagrams/info/parser/info.jison");
+/* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_parser_info__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/**
+ * Created by knut on 14-12-11.
+ */
+
+
+
+
+var conf = {};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+  keys.forEach(function (key) {
+    conf[key] = cnf[key];
+  });
+};
+/**
+ * Draws a an info picture in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+var draw = function draw(txt, id, ver) {
+  try {
+    var parser = _parser_info__WEBPACK_IMPORTED_MODULE_2___default.a.parser;
+    parser.yy = _infoDb__WEBPACK_IMPORTED_MODULE_1__["default"];
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Renering info diagram\n' + txt); // Parse the graph definition
+
+    parser.parse(txt);
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Parsed info diagram'); // Fetch the default direction, use TD if none was found
+
+    var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + id);
+    var g = svg.append('g');
+    g.append('text') // text label for the x axis
+    .attr('x', 100).attr('y', 40).attr('class', 'version').attr('font-size', '32px').style('text-anchor', 'middle').text('v ' + ver);
+    svg.attr('height', 100);
+    svg.attr('width', 400); // svg.attr('viewBox', '0 0 300 150');
+  } catch (e) {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error('Error while rendering info diagram');
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error(e.message);
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/info/parser/info.jison":
+/*!*********************************************!*\
+  !*** ./src/diagrams/info/parser/info.jison ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"info":4,"document":5,"EOF":6,"line":7,"statement":8,"NL":9,"showInfo":10,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},
+productions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+ return yy; 
+break;
+case 4:
+ 
+break;
+case 6:
+ yy.setInfo(true);  
+break;
+}
+},
+table: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],
+defaultActions: {4:[2,1]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+	// Pre-lexer code can go here
+
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0:return 4    ;
+break;
+case 1:return 9      ;
+break;
+case 2:return 'space';
+break;
+case 3:return 10;
+break;
+case 4:return 6     ;
+break;
+case 5:return 'TXT' ;
+break;
+}
+},
+rules: [/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],
+conditions: {"INITIAL":{"rules":[0,1,2,3,4,5],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/info/styles.js":
+/*!*************************************!*\
+  !*** ./src/diagrams/info/styles.js ***!
+  \*************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles() {
+  return "";
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/pie/parser/pie.jison":
+/*!*******************************************!*\
+  !*** ./src/diagrams/pie/parser/pie.jison ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,10,12,19,20,21,22],$V6=[1,6,10,12,19,20,21,22],$V7=[19,20,21],$V8=[1,22],$V9=[6,19,20,21,22];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"eol":4,"directive":5,"PIE":6,"document":7,"line":8,"statement":9,"txt":10,"value":11,"title":12,"title_value":13,"openDirective":14,"typeDirective":15,"closeDirective":16,":":17,"argDirective":18,"NEWLINE":19,";":20,"EOF":21,"open_directive":22,"type_directive":23,"arg_directive":24,"close_directive":25,"$accept":0,"$end":1},
+terminals_: {2:"error",6:"PIE",10:"txt",11:"value",12:"title",13:"title_value",17:":",19:"NEWLINE",20:";",21:"EOF",22:"open_directive",23:"type_directive",24:"arg_directive",25:"close_directive"},
+productions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,2],[9,1],[5,3],[5,5],[4,1],[4,1],[4,1],[14,1],[15,1],[18,1],[16,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 6:
+ this.$ = $$[$0-1] 
+break;
+case 8:
+ yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); 
+break;
+case 9:
+ this.$=$$[$0].trim();yy.setTitle(this.$); 
+break;
+case 16:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 17:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 18:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 19:
+ yy.parseDirective('}%%', 'close_directive', 'pie'); 
+break;
+}
+},
+table: [{3:1,4:2,5:3,6:$V0,14:8,19:$V1,20:$V2,21:$V3,22:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,14:8,19:$V1,20:$V2,21:$V3,22:$V4},{3:11,4:2,5:3,6:$V0,14:8,19:$V1,20:$V2,21:$V3,22:$V4},o($V5,[2,4],{7:12}),o($V6,[2,13]),o($V6,[2,14]),o($V6,[2,15]),{15:13,23:[1,14]},{23:[2,16]},{1:[2,1]},{1:[2,2]},o($V7,[2,7],{14:8,8:15,9:16,5:19,1:[2,3],10:[1,17],12:[1,18],22:$V4}),{16:20,17:[1,21],25:$V8},o([17,25],[2,17]),o($V5,[2,5]),{4:23,19:$V1,20:$V2,21:$V3},{11:[1,24]},{13:[1,25]},o($V7,[2,10]),o($V9,[2,11]),{18:26,24:[1,27]},o($V9,[2,19]),o($V5,[2,6]),o($V7,[2,8]),o($V7,[2,9]),{16:28,25:$V8},{25:[2,18]},o($V9,[2,12])],
+defaultActions: {9:[2,16],10:[2,1],11:[2,2],27:[2,18]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 22; 
+break;
+case 1: this.begin('type_directive'); return 23; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 17; 
+break;
+case 3: this.popState(); this.popState(); return 25; 
+break;
+case 4:return 24;
+break;
+case 5:/* skip comments */
+break;
+case 6:/* skip comments */{ /*console.log('');*/ }
+break;
+case 7:return 19;
+break;
+case 8:/* do nothing */
+break;
+case 9:/* ignore */
+break;
+case 10: this.begin("title");return 12; 
+break;
+case 11: this.popState(); return "title_value"; 
+break;
+case 12: this.begin("string"); 
+break;
+case 13: this.popState(); 
+break;
+case 14: return "txt"; 
+break;
+case 15:return 6;
+break;
+case 16:return "value";
+break;
+case 17:return 21;
+break;
+}
+},
+rules: [/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],
+conditions: {"close_directive":{"rules":[],"inclusive":false},"arg_directive":{"rules":[3,4],"inclusive":false},"type_directive":{"rules":[2,3],"inclusive":false},"open_directive":{"rules":[1],"inclusive":false},"title":{"rules":[11],"inclusive":false},"string":{"rules":[13,14],"inclusive":false},"INITIAL":{"rules":[0,5,6,7,8,9,10,12,15,16,17],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/pie/pieDb.js":
+/*!***********************************!*\
+  !*** ./src/diagrams/pie/pieDb.js ***!
+  \***********************************/
+/*! exports provided: parseDirective, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/**
+ *
+ */
+
+
+
+var sections = {};
+var title = '';
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].parseDirective(this, statement, context, type);
+};
+
+var addSection = function addSection(id, value) {
+  if (typeof sections[id] === 'undefined') {
+    sections[id] = value;
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].debug('Added new section :', id);
+  }
+};
+
+var getSections = function getSections() {
+  return sections;
+};
+
+var setTitle = function setTitle(txt) {
+  title = txt;
+};
+
+var getTitle = function getTitle() {
+  return title;
+};
+
+var cleanupValue = function cleanupValue(value) {
+  if (value.substring(0, 1) === ':') {
+    value = value.substring(1).trim();
+    return Number(value.trim());
+  } else {
+    return Number(value.trim());
+  }
+};
+
+var clear = function clear() {
+  sections = {};
+  title = '';
+}; // export const parseError = (err, hash) => {
+//   global.mermaidAPI.parseError(err, hash)
+// }
+
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  parseDirective: parseDirective,
+  getConfig: function getConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_2__["getConfig"]().pie;
+  },
+  addSection: addSection,
+  getSections: getSections,
+  cleanupValue: cleanupValue,
+  clear: clear,
+  setTitle: setTitle,
+  getTitle: getTitle // parseError
+
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/pie/pieRenderer.js":
+/*!*****************************************!*\
+  !*** ./src/diagrams/pie/pieRenderer.js ***!
+  \*****************************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _pieDb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pieDb */ "./src/diagrams/pie/pieDb.js");
+/* harmony import */ var _parser_pie__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/pie */ "./src/diagrams/pie/parser/pie.jison");
+/* harmony import */ var _parser_pie__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_parser_pie__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/**
+ * Created by AshishJ on 11-09-2019.
+ */
+
+
+
+
+
+var conf = {};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+  keys.forEach(function (key) {
+    conf[key] = cnf[key];
+  });
+};
+/**
+ * Draws a Pie Chart with the data given in text.
+ * @param text
+ * @param id
+ */
+
+var width;
+var height = 450;
+var draw = function draw(txt, id) {
+  try {
+    var parser = _parser_pie__WEBPACK_IMPORTED_MODULE_2___default.a.parser;
+    parser.yy = _pieDb__WEBPACK_IMPORTED_MODULE_1__["default"];
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Rendering info diagram\n' + txt); // Parse the Pie Chart definition
+
+    parser.yy.clear();
+    parser.parse(txt);
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Parsed info diagram');
+    var elem = document.getElementById(id);
+    width = elem.parentElement.offsetWidth;
+
+    if (typeof width === 'undefined') {
+      width = 1200;
+    }
+
+    if (typeof conf.useWidth !== 'undefined') {
+      width = conf.useWidth;
+    }
+
+    var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + id);
+    Object(_utils__WEBPACK_IMPORTED_MODULE_4__["configureSvgSize"])(diagram, height, width, conf.useMaxWidth); // Set viewBox
+
+    elem.setAttribute('viewBox', '0 0 ' + width + ' ' + height); // Fetch the default direction, use TD if none was found
+
+    var margin = 40;
+    var legendRectSize = 18;
+    var legendSpacing = 4;
+    var radius = Math.min(width, height) / 2 - margin;
+    var svg = diagram.append('g').attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');
+    var data = _pieDb__WEBPACK_IMPORTED_MODULE_1__["default"].getSections();
+    var sum = 0;
+    Object.keys(data).forEach(function (key) {
+      sum += data[key];
+    }); // Set the color scale
+
+    var color = Object(d3__WEBPACK_IMPORTED_MODULE_0__["scaleOrdinal"])().domain(data).range(d3__WEBPACK_IMPORTED_MODULE_0__["schemeSet2"]); // Compute the position of each group on the pie:
+
+    var pie = Object(d3__WEBPACK_IMPORTED_MODULE_0__["pie"])().value(function (d) {
+      return d.value;
+    });
+    var dataReady = pie(Object(d3__WEBPACK_IMPORTED_MODULE_0__["entries"])(data)); // Shape helper to build arcs:
+
+    var arcGenerator = Object(d3__WEBPACK_IMPORTED_MODULE_0__["arc"])().innerRadius(0).outerRadius(radius); // Build the pie chart: each part of the pie is a path that we build using the arc function.
+
+    svg.selectAll('mySlices').data(dataReady).enter().append('path').attr('d', arcGenerator).attr('fill', function (d) {
+      return color(d.data.key);
+    }).attr('stroke', 'black').style('stroke-width', '2px').style('opacity', 0.7); // Now add the percentage.
+    // Use the centroid method to get the best coordinates.
+
+    svg.selectAll('mySlices').data(dataReady).enter().append('text').text(function (d) {
+      return (d.data.value / sum * 100).toFixed(0) + '%';
+    }).attr('transform', function (d) {
+      return 'translate(' + arcGenerator.centroid(d) + ')';
+    }).style('text-anchor', 'middle').attr('class', 'slice').style('font-size', 17);
+    svg.append('text').text(parser.yy.getTitle()).attr('x', 0).attr('y', -(height - 50) / 2).attr('class', 'pieTitleText'); // Add the legends/annotations for each section
+
+    var legend = svg.selectAll('.legend').data(color.domain()).enter().append('g').attr('class', 'legend').attr('transform', function (d, i) {
+      var height = legendRectSize + legendSpacing;
+      var offset = height * color.domain().length / 2;
+      var horz = 12 * legendRectSize;
+      var vert = i * height - offset;
+      return 'translate(' + horz + ',' + vert + ')';
+    });
+    legend.append('rect').attr('width', legendRectSize).attr('height', legendRectSize).style('fill', color).style('stroke', color);
+    legend.append('text').attr('x', legendRectSize + legendSpacing).attr('y', legendRectSize - legendSpacing).text(function (d) {
+      return d;
+    });
+  } catch (e) {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error('Error while rendering info diagram');
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error(e);
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/pie/styles.js":
+/*!************************************!*\
+  !*** ./src/diagrams/pie/styles.js ***!
+  \************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return ".pieTitleText {\n    text-anchor: middle;\n    font-size: 25px;\n    fill: ".concat(options.taskTextDarkColor, ";\n    font-family: ").concat(options.fontFamily, ";\n  }\n  .slice {\n    font-family: ").concat(options.fontFamily, ";\n    fill: ").concat(options.textColor, ";\n    // fill: white;\n  }\n  .legend text {\n    fill: ").concat(options.taskTextDarkColor, ";\n    font-family: ").concat(options.fontFamily, ";\n    font-size: 17px;\n  }\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/sequence/parser/sequenceDiagram.jison":
+/*!************************************************************!*\
+  !*** ./src/diagrams/sequence/parser/sequenceDiagram.jison ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,29],$Vh=[1,32],$Vi=[1,33],$Vj=[1,36],$Vk=[1,4,5,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56],$Vl=[1,44],$Vm=[4,5,16,21,22,23,25,27,28,29,30,31,33,37,48,56],$Vn=[4,5,16,21,22,23,25,27,28,29,30,31,33,36,37,48,56],$Vo=[4,5,16,21,22,23,25,27,28,29,30,31,33,35,37,48,56],$Vp=[46,47,48],$Vq=[1,4,5,7,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"SPACE":4,"NEWLINE":5,"directive":6,"SD":7,"document":8,"line":9,"statement":10,"openDirective":11,"typeDirective":12,"closeDirective":13,":":14,"argDirective":15,"participant":16,"actor":17,"AS":18,"restOfLine":19,"signal":20,"autonumber":21,"activate":22,"deactivate":23,"note_statement":24,"title":25,"text2":26,"loop":27,"end":28,"rect":29,"opt":30,"alt":31,"else_sections":32,"par":33,"par_sections":34,"and":35,"else":36,"note":37,"placement":38,"over":39,"actor_pair":40,"spaceList":41,",":42,"left_of":43,"right_of":44,"signaltype":45,"+":46,"-":47,"ACTOR":48,"SOLID_OPEN_ARROW":49,"DOTTED_OPEN_ARROW":50,"SOLID_ARROW":51,"DOTTED_ARROW":52,"SOLID_CROSS":53,"DOTTED_CROSS":54,"TXT":55,"open_directive":56,"type_directive":57,"arg_directive":58,"close_directive":59,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"SPACE",5:"NEWLINE",7:"SD",14:":",16:"participant",18:"AS",19:"restOfLine",21:"autonumber",22:"activate",23:"deactivate",25:"title",27:"loop",28:"end",29:"rect",30:"opt",31:"alt",33:"par",35:"and",36:"else",37:"note",39:"over",42:",",43:"left_of",44:"right_of",46:"+",47:"-",48:"ACTOR",49:"SOLID_OPEN_ARROW",50:"DOTTED_OPEN_ARROW",51:"SOLID_ARROW",52:"DOTTED_ARROW",53:"SOLID_CROSS",54:"DOTTED_CROSS",55:"TXT",56:"open_directive",57:"type_directive",58:"arg_directive",59:"close_directive"},
+productions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[34,1],[34,4],[32,1],[32,4],[24,4],[24,4],[41,2],[41,1],[40,3],[40,1],[38,1],[38,1],[20,5],[20,5],[20,4],[17,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[26,1],[11,1],[12,1],[15,1],[13,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 4:
+ yy.apply($$[$0]);return $$[$0]; 
+break;
+case 5:
+ this.$ = [] 
+break;
+case 6:
+$$[$0-1].push($$[$0]);this.$ = $$[$0-1]
+break;
+case 7: case 8:
+ this.$ = $$[$0] 
+break;
+case 9:
+ this.$=[]; 
+break;
+case 12:
+$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];
+break;
+case 13:
+this.$=$$[$0-1];
+break;
+case 15:
+yy.enableSequenceNumbers()
+break;
+case 16:
+this.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};
+break;
+case 17:
+this.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};
+break;
+case 19:
+this.$=[{type:'setTitle', text:$$[$0-1]}]
+break;
+case 20:
+
+		$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});
+		$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});
+		this.$=$$[$0-1];
+break;
+case 21:
+
+		$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });
+		$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });
+		this.$=$$[$0-1];
+break;
+case 22:
+
+		$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});
+		$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});
+		this.$=$$[$0-1];
+break;
+case 23:
+
+		// Alt start
+		$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});
+		// Content in alt is already in $$[$0-1]
+		// End
+		$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});
+		this.$=$$[$0-1];
+break;
+case 24:
+
+		// Parallel start
+		$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});
+		// Content in par is already in $$[$0-1]
+		// End
+		$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});
+		this.$=$$[$0-1];
+break;
+case 27:
+ this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); 
+break;
+case 29:
+ this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); 
+break;
+case 30:
+
+		this.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];
+break;
+case 31:
+
+		// Coerce actor_pair into a [to, from, ...] array
+		$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);
+		$$[$0-2][0] = $$[$0-2][0].actor;
+		$$[$0-2][1] = $$[$0-2][1].actor;
+		this.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];
+break;
+case 34:
+ this.$ = [$$[$0-2], $$[$0]]; 
+break;
+case 35:
+ this.$ = $$[$0]; 
+break;
+case 36:
+ this.$ = yy.PLACEMENT.LEFTOF; 
+break;
+case 37:
+ this.$ = yy.PLACEMENT.RIGHTOF; 
+break;
+case 38:
+ this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},
+	              {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}
+	             ]
+break;
+case 39:
+ this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},
+	             {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}
+	             ]
+break;
+case 40:
+ this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]
+break;
+case 41:
+this.$={type: 'addActor', actor:$$[$0]}
+break;
+case 42:
+ this.$ = yy.LINETYPE.SOLID_OPEN; 
+break;
+case 43:
+ this.$ = yy.LINETYPE.DOTTED_OPEN; 
+break;
+case 44:
+ this.$ = yy.LINETYPE.SOLID; 
+break;
+case 45:
+ this.$ = yy.LINETYPE.DOTTED; 
+break;
+case 46:
+ this.$ = yy.LINETYPE.SOLID_CROSS; 
+break;
+case 47:
+ this.$ = yy.LINETYPE.DOTTED_CROSS; 
+break;
+case 48:
+this.$ = yy.parseMessage($$[$0].trim().substring(1)) 
+break;
+case 49:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 50:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 51:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 52:
+ yy.parseDirective('}%%', 'close_directive', 'sequence'); 
+break;
+}
+},
+table: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},o([1,4,5,16,21,22,23,25,27,29,30,31,33,37,48,56],$V4,{8:11}),{12:12,57:[1,13]},{57:[2,49]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{13:34,14:[1,35],59:$Vj},o([14,59],[2,50]),o($Vk,[2,6]),{6:30,10:37,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},o($Vk,[2,8]),o($Vk,[2,9]),{17:38,48:$Vi},{5:[1,39]},o($Vk,[2,15]),{17:40,48:$Vi},{17:41,48:$Vi},{5:[1,42]},{26:43,55:$Vl},{19:[1,45]},{19:[1,46]},{19:[1,47]},{19:[1,48]},{19:[1,49]},o($Vk,[2,25]),{45:50,49:[1,51],50:[1,52],51:[1,53],52:[1,54],53:[1,55],54:[1,56]},{38:57,39:[1,58],43:[1,59],44:[1,60]},o([5,18,42,49,50,51,52,53,54,55],[2,41]),{5:[1,61]},{15:62,58:[1,63]},{5:[2,52]},o($Vk,[2,7]),{5:[1,65],18:[1,64]},o($Vk,[2,14]),{5:[1,66]},{5:[1,67]},o($Vk,[2,18]),{5:[1,68]},{5:[2,48]},o($Vm,$V4,{8:69}),o($Vm,$V4,{8:70}),o($Vm,$V4,{8:71}),o($Vn,$V4,{32:72,8:73}),o($Vo,$V4,{34:74,8:75}),{17:78,46:[1,76],47:[1,77],48:$Vi},o($Vp,[2,42]),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,45]),o($Vp,[2,46]),o($Vp,[2,47]),{17:79,48:$Vi},{17:81,40:80,48:$Vi},{48:[2,36]},{48:[2,37]},o($Vq,[2,10]),{13:82,59:$Vj},{59:[2,51]},{19:[1,83]},o($Vk,[2,13]),o($Vk,[2,16]),o($Vk,[2,17]),o($Vk,[2,19]),{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,84],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,85],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,86],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{28:[1,87]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,28],29:$Vd,30:$Ve,31:$Vf,33:$Vg,36:[1,88],37:$Vh,48:$Vi,56:$V3},{28:[1,89]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,26],29:$Vd,30:$Ve,31:$Vf,33:$Vg,35:[1,90],37:$Vh,48:$Vi,56:$V3},{17:91,48:$Vi},{17:92,48:$Vi},{26:93,55:$Vl},{26:94,55:$Vl},{26:95,55:$Vl},{42:[1,96],55:[2,35]},{5:[1,97]},{5:[1,98]},o($Vk,[2,20]),o($Vk,[2,21]),o($Vk,[2,22]),o($Vk,[2,23]),{19:[1,99]},o($Vk,[2,24]),{19:[1,100]},{26:101,55:$Vl},{26:102,55:$Vl},{5:[2,40]},{5:[2,30]},{5:[2,31]},{17:103,48:$Vi},o($Vq,[2,11]),o($Vk,[2,12]),o($Vn,$V4,{8:73,32:104}),o($Vo,$V4,{8:75,34:105}),{5:[2,38]},{5:[2,39]},{55:[2,34]},{28:[2,29]},{28:[2,27]}],
+defaultActions: {7:[2,49],8:[2,1],9:[2,2],10:[2,3],36:[2,52],44:[2,48],59:[2,36],60:[2,37],63:[2,51],93:[2,40],94:[2,30],95:[2,31],101:[2,38],102:[2,39],103:[2,34],104:[2,29],105:[2,27]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 56; 
+break;
+case 1: this.begin('type_directive'); return 57; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 14; 
+break;
+case 3: this.popState(); this.popState(); return 59; 
+break;
+case 4:return 58;
+break;
+case 5:return 5;
+break;
+case 6:/* skip all whitespace */
+break;
+case 7:/* skip same-line whitespace */
+break;
+case 8:/* skip comments */
+break;
+case 9:/* skip comments */
+break;
+case 10:/* skip comments */
+break;
+case 11: this.begin('ID'); return 16; 
+break;
+case 12: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 48; 
+break;
+case 13: this.popState(); this.popState(); this.begin('LINE'); return 18; 
+break;
+case 14: this.popState(); this.popState(); return 5; 
+break;
+case 15: this.begin('LINE'); return 27; 
+break;
+case 16: this.begin('LINE'); return 29; 
+break;
+case 17: this.begin('LINE'); return 30; 
+break;
+case 18: this.begin('LINE'); return 31; 
+break;
+case 19: this.begin('LINE'); return 36; 
+break;
+case 20: this.begin('LINE'); return 33; 
+break;
+case 21: this.begin('LINE'); return 35; 
+break;
+case 22: this.popState(); return 19; 
+break;
+case 23:return 28;
+break;
+case 24:return 43;
+break;
+case 25:return 44;
+break;
+case 26:return 39;
+break;
+case 27:return 37;
+break;
+case 28: this.begin('ID'); return 22; 
+break;
+case 29: this.begin('ID'); return 23; 
+break;
+case 30:return 25;
+break;
+case 31:return 7;
+break;
+case 32:return 21;
+break;
+case 33:return 42;
+break;
+case 34:return 5;
+break;
+case 35: yy_.yytext = yy_.yytext.trim(); return 48; 
+break;
+case 36:return 51;
+break;
+case 37:return 52;
+break;
+case 38:return 49;
+break;
+case 39:return 50;
+break;
+case 40:return 53;
+break;
+case 41:return 54;
+break;
+case 42:return 55;
+break;
+case 43:return 46;
+break;
+case 44:return 47;
+break;
+case 45:return 5;
+break;
+case 46:return 'INVALID';
+break;
+}
+},
+rules: [/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],
+conditions: {"open_directive":{"rules":[1,8],"inclusive":false},"type_directive":{"rules":[2,3,8],"inclusive":false},"arg_directive":{"rules":[3,4,8],"inclusive":false},"ID":{"rules":[7,8,12],"inclusive":false},"ALIAS":{"rules":[7,8,13,14],"inclusive":false},"LINE":{"rules":[7,8,22],"inclusive":false},"INITIAL":{"rules":[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/sequence/sequenceDb.js":
+/*!*********************************************!*\
+  !*** ./src/diagrams/sequence/sequenceDb.js ***!
+  \*********************************************/
+/*! exports provided: parseDirective, addActor, addMessage, addSignal, getMessages, getActors, getActor, getActorKeys, getTitle, getTitleWrapped, enableSequenceNumbers, showSequenceNumbers, setWrap, autoWrap, clear, parseMessage, LINETYPE, ARROWTYPE, PLACEMENT, addNote, setTitle, apply, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addActor", function() { return addActor; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addMessage", function() { return addMessage; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSignal", function() { return addSignal; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMessages", function() { return getMessages; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getActors", function() { return getActors; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getActor", function() { return getActor; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getActorKeys", function() { return getActorKeys; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTitle", function() { return getTitle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTitleWrapped", function() { return getTitleWrapped; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "enableSequenceNumbers", function() { return enableSequenceNumbers; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showSequenceNumbers", function() { return showSequenceNumbers; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setWrap", function() { return setWrap; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "autoWrap", function() { return autoWrap; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseMessage", function() { return parseMessage; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LINETYPE", function() { return LINETYPE; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ARROWTYPE", function() { return ARROWTYPE; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PLACEMENT", function() { return PLACEMENT; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addNote", function() { return addNote; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setTitle", function() { return setTitle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "apply", function() { return apply; });
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+
+
+
+
+var prevActor = undefined;
+var actors = {};
+var messages = [];
+var notes = [];
+var title = '';
+var titleWrapped = false;
+var sequenceNumbersEnabled = false;
+var wrapEnabled = false;
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__["default"].parseDirective(this, statement, context, type);
+};
+var addActor = function addActor(id, name, description) {
+  // Don't allow description nulling
+  var old = actors[id];
+  if (old && name === old.name && description == null) return; // Don't allow null descriptions, either
+
+  if (description == null || description.text == null) {
+    description = {
+      text: name,
+      wrap: null
+    };
+  }
+
+  actors[id] = {
+    name: name,
+    description: description.text,
+    wrap: description.wrap === undefined && autoWrap() || !!description.wrap,
+    prevActor: prevActor
+  };
+
+  if (prevActor && actors[prevActor]) {
+    actors[prevActor].nextActor = id;
+  }
+
+  prevActor = id;
+};
+
+var activationCount = function activationCount(part) {
+  var i;
+  var count = 0;
+
+  for (i = 0; i < messages.length; i++) {
+    if (messages[i].type === LINETYPE.ACTIVE_START) {
+      if (messages[i].from.actor === part) {
+        count++;
+      }
+    }
+
+    if (messages[i].type === LINETYPE.ACTIVE_END) {
+      if (messages[i].from.actor === part) {
+        count--;
+      }
+    }
+  }
+
+  return count;
+};
+
+var addMessage = function addMessage(idFrom, idTo, message, answer) {
+  messages.push({
+    from: idFrom,
+    to: idTo,
+    message: message.text,
+    wrap: message.wrap === undefined && autoWrap() || !!message.wrap,
+    answer: answer
+  });
+};
+var addSignal = function addSignal(idFrom, idTo) {
+  var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
+    text: undefined,
+    wrap: undefined
+  };
+  var messageType = arguments.length > 3 ? arguments[3] : undefined;
+
+  if (messageType === LINETYPE.ACTIVE_END) {
+    var cnt = activationCount(idFrom.actor);
+
+    if (cnt < 1) {
+      // Bail out as there is an activation signal from an inactive participant
+      var error = new Error('Trying to inactivate an inactive participant (' + idFrom.actor + ')');
+      error.hash = {
+        text: '->>-',
+        token: '->>-',
+        line: '1',
+        loc: {
+          first_line: 1,
+          last_line: 1,
+          first_column: 1,
+          last_column: 1
+        },
+        expected: ["'ACTIVE_PARTICIPANT'"]
+      };
+      throw error;
+    }
+  }
+
+  messages.push({
+    from: idFrom,
+    to: idTo,
+    message: message.text,
+    wrap: message.wrap === undefined && autoWrap() || !!message.wrap,
+    type: messageType
+  });
+  return true;
+};
+var getMessages = function getMessages() {
+  return messages;
+};
+var getActors = function getActors() {
+  return actors;
+};
+var getActor = function getActor(id) {
+  return actors[id];
+};
+var getActorKeys = function getActorKeys() {
+  return Object.keys(actors);
+};
+var getTitle = function getTitle() {
+  return title;
+};
+var getTitleWrapped = function getTitleWrapped() {
+  return titleWrapped;
+};
+var enableSequenceNumbers = function enableSequenceNumbers() {
+  sequenceNumbersEnabled = true;
+};
+var showSequenceNumbers = function showSequenceNumbers() {
+  return sequenceNumbersEnabled;
+};
+var setWrap = function setWrap(wrapSetting) {
+  wrapEnabled = wrapSetting;
+};
+var autoWrap = function autoWrap() {
+  return wrapEnabled;
+};
+var clear = function clear() {
+  actors = {};
+  messages = [];
+};
+var parseMessage = function parseMessage(str) {
+  var _str = str.trim();
+
+  var message = {
+    text: _str.replace(/^[:]?(?:no)?wrap:/, '').trim(),
+    wrap: _str.match(/^[:]?(?:no)?wrap:/) === null ? _common_common__WEBPACK_IMPORTED_MODULE_2__["default"].hasBreaks(_str) || undefined : _str.match(/^[:]?wrap:/) !== null ? true : _str.match(/^[:]?nowrap:/) !== null ? false : undefined
+  };
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('parseMessage:', message);
+  return message;
+};
+var LINETYPE = {
+  SOLID: 0,
+  DOTTED: 1,
+  NOTE: 2,
+  SOLID_CROSS: 3,
+  DOTTED_CROSS: 4,
+  SOLID_OPEN: 5,
+  DOTTED_OPEN: 6,
+  LOOP_START: 10,
+  LOOP_END: 11,
+  ALT_START: 12,
+  ALT_ELSE: 13,
+  ALT_END: 14,
+  OPT_START: 15,
+  OPT_END: 16,
+  ACTIVE_START: 17,
+  ACTIVE_END: 18,
+  PAR_START: 19,
+  PAR_AND: 20,
+  PAR_END: 21,
+  RECT_START: 22,
+  RECT_END: 23
+};
+var ARROWTYPE = {
+  FILLED: 0,
+  OPEN: 1
+};
+var PLACEMENT = {
+  LEFTOF: 0,
+  RIGHTOF: 1,
+  OVER: 2
+};
+var addNote = function addNote(actor, placement, message) {
+  var note = {
+    actor: actor,
+    placement: placement,
+    message: message.text,
+    wrap: message.wrap === undefined && autoWrap() || !!message.wrap
+  }; // Coerce actor into a [to, from, ...] array
+
+  var actors = [].concat(actor, actor);
+  notes.push(note);
+  messages.push({
+    from: actors[0],
+    to: actors[1],
+    message: message.text,
+    wrap: message.wrap === undefined && autoWrap() || !!message.wrap,
+    type: LINETYPE.NOTE,
+    placement: placement
+  });
+};
+var setTitle = function setTitle(titleWrap) {
+  title = titleWrap.text;
+  titleWrapped = titleWrap.wrap === undefined && autoWrap() || !!titleWrap.wrap;
+};
+var apply = function apply(param) {
+  if (param instanceof Array) {
+    param.forEach(function (item) {
+      apply(item);
+    });
+  } else {
+    switch (param.type) {
+      case 'addActor':
+        addActor(param.actor, param.actor, param.description);
+        break;
+
+      case 'activeStart':
+        addSignal(param.actor, undefined, undefined, param.signalType);
+        break;
+
+      case 'activeEnd':
+        addSignal(param.actor, undefined, undefined, param.signalType);
+        break;
+
+      case 'addNote':
+        addNote(param.actor, param.placement, param.text);
+        break;
+
+      case 'addMessage':
+        addSignal(param.from, param.to, param.msg, param.signalType);
+        break;
+
+      case 'loopStart':
+        addSignal(undefined, undefined, param.loopText, param.signalType);
+        break;
+
+      case 'loopEnd':
+        addSignal(undefined, undefined, undefined, param.signalType);
+        break;
+
+      case 'rectStart':
+        addSignal(undefined, undefined, param.color, param.signalType);
+        break;
+
+      case 'rectEnd':
+        addSignal(undefined, undefined, undefined, param.signalType);
+        break;
+
+      case 'optStart':
+        addSignal(undefined, undefined, param.optText, param.signalType);
+        break;
+
+      case 'optEnd':
+        addSignal(undefined, undefined, undefined, param.signalType);
+        break;
+
+      case 'altStart':
+        addSignal(undefined, undefined, param.altText, param.signalType);
+        break;
+
+      case 'else':
+        addSignal(undefined, undefined, param.altText, param.signalType);
+        break;
+
+      case 'altEnd':
+        addSignal(undefined, undefined, undefined, param.signalType);
+        break;
+
+      case 'setTitle':
+        setTitle(param.text);
+        break;
+
+      case 'parStart':
+        addSignal(undefined, undefined, param.parText, param.signalType);
+        break;
+
+      case 'and':
+        addSignal(undefined, undefined, param.parText, param.signalType);
+        break;
+
+      case 'parEnd':
+        addSignal(undefined, undefined, undefined, param.signalType);
+        break;
+    }
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  addActor: addActor,
+  addMessage: addMessage,
+  addSignal: addSignal,
+  autoWrap: autoWrap,
+  setWrap: setWrap,
+  enableSequenceNumbers: enableSequenceNumbers,
+  showSequenceNumbers: showSequenceNumbers,
+  getMessages: getMessages,
+  getActors: getActors,
+  getActor: getActor,
+  getActorKeys: getActorKeys,
+  getTitle: getTitle,
+  parseDirective: parseDirective,
+  getConfig: function getConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_1__["getConfig"]().sequence;
+  },
+  getTitleWrapped: getTitleWrapped,
+  clear: clear,
+  parseMessage: parseMessage,
+  LINETYPE: LINETYPE,
+  ARROWTYPE: ARROWTYPE,
+  PLACEMENT: PLACEMENT,
+  addNote: addNote,
+  setTitle: setTitle,
+  apply: apply
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/sequence/sequenceRenderer.js":
+/*!***************************************************!*\
+  !*** ./src/diagrams/sequence/sequenceRenderer.js ***!
+  \***************************************************/
+/*! exports provided: bounds, drawActors, setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bounds", function() { return bounds; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawActors", function() { return drawActors; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./svgDraw */ "./src/diagrams/sequence/svgDraw.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/sequenceDiagram */ "./src/diagrams/sequence/parser/sequenceDiagram.jison");
+/* harmony import */ var _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _sequenceDb__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sequenceDb */ "./src/diagrams/sequence/sequenceDb.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+
+
+
+_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy = _sequenceDb__WEBPACK_IMPORTED_MODULE_5__["default"];
+var conf = {};
+var bounds = {
+  data: {
+    startx: undefined,
+    stopx: undefined,
+    starty: undefined,
+    stopy: undefined
+  },
+  verticalPos: 0,
+  sequenceItems: [],
+  activations: [],
+  models: {
+    getHeight: function getHeight() {
+      return Math.max.apply(null, this.actors.length === 0 ? [0] : this.actors.map(function (actor) {
+        return actor.height || 0;
+      })) + (this.loops.length === 0 ? 0 : this.loops.map(function (it) {
+        return it.height || 0;
+      }).reduce(function (acc, h) {
+        return acc + h;
+      })) + (this.messages.length === 0 ? 0 : this.messages.map(function (it) {
+        return it.height || 0;
+      }).reduce(function (acc, h) {
+        return acc + h;
+      })) + (this.notes.length === 0 ? 0 : this.notes.map(function (it) {
+        return it.height || 0;
+      }).reduce(function (acc, h) {
+        return acc + h;
+      }));
+    },
+    clear: function clear() {
+      this.actors = [];
+      this.loops = [];
+      this.messages = [];
+      this.notes = [];
+    },
+    addActor: function addActor(actorModel) {
+      this.actors.push(actorModel);
+    },
+    addLoop: function addLoop(loopModel) {
+      this.loops.push(loopModel);
+    },
+    addMessage: function addMessage(msgModel) {
+      this.messages.push(msgModel);
+    },
+    addNote: function addNote(noteModel) {
+      this.notes.push(noteModel);
+    },
+    lastActor: function lastActor() {
+      return this.actors[this.actors.length - 1];
+    },
+    lastLoop: function lastLoop() {
+      return this.loops[this.loops.length - 1];
+    },
+    lastMessage: function lastMessage() {
+      return this.messages[this.messages.length - 1];
+    },
+    lastNote: function lastNote() {
+      return this.notes[this.notes.length - 1];
+    },
+    actors: [],
+    loops: [],
+    messages: [],
+    notes: []
+  },
+  init: function init() {
+    this.sequenceItems = [];
+    this.activations = [];
+    this.models.clear();
+    this.data = {
+      startx: undefined,
+      stopx: undefined,
+      starty: undefined,
+      stopy: undefined
+    };
+    this.verticalPos = 0;
+    setConf(_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.getConfig());
+  },
+  updateVal: function updateVal(obj, key, val, fun) {
+    if (typeof obj[key] === 'undefined') {
+      obj[key] = val;
+    } else {
+      obj[key] = fun(val, obj[key]);
+    }
+  },
+  updateBounds: function updateBounds(startx, starty, stopx, stopy) {
+    var _self = this;
+
+    var cnt = 0;
+
+    function updateFn(type) {
+      return function updateItemBounds(item) {
+        cnt++; // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems
+
+        var n = _self.sequenceItems.length - cnt + 1;
+
+        _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);
+
+        _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);
+
+        _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);
+
+        _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);
+
+        if (!(type === 'activation')) {
+          _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);
+
+          _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);
+
+          _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);
+
+          _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);
+        }
+      };
+    }
+
+    this.sequenceItems.forEach(updateFn());
+    this.activations.forEach(updateFn('activation'));
+  },
+  insert: function insert(startx, starty, stopx, stopy) {
+    var _startx = Math.min(startx, stopx);
+
+    var _stopx = Math.max(startx, stopx);
+
+    var _starty = Math.min(starty, stopy);
+
+    var _stopy = Math.max(starty, stopy);
+
+    this.updateVal(bounds.data, 'startx', _startx, Math.min);
+    this.updateVal(bounds.data, 'starty', _starty, Math.min);
+    this.updateVal(bounds.data, 'stopx', _stopx, Math.max);
+    this.updateVal(bounds.data, 'stopy', _stopy, Math.max);
+    this.updateBounds(_startx, _starty, _stopx, _stopy);
+  },
+  newActivation: function newActivation(message, diagram, actors) {
+    var actorRect = actors[message.from.actor];
+    var stackedSize = actorActivations(message.from.actor).length || 0;
+    var x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;
+    this.activations.push({
+      startx: x,
+      starty: this.verticalPos + 2,
+      stopx: x + conf.activationWidth,
+      stopy: undefined,
+      actor: message.from.actor,
+      anchored: _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].anchorElement(diagram)
+    });
+  },
+  endActivation: function endActivation(message) {
+    // find most recent activation for given actor
+    var lastActorActivationIdx = this.activations.map(function (activation) {
+      return activation.actor;
+    }).lastIndexOf(message.from.actor);
+    return this.activations.splice(lastActorActivationIdx, 1)[0];
+  },
+  createLoop: function createLoop() {
+    var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
+      message: undefined,
+      wrap: false,
+      width: undefined
+    };
+    var fill = arguments.length > 1 ? arguments[1] : undefined;
+    return {
+      startx: undefined,
+      starty: this.verticalPos,
+      stopx: undefined,
+      stopy: undefined,
+      title: title.message,
+      wrap: title.wrap,
+      width: title.width,
+      height: 0,
+      fill: fill
+    };
+  },
+  newLoop: function newLoop() {
+    var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
+      message: undefined,
+      wrap: false,
+      width: undefined
+    };
+    var fill = arguments.length > 1 ? arguments[1] : undefined;
+    this.sequenceItems.push(this.createLoop(title, fill));
+  },
+  endLoop: function endLoop() {
+    return this.sequenceItems.pop();
+  },
+  addSectionToLoop: function addSectionToLoop(message) {
+    var loop = this.sequenceItems.pop();
+    loop.sections = loop.sections || [];
+    loop.sectionTitles = loop.sectionTitles || [];
+    loop.sections.push({
+      y: bounds.getVerticalPos(),
+      height: 0
+    });
+    loop.sectionTitles.push(message);
+    this.sequenceItems.push(loop);
+  },
+  bumpVerticalPos: function bumpVerticalPos(bump) {
+    this.verticalPos = this.verticalPos + bump;
+    this.data.stopy = this.verticalPos;
+  },
+  getVerticalPos: function getVerticalPos() {
+    return this.verticalPos;
+  },
+  getBounds: function getBounds() {
+    return {
+      bounds: this.data,
+      models: this.models
+    };
+  }
+};
+/**
+ * Draws an note in the diagram with the attached line
+ * @param elem - The diagram to draw to.
+ * @param noteModel:{x: number, y: number, message: string, width: number} - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width.
+ */
+
+var drawNote = function drawNote(elem, noteModel) {
+  bounds.bumpVerticalPos(conf.boxMargin);
+  noteModel.height = conf.boxMargin;
+  noteModel.starty = bounds.getVerticalPos();
+  var rect = _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].getNoteRect();
+  rect.x = noteModel.startx;
+  rect.y = noteModel.starty;
+  rect.width = noteModel.width || conf.width;
+  rect.class = 'note';
+  var g = elem.append('g');
+  var rectElem = _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawRect(g, rect);
+  var textObj = _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].getTextObj();
+  textObj.x = noteModel.startx;
+  textObj.y = noteModel.starty;
+  textObj.width = rect.width;
+  textObj.dy = '1em';
+  textObj.text = noteModel.message;
+  textObj.class = 'noteText';
+  textObj.fontFamily = conf.noteFontFamily;
+  textObj.fontSize = conf.noteFontSize;
+  textObj.fontWeight = conf.noteFontWeight;
+  textObj.anchor = conf.noteAlign;
+  textObj.textMargin = conf.noteMargin;
+  textObj.valign = conf.noteAlign;
+  textObj.wrap = true;
+  var textElem = Object(_svgDraw__WEBPACK_IMPORTED_MODULE_1__["drawText"])(g, textObj);
+  var textHeight = Math.round(textElem.map(function (te) {
+    return (te._groups || te)[0][0].getBBox().height;
+  }).reduce(function (acc, curr) {
+    return acc + curr;
+  }));
+  rectElem.attr('height', textHeight + 2 * conf.noteMargin);
+  noteModel.height += textHeight + 2 * conf.noteMargin;
+  bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);
+  noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;
+  noteModel.stopx = noteModel.startx + rect.width;
+  bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);
+  bounds.models.addNote(noteModel);
+};
+
+var messageFont = function messageFont(cnf) {
+  return {
+    fontFamily: cnf.messageFontFamily,
+    fontSize: cnf.messageFontSize,
+    fontWeight: cnf.messageFontWeight
+  };
+};
+
+var noteFont = function noteFont(cnf) {
+  return {
+    fontFamily: cnf.noteFontFamily,
+    fontSize: cnf.noteFontSize,
+    fontWeight: cnf.noteFontWeight
+  };
+};
+
+var actorFont = function actorFont(cnf) {
+  return {
+    fontFamily: cnf.actorFontFamily,
+    fontSize: cnf.actorFontSize,
+    fontWeight: cnf.actorFontWeight
+  };
+};
+/**
+ * Draws a message
+ * @param g - the parent of the message element
+ * @param msgModel - the model containing fields describing a message
+ */
+
+
+var drawMessage = function drawMessage(g, msgModel) {
+  bounds.bumpVerticalPos(10);
+  var startx = msgModel.startx,
+      stopx = msgModel.stopx,
+      starty = msgModel.starty,
+      message = msgModel.message,
+      type = msgModel.type,
+      sequenceIndex = msgModel.sequenceIndex,
+      wrap = msgModel.wrap;
+  var lines = _common_common__WEBPACK_IMPORTED_MODULE_4__["default"].splitBreaks(message).length;
+  var textDims = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].calculateTextDimensions(message, messageFont(conf));
+  var lineHeight = textDims.height / lines;
+  msgModel.height += lineHeight;
+  bounds.bumpVerticalPos(lineHeight);
+  var textObj = _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].getTextObj();
+  textObj.x = startx;
+  textObj.y = starty + 10;
+  textObj.width = stopx - startx;
+  textObj.class = 'messageText';
+  textObj.dy = '1em';
+  textObj.text = message;
+  textObj.fontFamily = conf.messageFontFamily;
+  textObj.fontSize = conf.messageFontSize;
+  textObj.fontWeight = conf.messageFontWeight;
+  textObj.anchor = conf.messageAlign;
+  textObj.valign = conf.messageAlign;
+  textObj.textMargin = conf.wrapPadding;
+  textObj.tspan = false;
+  textObj.wrap = wrap;
+  Object(_svgDraw__WEBPACK_IMPORTED_MODULE_1__["drawText"])(g, textObj);
+  var totalOffset = textDims.height - 10;
+  var textWidth = textDims.width;
+  var line, lineStarty;
+
+  if (startx === stopx) {
+    lineStarty = bounds.getVerticalPos() + totalOffset;
+
+    if (conf.rightAngles) {
+      line = g.append('path').attr('d', "M  ".concat(startx, ",").concat(lineStarty, " H ").concat(startx + Math.max(conf.width / 2, textWidth / 2), " V ").concat(lineStarty + 25, " H ").concat(startx));
+    } else {
+      totalOffset += conf.boxMargin;
+      lineStarty = bounds.getVerticalPos() + totalOffset;
+      line = g.append('path').attr('d', 'M ' + startx + ',' + lineStarty + ' C ' + (startx + 60) + ',' + (lineStarty - 10) + ' ' + (startx + 60) + ',' + (lineStarty + 30) + ' ' + startx + ',' + (lineStarty + 20));
+    }
+
+    totalOffset += 30;
+    var dx = Math.max(textWidth / 2, conf.width / 2);
+    bounds.insert(startx - dx, bounds.getVerticalPos() - 10 + totalOffset, stopx + dx, bounds.getVerticalPos() + 30 + totalOffset);
+  } else {
+    totalOffset += conf.boxMargin;
+    lineStarty = bounds.getVerticalPos() + totalOffset;
+    line = g.append('line');
+    line.attr('x1', startx);
+    line.attr('y1', lineStarty);
+    line.attr('x2', stopx);
+    line.attr('y2', lineStarty);
+    bounds.insert(startx, lineStarty - 10, stopx, lineStarty);
+  } // Make an SVG Container
+  // Draw the line
+
+
+  if (type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED_CROSS || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED_OPEN) {
+    line.style('stroke-dasharray', '3, 3');
+    line.attr('class', 'messageLine1');
+  } else {
+    line.attr('class', 'messageLine0');
+  }
+
+  var url = '';
+
+  if (conf.arrowMarkerAbsolute) {
+    url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
+    url = url.replace(/\(/g, '\\(');
+    url = url.replace(/\)/g, '\\)');
+  }
+
+  line.attr('stroke-width', 2);
+  line.attr('stroke', 'none'); // handled by theme/css anyway
+
+  line.style('fill', 'none'); // remove any fill colour
+
+  if (type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED) {
+    line.attr('marker-end', 'url(' + url + '#arrowhead)');
+  }
+
+  if (type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID_CROSS || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED_CROSS) {
+    line.attr('marker-end', 'url(' + url + '#crosshead)');
+  } // add node number
+
+
+  if (_sequenceDb__WEBPACK_IMPORTED_MODULE_5__["default"].showSequenceNumbers() || conf.showSequenceNumbers) {
+    line.attr('marker-start', 'url(' + url + '#sequencenumber)');
+    g.append('text').attr('x', startx).attr('y', lineStarty + 4).attr('font-family', 'sans-serif').attr('font-size', '12px').attr('text-anchor', 'middle').attr('textLength', '16px').attr('class', 'sequenceNumber').text(sequenceIndex);
+  }
+
+  bounds.bumpVerticalPos(totalOffset);
+  msgModel.height += totalOffset;
+  msgModel.stopy = msgModel.starty + msgModel.height;
+  bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);
+};
+
+var drawActors = function drawActors(diagram, actors, actorKeys, verticalPos) {
+  // Draw the actors
+  var prevWidth = 0;
+  var prevMargin = 0;
+
+  for (var i = 0; i < actorKeys.length; i++) {
+    var actor = actors[actorKeys[i]]; // Add some rendering data to the object
+
+    actor.width = actor.width || conf.width;
+    actor.height = Math.max(actor.height || conf.height, conf.height);
+    actor.margin = actor.margin || conf.actorMargin;
+    actor.x = prevWidth + prevMargin;
+    actor.y = verticalPos; // Draw the box with the attached line
+
+    _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawActor(diagram, actor, conf);
+    bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);
+    prevWidth += actor.width;
+    prevMargin += actor.margin;
+    bounds.models.addActor(actor);
+  } // Add a margin between the actor boxes and the first arrow
+
+
+  bounds.bumpVerticalPos(conf.height);
+};
+var setConf = function setConf(cnf) {
+  Object(_utils__WEBPACK_IMPORTED_MODULE_7__["assignWithDepth"])(conf, cnf);
+
+  if (cnf.fontFamily) {
+    conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;
+  }
+
+  if (cnf.fontSize) {
+    conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;
+  }
+
+  if (cnf.fontWeight) {
+    conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;
+  }
+};
+
+var actorActivations = function actorActivations(actor) {
+  return bounds.activations.filter(function (activation) {
+    return activation.actor === actor;
+  });
+};
+
+var activationBounds = function activationBounds(actor, actors) {
+  // handle multiple stacked activations for same actor
+  var actorObj = actors[actor];
+  var activations = actorActivations(actor);
+  var left = activations.reduce(function (acc, activation) {
+    return Math.min(acc, activation.startx);
+  }, actorObj.x + actorObj.width / 2);
+  var right = activations.reduce(function (acc, activation) {
+    return Math.max(acc, activation.stopx);
+  }, actorObj.x + actorObj.width / 2);
+  return [left, right];
+};
+
+function adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {
+  bounds.bumpVerticalPos(preMargin);
+  var heightAdjust = postMargin;
+
+  if (msg.id && msg.message && loopWidths[msg.id]) {
+    var loopWidth = loopWidths[msg.id].width;
+    var textConf = messageFont(conf);
+    msg.message = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].wrapLabel("[".concat(msg.message, "]"), loopWidth - 2 * conf.wrapPadding, textConf);
+    msg.width = loopWidth;
+    msg.wrap = true; // const lines = common.splitBreaks(msg.message).length;
+
+    var textDims = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].calculateTextDimensions(msg.message, textConf);
+    var totalOffset = Math.max(textDims.height, conf.labelBoxHeight);
+    heightAdjust = postMargin + totalOffset;
+    _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug("".concat(totalOffset, " - ").concat(msg.message));
+  }
+
+  addLoopFn(msg);
+  bounds.bumpVerticalPos(heightAdjust);
+}
+/**
+ * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+
+var draw = function draw(text, id) {
+  conf = _config__WEBPACK_IMPORTED_MODULE_6__["getConfig"]().sequence;
+  _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.clear();
+  _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.setWrap(conf.wrap);
+  _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].parse(text + '\n');
+  bounds.init();
+  _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug("C:".concat(JSON.stringify(conf, null, 2)));
+  var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])("[id=\"".concat(id, "\"]")); // Fetch data from the parsing
+
+  var actors = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.getActors();
+  var actorKeys = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.getActorKeys();
+  var messages = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.getMessages();
+  var title = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.getTitle();
+  var maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors, messages);
+  conf.height = calculateActorMargins(actors, maxMessageWidthPerActor);
+  drawActors(diagram, actors, actorKeys, 0);
+  var loopWidths = calculateLoopBounds(messages, actors, maxMessageWidthPerActor); // The arrow head definition is attached to the svg once
+
+  _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].insertArrowHead(diagram);
+  _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].insertArrowCrossHead(diagram);
+  _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].insertSequenceNumber(diagram);
+
+  function activeEnd(msg, verticalPos) {
+    var activationData = bounds.endActivation(msg);
+
+    if (activationData.starty + 18 > verticalPos) {
+      activationData.starty = verticalPos - 6;
+      verticalPos += 12;
+    }
+
+    _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawActivation(diagram, activationData, verticalPos, conf, actorActivations(msg.from.actor).length);
+    bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);
+  } // Draw the messages/signals
+
+
+  var sequenceIndex = 1;
+  messages.forEach(function (msg) {
+    var loopModel, noteModel, msgModel;
+
+    switch (msg.type) {
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.NOTE:
+        noteModel = msg.noteModel;
+        drawNote(diagram, noteModel);
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ACTIVE_START:
+        bounds.newActivation(msg, diagram, actors);
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ACTIVE_END:
+        activeEnd(msg, bounds.getVerticalPos());
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.LOOP_START:
+        adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {
+          return bounds.newLoop(message);
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.LOOP_END:
+        loopModel = bounds.endLoop();
+        _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawLoop(diagram, loopModel, 'loop', conf);
+        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
+        bounds.models.addLoop(loopModel);
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.RECT_START:
+        adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, function (message) {
+          return bounds.newLoop(undefined, message.message);
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.RECT_END:
+        loopModel = bounds.endLoop();
+        _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawBackgroundRect(diagram, loopModel);
+        bounds.models.addLoop(loopModel);
+        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.OPT_START:
+        adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {
+          return bounds.newLoop(message);
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.OPT_END:
+        loopModel = bounds.endLoop();
+        _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawLoop(diagram, loopModel, 'opt', conf);
+        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
+        bounds.models.addLoop(loopModel);
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ALT_START:
+        adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {
+          return bounds.newLoop(message);
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ALT_ELSE:
+        adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin + conf.boxTextMargin, conf.boxMargin, function (message) {
+          return bounds.addSectionToLoop(message);
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ALT_END:
+        loopModel = bounds.endLoop();
+        _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawLoop(diagram, loopModel, 'alt', conf);
+        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
+        bounds.models.addLoop(loopModel);
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.PAR_START:
+        adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {
+          return bounds.newLoop(message);
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.PAR_AND:
+        adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin + conf.boxTextMargin, conf.boxMargin, function (message) {
+          return bounds.addSectionToLoop(message);
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.PAR_END:
+        loopModel = bounds.endLoop();
+        _svgDraw__WEBPACK_IMPORTED_MODULE_1__["default"].drawLoop(diagram, loopModel, 'par', conf);
+        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
+        bounds.models.addLoop(loopModel);
+        break;
+
+      default:
+        try {
+          // lastMsg = msg
+          msgModel = msg.msgModel;
+          msgModel.starty = bounds.getVerticalPos();
+          msgModel.sequenceIndex = sequenceIndex;
+          drawMessage(diagram, msgModel);
+          bounds.models.addMessage(msgModel);
+        } catch (e) {
+          _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].error('error while drawing message', e);
+        }
+
+    } // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)
+
+
+    if ([_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID_CROSS, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED_CROSS].includes(msg.type)) {
+      sequenceIndex++;
+    }
+  });
+
+  if (conf.mirrorActors) {
+    // Draw actors below diagram
+    bounds.bumpVerticalPos(conf.boxMargin * 2);
+    drawActors(diagram, actors, actorKeys, bounds.getVerticalPos());
+  }
+
+  var _bounds$getBounds = bounds.getBounds(),
+      box = _bounds$getBounds.bounds; // Adjust line height of actor lines now that the height of the diagram is known
+
+
+  _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('For line height fix Querying: #' + id + ' .actor-line');
+  var actorLines = Object(d3__WEBPACK_IMPORTED_MODULE_0__["selectAll"])('#' + id + ' .actor-line');
+  actorLines.attr('y2', box.stopy);
+  var height = box.stopy - box.starty + 2 * conf.diagramMarginY;
+
+  if (conf.mirrorActors) {
+    height = height - conf.boxMargin + conf.bottomMarginAdj;
+  }
+
+  var width = box.stopx - box.startx + 2 * conf.diagramMarginX;
+
+  if (title) {
+    diagram.append('text').text(title).attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX).attr('y', -25);
+  }
+
+  Object(_utils__WEBPACK_IMPORTED_MODULE_7__["configureSvgSize"])(diagram, height, width, conf.useMaxWidth);
+  var extraVertForTitle = title ? 40 : 0;
+  diagram.attr('viewBox', box.startx - conf.diagramMarginX + ' -' + (conf.diagramMarginY + extraVertForTitle) + ' ' + width + ' ' + (height + extraVertForTitle));
+  _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug("models:", bounds.models);
+};
+/**
+ * Retrieves the max message width of each actor, supports signals (messages, loops)
+ * and notes.
+ *
+ * It will enumerate each given message, and will determine its text width, in relation
+ * to the actor it originates from, and destined to.
+ *
+ * @param actors - The actors map
+ * @param messages - A list of message objects to iterate
+ */
+
+var getMaxMessageWidthPerActor = function getMaxMessageWidthPerActor(actors, messages) {
+  var maxMessageWidthPerActor = {};
+  messages.forEach(function (msg) {
+    if (actors[msg.to] && actors[msg.from]) {
+      var actor = actors[msg.to]; // If this is the first actor, and the message is left of it, no need to calculate the margin
+
+      if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.PLACEMENT.LEFTOF && !actor.prevActor) {
+        return;
+      } // If this is the last actor, and the message is right of it, no need to calculate the margin
+
+
+      if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.PLACEMENT.RIGHTOF && !actor.nextActor) {
+        return;
+      }
+
+      var isNote = msg.placement !== undefined;
+      var isMessage = !isNote;
+      var textFont = isNote ? noteFont(conf) : messageFont(conf);
+      var wrappedMessage = msg.wrap ? _utils__WEBPACK_IMPORTED_MODULE_7__["default"].wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont) : msg.message;
+      var messageDimensions = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].calculateTextDimensions(wrappedMessage, textFont);
+      var messageWidth = messageDimensions.width + 2 * conf.wrapPadding;
+      /*
+       * The following scenarios should be supported:
+       *
+       * - There's a message (non-note) between fromActor and toActor
+       *   - If fromActor is on the right and toActor is on the left, we should
+       *     define the toActor's margin
+       *   - If fromActor is on the left and toActor is on the right, we should
+       *     define the fromActor's margin
+       * - There's a note, in which case fromActor == toActor
+       *   - If the note is to the left of the actor, we should define the previous actor
+       *     margin
+       *   - If the note is on the actor, we should define both the previous and next actor
+       *     margins, each being the half of the note size
+       *   - If the note is on the right of the actor, we should define the current actor
+       *     margin
+       */
+
+      if (isMessage && msg.from === actor.nextActor) {
+        maxMessageWidthPerActor[msg.to] = Math.max(maxMessageWidthPerActor[msg.to] || 0, messageWidth);
+      } else if (isMessage && msg.from === actor.prevActor) {
+        maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth);
+      } else if (isMessage && msg.from === msg.to) {
+        maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth / 2);
+        maxMessageWidthPerActor[msg.to] = Math.max(maxMessageWidthPerActor[msg.to] || 0, messageWidth / 2);
+      } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.PLACEMENT.RIGHTOF) {
+        maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth);
+      } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.PLACEMENT.LEFTOF) {
+        maxMessageWidthPerActor[actor.prevActor] = Math.max(maxMessageWidthPerActor[actor.prevActor] || 0, messageWidth);
+      } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.PLACEMENT.OVER) {
+        if (actor.prevActor) {
+          maxMessageWidthPerActor[actor.prevActor] = Math.max(maxMessageWidthPerActor[actor.prevActor] || 0, messageWidth / 2);
+        }
+
+        if (actor.nextActor) {
+          maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth / 2);
+        }
+      }
+    }
+  });
+  _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);
+  return maxMessageWidthPerActor;
+};
+/**
+ * This will calculate the optimal margin for each given actor, for a given
+ * actor->messageWidth map.
+ *
+ * An actor's margin is determined by the width of the actor, the width of the
+ * largest message that originates from it, and the configured conf.actorMargin.
+ *
+ * @param actors - The actors map to calculate margins for
+ * @param actorToMessageWidth - A map of actor key -> max message width it holds
+ */
+
+
+var calculateActorMargins = function calculateActorMargins(actors, actorToMessageWidth) {
+  var maxHeight = 0;
+  Object.keys(actors).forEach(function (prop) {
+    var actor = actors[prop];
+
+    if (actor.wrap) {
+      actor.description = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].wrapLabel(actor.description, conf.width - 2 * conf.wrapPadding, actorFont(conf));
+    }
+
+    var actDims = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].calculateTextDimensions(actor.description, actorFont(conf));
+    actor.width = actor.wrap ? conf.width : Math.max(conf.width, actDims.width + 2 * conf.wrapPadding);
+    actor.height = actor.wrap ? Math.max(actDims.height, conf.height) : conf.height;
+    maxHeight = Math.max(maxHeight, actor.height);
+  });
+
+  for (var actorKey in actorToMessageWidth) {
+    var actor = actors[actorKey];
+
+    if (!actor) {
+      continue;
+    }
+
+    var nextActor = actors[actor.nextActor]; // No need to space out an actor that doesn't have a next link
+
+    if (!nextActor) {
+      continue;
+    }
+
+    var messageWidth = actorToMessageWidth[actorKey];
+    var actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;
+    actor.margin = Math.max(actorWidth, conf.actorMargin);
+  }
+
+  return Math.max(maxHeight, conf.height);
+};
+
+var buildNoteModel = function buildNoteModel(msg, actors) {
+  var startx = actors[msg.from].x;
+  var stopx = actors[msg.to].x;
+  var shouldWrap = msg.wrap && msg.message;
+  var textDimensions = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].calculateTextDimensions(shouldWrap ? _utils__WEBPACK_IMPORTED_MODULE_7__["default"].wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message, noteFont(conf));
+  var noteModel = {
+    width: shouldWrap ? conf.width : Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin),
+    height: 0,
+    startx: actors[msg.from].x,
+    stopx: 0,
+    starty: 0,
+    stopy: 0,
+    message: msg.message
+  };
+
+  if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.PLACEMENT.RIGHTOF) {
+    noteModel.width = shouldWrap ? Math.max(conf.width, textDimensions.width) : Math.max(actors[msg.from].width / 2 + actors[msg.to].width / 2, textDimensions.width + 2 * conf.noteMargin);
+    noteModel.startx = startx + (actors[msg.from].width + conf.actorMargin) / 2;
+  } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.PLACEMENT.LEFTOF) {
+    noteModel.width = shouldWrap ? Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin) : Math.max(actors[msg.from].width / 2 + actors[msg.to].width / 2, textDimensions.width + 2 * conf.noteMargin);
+    noteModel.startx = startx - noteModel.width + (actors[msg.from].width - conf.actorMargin) / 2;
+  } else if (msg.to === msg.from) {
+    textDimensions = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].calculateTextDimensions(shouldWrap ? _utils__WEBPACK_IMPORTED_MODULE_7__["default"].wrapLabel(msg.message, Math.max(conf.width, actors[msg.from].width), noteFont(conf)) : msg.message, noteFont(conf));
+    noteModel.width = shouldWrap ? Math.max(conf.width, actors[msg.from].width) : Math.max(actors[msg.from].width, conf.width, textDimensions.width + 2 * conf.noteMargin);
+    noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;
+  } else {
+    noteModel.width = Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) + conf.actorMargin;
+    noteModel.startx = startx < stopx ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2 : stopx + actors[msg.to].width / 2 - conf.actorMargin / 2;
+  }
+
+  if (shouldWrap) {
+    noteModel.message = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].wrapLabel(msg.message, noteModel.width - 2 * conf.wrapPadding, noteFont(conf));
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug("NM:[".concat(noteModel.startx, ",").concat(noteModel.stopx, ",").concat(noteModel.starty, ",").concat(noteModel.stopy, ":").concat(noteModel.width, ",").concat(noteModel.height, "=").concat(msg.message, "]"));
+  return noteModel;
+};
+
+var buildMessageModel = function buildMessageModel(msg, actors) {
+  var process = false;
+
+  if ([_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.SOLID_CROSS, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.DOTTED_CROSS].includes(msg.type)) {
+    process = true;
+  }
+
+  if (!process) {
+    return {};
+  }
+
+  var fromBounds = activationBounds(msg.from, actors);
+  var toBounds = activationBounds(msg.to, actors);
+  var fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;
+  var toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;
+  var allBounds = fromBounds.concat(toBounds);
+  var boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);
+  var msgDims = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].calculateTextDimensions(msg.message, messageFont(conf));
+
+  if (msg.wrap && msg.message) {
+    msg.message = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].wrapLabel(msg.message, Math.max(boundedWidth + 2 * conf.wrapPadding, conf.width), messageFont(conf));
+  }
+
+  return {
+    width: Math.max(msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding, boundedWidth + 2 * conf.wrapPadding, conf.width),
+    height: 0,
+    startx: fromBounds[fromIdx],
+    stopx: toBounds[toIdx],
+    starty: 0,
+    stopy: 0,
+    message: msg.message,
+    type: msg.type,
+    wrap: msg.wrap,
+    fromBounds: Math.min.apply(null, allBounds),
+    toBounds: Math.max.apply(null, allBounds)
+  };
+};
+
+var calculateLoopBounds = function calculateLoopBounds(messages, actors) {
+  var loops = {};
+  var stack = [];
+  var current, noteModel, msgModel;
+  messages.forEach(function (msg) {
+    msg.id = _utils__WEBPACK_IMPORTED_MODULE_7__["default"].random({
+      length: 10
+    });
+
+    switch (msg.type) {
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.LOOP_START:
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ALT_START:
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.OPT_START:
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.PAR_START:
+        stack.push({
+          id: msg.id,
+          msg: msg.message,
+          from: Number.MAX_SAFE_INTEGER,
+          to: Number.MIN_SAFE_INTEGER,
+          width: 0
+        });
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ALT_ELSE:
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.PAR_AND:
+        if (msg.message) {
+          current = stack.pop();
+          loops[current.id] = current;
+          loops[msg.id] = current;
+          stack.push(current);
+        }
+
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.LOOP_END:
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ALT_END:
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.OPT_END:
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.PAR_END:
+        current = stack.pop();
+        loops[current.id] = current;
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ACTIVE_START:
+        {
+          var actorRect = actors[msg.from ? msg.from.actor : msg.to.actor];
+          var stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;
+          var x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;
+          var toAdd = {
+            startx: x,
+            stopx: x + conf.activationWidth,
+            actor: msg.from.actor,
+            enabled: true
+          };
+          bounds.activations.push(toAdd);
+        }
+        break;
+
+      case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__["parser"].yy.LINETYPE.ACTIVE_END:
+        {
+          var lastActorActivationIdx = bounds.activations.map(function (a) {
+            return a.actor;
+          }).lastIndexOf(msg.from.actor);
+          delete bounds.activations.splice(lastActorActivationIdx, 1)[0];
+        }
+        break;
+    }
+
+    var isNote = msg.placement !== undefined;
+
+    if (isNote) {
+      noteModel = buildNoteModel(msg, actors);
+      msg.noteModel = noteModel;
+      stack.forEach(function (stk) {
+        current = stk;
+        current.from = Math.min(current.from, noteModel.startx);
+        current.to = Math.max(current.to, noteModel.startx + noteModel.width);
+        current.width = Math.max(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;
+      });
+    } else {
+      msgModel = buildMessageModel(msg, actors);
+      msg.msgModel = msgModel;
+
+      if (msgModel.startx && msgModel.stopx && stack.length > 0) {
+        stack.forEach(function (stk) {
+          current = stk;
+
+          if (msgModel.startx === msgModel.stopx) {
+            var from = actors[msg.from];
+            var to = actors[msg.to];
+            current.from = Math.min(from.x - msgModel.width / 2, from.x - from.width / 2, current.from);
+            current.to = Math.max(to.x + msgModel.width / 2, to.x + from.width / 2, current.to);
+            current.width = Math.max(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;
+          } else {
+            current.from = Math.min(msgModel.startx, current.from);
+            current.to = Math.max(msgModel.stopx, current.to);
+            current.width = Math.max(current.width, msgModel.width) - conf.labelBoxWidth;
+          }
+        });
+      }
+    }
+  });
+  bounds.activations = [];
+  _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('Loop type widths:', loops);
+  return loops;
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  bounds: bounds,
+  drawActors: drawActors,
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/sequence/styles.js":
+/*!*****************************************!*\
+  !*** ./src/diagrams/sequence/styles.js ***!
+  \*****************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return ".actor {\n    stroke: ".concat(options.actorBorder, ";\n    fill: ").concat(options.actorBkg, ";\n  }\n\n  text.actor > tspan {\n    fill: ").concat(options.actorTextColor, ";\n    stroke: none;\n  }\n\n  .actor-line {\n    stroke: ").concat(options.actorLineColor, ";\n  }\n\n  .messageLine0 {\n    stroke-width: 1.5;\n    stroke-dasharray: none;\n    stroke: ").concat(options.signalColor, ";\n  }\n\n  .messageLine1 {\n    stroke-width: 1.5;\n    stroke-dasharray: 2, 2;\n    stroke: ").concat(options.signalColor, ";\n  }\n\n  #arrowhead path {\n    fill: ").concat(options.signalColor, ";\n    stroke: ").concat(options.signalColor, ";\n  }\n\n  .sequenceNumber {\n    fill: ").concat(options.sequenceNumberColor, ";\n  }\n\n  #sequencenumber {\n    fill: ").concat(options.signalColor, ";\n  }\n\n  #crosshead path {\n    fill: ").concat(options.signalColor, ";\n    stroke: ").concat(options.signalColor, ";\n  }\n\n  .messageText {\n    fill: ").concat(options.signalTextColor, ";\n    stroke: ").concat(options.signalTextColor, ";\n  }\n\n  .labelBox {\n    stroke: ").concat(options.labelBoxBorderColor, ";\n    fill: ").concat(options.labelBoxBkgColor, ";\n  }\n\n  .labelText, .labelText > tspan {\n    fill: ").concat(options.labelTextColor, ";\n    stroke: none;\n  }\n\n  .loopText, .loopText > tspan {\n    fill: ").concat(options.loopTextColor, ";\n    stroke: none;\n  }\n\n  .loopLine {\n    stroke-width: 2px;\n    stroke-dasharray: 2, 2;\n    stroke: ").concat(options.labelBoxBorderColor, ";\n    fill: ").concat(options.labelBoxBorderColor, ";\n  }\n\n  .note {\n    //stroke: #decc93;\n    stroke: ").concat(options.noteBorderColor, ";\n    fill: ").concat(options.noteBkgColor, ";\n  }\n\n  .noteText, .noteText > tspan {\n    fill: ").concat(options.noteTextColor, ";\n    stroke: none;\n  }\n\n  .activation0 {\n    fill: ").concat(options.activationBkgColor, ";\n    stroke: ").concat(options.activationBorderColor, ";\n  }\n\n  .activation1 {\n    fill: ").concat(options.activationBkgColor, ";\n    stroke: ").concat(options.activationBorderColor, ";\n  }\n\n  .activation2 {\n    fill: ").concat(options.activationBkgColor, ";\n    stroke: ").concat(options.activationBorderColor, ";\n  }\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/sequence/svgDraw.js":
+/*!******************************************!*\
+  !*** ./src/diagrams/sequence/svgDraw.js ***!
+  \******************************************/
+/*! exports provided: drawRect, drawText, drawLabel, drawActor, anchorElement, drawActivation, drawLoop, drawBackgroundRect, insertArrowHead, insertSequenceNumber, insertArrowCrossHead, getTextObj, getNoteRect, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawRect", function() { return drawRect; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawText", function() { return drawText; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawLabel", function() { return drawLabel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawActor", function() { return drawActor; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "anchorElement", function() { return anchorElement; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawActivation", function() { return drawActivation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawLoop", function() { return drawLoop; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawBackgroundRect", function() { return drawBackgroundRect; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertArrowHead", function() { return insertArrowHead; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertSequenceNumber", function() { return insertSequenceNumber; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertArrowCrossHead", function() { return insertArrowCrossHead; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTextObj", function() { return getTextObj; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNoteRect", function() { return getNoteRect; });
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+
+var drawRect = function drawRect(elem, rectData) {
+  var rectElem = elem.append('rect');
+  rectElem.attr('x', rectData.x);
+  rectElem.attr('y', rectData.y);
+  rectElem.attr('fill', rectData.fill);
+  rectElem.attr('stroke', rectData.stroke);
+  rectElem.attr('width', rectData.width);
+  rectElem.attr('height', rectData.height);
+  rectElem.attr('rx', rectData.rx);
+  rectElem.attr('ry', rectData.ry);
+
+  if (typeof rectData.class !== 'undefined') {
+    rectElem.attr('class', rectData.class);
+  }
+
+  return rectElem;
+};
+var drawText = function drawText(elem, textData) {
+  var prevTextHeight = 0,
+      textHeight = 0;
+  var lines = textData.wrap ? textData.text.split(_common_common__WEBPACK_IMPORTED_MODULE_0__["default"].lineBreakRegex) : [textData.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_0__["default"].lineBreakRegex, ' ')];
+  var textElems = [];
+  var dy = 0;
+
+  var yfunc = function yfunc() {
+    return textData.y;
+  };
+
+  if (typeof textData.valign !== 'undefined' && typeof textData.textMargin !== 'undefined' && textData.textMargin > 0) {
+    switch (textData.valign) {
+      case 'top':
+      case 'start':
+        yfunc = function yfunc() {
+          return Math.round(textData.y + textData.textMargin);
+        };
+
+        break;
+
+      case 'middle':
+      case 'center':
+        yfunc = function yfunc() {
+          return Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);
+        };
+
+        break;
+
+      case 'bottom':
+      case 'end':
+        yfunc = function yfunc() {
+          return Math.round(textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin);
+        };
+
+        break;
+    }
+  }
+
+  if (typeof textData.anchor !== 'undefined' && typeof textData.textMargin !== 'undefined' && typeof textData.width !== 'undefined') {
+    switch (textData.anchor) {
+      case 'left':
+      case 'start':
+        textData.x = Math.round(textData.x + textData.textMargin);
+        textData.anchor = 'start';
+        textData.dominantBaseline = 'text-after-edge';
+        textData.alignmentBaseline = 'middle';
+        break;
+
+      case 'middle':
+      case 'center':
+        textData.x = Math.round(textData.x + textData.width / 2);
+        textData.anchor = 'middle';
+        textData.dominantBaseline = 'middle';
+        textData.alignmentBaseline = 'middle';
+        break;
+
+      case 'right':
+      case 'end':
+        textData.x = Math.round(textData.x + textData.width - textData.textMargin);
+        textData.anchor = 'end';
+        textData.dominantBaseline = 'text-before-edge';
+        textData.alignmentBaseline = 'middle';
+        break;
+    }
+  }
+
+  for (var i = 0; i < lines.length; i++) {
+    var line = lines[i];
+
+    if (typeof textData.textMargin !== 'undefined' && textData.textMargin === 0 && typeof textData.fontSize !== 'undefined') {
+      dy = i * textData.fontSize;
+    }
+
+    var textElem = elem.append('text');
+    textElem.attr('x', textData.x);
+    textElem.attr('y', yfunc());
+
+    if (typeof textData.anchor !== 'undefined') {
+      textElem.attr('text-anchor', textData.anchor).attr('dominant-baseline', textData.dominantBaseline).attr('alignment-baseline', textData.alignmentBaseline);
+    }
+
+    if (typeof textData.fontFamily !== 'undefined') {
+      textElem.style('font-family', textData.fontFamily);
+    }
+
+    if (typeof textData.fontSize !== 'undefined') {
+      textElem.style('font-size', textData.fontSize);
+    }
+
+    if (typeof textData.fontWeight !== 'undefined') {
+      textElem.style('font-weight', textData.fontWeight);
+    }
+
+    if (typeof textData.fill !== 'undefined') {
+      textElem.attr('fill', textData.fill);
+    }
+
+    if (typeof textData.class !== 'undefined') {
+      textElem.attr('class', textData.class);
+    }
+
+    if (typeof textData.dy !== 'undefined') {
+      textElem.attr('dy', textData.dy);
+    } else if (dy !== 0) {
+      textElem.attr('dy', dy);
+    }
+
+    if (textData.tspan) {
+      var span = textElem.append('tspan');
+      span.attr('x', textData.x);
+
+      if (typeof textData.fill !== 'undefined') {
+        span.attr('fill', textData.fill);
+      }
+
+      span.text(line);
+    } else {
+      textElem.text(line);
+    }
+
+    if (typeof textData.valign !== 'undefined' && typeof textData.textMargin !== 'undefined' && textData.textMargin > 0) {
+      textHeight += (textElem._groups || textElem)[0][0].getBBox().height;
+      prevTextHeight = textHeight;
+    }
+
+    textElems.push(textElem);
+  }
+
+  return textElems;
+};
+var drawLabel = function drawLabel(elem, txtObject) {
+  function genPoints(x, y, width, height, cut) {
+    return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height);
+  }
+
+  var polygon = elem.append('polygon');
+  polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));
+  polygon.attr('class', 'labelBox');
+  txtObject.y = txtObject.y + txtObject.height / 2;
+  drawText(elem, txtObject);
+  return polygon;
+};
+var actorCnt = -1;
+/**
+ * Draws an actor in the diagram with the attached line
+ * @param elem - The diagram we'll draw to.
+ * @param actor - The actor to draw.
+ * @param conf - drawText implementation discriminator object
+ */
+
+var drawActor = function drawActor(elem, actor, conf) {
+  var center = actor.x + actor.width / 2;
+  var g = elem.append('g');
+
+  if (actor.y === 0) {
+    actorCnt++;
+    g.append('line').attr('id', 'actor' + actorCnt).attr('x1', center).attr('y1', 5).attr('x2', center).attr('y2', 2000).attr('class', 'actor-line').attr('stroke-width', '0.5px').attr('stroke', '#999');
+  }
+
+  var rect = getNoteRect();
+  rect.x = actor.x;
+  rect.y = actor.y;
+  rect.fill = '#eaeaea';
+  rect.width = actor.width;
+  rect.height = actor.height;
+  rect.class = 'actor';
+  rect.rx = 3;
+  rect.ry = 3;
+  drawRect(g, rect);
+
+  _drawTextCandidateFunc(conf)(actor.description, g, rect.x, rect.y, rect.width, rect.height, {
+    class: 'actor'
+  }, conf);
+};
+var anchorElement = function anchorElement(elem) {
+  return elem.append('g');
+};
+/**
+ * Draws an activation in the diagram
+ * @param elem - element to append activation rect.
+ * @param bounds - activation box bounds.
+ * @param verticalPos - precise y cooridnate of bottom activation box edge.
+ * @param conf - sequence diagram config object.
+ * @param actorActivations - number of activations on the actor.
+ */
+
+var drawActivation = function drawActivation(elem, bounds, verticalPos, conf, actorActivations) {
+  var rect = getNoteRect();
+  var g = bounds.anchored;
+  rect.x = bounds.startx;
+  rect.y = bounds.starty;
+  rect.class = 'activation' + actorActivations % 3; // Will evaluate to 0, 1 or 2
+
+  rect.width = bounds.stopx - bounds.startx;
+  rect.height = verticalPos - bounds.starty;
+  drawRect(g, rect);
+};
+/**
+ * Draws a loop in the diagram
+ * @param elem - elemenet to append the loop to.
+ * @param loopModel - loopModel of the given loop.
+ * @param labelText - Text within the loop.
+ * @param conf - diagrom configuration
+ */
+
+var drawLoop = function drawLoop(elem, loopModel, labelText, conf) {
+  var boxMargin = conf.boxMargin,
+      boxTextMargin = conf.boxTextMargin,
+      labelBoxHeight = conf.labelBoxHeight,
+      labelBoxWidth = conf.labelBoxWidth,
+      fontFamily = conf.messageFontFamily,
+      fontSize = conf.messageFontSize,
+      fontWeight = conf.messageFontWeight;
+  var g = elem.append('g');
+
+  var drawLoopLine = function drawLoopLine(startx, starty, stopx, stopy) {
+    return g.append('line').attr('x1', startx).attr('y1', starty).attr('x2', stopx).attr('y2', stopy).attr('class', 'loopLine');
+  };
+
+  drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);
+  drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);
+  drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);
+  drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);
+
+  if (typeof loopModel.sections !== 'undefined') {
+    loopModel.sections.forEach(function (item) {
+      drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style('stroke-dasharray', '3, 3');
+    });
+  }
+
+  var txt = getTextObj();
+  txt.text = labelText;
+  txt.x = loopModel.startx;
+  txt.y = loopModel.starty;
+  txt.fontFamily = fontFamily;
+  txt.fontSize = fontSize;
+  txt.fontWeight = fontWeight;
+  txt.anchor = 'middle';
+  txt.valign = 'middle';
+  txt.tspan = false;
+  txt.width = labelBoxWidth || 50;
+  txt.height = labelBoxHeight || 20;
+  txt.textMargin = boxTextMargin;
+  txt.class = 'labelText';
+  drawLabel(g, txt);
+  txt = getTextObj();
+  txt.text = loopModel.title;
+  txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;
+  txt.y = loopModel.starty + boxMargin + boxTextMargin;
+  txt.anchor = 'middle';
+  txt.valign = 'middle';
+  txt.textMargin = boxTextMargin;
+  txt.class = 'loopText';
+  txt.fontFamily = fontFamily;
+  txt.fontSize = fontSize;
+  txt.fontWeight = fontWeight;
+  txt.wrap = true;
+  var textElem = drawText(g, txt);
+
+  if (typeof loopModel.sectionTitles !== 'undefined') {
+    loopModel.sectionTitles.forEach(function (item, idx) {
+      if (item.message) {
+        txt.text = item.message;
+        txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;
+        txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;
+        txt.class = 'loopText';
+        txt.anchor = 'middle';
+        txt.valign = 'middle';
+        txt.tspan = false;
+        txt.fontFamily = fontFamily;
+        txt.fontSize = fontSize;
+        txt.fontWeight = fontWeight;
+        txt.wrap = loopModel.wrap;
+        textElem = drawText(g, txt);
+        var sectionHeight = Math.round(textElem.map(function (te) {
+          return (te._groups || te)[0][0].getBBox().height;
+        }).reduce(function (acc, curr) {
+          return acc + curr;
+        }));
+        loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);
+      }
+    });
+  }
+
+  loopModel.height = Math.round(loopModel.stopy - loopModel.starty);
+  return g;
+};
+/**
+ * Draws a background rectangle
+ * @param elem diagram (reference for bounds)
+ * @param bounds shape of the rectangle
+ */
+
+var drawBackgroundRect = function drawBackgroundRect(elem, bounds) {
+  var rectElem = drawRect(elem, {
+    x: bounds.startx,
+    y: bounds.starty,
+    width: bounds.stopx - bounds.startx,
+    height: bounds.stopy - bounds.starty,
+    fill: bounds.fill,
+    class: 'rect'
+  });
+  rectElem.lower();
+};
+/**
+ * Setup arrow head and define the marker. The result is appended to the svg.
+ */
+
+var insertArrowHead = function insertArrowHead(elem) {
+  elem.append('defs').append('marker').attr('id', 'arrowhead').attr('refX', 5).attr('refY', 2).attr('markerWidth', 6).attr('markerHeight', 4).attr('orient', 'auto').append('path').attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead
+};
+/**
+ * Setup node number. The result is appended to the svg.
+ */
+
+var insertSequenceNumber = function insertSequenceNumber(elem) {
+  elem.append('defs').append('marker').attr('id', 'sequencenumber').attr('refX', 15).attr('refY', 15).attr('markerWidth', 60).attr('markerHeight', 40).attr('orient', 'auto').append('circle').attr('cx', 15).attr('cy', 15).attr('r', 6); // .style("fill", '#f00');
+};
+/**
+ * Setup arrow head and define the marker. The result is appended to the svg.
+ */
+
+var insertArrowCrossHead = function insertArrowCrossHead(elem) {
+  var defs = elem.append('defs');
+  var marker = defs.append('marker').attr('id', 'crosshead').attr('markerWidth', 15).attr('markerHeight', 8).attr('orient', 'auto').attr('refX', 16).attr('refY', 4); // The arrow
+
+  marker.append('path').attr('fill', 'black').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 9,2 V 6 L16,4 Z'); // The cross
+
+  marker.append('path').attr('fill', 'none').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7'); // this is actual shape for arrowhead
+};
+var getTextObj = function getTextObj() {
+  return {
+    x: 0,
+    y: 0,
+    fill: undefined,
+    anchor: undefined,
+    style: '#666',
+    width: undefined,
+    height: undefined,
+    textMargin: 0,
+    rx: 0,
+    ry: 0,
+    tspan: true,
+    valign: undefined
+  };
+};
+var getNoteRect = function getNoteRect() {
+  return {
+    x: 0,
+    y: 0,
+    fill: '#EDF2AE',
+    stroke: '#666',
+    width: 100,
+    anchor: 'start',
+    height: 100,
+    rx: 0,
+    ry: 0
+  };
+};
+
+var _drawTextCandidateFunc = function () {
+  function byText(content, g, x, y, width, height, textAttrs) {
+    var text = g.append('text').attr('x', x + width / 2).attr('y', y + height / 2 + 5).style('text-anchor', 'middle').text(content);
+
+    _setTextAttrs(text, textAttrs);
+  }
+
+  function byTspan(content, g, x, y, width, height, textAttrs, conf) {
+    var actorFontSize = conf.actorFontSize,
+        actorFontFamily = conf.actorFontFamily,
+        actorFontWeight = conf.actorFontWeight;
+    var lines = content.split(_common_common__WEBPACK_IMPORTED_MODULE_0__["default"].lineBreakRegex);
+
+    for (var i = 0; i < lines.length; i++) {
+      var dy = i * actorFontSize - actorFontSize * (lines.length - 1) / 2;
+      var text = g.append('text').attr('x', x + width / 2).attr('y', y).style('text-anchor', 'middle').style('font-size', actorFontSize).style('font-weight', actorFontWeight).style('font-family', actorFontFamily);
+      text.append('tspan').attr('x', x + width / 2).attr('dy', dy).text(lines[i]);
+      text.attr('y', y + height / 2.0).attr('dominant-baseline', 'central').attr('alignment-baseline', 'central');
+
+      _setTextAttrs(text, textAttrs);
+    }
+  }
+
+  function byFo(content, g, x, y, width, height, textAttrs, conf) {
+    var s = g.append('switch');
+    var f = s.append('foreignObject').attr('x', x).attr('y', y).attr('width', width).attr('height', height);
+    var text = f.append('div').style('display', 'table').style('height', '100%').style('width', '100%');
+    text.append('div').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(content);
+    byTspan(content, s, x, y, width, height, textAttrs, conf);
+
+    _setTextAttrs(text, textAttrs);
+  }
+
+  function _setTextAttrs(toText, fromTextAttrsDict) {
+    for (var key in fromTextAttrsDict) {
+      if (fromTextAttrsDict.hasOwnProperty(key)) {
+        // eslint-disable-line
+        toText.attr(key, fromTextAttrsDict[key]);
+      }
+    }
+  }
+
+  return function (conf) {
+    return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;
+  };
+}();
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  drawRect: drawRect,
+  drawText: drawText,
+  drawLabel: drawLabel,
+  drawActor: drawActor,
+  anchorElement: anchorElement,
+  drawActivation: drawActivation,
+  drawLoop: drawLoop,
+  drawBackgroundRect: drawBackgroundRect,
+  insertArrowHead: insertArrowHead,
+  insertSequenceNumber: insertSequenceNumber,
+  insertArrowCrossHead: insertArrowCrossHead,
+  getTextObj: getTextObj,
+  getNoteRect: getNoteRect
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/state/id-cache.js":
+/*!****************************************!*\
+  !*** ./src/diagrams/state/id-cache.js ***!
+  \****************************************/
+/*! exports provided: set, get, keys, size, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "set", function() { return set; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return keys; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "size", function() { return size; });
+var idCache = {};
+var set = function set(key, val) {
+  idCache[key] = val;
+};
+var get = function get(k) {
+  return idCache[k];
+};
+var keys = function keys() {
+  return Object.keys(idCache);
+};
+var size = function size() {
+  return keys().length;
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  get: get,
+  set: set,
+  keys: keys,
+  size: size
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/state/parser/stateDiagram.jison":
+/*!******************************************************!*\
+  !*** ./src/diagrams/state/parser/stateDiagram.jison ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,28],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,29],$Vh=[1,32],$Vi=[1,4,5,14,15,17,19,20,22,23,24,25,26,36,39],$Vj=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,36,39],$Vk=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,36,39],$Vl=[4,5,14,15,17,19,20,22,23,24,25,26,36,39];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"SPACE":4,"NL":5,"directive":6,"SD":7,"document":8,"line":9,"statement":10,"idStatement":11,"DESCR":12,"-->":13,"HIDE_EMPTY":14,"scale":15,"WIDTH":16,"COMPOSIT_STATE":17,"STRUCT_START":18,"STRUCT_STOP":19,"STATE_DESCR":20,"AS":21,"ID":22,"FORK":23,"JOIN":24,"CONCURRENT":25,"note":26,"notePosition":27,"NOTE_TEXT":28,"openDirective":29,"typeDirective":30,"closeDirective":31,":":32,"argDirective":33,"eol":34,";":35,"EDGE_STATE":36,"left_of":37,"right_of":38,"open_directive":39,"type_directive":40,"arg_directive":41,"close_directive":42,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"-->",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CONCURRENT",26:"note",28:"NOTE_TEXT",32:":",35:";",36:"EDGE_STATE",37:"left_of",38:"right_of",39:"open_directive",40:"type_directive",41:"arg_directive",42:"close_directive"},
+productions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[6,3],[6,5],[34,1],[34,1],[11,1],[11,1],[27,1],[27,1],[29,1],[30,1],[33,1],[31,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 4:
+ /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; 
+break;
+case 5:
+ this.$ = [] 
+break;
+case 6:
+
+        if($$[$0]!='nl'){
+            $$[$0-1].push($$[$0]);this.$ = $$[$0-1]
+        }
+        // console.warn('Got document',$$[$0-1], $$[$0]);
+    
+break;
+case 7: case 8:
+ this.$ = $$[$0] 
+break;
+case 9:
+ this.$='nl';
+break;
+case 10:
+ /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};
+break;
+case 11:
+ /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};
+break;
+case 12:
+
+        /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/
+        this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};
+    
+break;
+case 13:
+
+        /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/
+        this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};
+    
+break;
+case 17:
+
+
+        /* console.warn('Adding document for state without id ', $$[$0-3]);*/
+        this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }
+    
+break;
+case 18:
+
+        var id=$$[$0];
+        var description = $$[$0-2].trim();
+        if($$[$0].match(':')){
+            var parts = $$[$0].split(':');
+            id=parts[0];
+            description = [description, parts[1]];
+        }
+        this.$={stmt: 'state', id: id, type: 'default', description: description};
+
+    
+break;
+case 19:
+
+         //console.warn('Adding document for state with id ', $$[$0-3], $$[$0-2]); yy.addDocument($$[$0-3]);
+         this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }
+    
+break;
+case 20:
+
+        this.$={ stmt: 'state', id: $$[$0], type: 'fork' }
+    
+break;
+case 21:
+
+        this.$={ stmt: 'state', id: $$[$0], type: 'join' }
+    
+break;
+case 22:
+
+        this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }
+    
+break;
+case 23:
+
+        /*console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/
+        this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};
+    
+break;
+case 30: case 31:
+this.$=$$[$0];
+break;
+case 34:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 35:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 36:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 37:
+ yy.parseDirective('}%%', 'close_directive', 'state'); 
+break;
+}
+},
+table: [{3:1,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,36,39],$V4,{8:11}),{30:12,40:[1,13]},{40:[2,34]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:27,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},{31:30,32:[1,31],42:$Vh},o([32,42],[2,35]),o($Vi,[2,6]),{6:27,10:33,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},o($Vi,[2,8]),o($Vi,[2,9]),o($Vi,[2,10],{12:[1,34],13:[1,35]}),o($Vi,[2,14]),{16:[1,36]},o($Vi,[2,16],{18:[1,37]}),{21:[1,38]},o($Vi,[2,20]),o($Vi,[2,21]),o($Vi,[2,22]),{27:39,28:[1,40],37:[1,41],38:[1,42]},o($Vi,[2,25]),o($Vj,[2,30]),o($Vj,[2,31]),o($Vk,[2,26]),{33:43,41:[1,44]},o($Vk,[2,37]),o($Vi,[2,7]),o($Vi,[2,11]),{11:45,22:$Vb,36:$Vg},o($Vi,[2,15]),o($Vl,$V4,{8:46}),{22:[1,47]},{22:[1,48]},{21:[1,49]},{22:[2,32]},{22:[2,33]},{31:50,42:$Vh},{42:[2,36]},o($Vi,[2,12],{12:[1,51]}),{4:$V5,5:$V6,6:27,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,52],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},o($Vi,[2,18],{18:[1,53]}),{28:[1,54]},{22:[1,55]},o($Vk,[2,27]),o($Vi,[2,13]),o($Vi,[2,17]),o($Vl,$V4,{8:56}),o($Vi,[2,23]),o($Vi,[2,24]),{4:$V5,5:$V6,6:27,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,57],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},o($Vi,[2,19])],
+defaultActions: {7:[2,34],8:[2,1],9:[2,2],10:[2,3],41:[2,32],42:[2,33],44:[2,36]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 39; 
+break;
+case 1: this.begin('type_directive'); return 40; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 32; 
+break;
+case 3: this.popState(); this.popState(); return 42; 
+break;
+case 4:return 41;
+break;
+case 5:/* skip comments */
+break;
+case 6:/* skip comments */{ console.log('Crap after close'); }
+break;
+case 7:return 5;
+break;
+case 8:/* skip all whitespace */
+break;
+case 9:/* skip same-line whitespace */
+break;
+case 10:/* skip comments */
+break;
+case 11:/* skip comments */
+break;
+case 12: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; 
+break;
+case 13:return 16;
+break;
+case 14:this.popState();
+break;
+case 15: this.pushState('STATE'); 
+break;
+case 16:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;
+break;
+case 17:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;
+break;
+case 18:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;
+break;
+case 19:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;
+break;
+case 20:this.begin("STATE_STRING");
+break;
+case 21:this.popState();this.pushState('STATE_ID');return "AS";
+break;
+case 22:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return "ID";
+break;
+case 23:this.popState();
+break;
+case 24: /*console.log('Long description:', yy_.yytext);*/return "STATE_DESCR";
+break;
+case 25:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;
+break;
+case 26:this.popState();
+break;
+case 27:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;
+break;
+case 28: /*console.log('Ending struct');*/ this.popState(); return 19;
+break;
+case 29:/* nothing */
+break;
+case 30: this.begin('NOTE'); return 26; 
+break;
+case 31: this.popState();this.pushState('NOTE_ID');return 37;
+break;
+case 32: this.popState();this.pushState('NOTE_ID');return 38;
+break;
+case 33: this.popState();this.pushState('FLOATING_NOTE');
+break;
+case 34:this.popState();this.pushState('FLOATING_NOTE_ID');return "AS";
+break;
+case 35:/**/
+break;
+case 36: /*console.log('Floating note text: ', yy_.yytext);*/return "NOTE_TEXT";
+break;
+case 37:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return "ID";
+break;
+case 38: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;
+break;
+case 39: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 28;
+break;
+case 40: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 28;
+break;
+case 41: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; 
+break;
+case 42: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; 
+break;
+case 43: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; 
+break;
+case 44: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 36;
+break;
+case 45: /*console.log('=>ID=',yy_.yytext);*/ return 22;
+break;
+case 46: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; 
+break;
+case 47:return 13;
+break;
+case 48:return 25;
+break;
+case 49:return 5;
+break;
+case 50:return 'INVALID';
+break;
+}
+},
+rules: [/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:\s*[^:;]+end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],
+conditions: {"LINE":{"rules":[9,10],"inclusive":false},"close_directive":{"rules":[9,10],"inclusive":false},"arg_directive":{"rules":[3,4,9,10],"inclusive":false},"type_directive":{"rules":[2,3,9,10],"inclusive":false},"open_directive":{"rules":[1,9,10],"inclusive":false},"struct":{"rules":[9,10,15,28,29,30,44,45,46,47,48],"inclusive":false},"FLOATING_NOTE_ID":{"rules":[37],"inclusive":false},"FLOATING_NOTE":{"rules":[34,35,36],"inclusive":false},"NOTE_TEXT":{"rules":[39,40],"inclusive":false},"NOTE_ID":{"rules":[38],"inclusive":false},"NOTE":{"rules":[31,32,33],"inclusive":false},"SCALE":{"rules":[13,14],"inclusive":false},"ALIAS":{"rules":[],"inclusive":false},"STATE_ID":{"rules":[22],"inclusive":false},"STATE_STRING":{"rules":[23,24],"inclusive":false},"FORK_STATE":{"rules":[],"inclusive":false},"STATE":{"rules":[9,10,16,17,18,19,20,21,25,26,27],"inclusive":false},"ID":{"rules":[9,10],"inclusive":false},"INITIAL":{"rules":[0,5,6,7,8,10,11,12,15,27,30,41,42,43,44,45,46,47,49,50],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/state/shapes.js":
+/*!**************************************!*\
+  !*** ./src/diagrams/state/shapes.js ***!
+  \**************************************/
+/*! exports provided: drawStartState, drawDivider, drawSimpleState, drawDescrState, addTitleAndBox, drawText, drawNote, drawState, drawEdge */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawStartState", function() { return drawStartState; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawDivider", function() { return drawDivider; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawSimpleState", function() { return drawSimpleState; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawDescrState", function() { return drawDescrState; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addTitleAndBox", function() { return addTitleAndBox; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawText", function() { return drawText; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawNote", function() { return drawNote; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawState", function() { return drawState; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawEdge", function() { return drawEdge; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _id_cache_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./id-cache.js */ "./src/diagrams/state/id-cache.js");
+/* harmony import */ var _stateDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stateDb */ "./src/diagrams/state/stateDb.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+
+
+
+
+
+
+ // let conf;
+
+/**
+ * Draws a start state as a black circle
+ */
+
+var drawStartState = function drawStartState(g) {
+  return g.append('circle') // .style('stroke', 'black')
+  // .style('fill', 'black')
+  .attr('class', 'start-state').attr('r', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit).attr('cx', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit).attr('cy', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit);
+};
+/**
+ * Draws a start state as a black circle
+ */
+
+var drawDivider = function drawDivider(g) {
+  return g.append('line').style('stroke', 'grey').style('stroke-dasharray', '3').attr('x1', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight).attr('class', 'divider').attr('x2', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight * 2).attr('y1', 0).attr('y2', 0);
+};
+/**
+ * Draws a an end state as a black circle
+ */
+
+var drawSimpleState = function drawSimpleState(g, stateDef) {
+  var state = g.append('text').attr('x', 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('font-size', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.fontSize).attr('class', 'state-title').text(stateDef.id);
+  var classBox = state.node().getBBox();
+  g.insert('rect', ':first-child').attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('width', classBox.width + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('height', classBox.height + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.radius);
+  return state;
+};
+/**
+ * Draws a state with descriptions
+ * @param {*} g
+ * @param {*} stateDef
+ */
+
+var drawDescrState = function drawDescrState(g, stateDef) {
+  var addTspan = function addTspan(textEl, txt, isFirst) {
+    var tSpan = textEl.append('tspan').attr('x', 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).text(txt);
+
+    if (!isFirst) {
+      tSpan.attr('dy', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight);
+    }
+  };
+
+  var title = g.append('text').attr('x', 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight + 1.3 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('font-size', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.fontSize).attr('class', 'state-title').text(stateDef.descriptions[0]);
+  var titleBox = title.node().getBBox();
+  var titleHeight = titleBox.height;
+  var description = g.append('text') // text label for the x axis
+  .attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('y', titleHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding * 0.4 + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.dividerMargin + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight).attr('class', 'state-description');
+  var isFirst = true;
+  var isSecond = true;
+  stateDef.descriptions.forEach(function (descr) {
+    if (!isFirst) {
+      addTspan(description, descr, isSecond);
+      isSecond = false;
+    }
+
+    isFirst = false;
+  });
+  var descrLine = g.append('line') // text label for the x axis
+  .attr('x1', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('y1', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + titleHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.dividerMargin / 2).attr('y2', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + titleHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.dividerMargin / 2).attr('class', 'descr-divider');
+  var descrBox = description.node().getBBox();
+  var width = Math.max(descrBox.width, titleBox.width);
+  descrLine.attr('x2', width + 3 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding); // const classBox = title.node().getBBox();
+
+  g.insert('rect', ':first-child').attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('width', width + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('height', descrBox.height + titleHeight + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.radius);
+  return g;
+};
+/**
+ * Adds the creates a box around the existing content and adds a
+ * panel for the id on top of the content.
+ */
+
+/**
+ * Function that creates an title row and a frame around a substate for a composit state diagram.
+ * The function returns a new d3 svg object with updated width and height properties;
+ * @param {*} g The d3 svg object for the substate to framed
+ * @param {*} stateDef The info about the
+ */
+
+var addTitleAndBox = function addTitleAndBox(g, stateDef, altBkg) {
+  var pad = Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding;
+  var dblPad = 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding;
+  var orgBox = g.node().getBBox();
+  var orgWidth = orgBox.width;
+  var orgX = orgBox.x;
+  var title = g.append('text').attr('x', 0).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.titleShift).attr('font-size', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.fontSize).attr('class', 'state-title').text(stateDef.id);
+  var titleBox = title.node().getBBox();
+  var titleWidth = titleBox.width + dblPad;
+  var width = Math.max(titleWidth, orgWidth); // + dblPad;
+
+  if (width === orgWidth) {
+    width = width + dblPad;
+  }
+
+  var startX; // const lineY = 1 - getConfig().state.textHeight;
+  // const descrLine = g
+  //   .append('line') // text label for the x axis
+  //   .attr('x1', 0)
+  //   .attr('y1', lineY)
+  //   .attr('y2', lineY)
+  //   .attr('class', 'descr-divider');
+
+  var graphBox = g.node().getBBox(); // descrLine.attr('x2', graphBox.width + getConfig().state.padding);
+
+  if (stateDef.doc) {// cnsole.warn(
+    //   stateDef.id,
+    //   'orgX: ',
+    //   orgX,
+    //   'width: ',
+    //   width,
+    //   'titleWidth: ',
+    //   titleWidth,
+    //   'orgWidth: ',
+    //   orgWidth,
+    //   'width',
+    //   width
+    // );
+  }
+
+  startX = orgX - pad;
+
+  if (titleWidth > orgWidth) {
+    startX = (orgWidth - width) / 2 + pad;
+  }
+
+  if (Math.abs(orgX - graphBox.x) < pad) {
+    if (titleWidth > orgWidth) {
+      startX = orgX - (titleWidth - orgWidth) / 2;
+    }
+  }
+
+  var lineY = 1 - Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight; // White color
+
+  g.insert('rect', ':first-child').attr('x', startX).attr('y', lineY).attr('class', altBkg ? 'alt-composit' : 'composit').attr('width', width).attr('height', graphBox.height + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.titleShift + 1).attr('rx', '0');
+  title.attr('x', startX + pad);
+  if (titleWidth <= orgWidth) title.attr('x', orgX + (width - dblPad) / 2 - titleWidth / 2 + pad); // Title background
+
+  g.insert('rect', ':first-child').attr('x', startX).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.titleShift - Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight - Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('width', width) // Just needs to be higher then the descr line, will be clipped by the white color box
+  .attr('height', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight * 3).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.radius); // Full background
+
+  g.insert('rect', ':first-child').attr('x', startX).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.titleShift - Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight - Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('width', width).attr('height', graphBox.height + 3 + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.textHeight).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.radius);
+  return g;
+};
+
+var drawEndState = function drawEndState(g) {
+  g.append('circle') // .style('stroke', 'black')
+  // .style('fill', 'white')
+  .attr('class', 'end-state-outer').attr('r', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.miniPadding).attr('cx', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.miniPadding).attr('cy', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.miniPadding);
+  return g.append('circle') // .style('stroke', 'black')
+  // .style('fill', 'black')
+  .attr('class', 'end-state-inner').attr('r', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit).attr('cx', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit + 2).attr('cy', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.sizeUnit + 2);
+};
+
+var drawForkJoinState = function drawForkJoinState(g, stateDef) {
+  var width = Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.forkWidth;
+  var height = Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.forkHeight;
+
+  if (stateDef.parentId) {
+    var tmp = width;
+    width = height;
+    height = tmp;
+  }
+
+  return g.append('rect').style('stroke', 'black').style('fill', 'black').attr('width', width).attr('height', height).attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding);
+};
+
+var drawText = function drawText(elem, textData) {
+  // Remove and ignore br:s
+  var nText = textData.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_4__["default"].lineBreakRegex, ' ');
+  var textElem = elem.append('text');
+  textElem.attr('x', textData.x);
+  textElem.attr('y', textData.y);
+  textElem.style('text-anchor', textData.anchor);
+  textElem.attr('fill', textData.fill);
+
+  if (typeof textData.class !== 'undefined') {
+    textElem.attr('class', textData.class);
+  }
+
+  var span = textElem.append('tspan');
+  span.attr('x', textData.x + textData.textMargin * 2);
+  span.attr('fill', textData.fill);
+  span.text(nText);
+  return textElem;
+};
+
+var _drawLongText = function _drawLongText(_text, x, y, g) {
+  var textHeight = 0;
+  var textElem = g.append('text');
+  textElem.style('text-anchor', 'start');
+  textElem.attr('class', 'noteText');
+
+  var text = _text.replace(/\r\n/g, '<br/>');
+
+  text = text.replace(/\n/g, '<br/>');
+  var lines = text.split(_common_common__WEBPACK_IMPORTED_MODULE_4__["default"].lineBreakRegex);
+  var tHeight = 1.25 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.noteMargin;
+  var _iteratorNormalCompletion = true;
+  var _didIteratorError = false;
+  var _iteratorError = undefined;
+
+  try {
+    for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+      var _line = _step.value;
+
+      var txt = _line.trim();
+
+      if (txt.length > 0) {
+        var span = textElem.append('tspan');
+        span.text(txt);
+
+        if (tHeight === 0) {
+          var textBounds = span.node().getBBox();
+          tHeight += textBounds.height;
+        }
+
+        textHeight += tHeight;
+        span.attr('x', x + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.noteMargin);
+        span.attr('y', y + textHeight + 1.25 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.noteMargin);
+      }
+    }
+  } catch (err) {
+    _didIteratorError = true;
+    _iteratorError = err;
+  } finally {
+    try {
+      if (!_iteratorNormalCompletion && _iterator.return != null) {
+        _iterator.return();
+      }
+    } finally {
+      if (_didIteratorError) {
+        throw _iteratorError;
+      }
+    }
+  }
+
+  return {
+    textWidth: textElem.node().getBBox().width,
+    textHeight: textHeight
+  };
+};
+/**
+ * Draws a note to the diagram
+ * @param text - The text of the given note.
+ * @param g - The element the note is attached to.
+ */
+
+
+var drawNote = function drawNote(text, g) {
+  g.attr('class', 'state-note');
+  var note = g.append('rect').attr('x', 0).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding);
+  var rectElem = g.append('g');
+
+  var _drawLongText2 = _drawLongText(text, 0, 0, rectElem),
+      textWidth = _drawLongText2.textWidth,
+      textHeight = _drawLongText2.textHeight;
+
+  note.attr('height', textHeight + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.noteMargin);
+  note.attr('width', textWidth + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.noteMargin * 2);
+  return note;
+};
+/**
+ * Starting point for drawing a state. The function finds out the specifics
+ * about the state and renders with approprtiate function.
+ * @param {*} elem
+ * @param {*} stateDef
+ */
+
+var drawState = function drawState(elem, stateDef) {
+  var id = stateDef.id;
+  var stateInfo = {
+    id: id,
+    label: stateDef.id,
+    width: 0,
+    height: 0
+  };
+  var g = elem.append('g').attr('id', id).attr('class', 'stateGroup');
+  if (stateDef.type === 'start') drawStartState(g);
+  if (stateDef.type === 'end') drawEndState(g);
+  if (stateDef.type === 'fork' || stateDef.type === 'join') drawForkJoinState(g, stateDef);
+  if (stateDef.type === 'note') drawNote(stateDef.note.text, g);
+  if (stateDef.type === 'divider') drawDivider(g);
+  if (stateDef.type === 'default' && stateDef.descriptions.length === 0) drawSimpleState(g, stateDef);
+  if (stateDef.type === 'default' && stateDef.descriptions.length > 0) drawDescrState(g, stateDef);
+  var stateBox = g.node().getBBox();
+  stateInfo.width = stateBox.width + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding;
+  stateInfo.height = stateBox.height + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding;
+  _id_cache_js__WEBPACK_IMPORTED_MODULE_1__["default"].set(id, stateInfo); // stateCnt++;
+
+  return stateInfo;
+};
+var edgeCount = 0;
+var drawEdge = function drawEdge(elem, path, relation) {
+  var getRelationType = function getRelationType(type) {
+    switch (type) {
+      case _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].relationType.AGGREGATION:
+        return 'aggregation';
+
+      case _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].relationType.EXTENSION:
+        return 'extension';
+
+      case _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].relationType.COMPOSITION:
+        return 'composition';
+
+      case _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].relationType.DEPENDENCY:
+        return 'dependency';
+    }
+  };
+
+  path.points = path.points.filter(function (p) {
+    return !Number.isNaN(p.y);
+  }); // The data for our line
+
+  var lineData = path.points; // This is the accessor function we talked about above
+
+  var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_0__["line"])().x(function (d) {
+    return d.x;
+  }).y(function (d) {
+    return d.y;
+  }).curve(d3__WEBPACK_IMPORTED_MODULE_0__["curveBasis"]);
+  var svgPath = elem.append('path').attr('d', lineFunction(lineData)).attr('id', 'edge' + edgeCount).attr('class', 'transition');
+  var url = '';
+
+  if (Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.arrowMarkerAbsolute) {
+    url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
+    url = url.replace(/\(/g, '\\(');
+    url = url.replace(/\)/g, '\\)');
+  }
+
+  svgPath.attr('marker-end', 'url(' + url + '#' + getRelationType(_stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].relationType.DEPENDENCY) + 'End' + ')');
+
+  if (typeof relation.title !== 'undefined') {
+    var label = elem.append('g').attr('class', 'stateLabel');
+
+    var _utils$calcLabelPosit = _utils__WEBPACK_IMPORTED_MODULE_3__["default"].calcLabelPosition(path.points),
+        x = _utils$calcLabelPosit.x,
+        y = _utils$calcLabelPosit.y;
+
+    var rows = _common_common__WEBPACK_IMPORTED_MODULE_4__["default"].getRows(relation.title);
+    var titleHeight = 0;
+    var titleRows = [];
+    var maxWidth = 0;
+    var minX = 0;
+
+    for (var i = 0; i <= rows.length; i++) {
+      var title = label.append('text').attr('text-anchor', 'middle').text(rows[i]).attr('x', x).attr('y', y + titleHeight);
+      var boundstmp = title.node().getBBox();
+      maxWidth = Math.max(maxWidth, boundstmp.width);
+      minX = Math.min(minX, boundstmp.x);
+      _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info(boundstmp.x, x, y + titleHeight);
+
+      if (titleHeight === 0) {
+        var titleBox = title.node().getBBox();
+        titleHeight = titleBox.height;
+        _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info('Title height', titleHeight, y);
+      }
+
+      titleRows.push(title);
+    }
+
+    var boxHeight = titleHeight * rows.length;
+
+    if (rows.length > 1) {
+      var heightAdj = (rows.length - 1) * titleHeight * 0.5;
+      titleRows.forEach(function (title, i) {
+        return title.attr('y', y + i * titleHeight - heightAdj);
+      });
+      boxHeight = titleHeight * rows.length;
+    }
+
+    var bounds = label.node().getBBox();
+    label.insert('rect', ':first-child').attr('class', 'box').attr('x', x - maxWidth / 2 - Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding / 2).attr('y', y - boxHeight / 2 - Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding / 2 - 3.5).attr('width', maxWidth + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding).attr('height', boxHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__["getConfig"])().state.padding);
+    _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info(bounds); //label.attr('transform', '0 -' + (bounds.y / 2));
+    // Debug points
+    // path.points.forEach(point => {
+    //   g.append('circle')
+    //     .style('stroke', 'red')
+    //     .style('fill', 'red')
+    //     .attr('r', 1)
+    //     .attr('cx', point.x)
+    //     .attr('cy', point.y);
+    // });
+    // g.append('circle')
+    //   .style('stroke', 'blue')
+    //   .style('fill', 'blue')
+    //   .attr('r', 1)
+    //   .attr('cx', x)
+    //   .attr('cy', y);
+  }
+
+  edgeCount++;
+};
+
+/***/ }),
+
+/***/ "./src/diagrams/state/stateDb.js":
+/*!***************************************!*\
+  !*** ./src/diagrams/state/stateDb.js ***!
+  \***************************************/
+/*! exports provided: parseDirective, addState, clear, getState, getStates, logDocuments, getRelations, addRelation, cleanupLabel, lineType, relationType, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addState", function() { return addState; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getState", function() { return getState; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getStates", function() { return getStates; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "logDocuments", function() { return logDocuments; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRelations", function() { return getRelations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addRelation", function() { return addRelation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cleanupLabel", function() { return cleanupLabel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lineType", function() { return lineType; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "relationType", function() { return relationType; });
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+
+
+
+
+
+var clone = function clone(o) {
+  return JSON.parse(JSON.stringify(o));
+};
+
+var rootDoc = [];
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__["default"].parseDirective(this, statement, context, type);
+};
+
+var setRootDoc = function setRootDoc(o) {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Setting root doc', o); // rootDoc = { id: 'root', doc: o };
+
+  rootDoc = o;
+};
+
+var getRootDoc = function getRootDoc() {
+  return rootDoc;
+};
+
+var docTranslator = function docTranslator(parent, node, first) {
+  if (node.stmt === 'relation') {
+    docTranslator(parent, node.state1, true);
+    docTranslator(parent, node.state2, false);
+  } else {
+    if (node.stmt === 'state') {
+      if (node.id === '[*]') {
+        node.id = first ? parent.id + '_start' : parent.id + '_end';
+        node.start = first;
+      }
+    }
+
+    if (node.doc) {
+      var doc = []; // Check for concurrency
+
+      var i = 0;
+      var currentDoc = [];
+
+      for (i = 0; i < node.doc.length; i++) {
+        if (node.doc[i].type === 'divider') {
+          // debugger;
+          var newNode = clone(node.doc[i]);
+          newNode.doc = clone(currentDoc);
+          doc.push(newNode);
+          currentDoc = [];
+        } else {
+          currentDoc.push(node.doc[i]);
+        }
+      } // If any divider was encountered
+
+
+      if (doc.length > 0 && currentDoc.length > 0) {
+        var _newNode = {
+          stmt: 'state',
+          id: Object(_utils__WEBPACK_IMPORTED_MODULE_1__["generateId"])(),
+          type: 'divider',
+          doc: clone(currentDoc)
+        };
+        doc.push(clone(_newNode));
+        node.doc = doc;
+      }
+
+      node.doc.forEach(function (docNode) {
+        return docTranslator(node, docNode, true);
+      });
+    }
+  }
+};
+
+var getRootDocV2 = function getRootDocV2() {
+  docTranslator({
+    id: 'root'
+  }, {
+    id: 'root',
+    doc: rootDoc
+  }, true);
+  return {
+    id: 'root',
+    doc: rootDoc
+  };
+};
+
+var extract = function extract(_doc) {
+  // const res = { states: [], relations: [] };
+  var doc;
+
+  if (_doc.doc) {
+    doc = _doc.doc;
+  } else {
+    doc = _doc;
+  } // let doc = root.doc;
+  // if (!doc) {
+  //   doc = root;
+  // }
+
+
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info(doc);
+  clear();
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Extract', doc);
+  doc.forEach(function (item) {
+    if (item.stmt === 'state') {
+      addState(item.id, item.type, item.doc, item.description, item.note);
+    }
+
+    if (item.stmt === 'relation') {
+      addRelation(item.state1.id, item.state2.id, item.description);
+    }
+  });
+};
+
+var newDoc = function newDoc() {
+  return {
+    relations: [],
+    states: {},
+    documents: {}
+  };
+};
+
+var documents = {
+  root: newDoc()
+};
+var currentDocument = documents.root;
+var startCnt = 0;
+var endCnt = 0; // eslint-disable-line
+// let stateCnt = 0;
+
+/**
+ * Function called by parser when a node definition has been found.
+ * @param id
+ * @param text
+ * @param type
+ * @param style
+ */
+
+var addState = function addState(id, type, doc, descr, note) {
+  if (typeof currentDocument.states[id] === 'undefined') {
+    currentDocument.states[id] = {
+      id: id,
+      descriptions: [],
+      type: type,
+      doc: doc,
+      note: note
+    };
+  } else {
+    if (!currentDocument.states[id].doc) {
+      currentDocument.states[id].doc = doc;
+    }
+
+    if (!currentDocument.states[id].type) {
+      currentDocument.states[id].type = type;
+    }
+  }
+
+  if (descr) {
+    _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Adding state ', id, descr);
+    if (typeof descr === 'string') addDescription(id, descr.trim());
+
+    if (_typeof(descr) === 'object') {
+      descr.forEach(function (des) {
+        return addDescription(id, des.trim());
+      });
+    }
+  }
+
+  if (note) currentDocument.states[id].note = note;
+};
+var clear = function clear() {
+  documents = {
+    root: newDoc()
+  };
+  currentDocument = documents.root;
+  currentDocument = documents.root;
+  startCnt = 0;
+  endCnt = 0; // eslint-disable-line
+
+  classes = [];
+};
+var getState = function getState(id) {
+  return currentDocument.states[id];
+};
+var getStates = function getStates() {
+  return currentDocument.states;
+};
+var logDocuments = function logDocuments() {
+  _logger__WEBPACK_IMPORTED_MODULE_0__["logger"].info('Documents = ', documents);
+};
+var getRelations = function getRelations() {
+  return currentDocument.relations;
+};
+var addRelation = function addRelation(_id1, _id2, title) {
+  var id1 = _id1;
+  var id2 = _id2;
+  var type1 = 'default';
+  var type2 = 'default';
+
+  if (_id1 === '[*]') {
+    startCnt++;
+    id1 = 'start' + startCnt;
+    type1 = 'start';
+  }
+
+  if (_id2 === '[*]') {
+    endCnt++;
+    id2 = 'end' + startCnt;
+    type2 = 'end';
+  }
+
+  addState(id1, type1);
+  addState(id2, type2);
+  currentDocument.relations.push({
+    id1: id1,
+    id2: id2,
+    title: title
+  });
+};
+
+var addDescription = function addDescription(id, _descr) {
+  var theState = currentDocument.states[id];
+  var descr = _descr;
+
+  if (descr[0] === ':') {
+    descr = descr.substr(1).trim();
+  }
+
+  theState.descriptions.push(descr);
+};
+
+var cleanupLabel = function cleanupLabel(label) {
+  if (label.substring(0, 1) === ':') {
+    return label.substr(2).trim();
+  } else {
+    return label.trim();
+  }
+};
+var lineType = {
+  LINE: 0,
+  DOTTED_LINE: 1
+};
+var dividerCnt = 0;
+
+var getDividerId = function getDividerId() {
+  dividerCnt++;
+  return 'divider-id-' + dividerCnt;
+};
+
+var classes = [];
+
+var getClasses = function getClasses() {
+  return classes;
+};
+
+var getDirection = function getDirection() {
+  return 'TB';
+};
+
+var relationType = {
+  AGGREGATION: 0,
+  EXTENSION: 1,
+  COMPOSITION: 2,
+  DEPENDENCY: 3
+};
+
+var trimColon = function trimColon(str) {
+  return str && str[0] === ':' ? str.substr(1).trim() : str.trim();
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  parseDirective: parseDirective,
+  getConfig: function getConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_3__["getConfig"]().state;
+  },
+  addState: addState,
+  clear: clear,
+  getState: getState,
+  getStates: getStates,
+  getRelations: getRelations,
+  getClasses: getClasses,
+  getDirection: getDirection,
+  addRelation: addRelation,
+  getDividerId: getDividerId,
+  // addDescription,
+  cleanupLabel: cleanupLabel,
+  lineType: lineType,
+  relationType: relationType,
+  logDocuments: logDocuments,
+  getRootDoc: getRootDoc,
+  setRootDoc: setRootDoc,
+  getRootDocV2: getRootDocV2,
+  extract: extract,
+  trimColon: trimColon
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/state/stateRenderer-v2.js":
+/*!************************************************!*\
+  !*** ./src/diagrams/state/stateRenderer-v2.js ***!
+  \************************************************/
+/*! exports provided: setConf, getClasses, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getClasses", function() { return getClasses; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _stateDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stateDb */ "./src/diagrams/state/stateDb.js");
+/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/stateDiagram */ "./src/diagrams/state/parser/stateDiagram.jison");
+/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../dagre-wrapper/index.js */ "./src/dagre-wrapper/index.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+
+
+
+var conf = {};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+
+  for (var i = 0; i < keys.length; i++) {
+    conf[keys[i]] = cnf[keys[i]];
+  }
+};
+var nodeDb = {};
+/**
+ * Returns the all the styles from classDef statements in the graph definition.
+ * @returns {object} classDef styles
+ */
+
+var getClasses = function getClasses(text) {
+  _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].trace('Extracting classes');
+  _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].clear();
+  var parser = _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3___default.a.parser;
+  parser.yy = _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"]; // Parse the graph definition
+
+  parser.parse(text);
+  return _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].getClasses();
+};
+
+var setupNode = function setupNode(g, parent, node, altFlag) {
+  // Add the node
+  if (node.id !== 'root') {
+    var shape = 'rect';
+
+    if (node.start === true) {
+      shape = 'start';
+    }
+
+    if (node.start === false) {
+      shape = 'end';
+    }
+
+    if (node.type !== 'default') {
+      shape = node.type;
+    }
+
+    if (!nodeDb[node.id]) {
+      nodeDb[node.id] = {
+        id: node.id,
+        shape: shape,
+        description: node.id,
+        classes: 'statediagram-state'
+      };
+    } // Build of the array of description strings accordinging
+
+
+    if (node.description) {
+      if (Array.isArray(nodeDb[node.id].description)) {
+        // There already is an array of strings,add to it
+        nodeDb[node.id].shape = 'rectWithTitle';
+        nodeDb[node.id].description.push(node.description);
+      } else {
+        if (nodeDb[node.id].description.length > 0) {
+          // if there is a description already transformit to an array
+          nodeDb[node.id].shape = 'rectWithTitle';
+
+          if (nodeDb[node.id].description === node.id) {
+            // If the previous description was the is, remove it
+            nodeDb[node.id].description = [node.description];
+          } else {
+            nodeDb[node.id].description = [nodeDb[node.id].description, node.description];
+          }
+        } else {
+          nodeDb[node.id].shape = 'rect';
+          nodeDb[node.id].description = node.description;
+        }
+      }
+    } // Save data for description and group so that for instance a statement without description overwrites
+    // one with description
+    // group
+
+
+    if (!nodeDb[node.id].type && node.doc) {
+      _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info('Setting cluser for ', node.id);
+      nodeDb[node.id].type = 'group';
+      nodeDb[node.id].shape = node.type === 'divider' ? 'divider' : 'roundedWithTitle';
+      nodeDb[node.id].classes = nodeDb[node.id].classes + ' ' + (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster');
+    }
+
+    var nodeData = {
+      labelStyle: '',
+      shape: nodeDb[node.id].shape,
+      labelText: nodeDb[node.id].description,
+      classes: nodeDb[node.id].classes,
+      //classStr,
+      style: '',
+      //styles.style,
+      id: node.id,
+      domId: 'state-' + node.id + '-' + cnt,
+      type: nodeDb[node.id].type,
+      padding: 15 //getConfig().flowchart.padding
+
+    };
+
+    if (node.note) {
+      // Todo: set random id
+      var noteData = {
+        labelStyle: '',
+        shape: 'note',
+        labelText: node.note.text,
+        classes: 'statediagram-note',
+        //classStr,
+        style: '',
+        //styles.style,
+        id: node.id + '----note',
+        domId: 'state-' + node.id + '----note-' + cnt,
+        type: nodeDb[node.id].type,
+        padding: 15 //getConfig().flowchart.padding
+
+      };
+      var groupData = {
+        labelStyle: '',
+        shape: 'noteGroup',
+        labelText: node.note.text,
+        classes: nodeDb[node.id].classes,
+        //classStr,
+        style: '',
+        //styles.style,
+        id: node.id + '----parent',
+        domId: 'state-' + node.id + '----parent-' + cnt,
+        type: 'group',
+        padding: 0 //getConfig().flowchart.padding
+
+      };
+      cnt++;
+      g.setNode(node.id + '----parent', groupData);
+      g.setNode(noteData.id, noteData);
+      g.setNode(node.id, nodeData);
+      g.setParent(node.id, node.id + '----parent');
+      g.setParent(noteData.id, node.id + '----parent');
+      var from = node.id;
+      var to = noteData.id;
+
+      if (node.note.position === 'left of') {
+        from = noteData.id;
+        to = node.id;
+      }
+
+      g.setEdge(from, to, {
+        arrowhead: 'none',
+        arrowType: '',
+        style: 'fill:none',
+        labelStyle: '',
+        classes: 'transition note-edge',
+        arrowheadStyle: 'fill: #333',
+        labelpos: 'c',
+        labelType: 'text',
+        thickness: 'normal'
+      });
+    } else {
+      g.setNode(node.id, nodeData);
+    }
+  }
+
+  if (parent) {
+    if (parent.id !== 'root') {
+      _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info('Setting node ', node.id, ' to be child of its parent ', parent.id);
+      g.setParent(node.id, parent.id);
+    }
+  }
+
+  if (node.doc) {
+    _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info('Adding nodes children ');
+    setupDoc(g, node, node.doc, !altFlag);
+  }
+};
+
+var cnt = 0;
+
+var setupDoc = function setupDoc(g, parent, doc, altFlag) {
+  cnt = 0;
+  _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].trace('items', doc);
+  doc.forEach(function (item) {
+    if (item.stmt === 'state' || item.stmt === 'default') {
+      setupNode(g, parent, item, altFlag);
+    } else if (item.stmt === 'relation') {
+      setupNode(g, parent, item.state1, altFlag);
+      setupNode(g, parent, item.state2, altFlag);
+      var edgeData = {
+        id: 'edge' + cnt,
+        arrowhead: 'normal',
+        arrowTypeEnd: 'arrow_barb',
+        style: 'fill:none',
+        labelStyle: '',
+        label: item.description,
+        arrowheadStyle: 'fill: #333',
+        labelpos: 'c',
+        labelType: 'text',
+        thickness: 'normal',
+        classes: 'transition'
+      };
+      var startId = item.state1.id;
+      var endId = item.state2.id;
+      g.setEdge(startId, endId, edgeData, cnt);
+      cnt++;
+    }
+  });
+};
+/**
+ * Draws a flowchart in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+
+var draw = function draw(text, id) {
+  _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info('Drawing state diagram (v2)', id);
+  _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].clear();
+  nodeDb = {};
+  var parser = _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3___default.a.parser;
+  parser.yy = _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"]; // Parse the graph definition
+
+  parser.parse(text); // Fetch the default direction, use TD if none was found
+
+  var dir = _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].getDirection();
+
+  if (typeof dir === 'undefined') {
+    dir = 'LR';
+  }
+
+  var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__["getConfig"])().state;
+  var nodeSpacing = conf.nodeSpacing || 50;
+  var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph
+
+  var g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({
+    multigraph: true,
+    compound: true
+  }).setGraph({
+    rankdir: 'TB',
+    nodesep: nodeSpacing,
+    ranksep: rankSpacing,
+    marginx: 8,
+    marginy: 8
+  }).setDefaultEdgeLabel(function () {
+    return {};
+  });
+  _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info(_stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].getRootDocV2());
+  _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].extract(_stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].getRootDocV2());
+  _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].info(_stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].getRootDocV2());
+  setupNode(g, undefined, _stateDb__WEBPACK_IMPORTED_MODULE_2__["default"].getRootDocV2(), true); // Set up an SVG group so that we can translate the final graph.
+
+  var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])("[id=\"".concat(id, "\"]")); // Run the renderer. This is what draws the final graph.
+
+  var element = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#' + id + ' g');
+  Object(_dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__["render"])(element, g, ['barb'], 'statediagram', id);
+  var padding = 8;
+  var bounds = svg.node().getBBox();
+  var width = bounds.width + padding * 2;
+  var height = bounds.height + padding * 2; // Zoom in a bit
+
+  svg.attr('class', 'statediagram');
+  var svgBounds = svg.node().getBBox();
+  Object(_utils__WEBPACK_IMPORTED_MODULE_7__["configureSvgSize"])(svg, height, width * 1.75, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding
+
+  var vBox = "".concat(svgBounds.x - padding, " ").concat(svgBounds.y - padding, " ").concat(width, " ").concat(height);
+  _logger__WEBPACK_IMPORTED_MODULE_6__["logger"].debug("viewBox ".concat(vBox));
+  svg.attr('viewBox', vBox); // Add label rects for non html labels
+
+  if (!conf.htmlLabels) {
+    var labels = document.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
+
+    for (var k = 0; k < labels.length; k++) {
+      var label = labels[k]; // Get dimensions of label
+
+      var dim = label.getBBox();
+      var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
+      rect.setAttribute('rx', 0);
+      rect.setAttribute('ry', 0);
+      rect.setAttribute('width', dim.width);
+      rect.setAttribute('height', dim.height);
+      label.insertBefore(rect, label.firstChild);
+    }
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  getClasses: getClasses,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/state/stateRenderer.js":
+/*!*********************************************!*\
+  !*** ./src/diagrams/state/stateRenderer.js ***!
+  \*********************************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js");
+/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js");
+/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js");
+/* harmony import */ var _stateDb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stateDb */ "./src/diagrams/state/stateDb.js");
+/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/common */ "./src/diagrams/common/common.js");
+/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parser/stateDiagram */ "./src/diagrams/state/parser/stateDiagram.jison");
+/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shapes */ "./src/diagrams/state/shapes.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+
+ // import idCache from './id-cache';
+
+
+
+
+_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__["parser"].yy = _stateDb__WEBPACK_IMPORTED_MODULE_4__["default"]; // TODO Move conf object to main conf in mermaidAPI
+
+var conf;
+var transformationLog = {};
+var setConf = function setConf() {}; // Todo optimize
+
+/**
+ * Setup arrow head and define the marker. The result is appended to the svg.
+ */
+
+var insertMarkers = function insertMarkers(elem) {
+  elem.append('defs').append('marker').attr('id', 'dependencyEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');
+};
+/**
+ * Draws a flowchart in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+
+var draw = function draw(text, id) {
+  conf = Object(_config__WEBPACK_IMPORTED_MODULE_8__["getConfig"])().state;
+  _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__["parser"].yy.clear();
+  _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__["parser"].parse(text);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Rendering diagram ' + text); // Fetch the default direction, use TD if none was found
+
+  var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])("[id='".concat(id, "']"));
+  insertMarkers(diagram); // Layout graph, Create a new directed graph
+
+  var graph = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({
+    multigraph: true,
+    compound: true,
+    // acyclicer: 'greedy',
+    rankdir: 'RL' // ranksep: '20'
+
+  }); // Default to assigning a new object as a label for each new edge.
+
+  graph.setDefaultEdgeLabel(function () {
+    return {};
+  });
+  var rootDoc = _stateDb__WEBPACK_IMPORTED_MODULE_4__["default"].getRootDoc();
+  renderDoc(rootDoc, diagram, undefined, false);
+  var padding = conf.padding;
+  var bounds = diagram.node().getBBox();
+  var width = bounds.width + padding * 2;
+  var height = bounds.height + padding * 2; // zoom in a bit
+
+  var svgWidth = width * 1.75;
+  Object(_utils__WEBPACK_IMPORTED_MODULE_9__["configureSvgSize"])(diagram, height, svgWidth, conf.useMaxWidth);
+  diagram.attr('viewBox', "".concat(bounds.x - conf.padding, "  ").concat(bounds.y - conf.padding, " ") + width + ' ' + height);
+};
+
+var getLabelWidth = function getLabelWidth(text) {
+  return text ? text.length * conf.fontSizeFactor : 1;
+};
+
+var renderDoc = function renderDoc(doc, diagram, parentId, altBkg) {
+  // // Layout graph, Create a new directed graph
+  var graph = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({
+    compound: true,
+    multigraph: true
+  });
+  var i;
+  var edgeFreeDoc = true;
+
+  for (i = 0; i < doc.length; i++) {
+    if (doc[i].stmt === 'relation') {
+      edgeFreeDoc = false;
+      break;
+    }
+  } // Set an object for the graph label
+
+
+  if (parentId) graph.setGraph({
+    rankdir: 'LR',
+    multigraph: true,
+    compound: true,
+    // acyclicer: 'greedy',
+    ranker: 'tight-tree',
+    ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,
+    nodeSep: edgeFreeDoc ? 1 : 50,
+    isMultiGraph: true // ranksep: 5,
+    // nodesep: 1
+
+  });else {
+    graph.setGraph({
+      rankdir: 'TB',
+      multigraph: true,
+      compound: true,
+      // isCompound: true,
+      // acyclicer: 'greedy',
+      // ranker: 'longest-path'
+      ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,
+      nodeSep: edgeFreeDoc ? 1 : 50,
+      ranker: 'tight-tree',
+      // ranker: 'network-simplex'
+      isMultiGraph: true
+    });
+  } // Default to assigning a new object as a label for each new edge.
+
+  graph.setDefaultEdgeLabel(function () {
+    return {};
+  });
+  _stateDb__WEBPACK_IMPORTED_MODULE_4__["default"].extract(doc);
+  var states = _stateDb__WEBPACK_IMPORTED_MODULE_4__["default"].getStates();
+  var relations = _stateDb__WEBPACK_IMPORTED_MODULE_4__["default"].getRelations();
+  var keys = Object.keys(states);
+  var first = true;
+
+  for (var _i = 0; _i < keys.length; _i++) {
+    var stateDef = states[keys[_i]];
+
+    if (parentId) {
+      stateDef.parentId = parentId;
+    }
+
+    var node = void 0;
+
+    if (stateDef.doc) {
+      var sub = diagram.append('g').attr('id', stateDef.id).attr('class', 'stateGroup');
+      node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg);
+
+      if (first) {
+        // first = false;
+        sub = Object(_shapes__WEBPACK_IMPORTED_MODULE_7__["addTitleAndBox"])(sub, stateDef, altBkg);
+        var boxBounds = sub.node().getBBox();
+        node.width = boxBounds.width;
+        node.height = boxBounds.height + conf.padding / 2;
+        transformationLog[stateDef.id] = {
+          y: conf.compositTitleSize
+        };
+      } else {
+        // sub = addIdAndBox(sub, stateDef);
+        var _boxBounds = sub.node().getBBox();
+
+        node.width = _boxBounds.width;
+        node.height = _boxBounds.height; // transformationLog[stateDef.id] = { y: conf.compositTitleSize };
+      }
+    } else {
+      node = Object(_shapes__WEBPACK_IMPORTED_MODULE_7__["drawState"])(diagram, stateDef, graph);
+    }
+
+    if (stateDef.note) {
+      // Draw note note
+      var noteDef = {
+        descriptions: [],
+        id: stateDef.id + '-note',
+        note: stateDef.note,
+        type: 'note'
+      };
+      var note = Object(_shapes__WEBPACK_IMPORTED_MODULE_7__["drawState"])(diagram, noteDef, graph); // graph.setNode(node.id, node);
+
+      if (stateDef.note.position === 'left of') {
+        graph.setNode(node.id + '-note', note);
+        graph.setNode(node.id, node);
+      } else {
+        graph.setNode(node.id, node);
+        graph.setNode(node.id + '-note', note);
+      } // graph.setNode(node.id);
+
+
+      graph.setParent(node.id, node.id + '-group');
+      graph.setParent(node.id + '-note', node.id + '-group');
+    } else {
+      // Add nodes to the graph. The first argument is the node id. The second is
+      // metadata about the node. In this case we're going to add labels to each of
+      // our nodes.
+      graph.setNode(node.id, node);
+    }
+  }
+
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Count=', graph.nodeCount(), graph);
+  var cnt = 0;
+  relations.forEach(function (relation) {
+    cnt++;
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Setting edge', relation);
+    graph.setEdge(relation.id1, relation.id2, {
+      relation: relation,
+      width: getLabelWidth(relation.title),
+      height: conf.labelHeight * _common_common__WEBPACK_IMPORTED_MODULE_5__["default"].getRows(relation.title).length,
+      labelpos: 'c'
+    }, 'id' + cnt);
+  });
+  dagre__WEBPACK_IMPORTED_MODULE_1___default.a.layout(graph);
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Graph after layout', graph.nodes());
+  var svgElem = diagram.node();
+  graph.nodes().forEach(function (v) {
+    if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].warn('Node ' + v + ': ' + JSON.stringify(graph.node(v)));
+      Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + svgElem.id + ' #' + v).attr('transform', 'translate(' + (graph.node(v).x - graph.node(v).width / 2) + ',' + (graph.node(v).y + (transformationLog[v] ? transformationLog[v].y : 0) - graph.node(v).height / 2) + ' )');
+      Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + svgElem.id + ' #' + v).attr('data-x-shift', graph.node(v).x - graph.node(v).width / 2);
+      var dividers = document.querySelectorAll('#' + svgElem.id + ' #' + v + ' .divider');
+      dividers.forEach(function (divider) {
+        var parent = divider.parentElement;
+        var pWidth = 0;
+        var pShift = 0;
+
+        if (parent) {
+          if (parent.parentElement) pWidth = parent.parentElement.getBBox().width;
+          pShift = parseInt(parent.getAttribute('data-x-shift'), 10);
+
+          if (Number.isNaN(pShift)) {
+            pShift = 0;
+          }
+        }
+
+        divider.setAttribute('x1', 0 - pShift + 8);
+        divider.setAttribute('x2', pWidth - pShift - 8);
+      });
+    } else {
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('No Node ' + v + ': ' + JSON.stringify(graph.node(v)));
+    }
+  });
+  var stateBox = svgElem.getBBox();
+  graph.edges().forEach(function (e) {
+    if (typeof e !== 'undefined' && typeof graph.edge(e) !== 'undefined') {
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));
+      Object(_shapes__WEBPACK_IMPORTED_MODULE_7__["drawEdge"])(diagram, graph.edge(e), graph.edge(e).relation);
+    }
+  });
+  stateBox = svgElem.getBBox();
+  var stateInfo = {
+    id: parentId ? parentId : 'root',
+    label: parentId ? parentId : 'root',
+    width: 0,
+    height: 0
+  };
+  stateInfo.width = stateBox.width + 2 * conf.padding;
+  stateInfo.height = stateBox.height + 2 * conf.padding;
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Doc rendered', stateInfo, graph);
+  return stateInfo;
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/state/styles.js":
+/*!**************************************!*\
+  !*** ./src/diagrams/state/styles.js ***!
+  \**************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return "g.stateGroup text {\n  fill: ".concat(options.nodeBorder, ";\n  stroke: none;\n  font-size: 10px;\n}\ng.stateGroup text {\n  fill: ").concat(options.textColor, ";\n  stroke: none;\n  font-size: 10px;\n\n}\ng.stateGroup .state-title {\n  font-weight: bolder;\n  fill: ").concat(options.labelColor, ";\n}\n\ng.stateGroup rect {\n  fill: ").concat(options.mainBkg, ";\n  stroke: ").concat(options.nodeBorder, ";\n}\n\ng.stateGroup line {\n  stroke: ").concat(options.lineColor, ";\n  stroke-width: 1;\n}\n\n.transition {\n  stroke: ").concat(options.lineColor, ";\n  stroke-width: 1;\n  fill: none;\n}\n\n.stateGroup .composit {\n  fill: ").concat(options.background, ";\n  border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n  fill: #e0e0e0;\n  border-bottom: 1px\n}\n\n.state-note {\n  stroke: ").concat(options.noteBorderColor, ";\n  fill: ").concat(options.noteBkgColor, ";\n\n  text {\n    fill: black;\n    stroke: none;\n    font-size: 10px;\n  }\n}\n\n.stateLabel .box {\n  stroke: none;\n  stroke-width: 0;\n  fill: ").concat(options.mainBkg, ";\n  opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n  fill: ").concat(options.tertiaryColor, ";\n  opacity: 0.5;\n}\n.edgeLabel .label text {\n  fill: ").concat(options.tertiaryTextColor, ";\n}\n.label div .edgeLabel {\n  color: ").concat(options.tertiaryTextColor, ";\n}\n\n.stateLabel text {\n  fill: ").concat(options.labelColor, ";\n  font-size: 10px;\n  font-weight: bold;\n}\n\n.node circle.state-start {\n  fill: ").concat(options.lineColor, ";\n  stroke: black;\n}\n.node circle.state-end {\n  fill: ").concat(options.primaryBorderColor, ";\n  stroke: ").concat(options.background, ";\n  stroke-width: 1.5\n}\n.end-state-inner {\n  fill: ").concat(options.background, ";\n  // stroke: ").concat(options.background, ";\n  stroke-width: 1.5\n}\n\n.node rect {\n  fill: ").concat(options.mainBkg, ";\n  stroke: ").concat(options.nodeBorder, ";\n  stroke-width: 1px;\n}\n#statediagram-barbEnd {\n  fill: ").concat(options.lineColor, ";\n}\n\n.statediagram-cluster rect {\n  fill: ").concat(options.mainBkg, ";\n  stroke: ").concat(options.nodeBorder, ";\n  stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n  color: ").concat(options.textColor, ";\n}\n\n.statediagram-cluster rect.outer {\n  rx: 5px;\n  ry: 5px;\n}\n.statediagram-state .divider {\n  stroke: ").concat(options.nodeBorder, ";\n}\n\n.statediagram-state .title-state {\n  rx: 5px;\n  ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n  fill: ").concat(options.background, ";\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n  fill: #e0e0e0;\n}\n\n.statediagram-cluster .inner {\n  rx:0;\n  ry:0;\n}\n\n.statediagram-state rect.basic {\n  rx: 5px;\n  ry: 5px;\n}\n.statediagram-state rect.divider {\n  stroke-dasharray: 10,10;\n  fill: ").concat(options.altBackground ? options.altBackground : '#efefef', ";\n}\n\n.note-edge {\n  stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n  fill: ").concat(options.noteBkgColor, ";\n  stroke: ").concat(options.noteBorderColor, ";\n  stroke-width: 1px;\n  rx: 0;\n  ry: 0;\n}\n.statediagram-note rect {\n  fill: ").concat(options.noteBkgColor, ";\n  stroke: ").concat(options.noteBorderColor, ";\n  stroke-width: 1px;\n  rx: 0;\n  ry: 0;\n}\n\n.statediagram-note text {\n  fill: ").concat(options.noteTextColor, ";\n}\n\n.statediagram-note .nodeLabel {\n  color: ").concat(options.noteTextColor, ";\n}\n\n#dependencyStart, #dependencyEnd {\n  fill: ").concat(options.lineColor, ";\n  stroke: ").concat(options.lineColor, ";\n  stroke-width: 1;\n}\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/user-journey/journeyDb.js":
+/*!************************************************!*\
+  !*** ./src/diagrams/user-journey/journeyDb.js ***!
+  \************************************************/
+/*! exports provided: parseDirective, clear, setTitle, getTitle, addSection, getSections, getTasks, addTask, addTaskOrg, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDirective", function() { return parseDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clear", function() { return clear; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setTitle", function() { return setTitle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTitle", function() { return getTitle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSection", function() { return addSection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSections", function() { return getSections; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTasks", function() { return getTasks; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addTask", function() { return addTask; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addTaskOrg", function() { return addTaskOrg; });
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./src/config.js");
+function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
+
+function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
+
+
+
+var title = '';
+var currentSection = '';
+var sections = [];
+var tasks = [];
+var rawTasks = [];
+var parseDirective = function parseDirective(statement, context, type) {
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__["default"].parseDirective(this, statement, context, type);
+};
+var clear = function clear() {
+  sections.length = 0;
+  tasks.length = 0;
+  currentSection = '';
+  title = '';
+  rawTasks.length = 0;
+};
+var setTitle = function setTitle(txt) {
+  title = txt;
+};
+var getTitle = function getTitle() {
+  return title;
+};
+var addSection = function addSection(txt) {
+  currentSection = txt;
+  sections.push(txt);
+};
+var getSections = function getSections() {
+  return sections;
+};
+var getTasks = function getTasks() {
+  var allItemsProcessed = compileTasks();
+  var maxDepth = 100;
+  var iterationCount = 0;
+
+  while (!allItemsProcessed && iterationCount < maxDepth) {
+    allItemsProcessed = compileTasks();
+    iterationCount++;
+  }
+
+  tasks.push.apply(tasks, rawTasks);
+  return tasks;
+};
+
+var updateActors = function updateActors() {
+  var tempActors = [];
+  tasks.forEach(function (task) {
+    if (task.people) {
+      tempActors.push.apply(tempActors, _toConsumableArray(task.people));
+    }
+  });
+  var unique = new Set(tempActors);
+  return _toConsumableArray(unique).sort();
+};
+
+var addTask = function addTask(descr, taskData) {
+  var pieces = taskData.substr(1).split(':');
+  var score = 0;
+  var peeps = [];
+
+  if (pieces.length === 1) {
+    score = Number(pieces[0]);
+    peeps = [];
+  } else {
+    score = Number(pieces[0]);
+    peeps = pieces[1].split(',');
+  }
+
+  var peopleList = peeps.map(function (s) {
+    return s.trim();
+  });
+  var rawTask = {
+    section: currentSection,
+    type: currentSection,
+    people: peopleList,
+    task: descr,
+    score: score
+  };
+  rawTasks.push(rawTask);
+};
+var addTaskOrg = function addTaskOrg(descr) {
+  var newTask = {
+    section: currentSection,
+    type: currentSection,
+    description: descr,
+    task: descr,
+    classes: []
+  };
+  tasks.push(newTask);
+};
+
+var compileTasks = function compileTasks() {
+  var compileTask = function compileTask(pos) {
+    return rawTasks[pos].processed;
+  };
+
+  var allProcessed = true;
+
+  for (var i = 0; i < rawTasks.length; i++) {
+    compileTask(i);
+    allProcessed = allProcessed && rawTasks[i].processed;
+  }
+
+  return allProcessed;
+};
+
+var getActors = function getActors() {
+  return updateActors();
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  parseDirective: parseDirective,
+  getConfig: function getConfig() {
+    return _config__WEBPACK_IMPORTED_MODULE_1__["getConfig"]().journey;
+  },
+  clear: clear,
+  setTitle: setTitle,
+  getTitle: getTitle,
+  addSection: addSection,
+  getSections: getSections,
+  getTasks: getTasks,
+  addTask: addTask,
+  addTaskOrg: addTaskOrg,
+  getActors: getActors
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/user-journey/journeyRenderer.js":
+/*!******************************************************!*\
+  !*** ./src/diagrams/user-journey/journeyRenderer.js ***!
+  \******************************************************/
+/*! exports provided: setConf, draw, bounds, drawTasks, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bounds", function() { return bounds; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawTasks", function() { return drawTasks; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _parser_journey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parser/journey */ "./src/diagrams/user-journey/parser/journey.jison");
+/* harmony import */ var _parser_journey__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_parser_journey__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _journeyDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./journeyDb */ "./src/diagrams/user-journey/journeyDb.js");
+/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./svgDraw */ "./src/diagrams/user-journey/svgDraw.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils.js");
+
+
+
+
+
+_parser_journey__WEBPACK_IMPORTED_MODULE_1__["parser"].yy = _journeyDb__WEBPACK_IMPORTED_MODULE_2__["default"];
+var conf = {
+  leftMargin: 150,
+  diagramMarginX: 50,
+  diagramMarginY: 20,
+  // Margin between tasks
+  taskMargin: 50,
+  // Width of task boxes
+  width: 150,
+  // Height of task boxes
+  height: 50,
+  taskFontSize: 14,
+  taskFontFamily: '"Open-Sans", "sans-serif"',
+  // Margin around loop boxes
+  boxMargin: 10,
+  boxTextMargin: 5,
+  noteMargin: 10,
+  // Space between messages
+  messageMargin: 35,
+  // Multiline message alignment
+  messageAlign: 'center',
+  // Depending on css styling this might need adjustment
+  // Projects the edge of the diagram downwards
+  bottomMarginAdj: 1,
+  // width of activation box
+  activationWidth: 10,
+  // text placement as: tspan | fo | old only text as before
+  textPlacement: 'fo',
+  actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],
+  sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],
+  sectionColours: ['#fff']
+};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+  keys.forEach(function (key) {
+    conf[key] = cnf[key];
+  });
+};
+var actors = {};
+
+function drawActorLegend(diagram) {
+  // Draw the actors
+  var yPos = 60;
+  Object.keys(actors).forEach(function (person) {
+    var colour = actors[person];
+    var circleData = {
+      cx: 20,
+      cy: yPos,
+      r: 7,
+      fill: colour,
+      stroke: '#000'
+    };
+    _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].drawCircle(diagram, circleData);
+    var labelData = {
+      x: 40,
+      y: yPos + 7,
+      fill: '#666',
+      text: person,
+      textMargin: conf.boxTextMargin | 5
+    };
+    _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].drawText(diagram, labelData);
+    yPos += 20;
+  });
+}
+
+var LEFT_MARGIN = conf.leftMargin;
+var draw = function draw(text, id) {
+  _parser_journey__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.clear();
+  _parser_journey__WEBPACK_IMPORTED_MODULE_1__["parser"].parse(text + '\n');
+  bounds.init();
+  var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + id);
+  diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');
+  _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].initGraphics(diagram);
+  var tasks = _parser_journey__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.getTasks();
+  var title = _parser_journey__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.getTitle();
+  var actorNames = _parser_journey__WEBPACK_IMPORTED_MODULE_1__["parser"].yy.getActors();
+
+  for (var member in actors) {
+    delete actors[member];
+  }
+
+  var actorPos = 0;
+  actorNames.forEach(function (actorName) {
+    actors[actorName] = conf.actorColours[actorPos % conf.actorColours.length];
+    actorPos++;
+  });
+  drawActorLegend(diagram);
+  bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);
+  drawTasks(diagram, tasks, 0);
+  var box = bounds.getBounds();
+
+  if (title) {
+    diagram.append('text').text(title).attr('x', LEFT_MARGIN).attr('font-size', '4ex').attr('font-weight', 'bold').attr('y', 25);
+  }
+
+  var height = box.stopy - box.starty + 2 * conf.diagramMarginY;
+  var width = LEFT_MARGIN + box.stopx + 2 * conf.diagramMarginX;
+  Object(_utils__WEBPACK_IMPORTED_MODULE_4__["configureSvgSize"])(diagram, height, width, conf.useMaxWidth); // Draw activity line
+
+  diagram.append('line').attr('x1', LEFT_MARGIN).attr('y1', conf.height * 4) // One section head + one task + margins
+  .attr('x2', width - LEFT_MARGIN - 4) // Subtract stroke width so arrow point is retained
+  .attr('y2', conf.height * 4).attr('stroke-width', 4).attr('stroke', 'black').attr('marker-end', 'url(#arrowhead)');
+  var extraVertForTitle = title ? 70 : 0;
+  diagram.attr('viewBox', "".concat(box.startx, " -25 ").concat(width, " ").concat(height + extraVertForTitle));
+  diagram.attr('preserveAspectRatio', 'xMinYMin meet');
+};
+var bounds = {
+  data: {
+    startx: undefined,
+    stopx: undefined,
+    starty: undefined,
+    stopy: undefined
+  },
+  verticalPos: 0,
+  sequenceItems: [],
+  init: function init() {
+    this.sequenceItems = [];
+    this.data = {
+      startx: undefined,
+      stopx: undefined,
+      starty: undefined,
+      stopy: undefined
+    };
+    this.verticalPos = 0;
+  },
+  updateVal: function updateVal(obj, key, val, fun) {
+    if (typeof obj[key] === 'undefined') {
+      obj[key] = val;
+    } else {
+      obj[key] = fun(val, obj[key]);
+    }
+  },
+  updateBounds: function updateBounds(startx, starty, stopx, stopy) {
+    var _self = this;
+
+    var cnt = 0;
+
+    function updateFn(type) {
+      return function updateItemBounds(item) {
+        cnt++; // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems
+
+        var n = _self.sequenceItems.length - cnt + 1;
+
+        _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);
+
+        _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);
+
+        _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);
+
+        _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);
+
+        if (!(type === 'activation')) {
+          _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);
+
+          _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);
+
+          _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);
+
+          _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);
+        }
+      };
+    }
+
+    this.sequenceItems.forEach(updateFn());
+  },
+  insert: function insert(startx, starty, stopx, stopy) {
+    var _startx = Math.min(startx, stopx);
+
+    var _stopx = Math.max(startx, stopx);
+
+    var _starty = Math.min(starty, stopy);
+
+    var _stopy = Math.max(starty, stopy);
+
+    this.updateVal(bounds.data, 'startx', _startx, Math.min);
+    this.updateVal(bounds.data, 'starty', _starty, Math.min);
+    this.updateVal(bounds.data, 'stopx', _stopx, Math.max);
+    this.updateVal(bounds.data, 'stopy', _stopy, Math.max);
+    this.updateBounds(_startx, _starty, _stopx, _stopy);
+  },
+  bumpVerticalPos: function bumpVerticalPos(bump) {
+    this.verticalPos = this.verticalPos + bump;
+    this.data.stopy = this.verticalPos;
+  },
+  getVerticalPos: function getVerticalPos() {
+    return this.verticalPos;
+  },
+  getBounds: function getBounds() {
+    return this.data;
+  }
+};
+var fills = conf.sectionFills;
+var textColours = conf.sectionColours;
+var drawTasks = function drawTasks(diagram, tasks, verticalPos) {
+  var lastSection = '';
+  var sectionVHeight = conf.height * 2 + conf.diagramMarginY;
+  var taskPos = verticalPos + sectionVHeight;
+  var sectionNumber = 0;
+  var fill = '#CCC';
+  var colour = 'black';
+  var num = 0; // Draw the tasks
+
+  for (var i = 0; i < tasks.length; i++) {
+    var task = tasks[i];
+
+    if (lastSection !== task.section) {
+      fill = fills[sectionNumber % fills.length];
+      num = sectionNumber % fills.length;
+      colour = textColours[sectionNumber % textColours.length];
+      var section = {
+        x: i * conf.taskMargin + i * conf.width + LEFT_MARGIN,
+        y: 50,
+        text: task.section,
+        fill: fill,
+        num: num,
+        colour: colour
+      };
+      _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].drawSection(diagram, section, conf);
+      lastSection = task.section;
+      sectionNumber++;
+    } // Collect the actors involved in the task
+
+
+    var taskActors = task.people.reduce(function (acc, actorName) {
+      if (actors[actorName]) {
+        acc[actorName] = actors[actorName];
+      }
+
+      return acc;
+    }, {}); // Add some rendering data to the object
+
+    task.x = i * conf.taskMargin + i * conf.width + LEFT_MARGIN;
+    task.y = taskPos;
+    task.width = conf.diagramMarginX;
+    task.height = conf.diagramMarginY;
+    task.colour = colour;
+    task.fill = fill;
+    task.num = num;
+    task.actors = taskActors; // Draw the box with the attached line
+
+    _svgDraw__WEBPACK_IMPORTED_MODULE_3__["default"].drawTask(diagram, task, conf);
+    bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/diagrams/user-journey/parser/journey.jison":
+/*!********************************************************!*\
+  !*** ./src/diagrams/user-journey/parser/journey.jison ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,19,21],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,21],$V7=[4,6,9,11,17,18,19,21];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"start":3,"journey":4,"document":5,"EOF":6,"directive":7,"line":8,"SPACE":9,"statement":10,"NEWLINE":11,"openDirective":12,"typeDirective":13,"closeDirective":14,":":15,"argDirective":16,"title":17,"section":18,"taskName":19,"taskData":20,"open_directive":21,"type_directive":22,"arg_directive":23,"close_directive":24,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},
+productions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+ return $$[$0-1]; 
+break;
+case 3:
+ this.$ = [] 
+break;
+case 4:
+$$[$0-1].push($$[$0]);this.$ = $$[$0-1]
+break;
+case 5: case 6:
+ this.$ = $$[$0] 
+break;
+case 7: case 8:
+ this.$=[];
+break;
+case 11:
+yy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);
+break;
+case 12:
+yy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);
+break;
+case 13:
+yy.addTask($$[$0-1], $$[$0]);this.$='task';
+break;
+case 15:
+ yy.parseDirective('%%{', 'open_directive'); 
+break;
+case 16:
+ yy.parseDirective($$[$0], 'type_directive'); 
+break;
+case 17:
+ $$[$0] = $$[$0].trim().replace(/'/g, '"'); yy.parseDirective($$[$0], 'arg_directive'); 
+break;
+case 18:
+ yy.parseDirective('}%%', 'close_directive', 'journey'); 
+break;
+}
+},
+table: [{3:1,4:$V0,7:3,12:4,21:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,21:$V1},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,21:$V1},{1:[2,2]},{14:19,15:[1,20],24:$V6},o([15,24],[2,16]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:18,10:22,12:4,17:$V3,18:$V4,19:$V5,21:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),{20:[1,23]},o($V2,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},o($V2,[2,5]),o($V2,[2,13]),o($V7,[2,9]),{14:27,24:$V6},{24:[2,17]},{11:[1,28]},o($V7,[2,10])],
+defaultActions: {5:[2,15],7:[2,2],21:[2,18],26:[2,17]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+            function lex() {
+            var token;
+            token = tstack.pop() || lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                if (token instanceof Array) {
+                    tstack = token;
+                    token = tstack.pop();
+                }
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        }
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+        if (typeof action === 'undefined' || !action.length || !action[0]) {
+            var errStr = '';
+            expected = [];
+            for (p in table[state]) {
+                if (this.terminals_[p] && p > TERROR) {
+                    expected.push('\'' + this.terminals_[p] + '\'');
+                }
+            }
+            if (lexer.showPosition) {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+            } else {
+                errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+            }
+            this.parseError(errStr, {
+                text: lexer.match,
+                token: this.terminals_[symbol] || symbol,
+                line: lexer.yylineno,
+                loc: yyloc,
+                expected: expected
+            });
+        }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+        if (this.yy.parser) {
+            this.yy.parser.parseError(str, hash);
+        } else {
+            throw new Error(str);
+        }
+    },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+        this.yy = yy || this.yy || {};
+        this._input = input;
+        this._more = this._backtrack = this.done = false;
+        this.yylineno = this.yyleng = 0;
+        this.yytext = this.matched = this.match = '';
+        this.conditionStack = ['INITIAL'];
+        this.yylloc = {
+            first_line: 1,
+            first_column: 0,
+            last_line: 1,
+            last_column: 0
+        };
+        if (this.options.ranges) {
+            this.yylloc.range = [0,0];
+        }
+        this.offset = 0;
+        return this;
+    },
+
+// consumes and returns one char from the input
+input:function () {
+        var ch = this._input[0];
+        this.yytext += ch;
+        this.yyleng++;
+        this.offset++;
+        this.match += ch;
+        this.matched += ch;
+        var lines = ch.match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno++;
+            this.yylloc.last_line++;
+        } else {
+            this.yylloc.last_column++;
+        }
+        if (this.options.ranges) {
+            this.yylloc.range[1]++;
+        }
+
+        this._input = this._input.slice(1);
+        return ch;
+    },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+        var len = ch.length;
+        var lines = ch.split(/(?:\r\n?|\n)/g);
+
+        this._input = ch + this._input;
+        this.yytext = this.yytext.substr(0, this.yytext.length - len);
+        //this.yyleng -= len;
+        this.offset -= len;
+        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+        this.match = this.match.substr(0, this.match.length - 1);
+        this.matched = this.matched.substr(0, this.matched.length - 1);
+
+        if (lines.length - 1) {
+            this.yylineno -= lines.length - 1;
+        }
+        var r = this.yylloc.range;
+
+        this.yylloc = {
+            first_line: this.yylloc.first_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.first_column,
+            last_column: lines ?
+                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
+              this.yylloc.first_column - len
+        };
+
+        if (this.options.ranges) {
+            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+        }
+        this.yyleng = this.yytext.length;
+        return this;
+    },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+        this._more = true;
+        return this;
+    },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+        if (this.options.backtrack_lexer) {
+            this._backtrack = true;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+
+        }
+        return this;
+    },
+
+// retain first n characters of the match
+less:function (n) {
+        this.unput(this.match.slice(n));
+    },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+        var past = this.matched.substr(0, this.matched.length - this.match.length);
+        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+    },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+        var next = this.match;
+        if (next.length < 20) {
+            next += this._input.substr(0, 20-next.length);
+        }
+        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+    },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+        var pre = this.pastInput();
+        var c = new Array(pre.length + 1).join("-");
+        return pre + this.upcomingInput() + "\n" + c + "^";
+    },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function(match, indexed_rule) {
+        var token,
+            lines,
+            backup;
+
+        if (this.options.backtrack_lexer) {
+            // save context
+            backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                    first_line: this.yylloc.first_line,
+                    last_line: this.last_line,
+                    first_column: this.yylloc.first_column,
+                    last_column: this.yylloc.last_column
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+            };
+            if (this.options.ranges) {
+                backup.yylloc.range = this.yylloc.range.slice(0);
+            }
+        }
+
+        lines = match[0].match(/(?:\r\n?|\n).*/g);
+        if (lines) {
+            this.yylineno += lines.length;
+        }
+        this.yylloc = {
+            first_line: this.yylloc.last_line,
+            last_line: this.yylineno + 1,
+            first_column: this.yylloc.last_column,
+            last_column: lines ?
+                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+                         this.yylloc.last_column + match[0].length
+        };
+        this.yytext += match[0];
+        this.match += match[0];
+        this.matches = match;
+        this.yyleng = this.yytext.length;
+        if (this.options.ranges) {
+            this.yylloc.range = [this.offset, this.offset += this.yyleng];
+        }
+        this._more = false;
+        this._backtrack = false;
+        this._input = this._input.slice(match[0].length);
+        this.matched += match[0];
+        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+        if (this.done && this._input) {
+            this.done = false;
+        }
+        if (token) {
+            return token;
+        } else if (this._backtrack) {
+            // recover context
+            for (var k in backup) {
+                this[k] = backup[k];
+            }
+            return false; // rule action called reject() implying the next rule should be tested instead.
+        }
+        return false;
+    },
+
+// return next match in input
+next:function () {
+        if (this.done) {
+            return this.EOF;
+        }
+        if (!this._input) {
+            this.done = true;
+        }
+
+        var token,
+            match,
+            tempMatch,
+            index;
+        if (!this._more) {
+            this.yytext = '';
+            this.match = '';
+        }
+        var rules = this._currentRules();
+        for (var i = 0; i < rules.length; i++) {
+            tempMatch = this._input.match(this.rules[rules[i]]);
+            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                    token = this.test_match(tempMatch, rules[i]);
+                    if (token !== false) {
+                        return token;
+                    } else if (this._backtrack) {
+                        match = false;
+                        continue; // rule action called reject() implying a rule MISmatch.
+                    } else {
+                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+                        return false;
+                    }
+                } else if (!this.options.flex) {
+                    break;
+                }
+            }
+        }
+        if (match) {
+            token = this.test_match(match, rules[index]);
+            if (token !== false) {
+                return token;
+            }
+            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+            return false;
+        }
+        if (this._input === "") {
+            return this.EOF;
+        } else {
+            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+                text: "",
+                token: null,
+                line: this.yylineno
+            });
+        }
+    },
+
+// return next match that has a token
+lex:function lex () {
+        var r = this.next();
+        if (r) {
+            return r;
+        } else {
+            return this.lex();
+        }
+    },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin (condition) {
+        this.conditionStack.push(condition);
+    },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState () {
+        var n = this.conditionStack.length - 1;
+        if (n > 0) {
+            return this.conditionStack.pop();
+        } else {
+            return this.conditionStack[0];
+        }
+    },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules () {
+        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+        } else {
+            return this.conditions["INITIAL"].rules;
+        }
+    },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState (n) {
+        n = this.conditionStack.length - 1 - Math.abs(n || 0);
+        if (n >= 0) {
+            return this.conditionStack[n];
+        } else {
+            return "INITIAL";
+        }
+    },
+
+// alias for begin(condition)
+pushState:function pushState (condition) {
+        this.begin(condition);
+    },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+        return this.conditionStack.length;
+    },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0: this.begin('open_directive'); return 21; 
+break;
+case 1: this.begin('type_directive'); return 22; 
+break;
+case 2: this.popState(); this.begin('arg_directive'); return 15; 
+break;
+case 3: this.popState(); this.popState(); return 24; 
+break;
+case 4:return 23;
+break;
+case 5:/* skip comments */
+break;
+case 6:/* skip comments */
+break;
+case 7:return 11;
+break;
+case 8:/* skip whitespace */
+break;
+case 9:/* skip comments */
+break;
+case 10:return 4;
+break;
+case 11:return 17;
+break;
+case 12:return 18;
+break;
+case 13:return 19;
+break;
+case 14:return 20;
+break;
+case 15:return 15;
+break;
+case 16:return 6;
+break;
+case 17:return 'INVALID';
+break;
+}
+},
+rules: [/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],
+conditions: {"open_directive":{"rules":[1],"inclusive":false},"type_directive":{"rules":[2,3],"inclusive":false},"arg_directive":{"rules":[3,4],"inclusive":false},"INITIAL":{"rules":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (true) {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function commonjsMain (args) {
+    if (!args[1]) {
+        console.log('Usage: '+args[0]+' FILE');
+        process.exit(1);
+    }
+    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
+    return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+  exports.main(process.argv.slice(1));
+}
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
+
+/***/ }),
+
+/***/ "./src/diagrams/user-journey/styles.js":
+/*!*********************************************!*\
+  !*** ./src/diagrams/user-journey/styles.js ***!
+  \*********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var getStyles = function getStyles(options) {
+  return ".label {\n    font-family: 'trebuchet ms', verdana, arial;\n    font-family: var(--mermaid-font-family);\n    color: ".concat(options.textColor, ";\n  }\n  .mouth {\n    stroke: #666;\n  }\n\n  line {\n    stroke: ").concat(options.textColor, "\n  }\n\n  .legend {\n    fill: ").concat(options.textColor, ";\n  }\n\n  .label text {\n    fill: #333;\n  }\n  .label {\n    color: ").concat(options.textColor, "\n  }\n\n  .face {\n    fill: #FFF8DC;\n    stroke: #999;\n  }\n\n  .node rect,\n  .node circle,\n  .node ellipse,\n  .node polygon,\n  .node path {\n    fill: ").concat(options.mainBkg, ";\n    stroke: ").concat(options.nodeBorder, ";\n    stroke-width: 1px;\n  }\n\n  .node .label {\n    text-align: center;\n  }\n  .node.clickable {\n    cursor: pointer;\n  }\n\n  .arrowheadPath {\n    fill: ").concat(options.arrowheadColor, ";\n  }\n\n  .edgePath .path {\n    stroke: ").concat(options.lineColor, ";\n    stroke-width: 1.5px;\n  }\n\n  .flowchart-link {\n    stroke: ").concat(options.lineColor, ";\n    fill: none;\n  }\n\n  .edgeLabel {\n    background-color: ").concat(options.edgeLabelBackground, ";\n    rect {\n      opacity: 0.5;\n    }\n    text-align: center;\n  }\n\n  .cluster rect {\n  }\n\n  .cluster text {\n    fill: ").concat(options.titleColor, ";\n  }\n\n  div.mermaidTooltip {\n    position: absolute;\n    text-align: center;\n    max-width: 200px;\n    padding: 2px;\n    font-family: 'trebuchet ms', verdana, arial;\n    font-family: var(--mermaid-font-family);\n    font-size: 12px;\n    background: ").concat(options.tertiaryColor, ";\n    border: 1px solid ").concat(options.border2, ";\n    border-radius: 2px;\n    pointer-events: none;\n    z-index: 100;\n  }\n\n  .task-type-0, .section-type-0  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType0) : '', ";\n  }\n  .task-type-1, .section-type-1  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType1) : '', ";\n  }\n  .task-type-2, .section-type-2  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType2) : '', ";\n  }\n  .task-type-3, .section-type-3  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType3) : '', ";\n  }\n  .task-type-4, .section-type-4  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType4) : '', ";\n  }\n  .task-type-5, .section-type-5  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType5) : '', ";\n  }\n  .task-type-6, .section-type-6  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType6) : '', ";\n  }\n  .task-type-7, .section-type-7  {\n    ").concat(options.fillType0 ? "fill: ".concat(options.fillType7) : '', ";\n  }\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/diagrams/user-journey/svgDraw.js":
+/*!**********************************************!*\
+  !*** ./src/diagrams/user-journey/svgDraw.js ***!
+  \**********************************************/
+/*! exports provided: drawRect, drawFace, drawCircle, drawText, drawLabel, drawSection, drawTask, drawBackgroundRect, getTextObj, getNoteRect, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawRect", function() { return drawRect; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawFace", function() { return drawFace; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawCircle", function() { return drawCircle; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawText", function() { return drawText; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawLabel", function() { return drawLabel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawSection", function() { return drawSection; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawTask", function() { return drawTask; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawBackgroundRect", function() { return drawBackgroundRect; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTextObj", function() { return getTextObj; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNoteRect", function() { return getNoteRect; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+
+var drawRect = function drawRect(elem, rectData) {
+  var rectElem = elem.append('rect');
+  rectElem.attr('x', rectData.x);
+  rectElem.attr('y', rectData.y);
+  rectElem.attr('fill', rectData.fill);
+  rectElem.attr('stroke', rectData.stroke);
+  rectElem.attr('width', rectData.width);
+  rectElem.attr('height', rectData.height);
+  rectElem.attr('rx', rectData.rx);
+  rectElem.attr('ry', rectData.ry);
+
+  if (typeof rectData.class !== 'undefined') {
+    rectElem.attr('class', rectData.class);
+  }
+
+  return rectElem;
+};
+var drawFace = function drawFace(element, faceData) {
+  var radius = 15;
+  var circleElement = element.append('circle').attr('cx', faceData.cx).attr('cy', faceData.cy).attr('class', 'face').attr('r', radius).attr('stroke-width', 2).attr('overflow', 'visible');
+  var face = element.append('g'); //left eye
+
+  face.append('circle').attr('cx', faceData.cx - radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666'); //right eye
+
+  face.append('circle').attr('cx', faceData.cx + radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666');
+
+  function smile(face) {
+    var arc = Object(d3__WEBPACK_IMPORTED_MODULE_0__["arc"])().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2); //mouth
+
+    face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');
+  }
+
+  function sad(face) {
+    var arc = Object(d3__WEBPACK_IMPORTED_MODULE_0__["arc"])().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2); //mouth
+
+    face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');
+  }
+
+  function ambivalent(face) {
+    face.append('line').attr('class', 'mouth').attr('stroke', 2).attr('x1', faceData.cx - 5).attr('y1', faceData.cy + 7).attr('x2', faceData.cx + 5).attr('y2', faceData.cy + 7).attr('class', 'mouth').attr('stroke-width', '1px').attr('stroke', '#666');
+  }
+
+  if (faceData.score > 3) {
+    smile(face);
+  } else if (faceData.score < 3) {
+    sad(face);
+  } else {
+    ambivalent(face);
+  }
+
+  return circleElement;
+};
+var drawCircle = function drawCircle(element, circleData) {
+  var circleElement = element.append('circle');
+  circleElement.attr('cx', circleData.cx);
+  circleElement.attr('cy', circleData.cy);
+  circleElement.attr('fill', circleData.fill);
+  circleElement.attr('stroke', circleData.stroke);
+  circleElement.attr('r', circleData.r);
+
+  if (typeof circleElement.class !== 'undefined') {
+    circleElement.attr('class', circleElement.class);
+  }
+
+  if (typeof circleData.title !== 'undefined') {
+    circleElement.append('title').text(circleData.title);
+  }
+
+  return circleElement;
+};
+var drawText = function drawText(elem, textData) {
+  // Remove and ignore br:s
+  var nText = textData.text.replace(/<br\s*\/?>/gi, ' ');
+  var textElem = elem.append('text');
+  textElem.attr('x', textData.x);
+  textElem.attr('y', textData.y);
+  textElem.attr('class', 'legend');
+  textElem.style('text-anchor', textData.anchor);
+
+  if (typeof textData.class !== 'undefined') {
+    textElem.attr('class', textData.class);
+  }
+
+  var span = textElem.append('tspan');
+  span.attr('x', textData.x + textData.textMargin * 2);
+  span.text(nText);
+  return textElem;
+};
+var drawLabel = function drawLabel(elem, txtObject) {
+  function genPoints(x, y, width, height, cut) {
+    return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height);
+  }
+
+  var polygon = elem.append('polygon');
+  polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));
+  polygon.attr('class', 'labelBox');
+  txtObject.y = txtObject.y + txtObject.labelMargin;
+  txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;
+  drawText(elem, txtObject);
+};
+var drawSection = function drawSection(elem, section, conf) {
+  var g = elem.append('g');
+  var rect = getNoteRect();
+  rect.x = section.x;
+  rect.y = section.y;
+  rect.fill = section.fill;
+  rect.width = conf.width;
+  rect.height = conf.height;
+  rect.class = 'journey-section section-type-' + section.num;
+  rect.rx = 3;
+  rect.ry = 3;
+  drawRect(g, rect);
+
+  _drawTextCandidateFunc(conf)(section.text, g, rect.x, rect.y, rect.width, rect.height, {
+    class: 'journey-section section-type-' + section.num
+  }, conf, section.colour);
+};
+var taskCount = -1;
+/**
+ * Draws an actor in the diagram with the attaced line
+ * @param elem The HTML element
+ * @param task The task to render
+ * @param conf The global configuration
+ */
+
+var drawTask = function drawTask(elem, task, conf) {
+  var center = task.x + conf.width / 2;
+  var g = elem.append('g');
+  taskCount++;
+  var maxHeight = 300 + 5 * 30;
+  g.append('line').attr('id', 'task' + taskCount).attr('x1', center).attr('y1', task.y).attr('x2', center).attr('y2', maxHeight).attr('class', 'task-line').attr('stroke-width', '1px').attr('stroke-dasharray', '4 2').attr('stroke', '#666');
+  drawFace(g, {
+    cx: center,
+    cy: 300 + (5 - task.score) * 30,
+    score: task.score
+  });
+  var rect = getNoteRect();
+  rect.x = task.x;
+  rect.y = task.y;
+  rect.fill = task.fill;
+  rect.width = conf.width;
+  rect.height = conf.height;
+  rect.class = 'task task-type-' + task.num;
+  rect.rx = 3;
+  rect.ry = 3;
+  drawRect(g, rect);
+  var xPos = task.x + 14;
+  task.people.forEach(function (person) {
+    var colour = task.actors[person];
+    var circle = {
+      cx: xPos,
+      cy: task.y,
+      r: 7,
+      fill: colour,
+      stroke: '#000',
+      title: person
+    };
+    drawCircle(g, circle);
+    xPos += 10;
+  });
+
+  _drawTextCandidateFunc(conf)(task.task, g, rect.x, rect.y, rect.width, rect.height, {
+    class: 'task'
+  }, conf, task.colour);
+};
+/**
+ * Draws a background rectangle
+ * @param elem The html element
+ * @param bounds The bounds of the drawing
+ */
+
+var drawBackgroundRect = function drawBackgroundRect(elem, bounds) {
+  var rectElem = drawRect(elem, {
+    x: bounds.startx,
+    y: bounds.starty,
+    width: bounds.stopx - bounds.startx,
+    height: bounds.stopy - bounds.starty,
+    fill: bounds.fill,
+    class: 'rect'
+  });
+  rectElem.lower();
+};
+var getTextObj = function getTextObj() {
+  return {
+    x: 0,
+    y: 0,
+    fill: undefined,
+    'text-anchor': 'start',
+    width: 100,
+    height: 100,
+    textMargin: 0,
+    rx: 0,
+    ry: 0
+  };
+};
+var getNoteRect = function getNoteRect() {
+  return {
+    x: 0,
+    y: 0,
+    width: 100,
+    anchor: 'start',
+    height: 100,
+    rx: 0,
+    ry: 0
+  };
+};
+
+var _drawTextCandidateFunc = function () {
+  function byText(content, g, x, y, width, height, textAttrs, colour) {
+    var text = g.append('text').attr('x', x + width / 2).attr('y', y + height / 2 + 5).style('font-color', colour).style('text-anchor', 'middle').text(content);
+
+    _setTextAttrs(text, textAttrs);
+  }
+
+  function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {
+    var taskFontSize = conf.taskFontSize,
+        taskFontFamily = conf.taskFontFamily;
+    var lines = content.split(/<br\s*\/?>/gi);
+
+    for (var i = 0; i < lines.length; i++) {
+      var dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;
+      var text = g.append('text').attr('x', x + width / 2).attr('y', y).attr('fill', colour).style('text-anchor', 'middle').style('font-size', taskFontSize).style('font-family', taskFontFamily);
+      text.append('tspan').attr('x', x + width / 2).attr('dy', dy).text(lines[i]);
+      text.attr('y', y + height / 2.0).attr('dominant-baseline', 'central').attr('alignment-baseline', 'central');
+
+      _setTextAttrs(text, textAttrs);
+    }
+  }
+
+  function byFo(content, g, x, y, width, height, textAttrs, conf) {
+    var body = g.append('switch');
+    var f = body.append('foreignObject').attr('x', x).attr('y', y).attr('width', width).attr('height', height).attr('position', 'fixed');
+    var text = f.append('div').style('display', 'table').style('height', '100%').style('width', '100%');
+    text.append('div').attr('class', 'label').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle') // .style('color', colour)
+    .text(content);
+    byTspan(content, body, x, y, width, height, textAttrs, conf);
+
+    _setTextAttrs(text, textAttrs);
+  }
+
+  function _setTextAttrs(toText, fromTextAttrsDict) {
+    for (var key in fromTextAttrsDict) {
+      if (key in fromTextAttrsDict) {
+        // eslint-disable-line
+        // noinspection JSUnfilteredForInLoop
+        toText.attr(key, fromTextAttrsDict[key]);
+      }
+    }
+  }
+
+  return function (conf) {
+    return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;
+  };
+}();
+
+var initGraphics = function initGraphics(graphics) {
+  graphics.append('defs').append('marker').attr('id', 'arrowhead').attr('refX', 5).attr('refY', 2).attr('markerWidth', 6).attr('markerHeight', 4).attr('orient', 'auto').append('path').attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead
+};
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  drawRect: drawRect,
+  drawCircle: drawCircle,
+  drawSection: drawSection,
+  drawText: drawText,
+  drawLabel: drawLabel,
+  drawTask: drawTask,
+  drawBackgroundRect: drawBackgroundRect,
+  getTextObj: getTextObj,
+  getNoteRect: getNoteRect,
+  initGraphics: initGraphics
+});
+
+/***/ }),
+
+/***/ "./src/errorRenderer.js":
+/*!******************************!*\
+  !*** ./src/errorRenderer.js ***!
+  \******************************/
+/*! exports provided: setConf, draw, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setConf", function() { return setConf; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return draw; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ "./src/logger.js");
+/**
+ * Created by knut on 14-12-11.
+ */
+
+
+var conf = {};
+var setConf = function setConf(cnf) {
+  var keys = Object.keys(cnf);
+  keys.forEach(function (key) {
+    conf[key] = cnf[key];
+  });
+};
+/**
+ * Draws a an info picture in the tag with id: id based on the graph definition in text.
+ * @param text
+ * @param id
+ */
+
+var draw = function draw(id, ver) {
+  try {
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].debug('Renering svg for syntax error\n');
+    var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('#' + id);
+    var g = svg.append('g');
+    g.append('path').attr('class', 'error-icon').attr('d', 'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z');
+    g.append('path').attr('class', 'error-icon').attr('d', 'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z');
+    g.append('path').attr('class', 'error-icon').attr('d', 'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z');
+    g.append('path').attr('class', 'error-icon').attr('d', 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z');
+    g.append('path').attr('class', 'error-icon').attr('d', 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z');
+    g.append('path').attr('class', 'error-icon').attr('d', 'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z');
+    g.append('text') // text label for the x axis
+    .attr('class', 'error-text').attr('x', 1240).attr('y', 250).attr('font-size', '150px').style('text-anchor', 'middle').text('Syntax error in graph');
+    g.append('text') // text label for the x axis
+    .attr('class', 'error-text').attr('x', 1050).attr('y', 400).attr('font-size', '100px').style('text-anchor', 'middle').text('mermaid version ' + ver);
+    svg.attr('height', 100);
+    svg.attr('width', 400);
+    svg.attr('viewBox', '768 0 512 512');
+  } catch (e) {
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].error('Error while rendering info diagram');
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].error(e.message);
+  }
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  setConf: setConf,
+  draw: draw
+});
+
+/***/ }),
+
+/***/ "./src/logger.js":
+/*!***********************!*\
+  !*** ./src/logger.js ***!
+  \***********************/
+/*! exports provided: LEVELS, logger, setLogLevel */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LEVELS", function() { return LEVELS; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "logger", function() { return logger; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setLogLevel", function() { return setLogLevel; });
+/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-mini */ "./node_modules/moment-mini/moment.min.js");
+/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_mini__WEBPACK_IMPORTED_MODULE_0__);
+ //
+
+var LEVELS = {
+  debug: 1,
+  info: 2,
+  warn: 3,
+  error: 4,
+  fatal: 5
+};
+var logger = {
+  debug: function debug() {},
+  info: function info() {},
+  warn: function warn() {},
+  error: function error() {},
+  fatal: function fatal() {}
+};
+var setLogLevel = function setLogLevel() {
+  var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'fatal';
+
+  if (isNaN(level)) {
+    level = level.toLowerCase();
+
+    if (LEVELS[level] !== undefined) {
+      level = LEVELS[level];
+    }
+  }
+
+  logger.trace = function () {};
+
+  logger.debug = function () {};
+
+  logger.info = function () {};
+
+  logger.warn = function () {};
+
+  logger.error = function () {};
+
+  logger.fatal = function () {};
+
+  if (level <= LEVELS.fatal) {
+    logger.fatal = console.error ? console.error.bind(console, format('FATAL'), 'color: orange') : console.log.bind(console, '\x1b[35m', format('FATAL'));
+  }
+
+  if (level <= LEVELS.error) {
+    logger.error = console.error ? console.error.bind(console, format('ERROR'), 'color: orange') : console.log.bind(console, '\x1b[31m', format('ERROR'));
+  }
+
+  if (level <= LEVELS.warn) {
+    logger.warn = console.warn ? console.warn.bind(console, format('WARN'), 'color: orange') : console.log.bind(console, "\x1B[33m", format('WARN'));
+  }
+
+  if (level <= LEVELS.info) {
+    logger.info = console.info ? // ? console.info.bind(console, '\x1b[34m', format('INFO'), 'color: blue')
+    console.info.bind(console, format('INFO'), 'color: lightblue') : console.log.bind(console, '\x1b[34m', format('INFO'));
+  }
+
+  if (level <= LEVELS.debug) {
+    logger.debug = console.debug ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen') : console.log.bind(console, '\x1b[32m', format('DEBUG'));
+  }
+};
+
+var format = function format(level) {
+  var time = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()().format('ss.SSS');
+  return "%c".concat(time, " : ").concat(level, " : ");
+};
+
+/***/ }),
+
+/***/ "./src/mermaid.js":
+/*!************************!*\
+  !*** ./src/mermaid.js ***!
+  \************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var entity_decode_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! entity-decode/browser */ "./node_modules/entity-decode/browser.js");
+/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mermaidAPI */ "./src/mermaidAPI.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ "./src/logger.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/utils.js");
+/**
+ * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render
+ * the diagrams to svg code.
+ */
+// import { decode } from 'he';
+
+
+
+
+/**
+ * ## init
+ * Function that goes through the document to find the chart definitions in there and render them.
+ *
+ * The function tags the processed attributes with the attribute data-processed and ignores found elements with the
+ * attribute already set. This way the init function can be triggered several times.
+ *
+ * Optionally, `init` can accept in the second argument one of the following:
+ * - a DOM Node
+ * - an array of DOM nodes (as would come from a jQuery selector)
+ * - a W3C selector, a la `.mermaid`
+ *
+ * ```mermaid
+ * graph LR;
+ *  a(Find elements)-->b{Processed}
+ *  b-->|Yes|c(Leave element)
+ *  b-->|No |d(Transform)
+ * ```
+ * Renders the mermaid diagrams
+ * @param nodes a css selector or an array of nodes
+ */
+
+var init = function init() {
+  var _this = this;
+
+  var conf = _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].getConfig(); // console.log('Starting rendering diagrams (init) - mermaid.init', conf);
+
+  var nodes;
+
+  if (arguments.length >= 2) {
+    /*! sequence config was passed as #1 */
+    if (typeof arguments[0] !== 'undefined') {
+      mermaid.sequenceConfig = arguments[0];
+    }
+
+    nodes = arguments[1];
+  } else {
+    nodes = arguments[0];
+  } // if last argument is a function this is the callback function
+
+
+  var callback;
+
+  if (typeof arguments[arguments.length - 1] === 'function') {
+    callback = arguments[arguments.length - 1];
+    _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('Callback function found');
+  } else {
+    if (typeof conf.mermaid !== 'undefined') {
+      if (typeof conf.mermaid.callback === 'function') {
+        callback = conf.mermaid.callback;
+        _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('Callback function found');
+      } else {
+        _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('No Callback function found');
+      }
+    }
+  }
+
+  nodes = nodes === undefined ? document.querySelectorAll('.mermaid') : typeof nodes === 'string' ? document.querySelectorAll(nodes) : nodes instanceof window.Node ? [nodes] : nodes; // Last case  - sequence config was passed pick next
+
+  _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('Start On Load before: ' + mermaid.startOnLoad);
+
+  if (typeof mermaid.startOnLoad !== 'undefined') {
+    _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('Start On Load inner: ' + mermaid.startOnLoad);
+    _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].updateSiteConfig({
+      startOnLoad: mermaid.startOnLoad
+    });
+  }
+
+  if (typeof mermaid.ganttConfig !== 'undefined') {
+    _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].updateSiteConfig({
+      gantt: mermaid.ganttConfig
+    });
+  }
+
+  var txt;
+
+  var _loop = function _loop(i) {
+    var element = nodes[i];
+    /*! Check if previously processed */
+
+    if (!element.getAttribute('data-processed')) {
+      element.setAttribute('data-processed', true);
+    } else {
+      return "continue";
+    }
+
+    var id = "mermaid-".concat(Date.now()); // Fetch the graph definition including tags
+
+    txt = element.innerHTML; // transforms the html to pure text
+
+    txt = Object(entity_decode_browser__WEBPACK_IMPORTED_MODULE_0__["default"])(txt).trim().replace(/<br\s*\/?>/gi, '<br/>');
+    var init = _utils__WEBPACK_IMPORTED_MODULE_3__["default"].detectInit(txt);
+
+    if (init) {
+      _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('Detected early reinit: ', init);
+    }
+
+    try {
+      _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].render(id, txt, function (svgCode, bindFunctions) {
+        element.innerHTML = svgCode;
+
+        if (typeof callback !== 'undefined') {
+          callback(id);
+        }
+
+        if (bindFunctions) bindFunctions(element);
+      }, element);
+    } catch (e) {
+      _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].warn('Syntax Error rendering');
+      _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].warn(e);
+
+      if (_this.parseError) {
+        _this.parseError(e);
+      }
+    }
+  };
+
+  for (var i = 0; i < nodes.length; i++) {
+    var _ret = _loop(i);
+
+    if (_ret === "continue") continue;
+  }
+};
+
+var initialize = function initialize(config) {
+  // mermaidAPI.reset();
+  if (typeof config.mermaid !== 'undefined') {
+    if (typeof config.mermaid.startOnLoad !== 'undefined') {
+      mermaid.startOnLoad = config.mermaid.startOnLoad;
+    }
+
+    if (typeof config.mermaid.htmlLabels !== 'undefined') {
+      mermaid.htmlLabels = config.mermaid.htmlLabels;
+    }
+  }
+
+  _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].initialize(config); // mermaidAPI.reset();
+};
+/**
+ * ##contentLoaded
+ * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and
+ * calls init for rendering the mermaid diagrams on the page.
+ */
+
+
+var contentLoaded = function contentLoaded() {
+  var config;
+
+  if (mermaid.startOnLoad) {
+    // No config found, do check API config
+    config = _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].getConfig();
+
+    if (config.startOnLoad) {
+      mermaid.init();
+    }
+  } else {
+    if (typeof mermaid.startOnLoad === 'undefined') {
+      _logger__WEBPACK_IMPORTED_MODULE_2__["logger"].debug('In start, no config');
+      config = _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].getConfig();
+
+      if (config.startOnLoad) {
+        mermaid.init();
+      }
+    }
+  }
+};
+
+if (typeof document !== 'undefined') {
+  /*!
+   * Wait for document loaded before starting the execution
+   */
+  window.addEventListener('load', function () {
+    contentLoaded();
+  }, false);
+}
+
+var mermaid = {
+  startOnLoad: true,
+  htmlLabels: true,
+  mermaidAPI: _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"],
+  parse: _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].parse,
+  render: _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__["default"].render,
+  init: init,
+  initialize: initialize,
+  contentLoaded: contentLoaded
+};
+/* harmony default export */ __webpack_exports__["default"] = (mermaid);
+
+/***/ }),
+
+/***/ "./src/mermaidAPI.js":
+/*!***************************!*\
+  !*** ./src/mermaidAPI.js ***!
+  \***************************/
+/*! exports provided: encodeEntities, decodeEntities, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encodeEntities", function() { return encodeEntities; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decodeEntities", function() { return decodeEntities; });
+/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! stylis */ "./node_modules/stylis/stylis.js");
+/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stylis__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../package.json */ "./package.json");
+var _package_json__WEBPACK_IMPORTED_MODULE_2___namespace = /*#__PURE__*/__webpack_require__.t(/*! ../package.json */ "./package.json", 1);
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logger */ "./src/logger.js");
+/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ "./src/utils.js");
+/* harmony import */ var _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./diagrams/flowchart/flowRenderer */ "./src/diagrams/flowchart/flowRenderer.js");
+/* harmony import */ var _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./diagrams/flowchart/flowRenderer-v2 */ "./src/diagrams/flowchart/flowRenderer-v2.js");
+/* harmony import */ var _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./diagrams/flowchart/parser/flow */ "./src/diagrams/flowchart/parser/flow.jison");
+/* harmony import */ var _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_7__);
+/* harmony import */ var _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./diagrams/flowchart/flowDb */ "./src/diagrams/flowchart/flowDb.js");
+/* harmony import */ var _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./diagrams/sequence/sequenceRenderer */ "./src/diagrams/sequence/sequenceRenderer.js");
+/* harmony import */ var _diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./diagrams/sequence/parser/sequenceDiagram */ "./src/diagrams/sequence/parser/sequenceDiagram.jison");
+/* harmony import */ var _diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_10__);
+/* harmony import */ var _diagrams_sequence_sequenceDb__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./diagrams/sequence/sequenceDb */ "./src/diagrams/sequence/sequenceDb.js");
+/* harmony import */ var _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./diagrams/gantt/ganttRenderer */ "./src/diagrams/gantt/ganttRenderer.js");
+/* harmony import */ var _diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./diagrams/gantt/parser/gantt */ "./src/diagrams/gantt/parser/gantt.jison");
+/* harmony import */ var _diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_13__);
+/* harmony import */ var _diagrams_gantt_ganttDb__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./diagrams/gantt/ganttDb */ "./src/diagrams/gantt/ganttDb.js");
+/* harmony import */ var _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diagrams/class/classRenderer */ "./src/diagrams/class/classRenderer.js");
+/* harmony import */ var _diagrams_class_classRenderer_v2__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./diagrams/class/classRenderer-v2 */ "./src/diagrams/class/classRenderer-v2.js");
+/* harmony import */ var _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./diagrams/class/parser/classDiagram */ "./src/diagrams/class/parser/classDiagram.jison");
+/* harmony import */ var _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_17__);
+/* harmony import */ var _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./diagrams/class/classDb */ "./src/diagrams/class/classDb.js");
+/* harmony import */ var _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./diagrams/state/stateRenderer */ "./src/diagrams/state/stateRenderer.js");
+/* harmony import */ var _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./diagrams/state/stateRenderer-v2 */ "./src/diagrams/state/stateRenderer-v2.js");
+/* harmony import */ var _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./diagrams/state/parser/stateDiagram */ "./src/diagrams/state/parser/stateDiagram.jison");
+/* harmony import */ var _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_21__);
+/* harmony import */ var _diagrams_state_stateDb__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./diagrams/state/stateDb */ "./src/diagrams/state/stateDb.js");
+/* harmony import */ var _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./diagrams/git/gitGraphRenderer */ "./src/diagrams/git/gitGraphRenderer.js");
+/* harmony import */ var _diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./diagrams/git/parser/gitGraph */ "./src/diagrams/git/parser/gitGraph.jison");
+/* harmony import */ var _diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_24__);
+/* harmony import */ var _diagrams_git_gitGraphAst__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./diagrams/git/gitGraphAst */ "./src/diagrams/git/gitGraphAst.js");
+/* harmony import */ var _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./diagrams/info/infoRenderer */ "./src/diagrams/info/infoRenderer.js");
+/* harmony import */ var _errorRenderer__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./errorRenderer */ "./src/errorRenderer.js");
+/* harmony import */ var _diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./diagrams/info/parser/info */ "./src/diagrams/info/parser/info.jison");
+/* harmony import */ var _diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_28__);
+/* harmony import */ var _diagrams_info_infoDb__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./diagrams/info/infoDb */ "./src/diagrams/info/infoDb.js");
+/* harmony import */ var _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./diagrams/pie/pieRenderer */ "./src/diagrams/pie/pieRenderer.js");
+/* harmony import */ var _diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./diagrams/pie/parser/pie */ "./src/diagrams/pie/parser/pie.jison");
+/* harmony import */ var _diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(_diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_31__);
+/* harmony import */ var _diagrams_pie_pieDb__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./diagrams/pie/pieDb */ "./src/diagrams/pie/pieDb.js");
+/* harmony import */ var _diagrams_er_erDb__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./diagrams/er/erDb */ "./src/diagrams/er/erDb.js");
+/* harmony import */ var _diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./diagrams/er/parser/erDiagram */ "./src/diagrams/er/parser/erDiagram.jison");
+/* harmony import */ var _diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(_diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_34__);
+/* harmony import */ var _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./diagrams/er/erRenderer */ "./src/diagrams/er/erRenderer.js");
+/* harmony import */ var _diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./diagrams/user-journey/parser/journey */ "./src/diagrams/user-journey/parser/journey.jison");
+/* harmony import */ var _diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(_diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_36__);
+/* harmony import */ var _diagrams_user_journey_journeyDb__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./diagrams/user-journey/journeyDb */ "./src/diagrams/user-journey/journeyDb.js");
+/* harmony import */ var _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./diagrams/user-journey/journeyRenderer */ "./src/diagrams/user-journey/journeyRenderer.js");
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./config */ "./src/config.js");
+/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./styles */ "./src/styles.js");
+/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./themes */ "./src/themes/index.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+/**
+ * This is the api to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js.
+ *
+ * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph
+ * definition as text, renders the graph/diagram and returns an svg element for the graph.
+ *
+ * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different.
+ *
+ * In addition to the render function, a number of behavioral configuration options are available.
+ *
+ * @name mermaidAPI
+ */
+
+
+ // import * as configApi from './config';
+// // , {
+// //   setConfig,
+// //   configApi.getConfig,
+// //   configApi.updateSiteConfig,
+// //   configApi.setSiteConfig,
+// //   configApi.getSiteConfig,
+// //   configApi.defaultConfig
+// // }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function parse(text) {
+  var graphInit = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].detectInit(text);
+
+  if (graphInit) {
+    reinitialize(graphInit);
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('reinit ', graphInit);
+  }
+
+  var graphType = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].detectType(text);
+  var parser;
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Type ' + graphType);
+
+  switch (graphType) {
+    case 'git':
+      parser = _diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_24___default.a;
+      parser.parser.yy = _diagrams_git_gitGraphAst__WEBPACK_IMPORTED_MODULE_25__["default"];
+      break;
+
+    case 'flowchart':
+      _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_8__["default"].clear();
+      parser = _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_7___default.a;
+      parser.parser.yy = _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_8__["default"];
+      break;
+
+    case 'flowchart-v2':
+      _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_8__["default"].clear();
+      parser = _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_7___default.a;
+      parser.parser.yy = _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_8__["default"];
+      break;
+
+    case 'sequence':
+      parser = _diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_10___default.a;
+      parser.parser.yy = _diagrams_sequence_sequenceDb__WEBPACK_IMPORTED_MODULE_11__["default"];
+      break;
+
+    case 'gantt':
+      parser = _diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_13___default.a;
+      parser.parser.yy = _diagrams_gantt_ganttDb__WEBPACK_IMPORTED_MODULE_14__["default"];
+      break;
+
+    case 'class':
+      parser = _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_17___default.a;
+      parser.parser.yy = _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_18__["default"];
+      break;
+
+    case 'classDiagram':
+      parser = _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_17___default.a;
+      parser.parser.yy = _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_18__["default"];
+      break;
+
+    case 'state':
+      parser = _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_21___default.a;
+      parser.parser.yy = _diagrams_state_stateDb__WEBPACK_IMPORTED_MODULE_22__["default"];
+      break;
+
+    case 'stateDiagram':
+      parser = _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_21___default.a;
+      parser.parser.yy = _diagrams_state_stateDb__WEBPACK_IMPORTED_MODULE_22__["default"];
+      break;
+
+    case 'info':
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('info info info');
+      parser = _diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_28___default.a;
+      parser.parser.yy = _diagrams_info_infoDb__WEBPACK_IMPORTED_MODULE_29__["default"];
+      break;
+
+    case 'pie':
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('pie');
+      parser = _diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_31___default.a;
+      parser.parser.yy = _diagrams_pie_pieDb__WEBPACK_IMPORTED_MODULE_32__["default"];
+      break;
+
+    case 'er':
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('er');
+      parser = _diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_34___default.a;
+      parser.parser.yy = _diagrams_er_erDb__WEBPACK_IMPORTED_MODULE_33__["default"];
+      break;
+
+    case 'journey':
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('Journey');
+      parser = _diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_36___default.a;
+      parser.parser.yy = _diagrams_user_journey_journeyDb__WEBPACK_IMPORTED_MODULE_37__["default"];
+      break;
+  }
+
+  parser.parser.yy.graphType = graphType;
+
+  parser.parser.yy.parseError = function (str, hash) {
+    var error = {
+      str: str,
+      hash: hash
+    };
+    throw error;
+  };
+
+  parser.parse(text);
+  return parser;
+}
+
+var encodeEntities = function encodeEntities(text) {
+  var txt = text;
+  txt = txt.replace(/style.*:\S*#.*;/g, function (s) {
+    var innerTxt = s.substring(0, s.length - 1);
+    return innerTxt;
+  });
+  txt = txt.replace(/classDef.*:\S*#.*;/g, function (s) {
+    var innerTxt = s.substring(0, s.length - 1);
+    return innerTxt;
+  });
+  txt = txt.replace(/#\w+;/g, function (s) {
+    var innerTxt = s.substring(1, s.length - 1);
+    var isInt = /^\+?\d+$/.test(innerTxt);
+
+    if (isInt) {
+      return 'fl°°' + innerTxt + '¶ß';
+    } else {
+      return 'fl°' + innerTxt + '¶ß';
+    }
+  });
+  return txt;
+};
+var decodeEntities = function decodeEntities(text) {
+  var txt = text;
+  txt = txt.replace(/fl°°/g, function () {
+    return '&#';
+  });
+  txt = txt.replace(/fl°/g, function () {
+    return '&';
+  });
+  txt = txt.replace(/¶ß/g, function () {
+    return ';';
+  });
+  return txt;
+};
+/**
+ * Function that renders an svg with a graph from a chart definition. Usage example below.
+ *
+ * ```js
+ * mermaidAPI.initialize({
+ *      startOnLoad:true
+ *  });
+ *  $(function(){
+ *      const graphDefinition = 'graph TB\na-->b';
+ *      const cb = function(svgGraph){
+ *          console.log(svgGraph);
+ *      };
+ *      mermaidAPI.render('id1',graphDefinition,cb);
+ *  });
+ *```
+ * @param id the id of the element to be rendered
+ * @param _txt the graph definition
+ * @param cb callback which is called after rendering is finished with the svg code as inparam.
+ * @param container selector to element in which a div with the graph temporarily will be inserted. In one is
+ * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is
+ * completed.
+ */
+
+var render = function render(id, _txt, cb, container) {
+  _config__WEBPACK_IMPORTED_MODULE_39__["reset"]();
+  var txt = _txt;
+  var graphInit = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].detectInit(txt);
+
+  if (graphInit) {
+    _config__WEBPACK_IMPORTED_MODULE_39__["addDirective"](graphInit);
+  } // else {
+  //   configApi.reset();
+  //   const siteConfig = configApi.getSiteConfig();
+  //   configApi.addDirective(siteConfig);
+  // }
+  // console.warn('Render fetching config');
+
+
+  var cnf = _config__WEBPACK_IMPORTED_MODULE_39__["getConfig"](); // console.warn('Render with config after adding new directives', cnf.sequence);
+  // console.warn(
+  //   'Render with config after adding new directives',
+  //   cnf.fontFamily,
+  //   cnf.themeVariables.fontFamily
+  // );
+  // Check the maximum allowed text size
+
+  if (_txt.length > cnf.maxTextSize) {
+    txt = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa';
+  }
+
+  if (typeof container !== 'undefined') {
+    container.innerHTML = '';
+    Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])(container).append('div').attr('id', 'd' + id).attr('style', 'font-family: ' + cnf.fontFamily).append('svg').attr('id', id).attr('width', '100%').attr('xmlns', 'http://www.w3.org/2000/svg').append('g');
+  } else {
+    var existingSvg = document.getElementById(id);
+
+    if (existingSvg) {
+      existingSvg.remove();
+    }
+
+    var _element = document.querySelector('#' + 'd' + id);
+
+    if (_element) {
+      _element.remove();
+    }
+
+    Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('body').append('div').attr('id', 'd' + id).append('svg').attr('id', id).attr('width', '100%').attr('xmlns', 'http://www.w3.org/2000/svg').append('g');
+  }
+
+  window.txt = txt;
+  txt = encodeEntities(txt);
+  var element = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#d' + id).node();
+  var graphType = _utils__WEBPACK_IMPORTED_MODULE_4__["default"].detectType(txt); // insert inline style into svg
+
+  var svg = element.firstChild;
+  var firstChild = svg.firstChild;
+  var userStyles = ''; // user provided theme CSS
+
+  if (cnf.themeCSS !== undefined) {
+    userStyles += "\n".concat(cnf.themeCSS);
+  } // user provided theme CSS
+
+
+  if (cnf.fontFamily !== undefined) {
+    userStyles += "\n:root { --mermaid-font-family: ".concat(cnf.fontFamily, "}");
+  } // user provided theme CSS
+
+
+  if (cnf.altFontFamily !== undefined) {
+    userStyles += "\n:root { --mermaid-alt-font-family: ".concat(cnf.altFontFamily, "}");
+  } // classDef
+
+
+  if (graphType === 'flowchart' || graphType === 'flowchart-v2' || graphType === 'graph') {
+    var classes = _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_5__["default"].getClasses(txt);
+
+    for (var className in classes) {
+      userStyles += "\n.".concat(className, " > * { ").concat(classes[className].styles.join(' !important; '), " !important; }");
+
+      if (classes[className].textStyles) {
+        userStyles += "\n.".concat(className, " tspan { ").concat(classes[className].textStyles.join(' !important; '), " !important; }");
+      }
+    }
+  } // logger.warn(cnf.themeVariables);
+
+
+  var stylis = new stylis__WEBPACK_IMPORTED_MODULE_0___default.a();
+  var rules = stylis("#".concat(id), Object(_styles__WEBPACK_IMPORTED_MODULE_40__["default"])(graphType, userStyles, cnf.themeVariables));
+  var style1 = document.createElement('style');
+  style1.innerHTML = rules;
+  svg.insertBefore(style1, firstChild); // Verify that the generated svgs are ok before removing this
+  // const style2 = document.createElement('style');
+  // const cs = window.getComputedStyle(svg);
+  // style2.innerHTML = `#d${id} * {
+  //   color: ${cs.color};
+  //   // font: ${cs.font};
+  //   // font-family: Arial;
+  //   // font-size: 24px;
+  // }`;
+  // svg.insertBefore(style2, firstChild);
+
+  try {
+    switch (graphType) {
+      case 'git':
+        cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_23__["default"].setConf(cnf.git);
+        _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_23__["default"].draw(txt, id, false);
+        break;
+
+      case 'flowchart':
+        cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_5__["default"].setConf(cnf.flowchart);
+        _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_5__["default"].draw(txt, id, false);
+        break;
+
+      case 'flowchart-v2':
+        cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_6__["default"].setConf(cnf.flowchart);
+        _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_6__["default"].draw(txt, id, false);
+        break;
+
+      case 'sequence':
+        cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+
+        if (cnf.sequenceDiagram) {
+          // backwards compatibility
+          _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_9__["default"].setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));
+          console.error('`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.');
+        } else {
+          _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_9__["default"].setConf(cnf.sequence);
+        }
+
+        _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_9__["default"].draw(txt, id);
+        break;
+
+      case 'gantt':
+        cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_12__["default"].setConf(cnf.gantt);
+        _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_12__["default"].draw(txt, id);
+        break;
+
+      case 'class':
+        cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_15__["default"].setConf(cnf.class);
+        _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_15__["default"].draw(txt, id);
+        break;
+
+      case 'classDiagram':
+        cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_class_classRenderer_v2__WEBPACK_IMPORTED_MODULE_16__["default"].setConf(cnf.class);
+        _diagrams_class_classRenderer_v2__WEBPACK_IMPORTED_MODULE_16__["default"].draw(txt, id);
+        break;
+
+      case 'state':
+        cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_19__["default"].setConf(cnf.state);
+        _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_19__["default"].draw(txt, id);
+        break;
+
+      case 'stateDiagram':
+        cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_20__["default"].setConf(cnf.state);
+        _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_20__["default"].draw(txt, id);
+        break;
+
+      case 'info':
+        cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_26__["default"].setConf(cnf.class);
+        _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_26__["default"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);
+        break;
+
+      case 'pie':
+        cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
+        _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_30__["default"].setConf(cnf.pie);
+        _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_30__["default"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);
+        break;
+
+      case 'er':
+        _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_35__["default"].setConf(cnf.er);
+        _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_35__["default"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);
+        break;
+
+      case 'journey':
+        _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__["default"].setConf(cnf.journey);
+        _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__["default"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);
+        break;
+    }
+  } catch (e) {
+    // errorRenderer.setConf(cnf.class);
+    _errorRenderer__WEBPACK_IMPORTED_MODULE_27__["default"].draw(id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);
+    throw e;
+  }
+
+  Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])("[id=\"".concat(id, "\"]")).selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml'); // if (cnf.arrowMarkerAbsolute) {
+  //   url =
+  //     window.location.protocol +
+  //     '//' +
+  //     window.location.host +
+  //     window.location.pathname +
+  //     window.location.search;
+  //   url = url.replace(/\(/g, '\\(');
+  //   url = url.replace(/\)/g, '\\)');
+  // }
+  // Fix for when the base tag is used
+
+  var svgCode = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#d' + id).node().innerHTML;
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);
+
+  if (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') {
+    svgCode = svgCode.replace(/marker-end="url\(.*?#/g, 'marker-end="url(#', 'g');
+  }
+
+  svgCode = decodeEntities(svgCode);
+
+  if (typeof cb !== 'undefined') {
+    switch (graphType) {
+      case 'flowchart':
+      case 'flowchart-v2':
+        cb(svgCode, _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_8__["default"].bindFunctions);
+        break;
+
+      case 'gantt':
+        cb(svgCode, _diagrams_gantt_ganttDb__WEBPACK_IMPORTED_MODULE_14__["default"].bindFunctions);
+        break;
+
+      case 'class':
+      case 'classDiagram':
+        cb(svgCode, _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_18__["default"].bindFunctions);
+        break;
+
+      default:
+        cb(svgCode);
+    }
+  } else {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug('CB = undefined!');
+  }
+
+  var node = Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#d' + id).node();
+
+  if (node !== null && typeof node.remove === 'function') {
+    Object(d3__WEBPACK_IMPORTED_MODULE_1__["select"])('#d' + id).node().remove();
+  }
+
+  return svgCode;
+};
+
+var currentDirective = {};
+
+var parseDirective = function parseDirective(p, statement, context, type) {
+  try {
+    if (statement !== undefined) {
+      statement = statement.trim();
+
+      switch (context) {
+        case 'open_directive':
+          currentDirective = {};
+          break;
+
+        case 'type_directive':
+          currentDirective.type = statement.toLowerCase();
+          break;
+
+        case 'arg_directive':
+          currentDirective.args = JSON.parse(statement);
+          break;
+
+        case 'close_directive':
+          handleDirective(p, currentDirective, type);
+          currentDirective = null;
+          break;
+      }
+    }
+  } catch (error) {
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error("Error while rendering sequenceDiagram directive: ".concat(statement, " jison context: ").concat(context));
+    _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].error(error.message);
+  }
+};
+
+var handleDirective = function handleDirective(p, directive, type) {
+  _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].debug("Directive type=".concat(directive.type, " with args:"), directive.args);
+
+  switch (directive.type) {
+    case 'init':
+    case 'initialize':
+      {
+        ['config'].forEach(function (prop) {
+          if (typeof directive.args[prop] !== 'undefined') {
+            if (type === 'flowchart-v2') {
+              type = 'flowchart';
+            }
+
+            directive.args[type] = directive.args[prop];
+            delete directive.args[prop];
+          }
+        });
+        reinitialize(directive.args);
+        _config__WEBPACK_IMPORTED_MODULE_39__["addDirective"](directive.args);
+        break;
+      }
+
+    case 'wrap':
+    case 'nowrap':
+      if (p && p['setWrap']) {
+        p.setWrap(directive.type === 'wrap');
+      }
+
+      break;
+
+    default:
+      _logger__WEBPACK_IMPORTED_MODULE_3__["logger"].warn("Unhandled directive: source: '%%{".concat(directive.type, ": ").concat(JSON.stringify(directive.args ? directive.args : {}), "}%%"), directive);
+      break;
+  }
+};
+
+function updateRendererConfigs(conf) {
+  _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_23__["default"].setConf(conf.git);
+  _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_5__["default"].setConf(conf.flowchart);
+  _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_6__["default"].setConf(conf.flowchart);
+
+  if (typeof conf['sequenceDiagram'] !== 'undefined') {
+    _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_9__["default"].setConf(Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assignWithDepth"])(conf.sequence, conf['sequenceDiagram']));
+  }
+
+  _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_9__["default"].setConf(conf.sequence);
+  _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_12__["default"].setConf(conf.gantt);
+  _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_15__["default"].setConf(conf.class);
+  _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_19__["default"].setConf(conf.state);
+  _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_20__["default"].setConf(conf.state);
+  _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_26__["default"].setConf(conf.class);
+  _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_30__["default"].setConf(conf.class);
+  _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_35__["default"].setConf(conf.er);
+  _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__["default"].setConf(conf.journey);
+  _errorRenderer__WEBPACK_IMPORTED_MODULE_27__["default"].setConf(conf.class);
+}
+
+function reinitialize() {// `mermaidAPI.reinitialize: v${pkg.version}`,
+  //   JSON.stringify(options),
+  //   options.themeVariables.primaryColor;
+  // // if (options.theme && theme[options.theme]) {
+  // //   options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);
+  // // }
+  // // Set default options
+  // const config =
+  //   typeof options === 'object' ? configApi.setConfig(options) : configApi.getSiteConfig();
+  // updateRendererConfigs(config);
+  // setLogLevel(config.logLevel);
+  // logger.debug('mermaidAPI.reinitialize: ', config);
+}
+
+function initialize(options) {
+  // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options);
+  // Handle legacy location of font-family configuration
+  if (options && options.fontFamily) {
+    if (!options.themeVariables) {
+      options.themeVariables = {
+        fontFamily: options.fontFamily
+      };
+    } else {
+      if (!options.themeVariables.fontFamily) {
+        options.themeVariables = {
+          fontFamily: options.fontFamily
+        };
+      }
+    }
+  } // Set default options
+
+
+  _config__WEBPACK_IMPORTED_MODULE_39__["setSiteConfigDelta"](options);
+
+  if (options && options.theme && _themes__WEBPACK_IMPORTED_MODULE_41__["default"][options.theme]) {
+    // Todo merge with user options
+    options.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_41__["default"][options.theme].getThemeVariables(options.themeVariables);
+  } else {
+    if (options) options.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_41__["default"].default.getThemeVariables(options.themeVariables);
+  }
+
+  var config = _typeof(options) === 'object' ? _config__WEBPACK_IMPORTED_MODULE_39__["setSiteConfig"](options) : _config__WEBPACK_IMPORTED_MODULE_39__["getSiteConfig"]();
+  updateRendererConfigs(config);
+  Object(_logger__WEBPACK_IMPORTED_MODULE_3__["setLogLevel"])(config.logLevel); // logger.debug('mermaidAPI.initialize: ', config);
+}
+
+var mermaidAPI = Object.freeze({
+  render: render,
+  parse: parse,
+  parseDirective: parseDirective,
+  initialize: initialize,
+  reinitialize: reinitialize,
+  getConfig: _config__WEBPACK_IMPORTED_MODULE_39__["getConfig"],
+  setConfig: _config__WEBPACK_IMPORTED_MODULE_39__["setConfig"],
+  getSiteConfig: _config__WEBPACK_IMPORTED_MODULE_39__["getSiteConfig"],
+  updateSiteConfig: _config__WEBPACK_IMPORTED_MODULE_39__["updateSiteConfig"],
+  reset: function reset() {
+    // console.warn('reset');
+    _config__WEBPACK_IMPORTED_MODULE_39__["reset"](); // const siteConfig = configApi.getSiteConfig();
+    // updateRendererConfigs(siteConfig);
+  },
+  globalReset: function globalReset() {
+    _config__WEBPACK_IMPORTED_MODULE_39__["reset"](_config__WEBPACK_IMPORTED_MODULE_39__["defaultConfig"]);
+    updateRendererConfigs(_config__WEBPACK_IMPORTED_MODULE_39__["getConfig"]());
+  },
+  defaultConfig: _config__WEBPACK_IMPORTED_MODULE_39__["defaultConfig"]
+});
+Object(_logger__WEBPACK_IMPORTED_MODULE_3__["setLogLevel"])(_config__WEBPACK_IMPORTED_MODULE_39__["getConfig"]().logLevel);
+_config__WEBPACK_IMPORTED_MODULE_39__["reset"](_config__WEBPACK_IMPORTED_MODULE_39__["getConfig"]());
+/* harmony default export */ __webpack_exports__["default"] = (mermaidAPI);
+/**
+ * ## mermaidAPI configuration defaults
+ *
+ * ```html
+ * <script>
+ *   var config = {
+ *     theme:'default',
+ *     logLevel:'fatal',
+ *     securityLevel:'strict',
+ *     startOnLoad:true,
+ *     arrowMarkerAbsolute:false,
+ *
+ *     er:{
+ *       diagramPadding:20,
+ *       layoutDirection:'TB',
+ *       minEntityWidth:100,
+ *       minEntityHeight:75,
+ *       entityPadding:15,
+ *       stroke:'gray',
+ *       fill:'honeydew',
+ *       fontSize:12,
+ *       useMaxWidth:true,
+ *     },
+ *     flowchart:{
+ *       diagramPadding:8,
+ *       htmlLabels:true,
+ *       curve:'linear',
+ *     },
+ *     sequence:{
+ *       diagramMarginX:50,
+ *       diagramMarginY:10,
+ *       actorMargin:50,
+ *       width:150,
+ *       height:65,
+ *       boxMargin:10,
+ *       boxTextMargin:5,
+ *       noteMargin:10,
+ *       messageMargin:35,
+ *       messageAlign:'center',
+ *       mirrorActors:true,
+ *       bottomMarginAdj:1,
+ *       useMaxWidth:true,
+ *       rightAngles:false,
+ *       showSequenceNumbers:false,
+ *     },
+ *     gantt:{
+ *       titleTopMargin:25,
+ *       barHeight:20,
+ *       barGap:4,
+ *       topPadding:50,
+ *       leftPadding:75,
+ *       gridLineStartPadding:35,
+ *       fontSize:11,
+ *       fontFamily:'"Open-Sans", "sans-serif"',
+ *       numberSectionStyles:4,
+ *       axisFormat:'%Y-%m-%d',
+ *     }
+ *   };
+ *   mermaid.initialize(config);
+ * </script>
+ * ```
+ */
+
+/***/ }),
+
+/***/ "./src/styles.js":
+/*!***********************!*\
+  !*** ./src/styles.js ***!
+  \***********************/
+/*! exports provided: calcThemeVariables, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "calcThemeVariables", function() { return calcThemeVariables; });
+/* harmony import */ var _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./diagrams/class/styles */ "./src/diagrams/class/styles.js");
+/* harmony import */ var _diagrams_er_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./diagrams/er/styles */ "./src/diagrams/er/styles.js");
+/* harmony import */ var _diagrams_flowchart_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./diagrams/flowchart/styles */ "./src/diagrams/flowchart/styles.js");
+/* harmony import */ var _diagrams_gantt_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./diagrams/gantt/styles */ "./src/diagrams/gantt/styles.js");
+/* harmony import */ var _diagrams_git_styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./diagrams/git/styles */ "./src/diagrams/git/styles.js");
+/* harmony import */ var _diagrams_info_styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./diagrams/info/styles */ "./src/diagrams/info/styles.js");
+/* harmony import */ var _diagrams_pie_styles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./diagrams/pie/styles */ "./src/diagrams/pie/styles.js");
+/* harmony import */ var _diagrams_sequence_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./diagrams/sequence/styles */ "./src/diagrams/sequence/styles.js");
+/* harmony import */ var _diagrams_state_styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./diagrams/state/styles */ "./src/diagrams/state/styles.js");
+/* harmony import */ var _diagrams_user_journey_styles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./diagrams/user-journey/styles */ "./src/diagrams/user-journey/styles.js");
+
+
+
+
+
+
+
+
+
+
+var themes = {
+  flowchart: _diagrams_flowchart_styles__WEBPACK_IMPORTED_MODULE_2__["default"],
+  'flowchart-v2': _diagrams_flowchart_styles__WEBPACK_IMPORTED_MODULE_2__["default"],
+  sequence: _diagrams_sequence_styles__WEBPACK_IMPORTED_MODULE_7__["default"],
+  gantt: _diagrams_gantt_styles__WEBPACK_IMPORTED_MODULE_3__["default"],
+  classDiagram: _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__["default"],
+  'classDiagram-v2': _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__["default"],
+  class: _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__["default"],
+  stateDiagram: _diagrams_state_styles__WEBPACK_IMPORTED_MODULE_8__["default"],
+  state: _diagrams_state_styles__WEBPACK_IMPORTED_MODULE_8__["default"],
+  git: _diagrams_git_styles__WEBPACK_IMPORTED_MODULE_4__["default"],
+  info: _diagrams_info_styles__WEBPACK_IMPORTED_MODULE_5__["default"],
+  pie: _diagrams_pie_styles__WEBPACK_IMPORTED_MODULE_6__["default"],
+  er: _diagrams_er_styles__WEBPACK_IMPORTED_MODULE_1__["default"],
+  journey: _diagrams_user_journey_styles__WEBPACK_IMPORTED_MODULE_9__["default"]
+};
+var calcThemeVariables = function calcThemeVariables(theme, userOverRides) {
+  return theme.calcColors(userOverRides);
+};
+
+var getStyles = function getStyles(type, userStyles, options) {
+  //console.warn('options in styles: ', options);
+  return " {\n    font-family: ".concat(options.fontFamily, ";\n    font-size: ").concat(options.fontSize, ";\n    fill: ").concat(options.textColor, "\n  }\n\n  /* Classes common for multiple diagrams */\n\n  .error-icon {\n    fill: ").concat(options.errorBkgColor, ";\n  }\n  .error-text {\n    fill: ").concat(options.errorTextColor, ";\n    stroke: ").concat(options.errorTextColor, ";\n  }\n\n  .edge-thickness-normal {\n    stroke-width: 2px;\n  }\n  .edge-thickness-thick {\n    stroke-width: 3.5px\n  }\n  .edge-pattern-solid {\n    stroke-dasharray: 0;\n  }\n\n  .edge-pattern-dashed{\n    stroke-dasharray: 3;\n  }\n  .edge-pattern-dotted {\n    stroke-dasharray: 2;\n  }\n\n  .marker {\n    fill: ").concat(options.lineColor, ";\n  }\n  .marker.cross {\n    stroke: ").concat(options.lineColor, ";\n  }\n\n  svg {\n    font-family: ").concat(options.fontFamily, ";\n    font-size: ").concat(options.fontSize, ";\n  }\n\n  ").concat(themes[type](options), "\n\n  ").concat(userStyles, "\n\n  ").concat(type, " { fill: apa;}\n");
+};
+
+/* harmony default export */ __webpack_exports__["default"] = (getStyles);
+
+/***/ }),
+
+/***/ "./src/themes/index.js":
+/*!*****************************!*\
+  !*** ./src/themes/index.js ***!
+  \*****************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _theme_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./theme-base */ "./src/themes/theme-base.js");
+/* harmony import */ var _theme_dark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-dark */ "./src/themes/theme-dark.js");
+/* harmony import */ var _theme_default__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./theme-default */ "./src/themes/theme-default.js");
+/* harmony import */ var _theme_forest__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./theme-forest */ "./src/themes/theme-forest.js");
+/* harmony import */ var _theme_neutral__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./theme-neutral */ "./src/themes/theme-neutral.js");
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  base: {
+    getThemeVariables: _theme_base__WEBPACK_IMPORTED_MODULE_0__["getThemeVariables"]
+  },
+  dark: {
+    getThemeVariables: _theme_dark__WEBPACK_IMPORTED_MODULE_1__["getThemeVariables"]
+  },
+  default: {
+    getThemeVariables: _theme_default__WEBPACK_IMPORTED_MODULE_2__["getThemeVariables"]
+  },
+  forest: {
+    getThemeVariables: _theme_forest__WEBPACK_IMPORTED_MODULE_3__["getThemeVariables"]
+  },
+  neutral: {
+    getThemeVariables: _theme_neutral__WEBPACK_IMPORTED_MODULE_4__["getThemeVariables"]
+  }
+});
+
+/***/ }),
+
+/***/ "./src/themes/theme-base.js":
+/*!**********************************!*\
+  !*** ./src/themes/theme-base.js ***!
+  \**********************************/
+/*! exports provided: getThemeVariables */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeVariables", function() { return getThemeVariables; });
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ "./node_modules/khroma/dist/index.js");
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ "./src/themes/theme-helpers.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+
+
+
+var Theme =
+/*#__PURE__*/
+function () {
+  function Theme() {
+    _classCallCheck(this, Theme);
+
+    /** # Base variables */
+
+    /** * background - used to know what the background color is of the diagram. This is used for deducing colors for istance line color. Defaulr value is #f4f4f4. */
+    this.background = '#f4f4f4';
+    this.darkMode = false; // this.background = '#0c0c0c';
+    // this.darkMode = true;
+
+    this.primaryColor = '#fff4dd'; // this.background = '#0c0c0c';
+    // this.primaryColor = '#1f1f00';
+
+    this.noteBkgColor = '#fff5ad';
+    this.noteTextColor = '#333'; // dark
+    // this.primaryColor = '#034694';
+    // this.primaryColor = '#f2ee7e';
+    // this.primaryColor = '#9f33be';
+    // this.primaryColor = '#f0fff0';
+    // this.primaryColor = '#fa255e';
+    // this.primaryColor = '#ECECFF';
+    // this.secondaryColor = '#c39ea0';
+    // this.tertiaryColor = '#f8e5e5';
+    // this.secondaryColor = '#dfdfde';
+    // this.tertiaryColor = '#CCCCFF';
+
+    this.fontFamily = '"trebuchet ms", verdana, arial';
+    this.fontSize = '16px'; // this.updateColors();
+  }
+
+  _createClass(Theme, [{
+    key: "updateColors",
+    value: function updateColors() {
+      // The || is to make sure that if the variable has been defiend by a user override that value is to be used
+
+      /* Main */
+      this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#ddd' : '#333'); // invert(this.primaryColor);
+
+      this.secondaryColor = this.secondaryColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: -120
+      });
+      this.tertiaryColor = this.tertiaryColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 180,
+        l: 5
+      });
+      this.primaryBorderColor = this.primaryBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.primaryColor, this.darkMode);
+      this.secondaryBorderColor = this.secondaryBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.secondaryColor, this.darkMode);
+      this.tertiaryBorderColor = this.tertiaryBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.tertiaryColor, this.darkMode);
+      this.noteBorderColor = this.noteBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.noteBkgColor, this.darkMode);
+      this.secondaryTextColor = this.secondaryTextColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.secondaryColor);
+      this.tertiaryTextColor = this.tertiaryTextColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.tertiaryColor);
+      this.lineColor = this.lineColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+      this.textColor = this.textColor || this.primaryTextColor;
+      /* Flowchart variables */
+
+      this.nodeBkg = this.nodeBkg || this.primaryColor;
+      this.mainBkg = this.mainBkg || this.primaryColor;
+      this.nodeBorder = this.nodeBorder || this.primaryBorderColor;
+      this.clusterBkg = this.clusterBkg || this.tertiaryColor;
+      this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;
+      this.defaultLinkColor = this.defaultLinkColor || this.lineColor;
+      this.titleColor = this.titleColor || this.tertiaryTextColor;
+      this.edgeLabelBackground = this.edgeLabelBackground || this.darkMode ? Object(khroma__WEBPACK_IMPORTED_MODULE_0__["darken"])(this.secondaryColor, 30) : this.secondaryColor;
+      this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;
+      /* Sequence Diagram variables */
+      // this.actorBorder = lighten(this.border1, 0.5);
+
+      this.actorBorder = this.actorBorder || this.primaryBorderColor;
+      this.actorBkg = this.actorBkg || this.mainBkg;
+      this.actorTextColor = this.actorTextColor || this.primaryTextColor;
+      this.actorLineColor = this.actorLineColor || 'grey';
+      this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;
+      this.signalColor = this.signalColor || this.textColor;
+      this.signalTextColor = this.signalTextColor || this.textColor;
+      this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;
+      this.labelTextColor = this.labelTextColor || this.actorTextColor;
+      this.loopTextColor = this.loopTextColor || this.actorTextColor;
+      this.activationBorderColor = this.activationBorderColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["darken"])(this.secondaryColor, 10);
+      this.activationBkgColor = this.activationBkgColor || this.secondaryColor;
+      this.sequenceNumberColor = this.sequenceNumberColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.lineColor);
+      /* Gantt chart variables */
+
+      this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;
+      this.altSectionBkgColor = this.altSectionBkgColor || 'white';
+      this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;
+      this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;
+      this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;
+      this.taskBkgColor = this.taskBkgColor || this.primaryColor;
+      this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;
+      this.activeTaskBkgColor = this.activeTaskBkgColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.primaryColor, 23);
+      this.gridColor = this.gridColor || 'lightgrey';
+      this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';
+      this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';
+      this.critBorderColor = this.critBorderColor || '#ff8888';
+      this.critBkgColor = this.critBkgColor || 'red';
+      this.todayLineColor = this.todayLineColor || 'red';
+      this.taskTextColor = this.taskTextColor || this.textColor;
+      this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;
+      this.taskTextLightColor = this.taskTextLightColor || this.textColor;
+      this.taskTextColor = this.taskTextColor || this.primaryTextColor;
+      this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;
+      this.taskTextClickableColor = this.taskTextClickableColor || '#003163';
+      /* state colors */
+
+      this.labelColor = this.labelColor || this.primaryTextColor;
+      this.altBackground = this.altBackground || this.tertiaryColor;
+      this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;
+      this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;
+      /* class */
+
+      this.classText = this.classText || this.textColor;
+      /* user-journey */
+
+      this.fillType0 = this.fillType0 || this.primaryColor;
+      this.fillType1 = this.fillType1 || this.secondaryColor;
+      this.fillType2 = this.fillType2 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 64
+      });
+      this.fillType3 = this.fillType3 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 64
+      });
+      this.fillType4 = this.fillType4 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: -64
+      });
+      this.fillType5 = this.fillType5 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: -64
+      });
+      this.fillType6 = this.fillType6 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 128
+      });
+      this.fillType7 = this.fillType7 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 128
+      });
+    }
+  }, {
+    key: "calculate",
+    value: function calculate(overrides) {
+      var _this = this;
+
+      if (_typeof(overrides) !== 'object') {
+        // Calculate colors form base colors
+        this.updateColors();
+        return;
+      }
+
+      var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      }); // Calculate colors form base colors
+
+      this.updateColors(); // Copy values from overrides again in case of an override of derived value
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      });
+    }
+  }]);
+
+  return Theme;
+}();
+
+var getThemeVariables = function getThemeVariables(userOverrides) {
+  var theme = new Theme();
+  theme.calculate(userOverrides);
+  return theme;
+};
+
+/***/ }),
+
+/***/ "./src/themes/theme-dark.js":
+/*!**********************************!*\
+  !*** ./src/themes/theme-dark.js ***!
+  \**********************************/
+/*! exports provided: getThemeVariables */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeVariables", function() { return getThemeVariables; });
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ "./node_modules/khroma/dist/index.js");
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ "./src/themes/theme-helpers.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+
+
+
+var Theme =
+/*#__PURE__*/
+function () {
+  function Theme() {
+    _classCallCheck(this, Theme);
+
+    this.background = '#333';
+    this.primaryColor = '#1f2020';
+    this.secondaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.primaryColor, 16);
+    this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+      h: -160
+    });
+    this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.primaryColor, this.darkMode);
+    this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.secondaryColor, this.darkMode);
+    this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.tertiaryColor, this.darkMode);
+    this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.primaryColor);
+    this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.secondaryColor);
+    this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.tertiaryColor);
+    this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    this.mainBkg = '#1f2020';
+    this.secondBkg = 'calculated';
+    this.mainContrastColor = 'lightgrey';
+    this.darkTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])('#323D47'), 10);
+    this.lineColor = 'calculated';
+    this.border1 = '#81B1DB';
+    this.border2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["rgba"])(255, 255, 255, 0.25);
+    this.arrowheadColor = 'calculated';
+    this.fontFamily = '"trebuchet ms", verdana, arial';
+    this.fontSize = '16px';
+    this.labelBackground = '#181818';
+    this.textColor = '#ccc';
+    /* Flowchart variables */
+
+    this.nodeBkg = 'calculated';
+    this.nodeBorder = 'calculated';
+    this.clusterBkg = 'calculated';
+    this.clusterBorder = 'calculated';
+    this.defaultLinkColor = 'calculated';
+    this.titleColor = '#F9FFFE';
+    this.edgeLabelBackground = 'calculated';
+    /* Sequence Diagram variables */
+
+    this.actorBorder = 'calculated';
+    this.actorBkg = 'calculated';
+    this.actorTextColor = 'calculated';
+    this.actorLineColor = 'calculated';
+    this.signalColor = 'calculated';
+    this.signalTextColor = 'calculated';
+    this.labelBoxBkgColor = 'calculated';
+    this.labelBoxBorderColor = 'calculated';
+    this.labelTextColor = 'calculated';
+    this.loopTextColor = 'calculated';
+    this.noteBorderColor = 'calculated';
+    this.noteBkgColor = '#fff5ad';
+    this.noteTextColor = 'calculated';
+    this.activationBorderColor = 'calculated';
+    this.activationBkgColor = 'calculated';
+    this.sequenceNumberColor = 'black';
+    /* Gantt chart variables */
+
+    this.sectionBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["darken"])('#EAE8D9', 30);
+    this.altSectionBkgColor = 'calculated';
+    this.sectionBkgColor2 = '#EAE8D9';
+    this.taskBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["rgba"])(255, 255, 255, 70);
+    this.taskBkgColor = 'calculated';
+    this.taskTextColor = 'calculated';
+    this.taskTextLightColor = 'calculated';
+    this.taskTextOutsideColor = 'calculated';
+    this.taskTextClickableColor = '#003163';
+    this.activeTaskBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["rgba"])(255, 255, 255, 50);
+    this.activeTaskBkgColor = '#81B1DB';
+    this.gridColor = 'calculated';
+    this.doneTaskBkgColor = 'calculated';
+    this.doneTaskBorderColor = 'grey';
+    this.critBorderColor = '#E83737';
+    this.critBkgColor = '#E83737';
+    this.taskTextDarkColor = 'calculated';
+    this.todayLineColor = '#DB5757';
+    /* state colors */
+
+    this.labelColor = 'calculated';
+    this.errorBkgColor = '#a44141';
+    this.errorTextColor = '#ddd';
+  }
+
+  _createClass(Theme, [{
+    key: "updateColors",
+    value: function updateColors() {
+      this.secondBkg = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.mainBkg, 16);
+      this.lineColor = this.mainContrastColor;
+      this.arrowheadColor = this.mainContrastColor;
+      /* Flowchart variables */
+
+      this.nodeBkg = this.mainBkg;
+      this.nodeBorder = this.border1;
+      this.clusterBkg = this.secondBkg;
+      this.clusterBorder = this.border2;
+      this.defaultLinkColor = this.lineColor;
+      this.edgeLabelBackground = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.labelBackground, 25);
+      /* Sequence Diagram variables */
+
+      this.actorBorder = this.border1;
+      this.actorBkg = this.mainBkg;
+      this.actorTextColor = this.mainContrastColor;
+      this.actorLineColor = this.mainContrastColor;
+      this.signalColor = this.mainContrastColor;
+      this.signalTextColor = this.mainContrastColor;
+      this.labelBoxBkgColor = this.actorBkg;
+      this.labelBoxBorderColor = this.actorBorder;
+      this.labelTextColor = this.mainContrastColor;
+      this.loopTextColor = this.mainContrastColor;
+      this.noteBorderColor = this.border2;
+      this.noteTextColor = this.mainBkg;
+      this.activationBorderColor = this.border1;
+      this.activationBkgColor = this.secondBkg;
+      /* Gantt chart variables */
+
+      this.altSectionBkgColor = this.background;
+      this.taskBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.mainBkg, 23);
+      this.taskTextColor = this.darkTextColor;
+      this.taskTextLightColor = this.mainContrastColor;
+      this.taskTextOutsideColor = this.taskTextLightColor;
+      this.gridColor = this.mainContrastColor;
+      this.doneTaskBkgColor = this.mainContrastColor;
+      this.taskTextDarkColor = this.darkTextColor;
+      /* state colors */
+
+      this.labelColor = this.textColor;
+      this.altBackground = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.background, 20);
+      this.fillType0 = this.primaryColor;
+      this.fillType1 = this.secondaryColor;
+      this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 64
+      });
+      this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 64
+      });
+      this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: -64
+      });
+      this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: -64
+      });
+      this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 128
+      });
+      this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 128
+      });
+      /* class */
+
+      this.classText = this.primaryTextColor;
+    }
+  }, {
+    key: "calculate",
+    value: function calculate(overrides) {
+      var _this = this;
+
+      if (_typeof(overrides) !== 'object') {
+        // Calculate colors form base colors
+        this.updateColors();
+        return;
+      }
+
+      var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      }); // Calculate colors form base colors
+
+      this.updateColors(); // Copy values from overrides again in case of an override of derived value
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      });
+    }
+  }]);
+
+  return Theme;
+}();
+
+var getThemeVariables = function getThemeVariables(userOverrides) {
+  var theme = new Theme();
+  theme.calculate(userOverrides);
+  return theme;
+};
+
+/***/ }),
+
+/***/ "./src/themes/theme-default.js":
+/*!*************************************!*\
+  !*** ./src/themes/theme-default.js ***!
+  \*************************************/
+/*! exports provided: getThemeVariables */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeVariables", function() { return getThemeVariables; });
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ "./node_modules/khroma/dist/index.js");
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ "./src/themes/theme-helpers.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+
+
+
+var Theme =
+/*#__PURE__*/
+function () {
+  function Theme() {
+    _classCallCheck(this, Theme);
+
+    /* Base variables */
+    this.background = '#f4f4f4';
+    this.primaryColor = '#ECECFF';
+    this.secondaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+      h: 120
+    });
+    this.secondaryColor = '#ffffde';
+    this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+      h: -160
+    });
+    this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.primaryColor, this.darkMode);
+    this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.secondaryColor, this.darkMode);
+    this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.tertiaryColor, this.darkMode); // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);
+
+    this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.primaryColor);
+    this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.secondaryColor);
+    this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.tertiaryColor);
+    this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    this.background = 'white';
+    this.mainBkg = '#ECECFF';
+    this.secondBkg = '#ffffde';
+    this.lineColor = '#333333';
+    this.border1 = '#9370DB';
+    this.border2 = '#aaaa33';
+    this.arrowheadColor = '#333333';
+    this.fontFamily = '"trebuchet ms", verdana, arial';
+    this.fontSize = '16px';
+    this.labelBackground = '#e8e8e8';
+    this.textColor = '#333';
+    /* Flowchart variables */
+
+    this.nodeBkg = 'calculated';
+    this.nodeBorder = 'calculated';
+    this.clusterBkg = 'calculated';
+    this.clusterBorder = 'calculated';
+    this.defaultLinkColor = 'calculated';
+    this.titleColor = 'calculated';
+    this.edgeLabelBackground = 'calculated';
+    /* Sequence Diagram variables */
+
+    this.actorBorder = 'calculated';
+    this.actorBkg = 'calculated';
+    this.actorTextColor = 'black';
+    this.actorLineColor = 'grey';
+    this.signalColor = 'calculated';
+    this.signalTextColor = 'calculated';
+    this.labelBoxBkgColor = 'calculated';
+    this.labelBoxBorderColor = 'calculated';
+    this.labelTextColor = 'calculated';
+    this.loopTextColor = 'calculated';
+    this.noteBorderColor = 'calculated';
+    this.noteBkgColor = '#fff5ad';
+    this.noteTextColor = 'calculated';
+    this.activationBorderColor = '#666';
+    this.activationBkgColor = '#f4f4f4';
+    this.sequenceNumberColor = 'white';
+    /* Gantt chart variables */
+
+    this.sectionBkgColor = 'calculated';
+    this.altSectionBkgColor = 'calculated';
+    this.sectionBkgColor2 = 'calculated';
+    this.taskBorderColor = 'calculated';
+    this.taskBkgColor = 'calculated';
+    this.taskTextLightColor = 'calculated';
+    this.taskTextColor = this.taskTextLightColor;
+    this.taskTextDarkColor = 'calculated';
+    this.taskTextOutsideColor = this.taskTextDarkColor;
+    this.taskTextClickableColor = 'calculated';
+    this.activeTaskBorderColor = 'calculated';
+    this.activeTaskBkgColor = 'calculated';
+    this.gridColor = 'calculated';
+    this.doneTaskBkgColor = 'calculated';
+    this.doneTaskBorderColor = 'calculated';
+    this.critBorderColor = 'calculated';
+    this.critBkgColor = 'calculated';
+    this.todayLineColor = 'calculated';
+    this.sectionBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["rgba"])(102, 102, 255, 0.49);
+    this.altSectionBkgColor = 'white';
+    this.sectionBkgColor2 = '#fff400';
+    this.taskBorderColor = '#534fbc';
+    this.taskBkgColor = '#8a90dd';
+    this.taskTextLightColor = 'white';
+    this.taskTextColor = 'calculated';
+    this.taskTextDarkColor = 'black';
+    this.taskTextOutsideColor = 'calculated';
+    this.taskTextClickableColor = '#003163';
+    this.activeTaskBorderColor = '#534fbc';
+    this.activeTaskBkgColor = '#bfc7ff';
+    this.gridColor = 'lightgrey';
+    this.doneTaskBkgColor = 'lightgrey';
+    this.doneTaskBorderColor = 'grey';
+    this.critBorderColor = '#ff8888';
+    this.critBkgColor = 'red';
+    this.todayLineColor = 'red';
+    /* state colors */
+
+    this.labelColor = 'black';
+    this.errorBkgColor = '#552222';
+    this.errorTextColor = '#552222';
+    this.updateColors();
+  }
+
+  _createClass(Theme, [{
+    key: "updateColors",
+    value: function updateColors() {
+      /* Flowchart variables */
+      this.nodeBkg = this.mainBkg;
+      this.nodeBorder = this.border1; // border 1
+
+      this.clusterBkg = this.secondBkg;
+      this.clusterBorder = this.border2;
+      this.defaultLinkColor = this.lineColor;
+      this.titleColor = this.textColor;
+      this.edgeLabelBackground = this.labelBackground;
+      /* Sequence Diagram variables */
+      // this.actorBorder = lighten(this.border1, 0.5);
+
+      this.actorBorder = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.border1, 23);
+      this.actorBkg = this.mainBkg;
+      this.labelBoxBkgColor = this.actorBkg;
+      this.signalColor = this.textColor;
+      this.signalTextColor = this.textColor;
+      this.labelBoxBorderColor = this.actorBorder;
+      this.labelTextColor = this.actorTextColor;
+      this.loopTextColor = this.actorTextColor;
+      this.noteBorderColor = this.border2;
+      this.noteTextColor = this.actorTextColor;
+      /* Gantt chart variables */
+
+      this.taskTextColor = this.taskTextLightColor;
+      this.taskTextOutsideColor = this.taskTextDarkColor;
+      /* state colors */
+
+      /* class */
+
+      this.classText = this.primaryTextColor;
+      /* journey */
+
+      this.fillType0 = this.primaryColor;
+      this.fillType1 = this.secondaryColor;
+      this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 64
+      });
+      this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 64
+      });
+      this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: -64
+      });
+      this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: -64
+      });
+      this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 128
+      });
+      this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 128
+      });
+    }
+  }, {
+    key: "calculate",
+    value: function calculate(overrides) {
+      var _this = this;
+
+      if (_typeof(overrides) !== 'object') {
+        // Calculate colors form base colors
+        this.updateColors();
+        return;
+      }
+
+      var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      }); // Calculate colors form base colors
+
+      this.updateColors(); // Copy values from overrides again in case of an override of derived value
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      });
+    }
+  }]);
+
+  return Theme;
+}();
+
+var getThemeVariables = function getThemeVariables(userOverrides) {
+  var theme = new Theme();
+  theme.calculate(userOverrides);
+  return theme;
+};
+
+/***/ }),
+
+/***/ "./src/themes/theme-forest.js":
+/*!************************************!*\
+  !*** ./src/themes/theme-forest.js ***!
+  \************************************/
+/*! exports provided: getThemeVariables */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeVariables", function() { return getThemeVariables; });
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ "./node_modules/khroma/dist/index.js");
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ "./src/themes/theme-helpers.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+
+
+
+var Theme =
+/*#__PURE__*/
+function () {
+  function Theme() {
+    _classCallCheck(this, Theme);
+
+    /* Base vales */
+    this.background = '#f4f4f4';
+    this.primaryColor = '#cde498';
+    this.secondaryColor = '#cdffb2';
+    this.background = 'white';
+    this.mainBkg = '#cde498';
+    this.secondBkg = '#cdffb2';
+    this.lineColor = 'green';
+    this.border1 = '#13540c';
+    this.border2 = '#6eaa49';
+    this.arrowheadColor = 'green';
+    this.fontFamily = '"trebuchet ms", verdana, arial';
+    this.fontSize = '16px';
+    this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])('#cde498', 10);
+    this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.primaryColor, this.darkMode);
+    this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.secondaryColor, this.darkMode);
+    this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.tertiaryColor, this.darkMode);
+    this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.primaryColor);
+    this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.secondaryColor);
+    this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.primaryColor);
+    this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    /* Flowchart variables */
+
+    this.nodeBkg = 'calculated';
+    this.nodeBorder = 'calculated';
+    this.clusterBkg = 'calculated';
+    this.clusterBorder = 'calculated';
+    this.defaultLinkColor = 'calculated';
+    this.titleColor = '#333';
+    this.edgeLabelBackground = '#e8e8e8';
+    /* Sequence Diagram variables */
+
+    this.actorBorder = 'calculated';
+    this.actorBkg = 'calculated';
+    this.actorTextColor = 'black';
+    this.actorLineColor = 'grey';
+    this.signalColor = '#333';
+    this.signalTextColor = '#333';
+    this.labelBoxBkgColor = 'calculated';
+    this.labelBoxBorderColor = '#326932';
+    this.labelTextColor = 'calculated';
+    this.loopTextColor = 'calculated';
+    this.noteBorderColor = 'calculated';
+    this.noteBkgColor = '#fff5ad';
+    this.noteTextColor = 'calculated';
+    this.activationBorderColor = '#666';
+    this.activationBkgColor = '#f4f4f4';
+    this.sequenceNumberColor = 'white';
+    /* Gantt chart variables */
+
+    this.sectionBkgColor = '#6eaa49';
+    this.altSectionBkgColor = 'white';
+    this.sectionBkgColor2 = '#6eaa49';
+    this.taskBorderColor = 'calculated';
+    this.taskBkgColor = '#487e3a';
+    this.taskTextLightColor = 'white';
+    this.taskTextColor = 'calculated';
+    this.taskTextDarkColor = 'black';
+    this.taskTextOutsideColor = 'calculated';
+    this.taskTextClickableColor = '#003163';
+    this.activeTaskBorderColor = 'calculated';
+    this.activeTaskBkgColor = 'calculated';
+    this.gridColor = 'lightgrey';
+    this.doneTaskBkgColor = 'lightgrey';
+    this.doneTaskBorderColor = 'grey';
+    this.critBorderColor = '#ff8888';
+    this.critBkgColor = 'red';
+    this.todayLineColor = 'red';
+    /* state colors */
+
+    this.labelColor = 'black';
+    this.errorBkgColor = '#552222';
+    this.errorTextColor = '#552222';
+  }
+
+  _createClass(Theme, [{
+    key: "updateColors",
+    value: function updateColors() {
+      /* Flowchart variables */
+      this.nodeBkg = this.mainBkg;
+      this.nodeBorder = this.border1;
+      this.clusterBkg = this.secondBkg;
+      this.clusterBorder = this.border2;
+      this.defaultLinkColor = this.lineColor;
+      /* Sequence Diagram variables */
+
+      this.actorBorder = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["darken"])(this.mainBkg, 20);
+      this.actorBkg = this.mainBkg;
+      this.labelBoxBkgColor = this.actorBkg;
+      this.labelTextColor = this.actorTextColor;
+      this.loopTextColor = this.actorTextColor;
+      this.noteBorderColor = this.border2;
+      this.noteTextColor = this.actorTextColor;
+      /* Gantt chart variables */
+
+      this.taskBorderColor = this.border1;
+      this.taskTextColor = this.taskTextLightColor;
+      this.taskTextOutsideColor = this.taskTextDarkColor;
+      this.activeTaskBorderColor = this.taskBorderColor;
+      this.activeTaskBkgColor = this.mainBkg;
+      /* state colors */
+
+      /* class */
+
+      this.classText = this.primaryTextColor;
+      /* journey */
+
+      this.fillType0 = this.primaryColor;
+      this.fillType1 = this.secondaryColor;
+      this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 64
+      });
+      this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 64
+      });
+      this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: -64
+      });
+      this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: -64
+      });
+      this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 128
+      });
+      this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 128
+      });
+    }
+  }, {
+    key: "calculate",
+    value: function calculate(overrides) {
+      var _this = this;
+
+      if (_typeof(overrides) !== 'object') {
+        // Calculate colors form base colors
+        this.updateColors();
+        return;
+      }
+
+      var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      }); // Calculate colors form base colors
+
+      this.updateColors(); // Copy values from overrides again in case of an override of derived value
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      });
+    }
+  }]);
+
+  return Theme;
+}();
+
+var getThemeVariables = function getThemeVariables(userOverrides) {
+  var theme = new Theme();
+  theme.calculate(userOverrides);
+  return theme;
+};
+
+/***/ }),
+
+/***/ "./src/themes/theme-helpers.js":
+/*!*************************************!*\
+  !*** ./src/themes/theme-helpers.js ***!
+  \*************************************/
+/*! exports provided: mkBorder */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mkBorder", function() { return mkBorder; });
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ "./node_modules/khroma/dist/index.js");
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);
+
+var mkBorder = function mkBorder(col, darkMode) {
+  return darkMode ? Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(col, {
+    s: -40,
+    l: 10
+  }) : Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(col, {
+    s: -40,
+    l: -10
+  });
+};
+
+/***/ }),
+
+/***/ "./src/themes/theme-neutral.js":
+/*!*************************************!*\
+  !*** ./src/themes/theme-neutral.js ***!
+  \*************************************/
+/*! exports provided: getThemeVariables */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeVariables", function() { return getThemeVariables; });
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ "./node_modules/khroma/dist/index.js");
+/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ "./src/themes/theme-helpers.js");
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+
+ // const Color = require ( 'khroma/dist/color' ).default
+// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => "#EAF2FB"
+
+var Theme =
+/*#__PURE__*/
+function () {
+  function Theme() {
+    _classCallCheck(this, Theme);
+
+    this.primaryColor = '#eee';
+    this.contrast = '#26a';
+    this.secondaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.contrast, 55);
+    this.background = '#ffffff'; // this.secondaryColor = adjust(this.primaryColor, { h: 120 });
+
+    this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+      h: -160
+    });
+    this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.primaryColor, this.darkMode);
+    this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.secondaryColor, this.darkMode);
+    this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__["mkBorder"])(this.tertiaryColor, this.darkMode); // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);
+
+    this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.primaryColor);
+    this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.secondaryColor);
+    this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.tertiaryColor);
+    this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["invert"])(this.background);
+    this.altBackground = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.contrast, 55);
+    this.mainBkg = '#eee';
+    this.secondBkg = 'calculated';
+    this.lineColor = '#666';
+    this.border1 = '#999';
+    this.border2 = 'calculated';
+    this.note = '#ffa';
+    this.text = '#333';
+    this.critical = '#d42';
+    this.done = '#bbb';
+    this.arrowheadColor = '#333333';
+    this.fontFamily = '"trebuchet ms", verdana, arial';
+    this.fontSize = '16px';
+    /* Flowchart variables */
+
+    this.nodeBkg = 'calculated';
+    this.nodeBorder = 'calculated';
+    this.clusterBkg = 'calculated';
+    this.clusterBorder = 'calculated';
+    this.defaultLinkColor = 'calculated';
+    this.titleColor = 'calculated';
+    this.edgeLabelBackground = 'white';
+    /* Sequence Diagram variables */
+
+    this.actorBorder = 'calculated';
+    this.actorBkg = 'calculated';
+    this.actorTextColor = 'calculated';
+    this.actorLineColor = 'calculated';
+    this.signalColor = 'calculated';
+    this.signalTextColor = 'calculated';
+    this.labelBoxBkgColor = 'calculated';
+    this.labelBoxBorderColor = 'calculated';
+    this.labelTextColor = 'calculated';
+    this.loopTextColor = 'calculated';
+    this.noteBorderColor = 'calculated';
+    this.noteBkgColor = 'calculated';
+    this.noteTextColor = 'calculated';
+    this.activationBorderColor = '#666';
+    this.activationBkgColor = '#f4f4f4';
+    this.sequenceNumberColor = 'white';
+    /* Gantt chart variables */
+
+    this.sectionBkgColor = 'calculated';
+    this.altSectionBkgColor = 'white';
+    this.sectionBkgColor2 = 'calculated';
+    this.taskBorderColor = 'calculated';
+    this.taskBkgColor = 'calculated';
+    this.taskTextLightColor = 'white';
+    this.taskTextColor = 'calculated';
+    this.taskTextDarkColor = 'calculated';
+    this.taskTextOutsideColor = 'calculated';
+    this.taskTextClickableColor = '#003163';
+    this.activeTaskBorderColor = 'calculated';
+    this.activeTaskBkgColor = 'calculated';
+    this.gridColor = 'calculated';
+    this.doneTaskBkgColor = 'calculated';
+    this.doneTaskBorderColor = 'calculated';
+    this.critBkgColor = 'calculated';
+    this.critBorderColor = 'calculated';
+    this.todayLineColor = 'calculated';
+    /* state colors */
+
+    this.labelColor = 'black';
+    this.errorBkgColor = '#552222';
+    this.errorTextColor = '#552222';
+  }
+
+  _createClass(Theme, [{
+    key: "updateColors",
+    value: function updateColors() {
+      this.secondBkg = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.contrast, 55);
+      this.border2 = this.contrast;
+      /* Flowchart variables */
+
+      this.nodeBkg = this.mainBkg;
+      this.nodeBorder = this.border1;
+      this.clusterBkg = this.secondBkg;
+      this.clusterBorder = this.border2;
+      this.defaultLinkColor = this.lineColor;
+      this.titleColor = this.text;
+      /* Sequence Diagram variables */
+
+      this.actorBorder = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.border1, 23);
+      this.actorBkg = this.mainBkg;
+      this.actorTextColor = this.text;
+      this.actorLineColor = this.lineColor;
+      this.signalColor = this.text;
+      this.signalTextColor = this.text;
+      this.labelBoxBkgColor = this.actorBkg;
+      this.labelBoxBorderColor = this.actorBorder;
+      this.labelTextColor = this.text;
+      this.loopTextColor = this.text;
+      this.noteBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["darken"])(this.note, 60);
+      this.noteBkgColor = this.note;
+      this.noteTextColor = this.actorTextColor;
+      /* Gantt chart variables */
+
+      this.sectionBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.contrast, 30);
+      this.sectionBkgColor2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.contrast, 30);
+      this.taskBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["darken"])(this.contrast, 10);
+      this.taskBkgColor = this.contrast;
+      this.taskTextColor = this.taskTextLightColor;
+      this.taskTextDarkColor = this.text;
+      this.taskTextOutsideColor = this.taskTextDarkColor;
+      this.activeTaskBorderColor = this.taskBorderColor;
+      this.activeTaskBkgColor = this.mainBkg;
+      this.gridColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["lighten"])(this.border1, 30);
+      this.doneTaskBkgColor = this.done;
+      this.doneTaskBorderColor = this.lineColor;
+      this.critBkgColor = this.critical;
+      this.critBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["darken"])(this.critBkgColor, 10);
+      this.todayLineColor = this.critBkgColor;
+      /* state colors */
+
+      /* class */
+
+      this.classText = this.primaryTextColor;
+      /* journey */
+
+      this.fillType0 = this.primaryColor;
+      this.fillType1 = this.secondaryColor;
+      this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 64
+      });
+      this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 64
+      });
+      this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: -64
+      });
+      this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: -64
+      });
+      this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.primaryColor, {
+        h: 128
+      });
+      this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__["adjust"])(this.secondaryColor, {
+        h: 128
+      });
+    }
+  }, {
+    key: "calculate",
+    value: function calculate(overrides) {
+      var _this = this;
+
+      if (_typeof(overrides) !== 'object') {
+        // Calculate colors form base colors
+        this.updateColors();
+        return;
+      }
+
+      var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      }); // Calculate colors form base colors
+
+      this.updateColors(); // Copy values from overrides again in case of an override of derived value
+
+      keys.forEach(function (k) {
+        _this[k] = overrides[k];
+      });
+    }
+  }]);
+
+  return Theme;
+}();
+
+var getThemeVariables = function getThemeVariables(userOverrides) {
+  var theme = new Theme();
+  theme.calculate(userOverrides);
+  return theme;
+};
+
+/***/ }),
+
+/***/ "./src/utils.js":
+/*!**********************!*\
+  !*** ./src/utils.js ***!
+  \**********************/
+/*! exports provided: detectInit, detectDirective, detectType, isSubstringInArray, interpolateToCurve, formatUrl, runFunc, getStylesFromArray, generateId, random, assignWithDepth, getTextObj, drawSimpleText, wrapLabel, calculateTextHeight, calculateTextWidth, calculateTextDimensions, calculateSvgSizeAttrs, configureSvgSize, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detectInit", function() { return detectInit; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detectDirective", function() { return detectDirective; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detectType", function() { return detectType; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSubstringInArray", function() { return isSubstringInArray; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateToCurve", function() { return interpolateToCurve; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatUrl", function() { return formatUrl; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runFunc", function() { return runFunc; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getStylesFromArray", function() { return getStylesFromArray; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generateId", function() { return generateId; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "random", function() { return random; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "assignWithDepth", function() { return assignWithDepth; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTextObj", function() { return getTextObj; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawSimpleText", function() { return drawSimpleText; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "wrapLabel", function() { return wrapLabel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "calculateTextHeight", function() { return calculateTextHeight; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "calculateTextWidth", function() { return calculateTextWidth; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "calculateTextDimensions", function() { return calculateTextDimensions; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "calculateSvgSizeAttrs", function() { return calculateSvgSizeAttrs; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "configureSvgSize", function() { return configureSvgSize; });
+/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "./node_modules/d3/index.js");
+/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ "./src/logger.js");
+/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @braintree/sanitize-url */ "./node_modules/@braintree/sanitize-url/index.js");
+/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _diagrams_common_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./diagrams/common/common */ "./src/diagrams/common/common.js");
+var _this = undefined;
+
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
+
+function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
+
+
+
+
+ // import cryptoRandomString from 'crypto-random-string';
+// Effectively an enum of the supported curve types, accessible by name
+
+var d3CurveTypes = {
+  curveBasis: d3__WEBPACK_IMPORTED_MODULE_0__["curveBasis"],
+  curveBasisClosed: d3__WEBPACK_IMPORTED_MODULE_0__["curveBasisClosed"],
+  curveBasisOpen: d3__WEBPACK_IMPORTED_MODULE_0__["curveBasisOpen"],
+  curveLinear: d3__WEBPACK_IMPORTED_MODULE_0__["curveLinear"],
+  curveLinearClosed: d3__WEBPACK_IMPORTED_MODULE_0__["curveLinearClosed"],
+  curveMonotoneX: d3__WEBPACK_IMPORTED_MODULE_0__["curveMonotoneX"],
+  curveMonotoneY: d3__WEBPACK_IMPORTED_MODULE_0__["curveMonotoneY"],
+  curveNatural: d3__WEBPACK_IMPORTED_MODULE_0__["curveNatural"],
+  curveStep: d3__WEBPACK_IMPORTED_MODULE_0__["curveStep"],
+  curveStepAfter: d3__WEBPACK_IMPORTED_MODULE_0__["curveStepAfter"],
+  curveStepBefore: d3__WEBPACK_IMPORTED_MODULE_0__["curveStepBefore"]
+};
+var directive = /[%]{2}[{]\s*(?:(?:(\w+)\s*:|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi;
+var directiveWithoutOpen = /\s*(?:(?:(\w+)(?=:):|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi;
+var anyComment = /\s*%%.*\n/gm;
+/**
+ * @function detectInit
+ * Detects the init config object from the text
+ * ```mermaid
+ * %%{init: {"theme": "debug", "logLevel": 1 }}%%
+ * graph LR
+ *  a-->b
+ *  b-->c
+ *  c-->d
+ *  d-->e
+ *  e-->f
+ *  f-->g
+ *  g-->h
+ * ```
+ * or
+ * ```mermaid
+ * %%{initialize: {"theme": "dark", logLevel: "debug" }}%%
+ * graph LR
+ *  a-->b
+ *  b-->c
+ *  c-->d
+ *  d-->e
+ *  e-->f
+ *  f-->g
+ *  g-->h
+ * ```
+ *
+ * @param {string} text The text defining the graph
+ * @returns {object} the json object representing the init passed to mermaid.initialize()
+ */
+
+var detectInit = function detectInit(text) {
+  var inits = detectDirective(text, /(?:init\b)|(?:initialize\b)/);
+  var results = {};
+
+  if (Array.isArray(inits)) {
+    var args = inits.map(function (init) {
+      return init.args;
+    });
+    results = assignWithDepth(results, _toConsumableArray(args));
+  } else {
+    results = inits.args;
+  }
+
+  if (results) {
+    var type = detectType(text);
+    ['config'].forEach(function (prop) {
+      if (typeof results[prop] !== 'undefined') {
+        if (type === 'flowchart-v2') {
+          type = 'flowchart';
+        }
+
+        results[type] = results[prop];
+        delete results[prop];
+      }
+    });
+  }
+
+  return results;
+};
+/**
+ * @function detectDirective
+ * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted
+ * the first directive encountered in text will be returned
+ * ```mermaid
+ * graph LR
+ *  %%{somedirective}%%
+ *  a-->b
+ *  b-->c
+ *  c-->d
+ *  d-->e
+ *  e-->f
+ *  f-->g
+ *  g-->h
+ * ```
+ *
+ * @param {string} text The text defining the graph
+ * @param {string|RegExp} type The directive to return (default: null)
+ * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type
+ *          if a single directive was found, that directive object will be returned.
+ */
+
+var detectDirective = function detectDirective(text) {
+  var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+  try {
+    var commentWithoutDirectives = new RegExp("[%]{2}(?![{]".concat(directiveWithoutOpen.source, ")(?=[}][%]{2}).*\n"), 'ig');
+    text = text.trim().replace(commentWithoutDirectives, '').replace(/'/gm, '"');
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].debug("Detecting diagram directive".concat(type !== null ? ' type:' + type : '', " based on the text:").concat(text));
+    var match,
+        result = [];
+
+    while ((match = directive.exec(text)) !== null) {
+      // This is necessary to avoid infinite loops with zero-width matches
+      if (match.index === directive.lastIndex) {
+        directive.lastIndex++;
+      }
+
+      if (match && !type || type && match[1] && match[1].match(type) || type && match[2] && match[2].match(type)) {
+        var _type = match[1] ? match[1] : match[2];
+
+        var args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;
+        result.push({
+          type: _type,
+          args: args
+        });
+      }
+    }
+
+    if (result.length === 0) {
+      result.push({
+        type: text,
+        args: null
+      });
+    }
+
+    return result.length === 1 ? result[0] : result;
+  } catch (error) {
+    _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].error("ERROR: ".concat(error.message, " - Unable to parse directive").concat(type !== null ? ' type:' + type : '', " based on the text:").concat(text));
+    return {
+      type: null,
+      args: null
+    };
+  }
+};
+/**
+ * @function detectType
+ * Detects the type of the graph text. Takes into consideration the possible existence of an %%init
+ * directive
+ * ```mermaid
+ * %%{initialize: {"startOnLoad": true, logLevel: "fatal" }}%%
+ * graph LR
+ *  a-->b
+ *  b-->c
+ *  c-->d
+ *  d-->e
+ *  e-->f
+ *  f-->g
+ *  g-->h
+ * ```
+ *
+ * @param {string} text The text defining the graph
+ * @returns {string} A graph definition key
+ */
+
+var detectType = function detectType(text) {
+  text = text.replace(directive, '').replace(anyComment, '\n');
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].debug('Detecting diagram type based on the text ' + text);
+
+  if (text.match(/^\s*sequenceDiagram/)) {
+    return 'sequence';
+  }
+
+  if (text.match(/^\s*gantt/)) {
+    return 'gantt';
+  }
+
+  if (text.match(/^\s*classDiagram-v2/)) {
+    return 'classDiagram';
+  }
+
+  if (text.match(/^\s*classDiagram/)) {
+    return 'class';
+  }
+
+  if (text.match(/^\s*stateDiagram-v2/)) {
+    return 'stateDiagram';
+  }
+
+  if (text.match(/^\s*stateDiagram/)) {
+    return 'state';
+  }
+
+  if (text.match(/^\s*gitGraph/)) {
+    return 'git';
+  }
+
+  if (text.match(/^\s*flowchart/)) {
+    return 'flowchart-v2';
+  }
+
+  if (text.match(/^\s*info/)) {
+    return 'info';
+  }
+
+  if (text.match(/^\s*pie/)) {
+    return 'pie';
+  }
+
+  if (text.match(/^\s*erDiagram/)) {
+    return 'er';
+  }
+
+  if (text.match(/^\s*journey/)) {
+    return 'journey';
+  }
+
+  return 'flowchart';
+};
+
+var memoize = function memoize(fn, resolver) {
+  var cache = {};
+  return function () {
+    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+      args[_key] = arguments[_key];
+    }
+
+    var n = resolver ? resolver.apply(_this, args) : args[0];
+
+    if (n in cache) {
+      return cache[n];
+    } else {
+      var result = fn.apply(void 0, args);
+      cache[n] = result;
+      return result;
+    }
+  };
+};
+/**
+ * @function isSubstringInArray
+ * Detects whether a substring in present in a given array
+ * @param {string} str The substring to detect
+ * @param {array} arr The array to search
+ * @returns {number} the array index containing the substring or -1 if not present
+ **/
+
+
+var isSubstringInArray = function isSubstringInArray(str, arr) {
+  for (var i = 0; i < arr.length; i++) {
+    if (arr[i].match(str)) return i;
+  }
+
+  return -1;
+};
+var interpolateToCurve = function interpolateToCurve(interpolate, defaultCurve) {
+  if (!interpolate) {
+    return defaultCurve;
+  }
+
+  var curveName = "curve".concat(interpolate.charAt(0).toUpperCase() + interpolate.slice(1));
+  return d3CurveTypes[curveName] || defaultCurve;
+};
+var formatUrl = function formatUrl(linkStr, config) {
+  var url = linkStr.trim();
+
+  if (url) {
+    if (config.securityLevel !== 'loose') {
+      return Object(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_2__["sanitizeUrl"])(url);
+    }
+
+    return url;
+  }
+};
+var runFunc = function runFunc(functionName) {
+  var _obj;
+
+  var arrPaths = functionName.split('.');
+  var len = arrPaths.length - 1;
+  var fnName = arrPaths[len];
+  var obj = window;
+
+  for (var i = 0; i < len; i++) {
+    obj = obj[arrPaths[i]];
+    if (!obj) return;
+  }
+
+  for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+    params[_key2 - 1] = arguments[_key2];
+  }
+
+  (_obj = obj)[fnName].apply(_obj, params);
+};
+
+var distance = function distance(p1, p2) {
+  return p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;
+};
+
+var traverseEdge = function traverseEdge(points) {
+  var prevPoint;
+  var totalDistance = 0;
+  points.forEach(function (point) {
+    totalDistance += distance(point, prevPoint);
+    prevPoint = point;
+  }); // Traverse half of total distance along points
+
+  var remainingDistance = totalDistance / 2;
+  var center = undefined;
+  prevPoint = undefined;
+  points.forEach(function (point) {
+    if (prevPoint && !center) {
+      var vectorDistance = distance(point, prevPoint);
+
+      if (vectorDistance < remainingDistance) {
+        remainingDistance -= vectorDistance;
+      } else {
+        // The point is remainingDistance from prevPoint in the vector between prevPoint and point
+        // Calculate the coordinates
+        var distanceRatio = remainingDistance / vectorDistance;
+        if (distanceRatio <= 0) center = prevPoint;
+        if (distanceRatio >= 1) center = {
+          x: point.x,
+          y: point.y
+        };
+
+        if (distanceRatio > 0 && distanceRatio < 1) {
+          center = {
+            x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,
+            y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y
+          };
+        }
+      }
+    }
+
+    prevPoint = point;
+  });
+  return center;
+};
+
+var calcLabelPosition = function calcLabelPosition(points) {
+  return traverseEdge(points);
+};
+
+var calcCardinalityPosition = function calcCardinalityPosition(isRelationTypePresent, points, initialPosition) {
+  var prevPoint;
+  var totalDistance = 0; // eslint-disable-line
+
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('our points', points);
+
+  if (points[0] !== initialPosition) {
+    points = points.reverse();
+  }
+
+  points.forEach(function (point) {
+    totalDistance += distance(point, prevPoint);
+    prevPoint = point;
+  }); // Traverse only 25 total distance along points to find cardinality point
+
+  var distanceToCardinalityPoint = 25;
+  var remainingDistance = distanceToCardinalityPoint;
+  var center;
+  prevPoint = undefined;
+  points.forEach(function (point) {
+    if (prevPoint && !center) {
+      var vectorDistance = distance(point, prevPoint);
+
+      if (vectorDistance < remainingDistance) {
+        remainingDistance -= vectorDistance;
+      } else {
+        // The point is remainingDistance from prevPoint in the vector between prevPoint and point
+        // Calculate the coordinates
+        var distanceRatio = remainingDistance / vectorDistance;
+        if (distanceRatio <= 0) center = prevPoint;
+        if (distanceRatio >= 1) center = {
+          x: point.x,
+          y: point.y
+        };
+
+        if (distanceRatio > 0 && distanceRatio < 1) {
+          center = {
+            x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,
+            y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y
+          };
+        }
+      }
+    }
+
+    prevPoint = point;
+  }); // if relation is present (Arrows will be added), change cardinality point off-set distance (d)
+
+  var d = isRelationTypePresent ? 10 : 5; //Calculate Angle for x and y axis
+
+  var angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);
+  var cardinalityPosition = {
+    x: 0,
+    y: 0
+  }; //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance
+
+  cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;
+  cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;
+  return cardinalityPosition;
+};
+/**
+ * position ['start_left', 'start_right', 'end_left', 'end_right']
+ */
+
+
+var calcTerminalLabelPosition = function calcTerminalLabelPosition(terminalMarkerSize, position, _points) {
+  // Todo looking to faster cloning method
+  var points = JSON.parse(JSON.stringify(_points));
+  var prevPoint;
+  var totalDistance = 0; // eslint-disable-line
+
+  _logger__WEBPACK_IMPORTED_MODULE_1__["logger"].info('our points', points);
+
+  if (position !== 'start_left' && position !== 'start_right') {
+    points = points.reverse();
+  }
+
+  points.forEach(function (point) {
+    totalDistance += distance(point, prevPoint);
+    prevPoint = point;
+  }); // Traverse only 25 total distance along points to find cardinality point
+
+  var distanceToCardinalityPoint = 25;
+  var remainingDistance = distanceToCardinalityPoint;
+  var center;
+  prevPoint = undefined;
+  points.forEach(function (point) {
+    if (prevPoint && !center) {
+      var vectorDistance = distance(point, prevPoint);
+
+      if (vectorDistance < remainingDistance) {
+        remainingDistance -= vectorDistance;
+      } else {
+        // The point is remainingDistance from prevPoint in the vector between prevPoint and point
+        // Calculate the coordinates
+        var distanceRatio = remainingDistance / vectorDistance;
+        if (distanceRatio <= 0) center = prevPoint;
+        if (distanceRatio >= 1) center = {
+          x: point.x,
+          y: point.y
+        };
+
+        if (distanceRatio > 0 && distanceRatio < 1) {
+          center = {
+            x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,
+            y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y
+          };
+        }
+      }
+    }
+
+    prevPoint = point;
+  }); // if relation is present (Arrows will be added), change cardinality point off-set distance (d)
+
+  var d = 10; //Calculate Angle for x and y axis
+
+  var angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);
+  var cardinalityPosition = {
+    x: 0,
+    y: 0
+  }; //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance
+
+  cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;
+  cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;
+
+  if (position === 'start_left') {
+    cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;
+    cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;
+  }
+
+  if (position === 'end_right') {
+    cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;
+    cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;
+  }
+
+  if (position === 'end_left') {
+    cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;
+    cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;
+  }
+
+  return cardinalityPosition;
+};
+
+var getStylesFromArray = function getStylesFromArray(arr) {
+  var style = '';
+  var labelStyle = '';
+
+  for (var i = 0; i < arr.length; i++) {
+    if (typeof arr[i] !== 'undefined') {
+      // add text properties to label style definition
+      if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {
+        labelStyle = labelStyle + arr[i] + ';';
+      } else {
+        style = style + arr[i] + ';';
+      }
+    }
+  }
+
+  return {
+    style: style,
+    labelStyle: labelStyle
+  };
+};
+var cnt = 0;
+var generateId = function generateId() {
+  cnt++;
+  return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;
+};
+
+function makeid(length) {
+  var result = '';
+  var characters = '0123456789abcdef';
+  var charactersLength = characters.length;
+
+  for (var i = 0; i < length; i++) {
+    result += characters.charAt(Math.floor(Math.random() * charactersLength));
+  }
+
+  return result;
+}
+
+var random = function random(options) {
+  return makeid(options.length);
+};
+/**
+ * @function assignWithDepth
+ * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects
+ * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with
+ * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,
+ * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]
+ * <p>
+ * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:
+ * ```
+ * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };
+ * let config_1 = { foo: 'foo', bar: 'bar' };
+ * let result = assignWithDepth(config_0, config_1);
+ * console.log(result);
+ * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }
+ * ```
+ * <p>
+ * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.
+ * <p>
+ * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst
+ * in order.
+ * @param dst:any - the destination of the merge
+ * @param src:any - the source object(s) to merge into destination
+ * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -
+ * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })
+ * @returns {*}
+ */
+
+var assignWithDepth = function assignWithDepth(dst, src, config) {
+  var _Object$assign = Object.assign({
+    depth: 2,
+    clobber: false
+  }, config),
+      depth = _Object$assign.depth,
+      clobber = _Object$assign.clobber;
+
+  if (Array.isArray(src) && !Array.isArray(dst)) {
+    src.forEach(function (s) {
+      return assignWithDepth(dst, s, config);
+    });
+    return dst;
+  } else if (Array.isArray(src) && Array.isArray(dst)) {
+    src.forEach(function (s) {
+      if (dst.indexOf(s) === -1) {
+        dst.push(s);
+      }
+    });
+    return dst;
+  }
+
+  if (typeof dst === 'undefined' || depth <= 0) {
+    if (dst !== undefined && dst !== null && _typeof(dst) === 'object' && _typeof(src) === 'object') {
+      return Object.assign(dst, src);
+    } else {
+      return src;
+    }
+  }
+
+  if (typeof src !== 'undefined' && _typeof(dst) === 'object' && _typeof(src) === 'object') {
+    Object.keys(src).forEach(function (key) {
+      if (_typeof(src[key]) === 'object' && (dst[key] === undefined || _typeof(dst[key]) === 'object')) {
+        if (dst[key] === undefined) {
+          dst[key] = Array.isArray(src[key]) ? [] : {};
+        }
+
+        dst[key] = assignWithDepth(dst[key], src[key], {
+          depth: depth - 1,
+          clobber: clobber
+        });
+      } else if (clobber || _typeof(dst[key]) !== 'object' && _typeof(src[key]) !== 'object') {
+        dst[key] = src[key];
+      }
+    });
+  }
+
+  return dst;
+};
+var getTextObj = function getTextObj() {
+  return {
+    x: 0,
+    y: 0,
+    fill: undefined,
+    anchor: 'start',
+    style: '#666',
+    width: 100,
+    height: 100,
+    textMargin: 0,
+    rx: 0,
+    ry: 0,
+    valign: undefined
+  };
+};
+var drawSimpleText = function drawSimpleText(elem, textData) {
+  // Remove and ignore br:s
+  var nText = textData.text.replace(_diagrams_common_common__WEBPACK_IMPORTED_MODULE_3__["default"].lineBreakRegex, ' ');
+  var textElem = elem.append('text');
+  textElem.attr('x', textData.x);
+  textElem.attr('y', textData.y);
+  textElem.style('text-anchor', textData.anchor);
+  textElem.style('font-family', textData.fontFamily);
+  textElem.style('font-size', textData.fontSize);
+  textElem.style('font-weight', textData.fontWeight);
+  textElem.attr('fill', textData.fill);
+
+  if (typeof textData.class !== 'undefined') {
+    textElem.attr('class', textData.class);
+  }
+
+  var span = textElem.append('tspan');
+  span.attr('x', textData.x + textData.textMargin * 2);
+  span.attr('fill', textData.fill);
+  span.text(nText);
+  return textElem;
+};
+var wrapLabel = memoize(function (label, maxWidth, config) {
+  if (!label) {
+    return label;
+  }
+
+  config = Object.assign({
+    fontSize: 12,
+    fontWeight: 400,
+    fontFamily: 'Arial',
+    joinWith: '<br/>'
+  }, config);
+
+  if (_diagrams_common_common__WEBPACK_IMPORTED_MODULE_3__["default"].lineBreakRegex.test(label)) {
+    return label;
+  }
+
+  var words = label.split(' ');
+  var completedLines = [];
+  var nextLine = '';
+  words.forEach(function (word, index) {
+    var wordLength = calculateTextWidth("".concat(word, " "), config);
+    var nextLineLength = calculateTextWidth(nextLine, config);
+
+    if (wordLength > maxWidth) {
+      var _breakString = breakString(word, maxWidth, '-', config),
+          hyphenatedStrings = _breakString.hyphenatedStrings,
+          remainingWord = _breakString.remainingWord;
+
+      completedLines.push.apply(completedLines, [nextLine].concat(_toConsumableArray(hyphenatedStrings)));
+      nextLine = remainingWord;
+    } else if (nextLineLength + wordLength >= maxWidth) {
+      completedLines.push(nextLine);
+      nextLine = word;
+    } else {
+      nextLine = [nextLine, word].filter(Boolean).join(' ');
+    }
+
+    var currentWord = index + 1;
+    var isLastWord = currentWord === words.length;
+
+    if (isLastWord) {
+      completedLines.push(nextLine);
+    }
+  });
+  return completedLines.filter(function (line) {
+    return line !== '';
+  }).join(config.joinWith);
+}, function (label, maxWidth, config) {
+  return "".concat(label, "-").concat(maxWidth, "-").concat(config.fontSize, "-").concat(config.fontWeight, "-").concat(config.fontFamily, "-").concat(config.joinWith);
+});
+var breakString = memoize(function (word, maxWidth) {
+  var hyphenCharacter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '-';
+  var config = arguments.length > 3 ? arguments[3] : undefined;
+  config = Object.assign({
+    fontSize: 12,
+    fontWeight: 400,
+    fontFamily: 'Arial',
+    margin: 0
+  }, config);
+  var characters = word.split('');
+  var lines = [];
+  var currentLine = '';
+  characters.forEach(function (character, index) {
+    var nextLine = "".concat(currentLine).concat(character);
+    var lineWidth = calculateTextWidth(nextLine, config);
+
+    if (lineWidth >= maxWidth) {
+      var currentCharacter = index + 1;
+      var isLastLine = characters.length === currentCharacter;
+      var hyphenatedNextLine = "".concat(nextLine).concat(hyphenCharacter);
+      lines.push(isLastLine ? nextLine : hyphenatedNextLine);
+      currentLine = '';
+    } else {
+      currentLine = nextLine;
+    }
+  });
+  return {
+    hyphenatedStrings: lines,
+    remainingWord: currentLine
+  };
+}, function (word, maxWidth) {
+  var hyphenCharacter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '-';
+  var config = arguments.length > 3 ? arguments[3] : undefined;
+  return "".concat(word, "-").concat(maxWidth, "-").concat(hyphenCharacter, "-").concat(config.fontSize, "-").concat(config.fontWeight, "-").concat(config.fontFamily);
+});
+/**
+ * This calculates the text's height, taking into account the wrap breaks and
+ * both the statically configured height, width, and the length of the text (in pixels).
+ *
+ * If the wrapped text text has greater height, we extend the height, so it's
+ * value won't overflow.
+ *
+ * @return - The height for the given text
+ * @param text the text to measure
+ * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size
+ */
+
+var calculateTextHeight = function calculateTextHeight(text, config) {
+  config = Object.assign({
+    fontSize: 12,
+    fontWeight: 400,
+    fontFamily: 'Arial',
+    margin: 15
+  }, config);
+  return calculateTextDimensions(text, config).height;
+};
+/**
+ * This calculates the width of the given text, font size and family.
+ *
+ * @return - The width for the given text
+ * @param text - The text to calculate the width of
+ * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size
+ */
+
+var calculateTextWidth = function calculateTextWidth(text, config) {
+  config = Object.assign({
+    fontSize: 12,
+    fontWeight: 400,
+    fontFamily: 'Arial'
+  }, config);
+  return calculateTextDimensions(text, config).width;
+};
+/**
+ * This calculates the dimensions of the given text, font size, font family, font weight, and margins.
+ *
+ * @return - The width for the given text
+ * @param text - The text to calculate the width of
+ * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size
+ */
+
+var calculateTextDimensions = memoize(function (text, config) {
+  config = Object.assign({
+    fontSize: 12,
+    fontWeight: 400,
+    fontFamily: 'Arial'
+  }, config);
+  var _config = config,
+      fontSize = _config.fontSize,
+      fontFamily = _config.fontFamily,
+      fontWeight = _config.fontWeight;
+
+  if (!text) {
+    return {
+      width: 0,
+      height: 0
+    };
+  } // We can't really know if the user supplied font family will render on the user agent;
+  // thus, we'll take the max width between the user supplied font family, and a default
+  // of sans-serif.
+
+
+  var fontFamilies = ['sans-serif', fontFamily];
+  var lines = text.split(_diagrams_common_common__WEBPACK_IMPORTED_MODULE_3__["default"].lineBreakRegex);
+  var dims = [];
+  var body = Object(d3__WEBPACK_IMPORTED_MODULE_0__["select"])('body'); // We don't want to leak DOM elements - if a removal operation isn't available
+  // for any reason, do not continue.
+
+  if (!body.remove) {
+    return {
+      width: 0,
+      height: 0,
+      lineHeight: 0
+    };
+  }
+
+  var g = body.append('svg');
+
+  for (var _i = 0, _fontFamilies = fontFamilies; _i < _fontFamilies.length; _i++) {
+    var _fontFamily = _fontFamilies[_i];
+    var cheight = 0;
+    var dim = {
+      width: 0,
+      height: 0,
+      lineHeight: 0
+    };
+    var _iteratorNormalCompletion = true;
+    var _didIteratorError = false;
+    var _iteratorError = undefined;
+
+    try {
+      for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+        var line = _step.value;
+        var textObj = getTextObj();
+        textObj.text = line;
+        var textElem = drawSimpleText(g, textObj).style('font-size', fontSize).style('font-weight', fontWeight).style('font-family', _fontFamily);
+        var bBox = (textElem._groups || textElem)[0][0].getBBox();
+        dim.width = Math.round(Math.max(dim.width, bBox.width));
+        cheight = Math.round(bBox.height);
+        dim.height += cheight;
+        dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));
+      }
+    } catch (err) {
+      _didIteratorError = true;
+      _iteratorError = err;
+    } finally {
+      try {
+        if (!_iteratorNormalCompletion && _iterator.return != null) {
+          _iterator.return();
+        }
+      } finally {
+        if (_didIteratorError) {
+          throw _iteratorError;
+        }
+      }
+    }
+
+    dims.push(dim);
+  }
+
+  g.remove();
+  var index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;
+  return dims[index];
+}, function (text, config) {
+  return "".concat(text, "-").concat(config.fontSize, "-").concat(config.fontWeight, "-").concat(config.fontFamily);
+});
+
+var d3Attrs = function d3Attrs(d3Elem, attrs) {
+  var _iteratorNormalCompletion2 = true;
+  var _didIteratorError2 = false;
+  var _iteratorError2 = undefined;
+
+  try {
+    for (var _iterator2 = attrs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+      var attr = _step2.value;
+      d3Elem.attr(attr[0], attr[1]);
+    }
+  } catch (err) {
+    _didIteratorError2 = true;
+    _iteratorError2 = err;
+  } finally {
+    try {
+      if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+        _iterator2.return();
+      }
+    } finally {
+      if (_didIteratorError2) {
+        throw _iteratorError2;
+      }
+    }
+  }
+};
+
+var calculateSvgSizeAttrs = function calculateSvgSizeAttrs(height, width, useMaxWidth) {
+  var attrs = new Map();
+  attrs.set('height', height);
+
+  if (useMaxWidth) {
+    attrs.set('width', '100%');
+    attrs.set('style', "max-width: ".concat(width, "px;"));
+  } else {
+    attrs.set('width', width);
+  }
+
+  return attrs;
+};
+var configureSvgSize = function configureSvgSize(svgElem, height, width, useMaxWidth) {
+  var attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);
+  d3Attrs(svgElem, attrs);
+};
+/* harmony default export */ __webpack_exports__["default"] = ({
+  assignWithDepth: assignWithDepth,
+  wrapLabel: wrapLabel,
+  calculateTextHeight: calculateTextHeight,
+  calculateTextWidth: calculateTextWidth,
+  calculateTextDimensions: calculateTextDimensions,
+  calculateSvgSizeAttrs: calculateSvgSizeAttrs,
+  configureSvgSize: configureSvgSize,
+  detectInit: detectInit,
+  detectDirective: detectDirective,
+  detectType: detectType,
+  isSubstringInArray: isSubstringInArray,
+  interpolateToCurve: interpolateToCurve,
+  calcLabelPosition: calcLabelPosition,
+  calcCardinalityPosition: calcCardinalityPosition,
+  calcTerminalLabelPosition: calcTerminalLabelPosition,
+  formatUrl: formatUrl,
+  getStylesFromArray: getStylesFromArray,
+  generateId: generateId,
+  random: random,
+  memoize: memoize,
+  runFunc: runFunc
+});
+
+/***/ })
+
+/******/ })["default"];
+});
+//# sourceMappingURL=mermaid.js.map
diff --git a/assets/js/remark-latest.min.js b/assets/js/remark-latest.min.js
index 31d74fa9a294fbf7eb47717d7b54ccd18c6037ad..6bdc72dde030209909107a4254c4284178e9ff05 100644
--- a/assets/js/remark-latest.min.js
+++ b/assets/js/remark-latest.min.js
@@ -27,5 +27,5 @@ begin:/[^<\/\$\:'"-]\b(?:abs|accumulator\-(?:after|before)|adjust\-(?:date(?:Tim
 "atelier-heath-light":".hljs-atelier-heath-light .hljs-comment,.hljs-atelier-heath-light .hljs-quote{color:#776977}.hljs-atelier-heath-light .hljs-variable,.hljs-atelier-heath-light .hljs-template-variable,.hljs-atelier-heath-light .hljs-attribute,.hljs-atelier-heath-light .hljs-tag,.hljs-atelier-heath-light .hljs-name,.hljs-atelier-heath-light .hljs-regexp,.hljs-atelier-heath-light .hljs-link,.hljs-atelier-heath-light .hljs-name,.hljs-atelier-heath-light .hljs-selector-id,.hljs-atelier-heath-light .hljs-selector-class{color:#ca402b}.hljs-atelier-heath-light .hljs-number,.hljs-atelier-heath-light .hljs-meta,.hljs-atelier-heath-light .hljs-built_in,.hljs-atelier-heath-light .hljs-builtin-name,.hljs-atelier-heath-light .hljs-literal,.hljs-atelier-heath-light .hljs-type,.hljs-atelier-heath-light .hljs-params{color:#a65926}.hljs-atelier-heath-light .hljs-string,.hljs-atelier-heath-light .hljs-symbol,.hljs-atelier-heath-light .hljs-bullet{color:#918b3b}.hljs-atelier-heath-light .hljs-title,.hljs-atelier-heath-light .hljs-section{color:#516aec}.hljs-atelier-heath-light .hljs-keyword,.hljs-atelier-heath-light .hljs-selector-tag{color:#7b59c0}.hljs-atelier-heath-light .hljs{display:block;overflow-x:auto;background:#f7f3f7;color:#695d69;padding:.5em}.hljs-atelier-heath-light .hljs-emphasis{font-style:italic}.hljs-atelier-heath-light .hljs-strong{font-weight:bold}","atelier-lakeside-dark":".hljs-atelier-lakeside-dark .hljs-comment,.hljs-atelier-lakeside-dark .hljs-quote{color:#7195a8}.hljs-atelier-lakeside-dark .hljs-variable,.hljs-atelier-lakeside-dark .hljs-template-variable,.hljs-atelier-lakeside-dark .hljs-attribute,.hljs-atelier-lakeside-dark .hljs-tag,.hljs-atelier-lakeside-dark .hljs-name,.hljs-atelier-lakeside-dark .hljs-regexp,.hljs-atelier-lakeside-dark .hljs-link,.hljs-atelier-lakeside-dark .hljs-name,.hljs-atelier-lakeside-dark .hljs-selector-id,.hljs-atelier-lakeside-dark .hljs-selector-class{color:#d22d72}.hljs-atelier-lakeside-dark .hljs-number,.hljs-atelier-lakeside-dark .hljs-meta,.hljs-atelier-lakeside-dark .hljs-built_in,.hljs-atelier-lakeside-dark .hljs-builtin-name,.hljs-atelier-lakeside-dark .hljs-literal,.hljs-atelier-lakeside-dark .hljs-type,.hljs-atelier-lakeside-dark .hljs-params{color:#935c25}.hljs-atelier-lakeside-dark .hljs-string,.hljs-atelier-lakeside-dark .hljs-symbol,.hljs-atelier-lakeside-dark .hljs-bullet{color:#568c3b}.hljs-atelier-lakeside-dark .hljs-title,.hljs-atelier-lakeside-dark .hljs-section{color:#257fad}.hljs-atelier-lakeside-dark .hljs-keyword,.hljs-atelier-lakeside-dark .hljs-selector-tag{color:#6b6bb8}.hljs-atelier-lakeside-dark .hljs{display:block;overflow-x:auto;background:#161b1d;color:#7ea2b4;padding:.5em}.hljs-atelier-lakeside-dark .hljs-emphasis{font-style:italic}.hljs-atelier-lakeside-dark .hljs-strong{font-weight:bold}","atelier-lakeside-light":".hljs-atelier-lakeside-light .hljs-comment,.hljs-atelier-lakeside-light .hljs-quote{color:#5a7b8c}.hljs-atelier-lakeside-light .hljs-variable,.hljs-atelier-lakeside-light .hljs-template-variable,.hljs-atelier-lakeside-light .hljs-attribute,.hljs-atelier-lakeside-light .hljs-tag,.hljs-atelier-lakeside-light .hljs-name,.hljs-atelier-lakeside-light .hljs-regexp,.hljs-atelier-lakeside-light .hljs-link,.hljs-atelier-lakeside-light .hljs-name,.hljs-atelier-lakeside-light .hljs-selector-id,.hljs-atelier-lakeside-light .hljs-selector-class{color:#d22d72}.hljs-atelier-lakeside-light .hljs-number,.hljs-atelier-lakeside-light .hljs-meta,.hljs-atelier-lakeside-light .hljs-built_in,.hljs-atelier-lakeside-light .hljs-builtin-name,.hljs-atelier-lakeside-light .hljs-literal,.hljs-atelier-lakeside-light .hljs-type,.hljs-atelier-lakeside-light .hljs-params{color:#935c25}.hljs-atelier-lakeside-light .hljs-string,.hljs-atelier-lakeside-light .hljs-symbol,.hljs-atelier-lakeside-light .hljs-bullet{color:#568c3b}.hljs-atelier-lakeside-light .hljs-title,.hljs-atelier-lakeside-light .hljs-section{color:#257fad}.hljs-atelier-lakeside-light .hljs-keyword,.hljs-atelier-lakeside-light .hljs-selector-tag{color:#6b6bb8}.hljs-atelier-lakeside-light .hljs{display:block;overflow-x:auto;background:#ebf8ff;color:#516d7b;padding:.5em}.hljs-atelier-lakeside-light .hljs-emphasis{font-style:italic}.hljs-atelier-lakeside-light .hljs-strong{font-weight:bold}","atelier-plateau-dark":".hljs-atelier-plateau-dark .hljs-comment,.hljs-atelier-plateau-dark .hljs-quote{color:#7e7777}.hljs-atelier-plateau-dark .hljs-variable,.hljs-atelier-plateau-dark .hljs-template-variable,.hljs-atelier-plateau-dark .hljs-attribute,.hljs-atelier-plateau-dark .hljs-tag,.hljs-atelier-plateau-dark .hljs-name,.hljs-atelier-plateau-dark .hljs-regexp,.hljs-atelier-plateau-dark .hljs-link,.hljs-atelier-plateau-dark .hljs-name,.hljs-atelier-plateau-dark .hljs-selector-id,.hljs-atelier-plateau-dark .hljs-selector-class{color:#ca4949}.hljs-atelier-plateau-dark .hljs-number,.hljs-atelier-plateau-dark .hljs-meta,.hljs-atelier-plateau-dark .hljs-built_in,.hljs-atelier-plateau-dark .hljs-builtin-name,.hljs-atelier-plateau-dark .hljs-literal,.hljs-atelier-plateau-dark .hljs-type,.hljs-atelier-plateau-dark .hljs-params{color:#b45a3c}.hljs-atelier-plateau-dark .hljs-string,.hljs-atelier-plateau-dark .hljs-symbol,.hljs-atelier-plateau-dark .hljs-bullet{color:#4b8b8b}.hljs-atelier-plateau-dark .hljs-title,.hljs-atelier-plateau-dark .hljs-section{color:#7272ca}.hljs-atelier-plateau-dark .hljs-keyword,.hljs-atelier-plateau-dark .hljs-selector-tag{color:#8464c4}.hljs-atelier-plateau-dark .hljs-deletion,.hljs-atelier-plateau-dark .hljs-addition{color:#1b1818;display:inline-block;width:100%}.hljs-atelier-plateau-dark .hljs-deletion{background-color:#ca4949}.hljs-atelier-plateau-dark .hljs-addition{background-color:#4b8b8b}.hljs-atelier-plateau-dark .hljs{display:block;overflow-x:auto;background:#1b1818;color:#8a8585;padding:.5em}.hljs-atelier-plateau-dark .hljs-emphasis{font-style:italic}.hljs-atelier-plateau-dark .hljs-strong{font-weight:bold}","atelier-plateau-light":".hljs-atelier-plateau-light .hljs-comment,.hljs-atelier-plateau-light .hljs-quote{color:#655d5d}.hljs-atelier-plateau-light .hljs-variable,.hljs-atelier-plateau-light .hljs-template-variable,.hljs-atelier-plateau-light .hljs-attribute,.hljs-atelier-plateau-light .hljs-tag,.hljs-atelier-plateau-light .hljs-name,.hljs-atelier-plateau-light .hljs-regexp,.hljs-atelier-plateau-light .hljs-link,.hljs-atelier-plateau-light .hljs-name,.hljs-atelier-plateau-light .hljs-selector-id,.hljs-atelier-plateau-light .hljs-selector-class{color:#ca4949}.hljs-atelier-plateau-light .hljs-number,.hljs-atelier-plateau-light .hljs-meta,.hljs-atelier-plateau-light .hljs-built_in,.hljs-atelier-plateau-light .hljs-builtin-name,.hljs-atelier-plateau-light .hljs-literal,.hljs-atelier-plateau-light .hljs-type,.hljs-atelier-plateau-light .hljs-params{color:#b45a3c}.hljs-atelier-plateau-light .hljs-string,.hljs-atelier-plateau-light .hljs-symbol,.hljs-atelier-plateau-light .hljs-bullet{color:#4b8b8b}.hljs-atelier-plateau-light .hljs-title,.hljs-atelier-plateau-light .hljs-section{color:#7272ca}.hljs-atelier-plateau-light .hljs-keyword,.hljs-atelier-plateau-light .hljs-selector-tag{color:#8464c4}.hljs-atelier-plateau-light .hljs-deletion,.hljs-atelier-plateau-light .hljs-addition{color:#1b1818;display:inline-block;width:100%}.hljs-atelier-plateau-light .hljs-deletion{background-color:#ca4949}.hljs-atelier-plateau-light .hljs-addition{background-color:#4b8b8b}.hljs-atelier-plateau-light .hljs{display:block;overflow-x:auto;background:#f4ecec;color:#585050;padding:.5em}.hljs-atelier-plateau-light .hljs-emphasis{font-style:italic}.hljs-atelier-plateau-light .hljs-strong{font-weight:bold}","atelier-savanna-dark":".hljs-atelier-savanna-dark .hljs-comment,.hljs-atelier-savanna-dark .hljs-quote{color:#78877d}.hljs-atelier-savanna-dark .hljs-variable,.hljs-atelier-savanna-dark .hljs-template-variable,.hljs-atelier-savanna-dark .hljs-attribute,.hljs-atelier-savanna-dark .hljs-tag,.hljs-atelier-savanna-dark .hljs-name,.hljs-atelier-savanna-dark .hljs-regexp,.hljs-atelier-savanna-dark .hljs-link,.hljs-atelier-savanna-dark .hljs-name,.hljs-atelier-savanna-dark .hljs-selector-id,.hljs-atelier-savanna-dark .hljs-selector-class{color:#b16139}.hljs-atelier-savanna-dark .hljs-number,.hljs-atelier-savanna-dark .hljs-meta,.hljs-atelier-savanna-dark .hljs-built_in,.hljs-atelier-savanna-dark .hljs-builtin-name,.hljs-atelier-savanna-dark .hljs-literal,.hljs-atelier-savanna-dark .hljs-type,.hljs-atelier-savanna-dark .hljs-params{color:#9f713c}.hljs-atelier-savanna-dark .hljs-string,.hljs-atelier-savanna-dark .hljs-symbol,.hljs-atelier-savanna-dark .hljs-bullet{color:#489963}.hljs-atelier-savanna-dark .hljs-title,.hljs-atelier-savanna-dark .hljs-section{color:#478c90}.hljs-atelier-savanna-dark .hljs-keyword,.hljs-atelier-savanna-dark .hljs-selector-tag{color:#55859b}.hljs-atelier-savanna-dark .hljs-deletion,.hljs-atelier-savanna-dark .hljs-addition{color:#171c19;display:inline-block;width:100%}.hljs-atelier-savanna-dark .hljs-deletion{background-color:#b16139}.hljs-atelier-savanna-dark .hljs-addition{background-color:#489963}.hljs-atelier-savanna-dark .hljs{display:block;overflow-x:auto;background:#171c19;color:#87928a;padding:.5em}.hljs-atelier-savanna-dark .hljs-emphasis{font-style:italic}.hljs-atelier-savanna-dark .hljs-strong{font-weight:bold}","atelier-savanna-light":".hljs-atelier-savanna-light .hljs-comment,.hljs-atelier-savanna-light .hljs-quote{color:#5f6d64}.hljs-atelier-savanna-light .hljs-variable,.hljs-atelier-savanna-light .hljs-template-variable,.hljs-atelier-savanna-light .hljs-attribute,.hljs-atelier-savanna-light .hljs-tag,.hljs-atelier-savanna-light .hljs-name,.hljs-atelier-savanna-light .hljs-regexp,.hljs-atelier-savanna-light .hljs-link,.hljs-atelier-savanna-light .hljs-name,.hljs-atelier-savanna-light .hljs-selector-id,.hljs-atelier-savanna-light .hljs-selector-class{color:#b16139}.hljs-atelier-savanna-light .hljs-number,.hljs-atelier-savanna-light .hljs-meta,.hljs-atelier-savanna-light .hljs-built_in,.hljs-atelier-savanna-light .hljs-builtin-name,.hljs-atelier-savanna-light .hljs-literal,.hljs-atelier-savanna-light .hljs-type,.hljs-atelier-savanna-light .hljs-params{color:#9f713c}.hljs-atelier-savanna-light .hljs-string,.hljs-atelier-savanna-light .hljs-symbol,.hljs-atelier-savanna-light .hljs-bullet{color:#489963}.hljs-atelier-savanna-light .hljs-title,.hljs-atelier-savanna-light .hljs-section{color:#478c90}.hljs-atelier-savanna-light .hljs-keyword,.hljs-atelier-savanna-light .hljs-selector-tag{color:#55859b}.hljs-atelier-savanna-light .hljs-deletion,.hljs-atelier-savanna-light .hljs-addition{color:#171c19;display:inline-block;width:100%}.hljs-atelier-savanna-light .hljs-deletion{background-color:#b16139}.hljs-atelier-savanna-light .hljs-addition{background-color:#489963}.hljs-atelier-savanna-light .hljs{display:block;overflow-x:auto;background:#ecf4ee;color:#526057;padding:.5em}.hljs-atelier-savanna-light .hljs-emphasis{font-style:italic}.hljs-atelier-savanna-light .hljs-strong{font-weight:bold}","atelier-seaside-dark":".hljs-atelier-seaside-dark .hljs-comment,.hljs-atelier-seaside-dark .hljs-quote{color:#809980}.hljs-atelier-seaside-dark .hljs-variable,.hljs-atelier-seaside-dark .hljs-template-variable,.hljs-atelier-seaside-dark .hljs-attribute,.hljs-atelier-seaside-dark .hljs-tag,.hljs-atelier-seaside-dark .hljs-name,.hljs-atelier-seaside-dark .hljs-regexp,.hljs-atelier-seaside-dark .hljs-link,.hljs-atelier-seaside-dark .hljs-name,.hljs-atelier-seaside-dark .hljs-selector-id,.hljs-atelier-seaside-dark .hljs-selector-class{color:#e6193c}.hljs-atelier-seaside-dark .hljs-number,.hljs-atelier-seaside-dark .hljs-meta,.hljs-atelier-seaside-dark .hljs-built_in,.hljs-atelier-seaside-dark .hljs-builtin-name,.hljs-atelier-seaside-dark .hljs-literal,.hljs-atelier-seaside-dark .hljs-type,.hljs-atelier-seaside-dark .hljs-params{color:#87711d}.hljs-atelier-seaside-dark .hljs-string,.hljs-atelier-seaside-dark .hljs-symbol,.hljs-atelier-seaside-dark .hljs-bullet{color:#29a329}.hljs-atelier-seaside-dark .hljs-title,.hljs-atelier-seaside-dark .hljs-section{color:#3d62f5}.hljs-atelier-seaside-dark .hljs-keyword,.hljs-atelier-seaside-dark .hljs-selector-tag{color:#ad2bee}.hljs-atelier-seaside-dark .hljs{display:block;overflow-x:auto;background:#131513;color:#8ca68c;padding:.5em}.hljs-atelier-seaside-dark .hljs-emphasis{font-style:italic}.hljs-atelier-seaside-dark .hljs-strong{font-weight:bold}","atelier-seaside-light":".hljs-atelier-seaside-light .hljs-comment,.hljs-atelier-seaside-light .hljs-quote{color:#687d68}.hljs-atelier-seaside-light .hljs-variable,.hljs-atelier-seaside-light .hljs-template-variable,.hljs-atelier-seaside-light .hljs-attribute,.hljs-atelier-seaside-light .hljs-tag,.hljs-atelier-seaside-light .hljs-name,.hljs-atelier-seaside-light .hljs-regexp,.hljs-atelier-seaside-light .hljs-link,.hljs-atelier-seaside-light .hljs-name,.hljs-atelier-seaside-light .hljs-selector-id,.hljs-atelier-seaside-light .hljs-selector-class{color:#e6193c}.hljs-atelier-seaside-light .hljs-number,.hljs-atelier-seaside-light .hljs-meta,.hljs-atelier-seaside-light .hljs-built_in,.hljs-atelier-seaside-light .hljs-builtin-name,.hljs-atelier-seaside-light .hljs-literal,.hljs-atelier-seaside-light .hljs-type,.hljs-atelier-seaside-light .hljs-params{color:#87711d}.hljs-atelier-seaside-light .hljs-string,.hljs-atelier-seaside-light .hljs-symbol,.hljs-atelier-seaside-light .hljs-bullet{color:#29a329}.hljs-atelier-seaside-light .hljs-title,.hljs-atelier-seaside-light .hljs-section{color:#3d62f5}.hljs-atelier-seaside-light .hljs-keyword,.hljs-atelier-seaside-light .hljs-selector-tag{color:#ad2bee}.hljs-atelier-seaside-light .hljs{display:block;overflow-x:auto;background:#f4fbf4;color:#5e6e5e;padding:.5em}.hljs-atelier-seaside-light .hljs-emphasis{font-style:italic}.hljs-atelier-seaside-light .hljs-strong{font-weight:bold}","atelier-sulphurpool-dark":".hljs-atelier-sulphurpool-dark .hljs-comment,.hljs-atelier-sulphurpool-dark .hljs-quote{color:#898ea4}.hljs-atelier-sulphurpool-dark .hljs-variable,.hljs-atelier-sulphurpool-dark .hljs-template-variable,.hljs-atelier-sulphurpool-dark .hljs-attribute,.hljs-atelier-sulphurpool-dark .hljs-tag,.hljs-atelier-sulphurpool-dark .hljs-name,.hljs-atelier-sulphurpool-dark .hljs-regexp,.hljs-atelier-sulphurpool-dark .hljs-link,.hljs-atelier-sulphurpool-dark .hljs-name,.hljs-atelier-sulphurpool-dark .hljs-selector-id,.hljs-atelier-sulphurpool-dark .hljs-selector-class{color:#c94922}.hljs-atelier-sulphurpool-dark .hljs-number,.hljs-atelier-sulphurpool-dark .hljs-meta,.hljs-atelier-sulphurpool-dark .hljs-built_in,.hljs-atelier-sulphurpool-dark .hljs-builtin-name,.hljs-atelier-sulphurpool-dark .hljs-literal,.hljs-atelier-sulphurpool-dark .hljs-type,.hljs-atelier-sulphurpool-dark .hljs-params{color:#c76b29}.hljs-atelier-sulphurpool-dark .hljs-string,.hljs-atelier-sulphurpool-dark .hljs-symbol,.hljs-atelier-sulphurpool-dark .hljs-bullet{color:#ac9739}.hljs-atelier-sulphurpool-dark .hljs-title,.hljs-atelier-sulphurpool-dark .hljs-section{color:#3d8fd1}.hljs-atelier-sulphurpool-dark .hljs-keyword,.hljs-atelier-sulphurpool-dark .hljs-selector-tag{color:#6679cc}.hljs-atelier-sulphurpool-dark .hljs{display:block;overflow-x:auto;background:#202746;color:#979db4;padding:.5em}.hljs-atelier-sulphurpool-dark .hljs-emphasis{font-style:italic}.hljs-atelier-sulphurpool-dark .hljs-strong{font-weight:bold}","atelier-sulphurpool-light":".hljs-atelier-sulphurpool-light .hljs-comment,.hljs-atelier-sulphurpool-light .hljs-quote{color:#6b7394}.hljs-atelier-sulphurpool-light .hljs-variable,.hljs-atelier-sulphurpool-light .hljs-template-variable,.hljs-atelier-sulphurpool-light .hljs-attribute,.hljs-atelier-sulphurpool-light .hljs-tag,.hljs-atelier-sulphurpool-light .hljs-name,.hljs-atelier-sulphurpool-light .hljs-regexp,.hljs-atelier-sulphurpool-light .hljs-link,.hljs-atelier-sulphurpool-light .hljs-name,.hljs-atelier-sulphurpool-light .hljs-selector-id,.hljs-atelier-sulphurpool-light .hljs-selector-class{color:#c94922}.hljs-atelier-sulphurpool-light .hljs-number,.hljs-atelier-sulphurpool-light .hljs-meta,.hljs-atelier-sulphurpool-light .hljs-built_in,.hljs-atelier-sulphurpool-light .hljs-builtin-name,.hljs-atelier-sulphurpool-light .hljs-literal,.hljs-atelier-sulphurpool-light .hljs-type,.hljs-atelier-sulphurpool-light .hljs-params{color:#c76b29}.hljs-atelier-sulphurpool-light .hljs-string,.hljs-atelier-sulphurpool-light .hljs-symbol,.hljs-atelier-sulphurpool-light .hljs-bullet{color:#ac9739}.hljs-atelier-sulphurpool-light .hljs-title,.hljs-atelier-sulphurpool-light .hljs-section{color:#3d8fd1}.hljs-atelier-sulphurpool-light .hljs-keyword,.hljs-atelier-sulphurpool-light .hljs-selector-tag{color:#6679cc}.hljs-atelier-sulphurpool-light .hljs{display:block;overflow-x:auto;background:#f5f7ff;color:#5e6687;padding:.5em}.hljs-atelier-sulphurpool-light .hljs-emphasis{font-style:italic}.hljs-atelier-sulphurpool-light .hljs-strong{font-weight:bold}","atom-one-dark-reasonable":".hljs-atom-one-dark-reasonable .hljs{display:block;overflow-x:auto;padding:.5em;line-height:1.3em;color:#abb2bf;background:#282c34;border-radius:5px}.hljs-atom-one-dark-reasonable .hljs-keyword,.hljs-atom-one-dark-reasonable .hljs-operator{color:#F92672}.hljs-atom-one-dark-reasonable .hljs-pattern-match{color:#F92672}.hljs-atom-one-dark-reasonable .hljs-pattern-match .hljs-constructor{color:#61aeee}.hljs-atom-one-dark-reasonable .hljs-function{color:#61aeee}.hljs-atom-one-dark-reasonable .hljs-function .hljs-params{color:#A6E22E}.hljs-atom-one-dark-reasonable .hljs-function .hljs-params .hljs-typing{color:#FD971F}.hljs-atom-one-dark-reasonable .hljs-module-access .hljs-module{color:#7e57c2}.hljs-atom-one-dark-reasonable .hljs-constructor{color:#e2b93d}.hljs-atom-one-dark-reasonable .hljs-constructor .hljs-string{color:#9CCC65}.hljs-atom-one-dark-reasonable .hljs-comment,.hljs-atom-one-dark-reasonable .hljs-quote{color:#b18eb1;font-style:italic}.hljs-atom-one-dark-reasonable .hljs-doctag,.hljs-atom-one-dark-reasonable .hljs-formula{color:#c678dd}.hljs-atom-one-dark-reasonable .hljs-section,.hljs-atom-one-dark-reasonable .hljs-name,.hljs-atom-one-dark-reasonable .hljs-selector-tag,.hljs-atom-one-dark-reasonable .hljs-deletion,.hljs-atom-one-dark-reasonable .hljs-subst{color:#e06c75}.hljs-atom-one-dark-reasonable .hljs-literal{color:#56b6c2}.hljs-atom-one-dark-reasonable .hljs-string,.hljs-atom-one-dark-reasonable .hljs-regexp,.hljs-atom-one-dark-reasonable .hljs-addition,.hljs-atom-one-dark-reasonable .hljs-attribute,.hljs-atom-one-dark-reasonable .hljs-meta-string{color:#98c379}.hljs-atom-one-dark-reasonable .hljs-built_in,.hljs-atom-one-dark-reasonable .hljs-class .hljs-title{color:#e6c07b}.hljs-atom-one-dark-reasonable .hljs-attr,.hljs-atom-one-dark-reasonable .hljs-variable,.hljs-atom-one-dark-reasonable .hljs-template-variable,.hljs-atom-one-dark-reasonable .hljs-type,.hljs-atom-one-dark-reasonable .hljs-selector-class,.hljs-atom-one-dark-reasonable .hljs-selector-attr,.hljs-atom-one-dark-reasonable .hljs-selector-pseudo,.hljs-atom-one-dark-reasonable .hljs-number{color:#d19a66}.hljs-atom-one-dark-reasonable .hljs-symbol,.hljs-atom-one-dark-reasonable .hljs-bullet,.hljs-atom-one-dark-reasonable .hljs-link,.hljs-atom-one-dark-reasonable .hljs-meta,.hljs-atom-one-dark-reasonable .hljs-selector-id,.hljs-atom-one-dark-reasonable .hljs-title{color:#61aeee}.hljs-atom-one-dark-reasonable .hljs-emphasis{font-style:italic}.hljs-atom-one-dark-reasonable .hljs-strong{font-weight:bold}.hljs-atom-one-dark-reasonable .hljs-link{text-decoration:underline}","atom-one-dark":".hljs-atom-one-dark .hljs{display:block;overflow-x:auto;padding:.5em;color:#abb2bf;background:#282c34}.hljs-atom-one-dark .hljs-comment,.hljs-atom-one-dark .hljs-quote{color:#5c6370;font-style:italic}.hljs-atom-one-dark .hljs-doctag,.hljs-atom-one-dark .hljs-keyword,.hljs-atom-one-dark .hljs-formula{color:#c678dd}.hljs-atom-one-dark .hljs-section,.hljs-atom-one-dark .hljs-name,.hljs-atom-one-dark .hljs-selector-tag,.hljs-atom-one-dark .hljs-deletion,.hljs-atom-one-dark .hljs-subst{color:#e06c75}.hljs-atom-one-dark .hljs-literal{color:#56b6c2}.hljs-atom-one-dark .hljs-string,.hljs-atom-one-dark .hljs-regexp,.hljs-atom-one-dark .hljs-addition,.hljs-atom-one-dark .hljs-attribute,.hljs-atom-one-dark .hljs-meta-string{color:#98c379}.hljs-atom-one-dark .hljs-built_in,.hljs-atom-one-dark .hljs-class .hljs-title{color:#e6c07b}.hljs-atom-one-dark .hljs-attr,.hljs-atom-one-dark .hljs-variable,.hljs-atom-one-dark .hljs-template-variable,.hljs-atom-one-dark .hljs-type,.hljs-atom-one-dark .hljs-selector-class,.hljs-atom-one-dark .hljs-selector-attr,.hljs-atom-one-dark .hljs-selector-pseudo,.hljs-atom-one-dark .hljs-number{color:#d19a66}.hljs-atom-one-dark .hljs-symbol,.hljs-atom-one-dark .hljs-bullet,.hljs-atom-one-dark .hljs-link,.hljs-atom-one-dark .hljs-meta,.hljs-atom-one-dark .hljs-selector-id,.hljs-atom-one-dark .hljs-title{color:#61aeee}.hljs-atom-one-dark .hljs-emphasis{font-style:italic}.hljs-atom-one-dark .hljs-strong{font-weight:bold}.hljs-atom-one-dark .hljs-link{text-decoration:underline}","atom-one-light":".hljs-atom-one-light .hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-atom-one-light .hljs-comment,.hljs-atom-one-light .hljs-quote{color:#a0a1a7;font-style:italic}.hljs-atom-one-light .hljs-doctag,.hljs-atom-one-light .hljs-keyword,.hljs-atom-one-light .hljs-formula{color:#a626a4}.hljs-atom-one-light .hljs-section,.hljs-atom-one-light .hljs-name,.hljs-atom-one-light .hljs-selector-tag,.hljs-atom-one-light .hljs-deletion,.hljs-atom-one-light .hljs-subst{color:#e45649}.hljs-atom-one-light .hljs-literal{color:#0184bb}.hljs-atom-one-light .hljs-string,.hljs-atom-one-light .hljs-regexp,.hljs-atom-one-light .hljs-addition,.hljs-atom-one-light .hljs-attribute,.hljs-atom-one-light .hljs-meta-string{color:#50a14f}.hljs-atom-one-light .hljs-built_in,.hljs-atom-one-light .hljs-class .hljs-title{color:#c18401}.hljs-atom-one-light .hljs-attr,.hljs-atom-one-light .hljs-variable,.hljs-atom-one-light .hljs-template-variable,.hljs-atom-one-light .hljs-type,.hljs-atom-one-light .hljs-selector-class,.hljs-atom-one-light .hljs-selector-attr,.hljs-atom-one-light .hljs-selector-pseudo,.hljs-atom-one-light .hljs-number{color:#986801}.hljs-atom-one-light .hljs-symbol,.hljs-atom-one-light .hljs-bullet,.hljs-atom-one-light .hljs-link,.hljs-atom-one-light .hljs-meta,.hljs-atom-one-light .hljs-selector-id,.hljs-atom-one-light .hljs-title{color:#4078f2}.hljs-atom-one-light .hljs-emphasis{font-style:italic}.hljs-atom-one-light .hljs-strong{font-weight:bold}.hljs-atom-one-light .hljs-link{text-decoration:underline}","brown-paper":".hljs-brown-paper .hljs{display:block;overflow-x:auto;padding:.5em;background:#b7a68e url(./brown-papersq.png)}.hljs-brown-paper .hljs-keyword,.hljs-brown-paper .hljs-selector-tag,.hljs-brown-paper .hljs-literal{color:#005599;font-weight:bold}.hljs-brown-paper .hljs,.hljs-brown-paper .hljs-subst{color:#363c69}.hljs-brown-paper .hljs-string,.hljs-brown-paper .hljs-title,.hljs-brown-paper .hljs-section,.hljs-brown-paper .hljs-type,.hljs-brown-paper .hljs-attribute,.hljs-brown-paper .hljs-symbol,.hljs-brown-paper .hljs-bullet,.hljs-brown-paper .hljs-built_in,.hljs-brown-paper .hljs-addition,.hljs-brown-paper .hljs-variable,.hljs-brown-paper .hljs-template-tag,.hljs-brown-paper .hljs-template-variable,.hljs-brown-paper .hljs-link,.hljs-brown-paper .hljs-name{color:#2c009f}.hljs-brown-paper .hljs-comment,.hljs-brown-paper .hljs-quote,.hljs-brown-paper .hljs-meta,.hljs-brown-paper .hljs-deletion{color:#802022}.hljs-brown-paper .hljs-keyword,.hljs-brown-paper .hljs-selector-tag,.hljs-brown-paper .hljs-literal,.hljs-brown-paper .hljs-doctag,.hljs-brown-paper .hljs-title,.hljs-brown-paper .hljs-section,.hljs-brown-paper .hljs-type,.hljs-brown-paper .hljs-name,.hljs-brown-paper .hljs-strong{font-weight:bold}.hljs-brown-paper .hljs-emphasis{font-style:italic}","codepen-embed":".hljs-codepen-embed .hljs{display:block;overflow-x:auto;padding:.5em;background:#222;color:#fff}.hljs-codepen-embed .hljs-comment,.hljs-codepen-embed .hljs-quote{color:#777}.hljs-codepen-embed .hljs-variable,.hljs-codepen-embed .hljs-template-variable,.hljs-codepen-embed .hljs-tag,.hljs-codepen-embed .hljs-regexp,.hljs-codepen-embed .hljs-meta,.hljs-codepen-embed .hljs-number,.hljs-codepen-embed .hljs-built_in,.hljs-codepen-embed .hljs-builtin-name,.hljs-codepen-embed .hljs-literal,.hljs-codepen-embed .hljs-params,.hljs-codepen-embed .hljs-symbol,.hljs-codepen-embed .hljs-bullet,.hljs-codepen-embed .hljs-link,.hljs-codepen-embed .hljs-deletion{color:#ab875d}.hljs-codepen-embed .hljs-section,.hljs-codepen-embed .hljs-title,.hljs-codepen-embed .hljs-name,.hljs-codepen-embed .hljs-selector-id,.hljs-codepen-embed .hljs-selector-class,.hljs-codepen-embed .hljs-type,.hljs-codepen-embed .hljs-attribute{color:#9b869b}.hljs-codepen-embed .hljs-string,.hljs-codepen-embed .hljs-keyword,.hljs-codepen-embed .hljs-selector-tag,.hljs-codepen-embed .hljs-addition{color:#8f9c6c}.hljs-codepen-embed .hljs-emphasis{font-style:italic}.hljs-codepen-embed .hljs-strong{font-weight:bold}","color-brewer":".hljs-color-brewer .hljs{display:block;overflow-x:auto;padding:.5em;background:#fff}.hljs-color-brewer .hljs,.hljs-color-brewer .hljs-subst{color:#000}.hljs-color-brewer .hljs-string,.hljs-color-brewer .hljs-meta,.hljs-color-brewer .hljs-symbol,.hljs-color-brewer .hljs-template-tag,.hljs-color-brewer .hljs-template-variable,.hljs-color-brewer .hljs-addition{color:#756bb1}.hljs-color-brewer .hljs-comment,.hljs-color-brewer .hljs-quote{color:#636363}.hljs-color-brewer .hljs-number,.hljs-color-brewer .hljs-regexp,.hljs-color-brewer .hljs-literal,.hljs-color-brewer .hljs-bullet,.hljs-color-brewer .hljs-link{color:#31a354}.hljs-color-brewer .hljs-deletion,.hljs-color-brewer .hljs-variable{color:#88f}.hljs-color-brewer .hljs-keyword,.hljs-color-brewer .hljs-selector-tag,.hljs-color-brewer .hljs-title,.hljs-color-brewer .hljs-section,.hljs-color-brewer .hljs-built_in,.hljs-color-brewer .hljs-doctag,.hljs-color-brewer .hljs-type,.hljs-color-brewer .hljs-tag,.hljs-color-brewer .hljs-name,.hljs-color-brewer .hljs-selector-id,.hljs-color-brewer .hljs-selector-class,.hljs-color-brewer .hljs-strong{color:#3182bd}.hljs-color-brewer .hljs-emphasis{font-style:italic}.hljs-color-brewer .hljs-attribute{color:#e6550d}",darcula:".hljs-darcula .hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b}.hljs-darcula .hljs{color:#bababa}.hljs-darcula .hljs-strong,.hljs-darcula .hljs-emphasis{color:#a8a8a2}.hljs-darcula .hljs-bullet,.hljs-darcula .hljs-quote,.hljs-darcula .hljs-link,.hljs-darcula .hljs-number,.hljs-darcula .hljs-regexp,.hljs-darcula .hljs-literal{color:#6896ba}.hljs-darcula .hljs-code,.hljs-darcula .hljs-selector-class{color:#a6e22e}.hljs-darcula .hljs-emphasis{font-style:italic}.hljs-darcula .hljs-keyword,.hljs-darcula .hljs-selector-tag,.hljs-darcula .hljs-section,.hljs-darcula .hljs-attribute,.hljs-darcula .hljs-name,.hljs-darcula .hljs-variable{color:#cb7832}.hljs-darcula .hljs-params{color:#b9b9b9}.hljs-darcula .hljs-string{color:#6a8759}.hljs-darcula .hljs-subst,.hljs-darcula .hljs-type,.hljs-darcula .hljs-built_in,.hljs-darcula .hljs-builtin-name,.hljs-darcula .hljs-symbol,.hljs-darcula .hljs-selector-id,.hljs-darcula .hljs-selector-attr,.hljs-darcula .hljs-selector-pseudo,.hljs-darcula .hljs-template-tag,.hljs-darcula .hljs-template-variable,.hljs-darcula .hljs-addition{color:#e0c46c}.hljs-darcula .hljs-comment,.hljs-darcula .hljs-deletion,.hljs-darcula .hljs-meta{color:#7f7f7f}",dark:".hljs-dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#444}.hljs-dark .hljs-keyword,.hljs-dark .hljs-selector-tag,.hljs-dark .hljs-literal,.hljs-dark .hljs-section,.hljs-dark .hljs-link{color:white}.hljs-dark .hljs,.hljs-dark .hljs-subst{color:#ddd}.hljs-dark .hljs-string,.hljs-dark .hljs-title,.hljs-dark .hljs-name,.hljs-dark .hljs-type,.hljs-dark .hljs-attribute,.hljs-dark .hljs-symbol,.hljs-dark .hljs-bullet,.hljs-dark .hljs-built_in,.hljs-dark .hljs-addition,.hljs-dark .hljs-variable,.hljs-dark .hljs-template-tag,.hljs-dark .hljs-template-variable{color:#d88}.hljs-dark .hljs-comment,.hljs-dark .hljs-quote,.hljs-dark .hljs-deletion,.hljs-dark .hljs-meta{color:#777}.hljs-dark .hljs-keyword,.hljs-dark .hljs-selector-tag,.hljs-dark .hljs-literal,.hljs-dark .hljs-title,.hljs-dark .hljs-section,.hljs-dark .hljs-doctag,.hljs-dark .hljs-type,.hljs-dark .hljs-name,.hljs-dark .hljs-strong{font-weight:bold}.hljs-dark .hljs-emphasis{font-style:italic}",darkula:".hljs-darkula{@import url('darcula.css');}",default:".hljs-default .hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs-default .hljs,.hljs-default .hljs-subst{color:#444}.hljs-default .hljs-comment{color:#888888}.hljs-default .hljs-keyword,.hljs-default .hljs-attribute,.hljs-default .hljs-selector-tag,.hljs-default .hljs-meta-keyword,.hljs-default .hljs-doctag,.hljs-default .hljs-name{font-weight:bold}.hljs-default .hljs-type,.hljs-default .hljs-string,.hljs-default .hljs-number,.hljs-default .hljs-selector-id,.hljs-default .hljs-selector-class,.hljs-default .hljs-quote,.hljs-default .hljs-template-tag,.hljs-default .hljs-deletion{color:#880000}.hljs-default .hljs-title,.hljs-default .hljs-section{color:#880000;font-weight:bold}.hljs-default .hljs-regexp,.hljs-default .hljs-symbol,.hljs-default .hljs-variable,.hljs-default .hljs-template-variable,.hljs-default .hljs-link,.hljs-default .hljs-selector-attr,.hljs-default .hljs-selector-pseudo{color:#BC6060}.hljs-default .hljs-literal{color:#78A960}.hljs-default .hljs-built_in,.hljs-default .hljs-bullet,.hljs-default .hljs-code,.hljs-default .hljs-addition{color:#397300}.hljs-default .hljs-meta{color:#1f7199}.hljs-default .hljs-meta-string{color:#4d99bf}.hljs-default .hljs-emphasis{font-style:italic}.hljs-default .hljs-strong{font-weight:bold}",docco:".hljs-docco .hljs{display:block;overflow-x:auto;padding:.5em;color:#000;background:#f8f8ff}.hljs-docco .hljs-comment,.hljs-docco .hljs-quote{color:#408080;font-style:italic}.hljs-docco .hljs-keyword,.hljs-docco .hljs-selector-tag,.hljs-docco .hljs-literal,.hljs-docco .hljs-subst{color:#954121}.hljs-docco .hljs-number{color:#40a070}.hljs-docco .hljs-string,.hljs-docco .hljs-doctag{color:#219161}.hljs-docco .hljs-selector-id,.hljs-docco .hljs-selector-class,.hljs-docco .hljs-section,.hljs-docco .hljs-type{color:#19469d}.hljs-docco .hljs-params{color:#00f}.hljs-docco .hljs-title{color:#458;font-weight:bold}.hljs-docco .hljs-tag,.hljs-docco .hljs-name,.hljs-docco .hljs-attribute{color:#000080;font-weight:normal}.hljs-docco .hljs-variable,.hljs-docco .hljs-template-variable{color:#008080}.hljs-docco .hljs-regexp,.hljs-docco .hljs-link{color:#b68}.hljs-docco .hljs-symbol,.hljs-docco .hljs-bullet{color:#990073}.hljs-docco .hljs-built_in,.hljs-docco .hljs-builtin-name{color:#0086b3}.hljs-docco .hljs-meta{color:#999;font-weight:bold}.hljs-docco .hljs-deletion{background:#fdd}.hljs-docco .hljs-addition{background:#dfd}.hljs-docco .hljs-emphasis{font-style:italic}.hljs-docco .hljs-strong{font-weight:bold}",
 dracula:".hljs-dracula .hljs{display:block;overflow-x:auto;padding:.5em;background:#282a36}.hljs-dracula .hljs-keyword,.hljs-dracula .hljs-selector-tag,.hljs-dracula .hljs-literal,.hljs-dracula .hljs-section,.hljs-dracula .hljs-link{color:#8be9fd}.hljs-dracula .hljs-function .hljs-keyword{color:#ff79c6}.hljs-dracula .hljs,.hljs-dracula .hljs-subst{color:#f8f8f2}.hljs-dracula .hljs-string,.hljs-dracula .hljs-title,.hljs-dracula .hljs-name,.hljs-dracula .hljs-type,.hljs-dracula .hljs-attribute,.hljs-dracula .hljs-symbol,.hljs-dracula .hljs-bullet,.hljs-dracula .hljs-addition,.hljs-dracula .hljs-variable,.hljs-dracula .hljs-template-tag,.hljs-dracula .hljs-template-variable{color:#f1fa8c}.hljs-dracula .hljs-comment,.hljs-dracula .hljs-quote,.hljs-dracula .hljs-deletion,.hljs-dracula .hljs-meta{color:#6272a4}.hljs-dracula .hljs-keyword,.hljs-dracula .hljs-selector-tag,.hljs-dracula .hljs-literal,.hljs-dracula .hljs-title,.hljs-dracula .hljs-section,.hljs-dracula .hljs-doctag,.hljs-dracula .hljs-type,.hljs-dracula .hljs-name,.hljs-dracula .hljs-strong{font-weight:bold}.hljs-dracula .hljs-emphasis{font-style:italic}",far:".hljs-far .hljs{display:block;overflow-x:auto;padding:.5em;background:#000080}.hljs-far .hljs,.hljs-far .hljs-subst{color:#0ff}.hljs-far .hljs-string,.hljs-far .hljs-attribute,.hljs-far .hljs-symbol,.hljs-far .hljs-bullet,.hljs-far .hljs-built_in,.hljs-far .hljs-builtin-name,.hljs-far .hljs-template-tag,.hljs-far .hljs-template-variable,.hljs-far .hljs-addition{color:#ff0}.hljs-far .hljs-keyword,.hljs-far .hljs-selector-tag,.hljs-far .hljs-section,.hljs-far .hljs-type,.hljs-far .hljs-name,.hljs-far .hljs-selector-id,.hljs-far .hljs-selector-class,.hljs-far .hljs-variable{color:#fff}.hljs-far .hljs-comment,.hljs-far .hljs-quote,.hljs-far .hljs-doctag,.hljs-far .hljs-deletion{color:#888}.hljs-far .hljs-number,.hljs-far .hljs-regexp,.hljs-far .hljs-literal,.hljs-far .hljs-link{color:#0f0}.hljs-far .hljs-meta{color:#008080}.hljs-far .hljs-keyword,.hljs-far .hljs-selector-tag,.hljs-far .hljs-title,.hljs-far .hljs-section,.hljs-far .hljs-name,.hljs-far .hljs-strong{font-weight:bold}.hljs-far .hljs-emphasis{font-style:italic}",foundation:".hljs-foundation .hljs{display:block;overflow-x:auto;padding:.5em;background:#eee;color:black}.hljs-foundation .hljs-link,.hljs-foundation .hljs-emphasis,.hljs-foundation .hljs-attribute,.hljs-foundation .hljs-addition{color:#070}.hljs-foundation .hljs-emphasis{font-style:italic}.hljs-foundation .hljs-strong,.hljs-foundation .hljs-string,.hljs-foundation .hljs-deletion{color:#d14}.hljs-foundation .hljs-strong{font-weight:bold}.hljs-foundation .hljs-quote,.hljs-foundation .hljs-comment{color:#998;font-style:italic}.hljs-foundation .hljs-section,.hljs-foundation .hljs-title{color:#900}.hljs-foundation .hljs-class .hljs-title,.hljs-foundation .hljs-type{color:#458}.hljs-foundation .hljs-variable,.hljs-foundation .hljs-template-variable{color:#336699}.hljs-foundation .hljs-bullet{color:#997700}.hljs-foundation .hljs-meta{color:#3344bb}.hljs-foundation .hljs-code,.hljs-foundation .hljs-number,.hljs-foundation .hljs-literal,.hljs-foundation .hljs-keyword,.hljs-foundation .hljs-selector-tag{color:#099}.hljs-foundation .hljs-regexp{background-color:#fff0ff;color:#880088}.hljs-foundation .hljs-symbol{color:#990073}.hljs-foundation .hljs-tag,.hljs-foundation .hljs-name,.hljs-foundation .hljs-selector-id,.hljs-foundation .hljs-selector-class{color:#007700}","github-gist":".hljs-github-gist .hljs{display:block;background:white;padding:.5em;color:#333333;overflow-x:auto}.hljs-github-gist .hljs-comment,.hljs-github-gist .hljs-meta{color:#969896}.hljs-github-gist .hljs-variable,.hljs-github-gist .hljs-template-variable,.hljs-github-gist .hljs-strong,.hljs-github-gist .hljs-emphasis,.hljs-github-gist .hljs-quote{color:#df5000}.hljs-github-gist .hljs-keyword,.hljs-github-gist .hljs-selector-tag,.hljs-github-gist .hljs-type{color:#d73a49}.hljs-github-gist .hljs-literal,.hljs-github-gist .hljs-symbol,.hljs-github-gist .hljs-bullet,.hljs-github-gist .hljs-attribute{color:#0086b3}.hljs-github-gist .hljs-section,.hljs-github-gist .hljs-name{color:#63a35c}.hljs-github-gist .hljs-tag{color:#333333}.hljs-github-gist .hljs-title,.hljs-github-gist .hljs-attr,.hljs-github-gist .hljs-selector-id,.hljs-github-gist .hljs-selector-class,.hljs-github-gist .hljs-selector-attr,.hljs-github-gist .hljs-selector-pseudo{color:#6f42c1}.hljs-github-gist .hljs-addition{color:#55a532;background-color:#eaffea}.hljs-github-gist .hljs-deletion{color:#bd2c00;background-color:#ffecec}.hljs-github-gist .hljs-link{text-decoration:underline}.hljs-github-gist .hljs-number{color:#005cc5}.hljs-github-gist .hljs-string{color:#032f62}",github:".hljs-github .hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-github .hljs-comment,.hljs-github .hljs-quote{color:#998;font-style:italic}.hljs-github .hljs-keyword,.hljs-github .hljs-selector-tag,.hljs-github .hljs-subst{color:#333;font-weight:bold}.hljs-github .hljs-number,.hljs-github .hljs-literal,.hljs-github .hljs-variable,.hljs-github .hljs-template-variable,.hljs-github .hljs-tag .hljs-attr{color:#008080}.hljs-github .hljs-string,.hljs-github .hljs-doctag{color:#d14}.hljs-github .hljs-title,.hljs-github .hljs-section,.hljs-github .hljs-selector-id{color:#900;font-weight:bold}.hljs-github .hljs-subst{font-weight:normal}.hljs-github .hljs-type,.hljs-github .hljs-class .hljs-title{color:#458;font-weight:bold}.hljs-github .hljs-tag,.hljs-github .hljs-name,.hljs-github .hljs-attribute{color:#000080;font-weight:normal}.hljs-github .hljs-regexp,.hljs-github .hljs-link{color:#009926}.hljs-github .hljs-symbol,.hljs-github .hljs-bullet{color:#990073}.hljs-github .hljs-built_in,.hljs-github .hljs-builtin-name{color:#0086b3}.hljs-github .hljs-meta{color:#999;font-weight:bold}.hljs-github .hljs-deletion{background:#fdd}.hljs-github .hljs-addition{background:#dfd}.hljs-github .hljs-emphasis{font-style:italic}.hljs-github .hljs-strong{font-weight:bold}",gml:".hljs-gml .hljs{display:block;overflow-x:auto;padding:.5em;background:#222222;color:#C0C0C0}.hljs-gml .hljs-keywords{color:#FFB871;font-weight:bold}.hljs-gml .hljs-built_in{color:#FFB871}.hljs-gml .hljs-literal{color:#FF8080}.hljs-gml .hljs-symbol{color:#58E55A}.hljs-gml .hljs-comment{color:#5B995B}.hljs-gml .hljs-string{color:#FFFF00}.hljs-gml .hljs-number{color:#FF8080}.hljs-gml .hljs-attribute,.hljs-gml .hljs-selector-tag,.hljs-gml .hljs-doctag,.hljs-gml .hljs-name,.hljs-gml .hljs-bullet,.hljs-gml .hljs-code,.hljs-gml .hljs-addition,.hljs-gml .hljs-regexp,.hljs-gml .hljs-variable,.hljs-gml .hljs-template-variable,.hljs-gml .hljs-link,.hljs-gml .hljs-selector-attr,.hljs-gml .hljs-selector-pseudo,.hljs-gml .hljs-type,.hljs-gml .hljs-selector-id,.hljs-gml .hljs-selector-class,.hljs-gml .hljs-quote,.hljs-gml .hljs-template-tag,.hljs-gml .hljs-deletion,.hljs-gml .hljs-title,.hljs-gml .hljs-section,.hljs-gml .hljs-function,.hljs-gml .hljs-meta-keyword,.hljs-gml .hljs-meta,.hljs-gml .hljs-subst{color:#C0C0C0}.hljs-gml .hljs-emphasis{font-style:italic}.hljs-gml .hljs-strong{font-weight:bold}",googlecode:".hljs-googlecode .hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-googlecode .hljs-comment,.hljs-googlecode .hljs-quote{color:#800}.hljs-googlecode .hljs-keyword,.hljs-googlecode .hljs-selector-tag,.hljs-googlecode .hljs-section,.hljs-googlecode .hljs-title,.hljs-googlecode .hljs-name{color:#008}.hljs-googlecode .hljs-variable,.hljs-googlecode .hljs-template-variable{color:#660}.hljs-googlecode .hljs-string,.hljs-googlecode .hljs-selector-attr,.hljs-googlecode .hljs-selector-pseudo,.hljs-googlecode .hljs-regexp{color:#080}.hljs-googlecode .hljs-literal,.hljs-googlecode .hljs-symbol,.hljs-googlecode .hljs-bullet,.hljs-googlecode .hljs-meta,.hljs-googlecode .hljs-number,.hljs-googlecode .hljs-link{color:#066}.hljs-googlecode .hljs-title,.hljs-googlecode .hljs-doctag,.hljs-googlecode .hljs-type,.hljs-googlecode .hljs-attr,.hljs-googlecode .hljs-built_in,.hljs-googlecode .hljs-builtin-name,.hljs-googlecode .hljs-params{color:#606}.hljs-googlecode .hljs-attribute,.hljs-googlecode .hljs-subst{color:#000}.hljs-googlecode .hljs-formula{background-color:#eee;font-style:italic}.hljs-googlecode .hljs-selector-id,.hljs-googlecode .hljs-selector-class{color:#9B703F}.hljs-googlecode .hljs-addition{background-color:#baeeba}.hljs-googlecode .hljs-deletion{background-color:#ffc8bd}.hljs-googlecode .hljs-doctag,.hljs-googlecode .hljs-strong{font-weight:bold}.hljs-googlecode .hljs-emphasis{font-style:italic}",grayscale:".hljs-grayscale .hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#fff}.hljs-grayscale .hljs-comment,.hljs-grayscale .hljs-quote{color:#777;font-style:italic}.hljs-grayscale .hljs-keyword,.hljs-grayscale .hljs-selector-tag,.hljs-grayscale .hljs-subst{color:#333;font-weight:bold}.hljs-grayscale .hljs-number,.hljs-grayscale .hljs-literal{color:#777}.hljs-grayscale .hljs-string,.hljs-grayscale .hljs-doctag,.hljs-grayscale .hljs-formula{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat}.hljs-grayscale .hljs-title,.hljs-grayscale .hljs-section,.hljs-grayscale .hljs-selector-id{color:#000;font-weight:bold}.hljs-grayscale .hljs-subst{font-weight:normal}.hljs-grayscale .hljs-class .hljs-title,.hljs-grayscale .hljs-type,.hljs-grayscale .hljs-name{color:#333;font-weight:bold}.hljs-grayscale .hljs-tag{color:#333}.hljs-grayscale .hljs-regexp{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat}.hljs-grayscale .hljs-symbol,.hljs-grayscale .hljs-bullet,.hljs-grayscale .hljs-link{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat}.hljs-grayscale .hljs-built_in,.hljs-grayscale .hljs-builtin-name{color:#000;text-decoration:underline}.hljs-grayscale .hljs-meta{color:#999;font-weight:bold}.hljs-grayscale .hljs-deletion{color:#fff;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat}.hljs-grayscale .hljs-addition{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat}.hljs-grayscale .hljs-emphasis{font-style:italic}.hljs-grayscale .hljs-strong{font-weight:bold}","gruvbox-dark":".hljs-gruvbox-dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#282828}.hljs-gruvbox-dark .hljs,.hljs-gruvbox-dark .hljs-subst{color:#ebdbb2}.hljs-gruvbox-dark .hljs-deletion,.hljs-gruvbox-dark .hljs-formula,.hljs-gruvbox-dark .hljs-keyword,.hljs-gruvbox-dark .hljs-link,.hljs-gruvbox-dark .hljs-selector-tag{color:#fb4934}.hljs-gruvbox-dark .hljs-built_in,.hljs-gruvbox-dark .hljs-emphasis,.hljs-gruvbox-dark .hljs-name,.hljs-gruvbox-dark .hljs-quote,.hljs-gruvbox-dark .hljs-strong,.hljs-gruvbox-dark .hljs-title,.hljs-gruvbox-dark .hljs-variable{color:#83a598}.hljs-gruvbox-dark .hljs-attr,.hljs-gruvbox-dark .hljs-params,.hljs-gruvbox-dark .hljs-template-tag,.hljs-gruvbox-dark .hljs-type{color:#fabd2f}.hljs-gruvbox-dark .hljs-builtin-name,.hljs-gruvbox-dark .hljs-doctag,.hljs-gruvbox-dark .hljs-literal,.hljs-gruvbox-dark .hljs-number{color:#8f3f71}.hljs-gruvbox-dark .hljs-code,.hljs-gruvbox-dark .hljs-meta,.hljs-gruvbox-dark .hljs-regexp,.hljs-gruvbox-dark .hljs-selector-id,.hljs-gruvbox-dark .hljs-template-variable{color:#fe8019}.hljs-gruvbox-dark .hljs-addition,.hljs-gruvbox-dark .hljs-meta-string,.hljs-gruvbox-dark .hljs-section,.hljs-gruvbox-dark .hljs-selector-attr,.hljs-gruvbox-dark .hljs-selector-class,.hljs-gruvbox-dark .hljs-string,.hljs-gruvbox-dark .hljs-symbol{color:#b8bb26}.hljs-gruvbox-dark .hljs-attribute,.hljs-gruvbox-dark .hljs-bullet,.hljs-gruvbox-dark .hljs-class,.hljs-gruvbox-dark .hljs-function,.hljs-gruvbox-dark .hljs-function .hljs-keyword,.hljs-gruvbox-dark .hljs-meta-keyword,.hljs-gruvbox-dark .hljs-selector-pseudo,.hljs-gruvbox-dark .hljs-tag{color:#8ec07c}.hljs-gruvbox-dark .hljs-comment{color:#928374}.hljs-gruvbox-dark .hljs-link_label,.hljs-gruvbox-dark .hljs-literal,.hljs-gruvbox-dark .hljs-number{color:#d3869b}.hljs-gruvbox-dark .hljs-comment,.hljs-gruvbox-dark .hljs-emphasis{font-style:italic}.hljs-gruvbox-dark .hljs-section,.hljs-gruvbox-dark .hljs-strong,.hljs-gruvbox-dark .hljs-tag{font-weight:bold}","gruvbox-light":".hljs-gruvbox-light .hljs{display:block;overflow-x:auto;padding:.5em;background:#fbf1c7}.hljs-gruvbox-light .hljs,.hljs-gruvbox-light .hljs-subst{color:#3c3836}.hljs-gruvbox-light .hljs-deletion,.hljs-gruvbox-light .hljs-formula,.hljs-gruvbox-light .hljs-keyword,.hljs-gruvbox-light .hljs-link,.hljs-gruvbox-light .hljs-selector-tag{color:#9d0006}.hljs-gruvbox-light .hljs-built_in,.hljs-gruvbox-light .hljs-emphasis,.hljs-gruvbox-light .hljs-name,.hljs-gruvbox-light .hljs-quote,.hljs-gruvbox-light .hljs-strong,.hljs-gruvbox-light .hljs-title,.hljs-gruvbox-light .hljs-variable{color:#076678}.hljs-gruvbox-light .hljs-attr,.hljs-gruvbox-light .hljs-params,.hljs-gruvbox-light .hljs-template-tag,.hljs-gruvbox-light .hljs-type{color:#b57614}.hljs-gruvbox-light .hljs-builtin-name,.hljs-gruvbox-light .hljs-doctag,.hljs-gruvbox-light .hljs-literal,.hljs-gruvbox-light .hljs-number{color:#8f3f71}.hljs-gruvbox-light .hljs-code,.hljs-gruvbox-light .hljs-meta,.hljs-gruvbox-light .hljs-regexp,.hljs-gruvbox-light .hljs-selector-id,.hljs-gruvbox-light .hljs-template-variable{color:#af3a03}.hljs-gruvbox-light .hljs-addition,.hljs-gruvbox-light .hljs-meta-string,.hljs-gruvbox-light .hljs-section,.hljs-gruvbox-light .hljs-selector-attr,.hljs-gruvbox-light .hljs-selector-class,.hljs-gruvbox-light .hljs-string,.hljs-gruvbox-light .hljs-symbol{color:#79740e}.hljs-gruvbox-light .hljs-attribute,.hljs-gruvbox-light .hljs-bullet,.hljs-gruvbox-light .hljs-class,.hljs-gruvbox-light .hljs-function,.hljs-gruvbox-light .hljs-function .hljs-keyword,.hljs-gruvbox-light .hljs-meta-keyword,.hljs-gruvbox-light .hljs-selector-pseudo,.hljs-gruvbox-light .hljs-tag{color:#427b58}.hljs-gruvbox-light .hljs-comment{color:#928374}.hljs-gruvbox-light .hljs-link_label,.hljs-gruvbox-light .hljs-literal,.hljs-gruvbox-light .hljs-number{color:#8f3f71}.hljs-gruvbox-light .hljs-comment,.hljs-gruvbox-light .hljs-emphasis{font-style:italic}.hljs-gruvbox-light .hljs-section,.hljs-gruvbox-light .hljs-strong,.hljs-gruvbox-light .hljs-tag{font-weight:bold}",hopscotch:".hljs-hopscotch .hljs-comment,.hljs-hopscotch .hljs-quote{color:#989498}.hljs-hopscotch .hljs-variable,.hljs-hopscotch .hljs-template-variable,.hljs-hopscotch .hljs-attribute,.hljs-hopscotch .hljs-tag,.hljs-hopscotch .hljs-name,.hljs-hopscotch .hljs-selector-id,.hljs-hopscotch .hljs-selector-class,.hljs-hopscotch .hljs-regexp,.hljs-hopscotch .hljs-link,.hljs-hopscotch .hljs-deletion{color:#dd464c}.hljs-hopscotch .hljs-number,.hljs-hopscotch .hljs-built_in,.hljs-hopscotch .hljs-builtin-name,.hljs-hopscotch .hljs-literal,.hljs-hopscotch .hljs-type,.hljs-hopscotch .hljs-params{color:#fd8b19}.hljs-hopscotch .hljs-class .hljs-title{color:#fdcc59}.hljs-hopscotch .hljs-string,.hljs-hopscotch .hljs-symbol,.hljs-hopscotch .hljs-bullet,.hljs-hopscotch .hljs-addition{color:#8fc13e}.hljs-hopscotch .hljs-meta{color:#149b93}.hljs-hopscotch .hljs-function,.hljs-hopscotch .hljs-section,.hljs-hopscotch .hljs-title{color:#1290bf}.hljs-hopscotch .hljs-keyword,.hljs-hopscotch .hljs-selector-tag{color:#c85e7c}.hljs-hopscotch .hljs{display:block;background:#322931;color:#b9b5b8;padding:.5em}.hljs-hopscotch .hljs-emphasis{font-style:italic}.hljs-hopscotch .hljs-strong{font-weight:bold}",hybrid:".hljs-hybrid .hljs{display:block;overflow-x:auto;padding:.5em;background:#1d1f21}.hljs-hybrid .hljs::selection,.hljs-hybrid .hljs span::selection{background:#373b41}.hljs-hybrid .hljs::-moz-selection,.hljs-hybrid .hljs span::-moz-selection{background:#373b41}.hljs-hybrid .hljs{color:#c5c8c6}.hljs-hybrid .hljs-title,.hljs-hybrid .hljs-name{color:#f0c674}.hljs-hybrid .hljs-comment,.hljs-hybrid .hljs-meta,.hljs-hybrid .hljs-meta .hljs-keyword{color:#707880}.hljs-hybrid .hljs-number,.hljs-hybrid .hljs-symbol,.hljs-hybrid .hljs-literal,.hljs-hybrid .hljs-deletion,.hljs-hybrid .hljs-link{color:#cc6666}.hljs-hybrid .hljs-string,.hljs-hybrid .hljs-doctag,.hljs-hybrid .hljs-addition,.hljs-hybrid .hljs-regexp,.hljs-hybrid .hljs-selector-attr,.hljs-hybrid .hljs-selector-pseudo{color:#b5bd68}.hljs-hybrid .hljs-attribute,.hljs-hybrid .hljs-code,.hljs-hybrid .hljs-selector-id{color:#b294bb}.hljs-hybrid .hljs-keyword,.hljs-hybrid .hljs-selector-tag,.hljs-hybrid .hljs-bullet,.hljs-hybrid .hljs-tag{color:#81a2be}.hljs-hybrid .hljs-subst,.hljs-hybrid .hljs-variable,.hljs-hybrid .hljs-template-tag,.hljs-hybrid .hljs-template-variable{color:#8abeb7}.hljs-hybrid .hljs-type,.hljs-hybrid .hljs-built_in,.hljs-hybrid .hljs-builtin-name,.hljs-hybrid .hljs-quote,.hljs-hybrid .hljs-section,.hljs-hybrid .hljs-selector-class{color:#de935f}.hljs-hybrid .hljs-emphasis{font-style:italic}.hljs-hybrid .hljs-strong{font-weight:bold}",idea:".hljs-idea .hljs{display:block;overflow-x:auto;padding:.5em;color:#000;background:#fff}.hljs-idea .hljs-subst,.hljs-idea .hljs-title{font-weight:normal;color:#000}.hljs-idea .hljs-comment,.hljs-idea .hljs-quote{color:#808080;font-style:italic}.hljs-idea .hljs-meta{color:#808000}.hljs-idea .hljs-tag{background:#efefef}.hljs-idea .hljs-section,.hljs-idea .hljs-name,.hljs-idea .hljs-literal,.hljs-idea .hljs-keyword,.hljs-idea .hljs-selector-tag,.hljs-idea .hljs-type,.hljs-idea .hljs-selector-id,.hljs-idea .hljs-selector-class{font-weight:bold;color:#000080}.hljs-idea .hljs-attribute,.hljs-idea .hljs-number,.hljs-idea .hljs-regexp,.hljs-idea .hljs-link{font-weight:bold;color:#0000ff}.hljs-idea .hljs-number,.hljs-idea .hljs-regexp,.hljs-idea .hljs-link{font-weight:normal}.hljs-idea .hljs-string{color:#008000;font-weight:bold}.hljs-idea .hljs-symbol,.hljs-idea .hljs-bullet,.hljs-idea .hljs-formula{color:#000;background:#d0eded;font-style:italic}.hljs-idea .hljs-doctag{text-decoration:underline}.hljs-idea .hljs-variable,.hljs-idea .hljs-template-variable{color:#660e7a}.hljs-idea .hljs-addition{background:#baeeba}.hljs-idea .hljs-deletion{background:#ffc8bd}.hljs-idea .hljs-emphasis{font-style:italic}.hljs-idea .hljs-strong{font-weight:bold}","ir-black":".hljs-ir-black .hljs{display:block;overflow-x:auto;padding:.5em;background:#000;color:#f8f8f8}.hljs-ir-black .hljs-comment,.hljs-ir-black .hljs-quote,.hljs-ir-black .hljs-meta{color:#7c7c7c}.hljs-ir-black .hljs-keyword,.hljs-ir-black .hljs-selector-tag,.hljs-ir-black .hljs-tag,.hljs-ir-black .hljs-name{color:#96cbfe}.hljs-ir-black .hljs-attribute,.hljs-ir-black .hljs-selector-id{color:#ffffb6}.hljs-ir-black .hljs-string,.hljs-ir-black .hljs-selector-attr,.hljs-ir-black .hljs-selector-pseudo,.hljs-ir-black .hljs-addition{color:#a8ff60}.hljs-ir-black .hljs-subst{color:#daefa3}.hljs-ir-black .hljs-regexp,.hljs-ir-black .hljs-link{color:#e9c062}.hljs-ir-black .hljs-title,.hljs-ir-black .hljs-section,.hljs-ir-black .hljs-type,.hljs-ir-black .hljs-doctag{color:#ffffb6}.hljs-ir-black .hljs-symbol,.hljs-ir-black .hljs-bullet,.hljs-ir-black .hljs-variable,.hljs-ir-black .hljs-template-variable,.hljs-ir-black .hljs-literal{color:#c6c5fe}.hljs-ir-black .hljs-number,.hljs-ir-black .hljs-deletion{color:#ff73fd}.hljs-ir-black .hljs-emphasis{font-style:italic}.hljs-ir-black .hljs-strong{font-weight:bold}","isbl-editor-dark":".hljs-isbl-editor-dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#404040;color:#f0f0f0}.hljs-isbl-editor-dark .hljs,.hljs-isbl-editor-dark .hljs-subst{color:#f0f0f0}.hljs-isbl-editor-dark .hljs-comment{color:#b5b5b5;font-style:italic}.hljs-isbl-editor-dark .hljs-keyword,.hljs-isbl-editor-dark .hljs-attribute,.hljs-isbl-editor-dark .hljs-selector-tag,.hljs-isbl-editor-dark .hljs-meta-keyword,.hljs-isbl-editor-dark .hljs-doctag,.hljs-isbl-editor-dark .hljs-name{color:#f0f0f0;font-weight:bold}.hljs-isbl-editor-dark .hljs-string{color:#97bf0d}.hljs-isbl-editor-dark .hljs-type,.hljs-isbl-editor-dark .hljs-number,.hljs-isbl-editor-dark .hljs-selector-id,.hljs-isbl-editor-dark .hljs-selector-class,.hljs-isbl-editor-dark .hljs-quote,.hljs-isbl-editor-dark .hljs-template-tag,.hljs-isbl-editor-dark .hljs-deletion{color:#f0f0f0}.hljs-isbl-editor-dark .hljs-title,.hljs-isbl-editor-dark .hljs-section{color:#df471e}.hljs-isbl-editor-dark .hljs-title>.hljs-built_in{color:#81bce9;font-weight:normal}.hljs-isbl-editor-dark .hljs-regexp,.hljs-isbl-editor-dark .hljs-symbol,.hljs-isbl-editor-dark .hljs-variable,.hljs-isbl-editor-dark .hljs-template-variable,.hljs-isbl-editor-dark .hljs-link,.hljs-isbl-editor-dark .hljs-selector-attr,.hljs-isbl-editor-dark .hljs-selector-pseudo{color:#e2c696}.hljs-isbl-editor-dark .hljs-built_in,.hljs-isbl-editor-dark .hljs-literal{color:#97bf0d;font-weight:bold}.hljs-isbl-editor-dark .hljs-bullet,.hljs-isbl-editor-dark .hljs-code,.hljs-isbl-editor-dark .hljs-addition{color:#397300}.hljs-isbl-editor-dark .hljs-class{color:#ce9d4d;font-weight:bold}.hljs-isbl-editor-dark .hljs-meta{color:#1f7199}.hljs-isbl-editor-dark .hljs-meta-string{color:#4d99bf}.hljs-isbl-editor-dark .hljs-emphasis{font-style:italic}.hljs-isbl-editor-dark .hljs-strong{font-weight:bold}","isbl-editor-light":".hljs-isbl-editor-light .hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-isbl-editor-light .hljs,.hljs-isbl-editor-light .hljs-subst{color:#000000}.hljs-isbl-editor-light .hljs-comment{color:#555555;font-style:italic}.hljs-isbl-editor-light .hljs-keyword,.hljs-isbl-editor-light .hljs-attribute,.hljs-isbl-editor-light .hljs-selector-tag,.hljs-isbl-editor-light .hljs-meta-keyword,.hljs-isbl-editor-light .hljs-doctag,.hljs-isbl-editor-light .hljs-name{color:#000000;font-weight:bold}.hljs-isbl-editor-light .hljs-string{color:#000080}.hljs-isbl-editor-light .hljs-type,.hljs-isbl-editor-light .hljs-number,.hljs-isbl-editor-light .hljs-selector-id,.hljs-isbl-editor-light .hljs-selector-class,.hljs-isbl-editor-light .hljs-quote,.hljs-isbl-editor-light .hljs-template-tag,.hljs-isbl-editor-light .hljs-deletion{color:#000000}.hljs-isbl-editor-light .hljs-title,.hljs-isbl-editor-light .hljs-section{color:#fb2c00}.hljs-isbl-editor-light .hljs-title>.hljs-built_in{color:#008080;font-weight:normal}.hljs-isbl-editor-light .hljs-regexp,.hljs-isbl-editor-light .hljs-symbol,.hljs-isbl-editor-light .hljs-variable,.hljs-isbl-editor-light .hljs-template-variable,.hljs-isbl-editor-light .hljs-link,.hljs-isbl-editor-light .hljs-selector-attr,.hljs-isbl-editor-light .hljs-selector-pseudo{color:#5e1700}.hljs-isbl-editor-light .hljs-built_in,.hljs-isbl-editor-light .hljs-literal{color:#000080;font-weight:bold}.hljs-isbl-editor-light .hljs-bullet,.hljs-isbl-editor-light .hljs-code,.hljs-isbl-editor-light .hljs-addition{color:#397300}.hljs-isbl-editor-light .hljs-class{color:#6f1C00;font-weight:bold}.hljs-isbl-editor-light .hljs-meta{color:#1f7199}.hljs-isbl-editor-light .hljs-meta-string{color:#4d99bf}.hljs-isbl-editor-light .hljs-emphasis{font-style:italic}.hljs-isbl-editor-light .hljs-strong{font-weight:bold}","kimbie.dark":".hljs-kimbie.dark .hljs-comment,.hljs-kimbie.dark .hljs-quote{color:#d6baad}.hljs-kimbie.dark .hljs-variable,.hljs-kimbie.dark .hljs-template-variable,.hljs-kimbie.dark .hljs-tag,.hljs-kimbie.dark .hljs-name,.hljs-kimbie.dark .hljs-selector-id,.hljs-kimbie.dark .hljs-selector-class,.hljs-kimbie.dark .hljs-regexp,.hljs-kimbie.dark .hljs-meta{color:#dc3958}.hljs-kimbie.dark .hljs-number,.hljs-kimbie.dark .hljs-built_in,.hljs-kimbie.dark .hljs-builtin-name,.hljs-kimbie.dark .hljs-literal,.hljs-kimbie.dark .hljs-type,.hljs-kimbie.dark .hljs-params,.hljs-kimbie.dark .hljs-deletion,.hljs-kimbie.dark .hljs-link{color:#f79a32}.hljs-kimbie.dark .hljs-title,.hljs-kimbie.dark .hljs-section,.hljs-kimbie.dark .hljs-attribute{color:#f06431}.hljs-kimbie.dark .hljs-string,.hljs-kimbie.dark .hljs-symbol,.hljs-kimbie.dark .hljs-bullet,.hljs-kimbie.dark .hljs-addition{color:#889b4a}.hljs-kimbie.dark .hljs-keyword,.hljs-kimbie.dark .hljs-selector-tag,.hljs-kimbie.dark .hljs-function{color:#98676a}.hljs-kimbie.dark .hljs{display:block;overflow-x:auto;background:#221a0f;color:#d3af86;padding:.5em}.hljs-kimbie.dark .hljs-emphasis{font-style:italic}.hljs-kimbie.dark .hljs-strong{font-weight:bold}","kimbie.light":".hljs-kimbie.light .hljs-comment,.hljs-kimbie.light .hljs-quote{color:#a57a4c}.hljs-kimbie.light .hljs-variable,.hljs-kimbie.light .hljs-template-variable,.hljs-kimbie.light .hljs-tag,.hljs-kimbie.light .hljs-name,.hljs-kimbie.light .hljs-selector-id,.hljs-kimbie.light .hljs-selector-class,.hljs-kimbie.light .hljs-regexp,.hljs-kimbie.light .hljs-meta{color:#dc3958}.hljs-kimbie.light .hljs-number,.hljs-kimbie.light .hljs-built_in,.hljs-kimbie.light .hljs-builtin-name,.hljs-kimbie.light .hljs-literal,.hljs-kimbie.light .hljs-type,.hljs-kimbie.light .hljs-params,.hljs-kimbie.light .hljs-deletion,.hljs-kimbie.light .hljs-link{color:#f79a32}.hljs-kimbie.light .hljs-title,.hljs-kimbie.light .hljs-section,.hljs-kimbie.light .hljs-attribute{color:#f06431}.hljs-kimbie.light .hljs-string,.hljs-kimbie.light .hljs-symbol,.hljs-kimbie.light .hljs-bullet,.hljs-kimbie.light .hljs-addition{color:#889b4a}.hljs-kimbie.light .hljs-keyword,.hljs-kimbie.light .hljs-selector-tag,.hljs-kimbie.light .hljs-function{color:#98676a}.hljs-kimbie.light .hljs{display:block;overflow-x:auto;background:#fbebd4;color:#84613d;padding:.5em}.hljs-kimbie.light .hljs-emphasis{font-style:italic}.hljs-kimbie.light .hljs-strong{font-weight:bold}",lightfair:".hljs-lightfair .hljs{display:block;overflow-x:auto;padding:.5em}.hljs-lightfair .hljs-name{color:#01a3a3}.hljs-lightfair .hljs-tag,.hljs-lightfair .hljs-meta{color:#778899}.hljs-lightfair .hljs,.hljs-lightfair .hljs-subst{color:#444}.hljs-lightfair .hljs-comment{color:#888888}.hljs-lightfair .hljs-keyword,.hljs-lightfair .hljs-attribute,.hljs-lightfair .hljs-selector-tag,.hljs-lightfair .hljs-meta-keyword,.hljs-lightfair .hljs-doctag,.hljs-lightfair .hljs-name{font-weight:bold}.hljs-lightfair .hljs-type,.hljs-lightfair .hljs-string,.hljs-lightfair .hljs-number,.hljs-lightfair .hljs-selector-id,.hljs-lightfair .hljs-selector-class,.hljs-lightfair .hljs-quote,.hljs-lightfair .hljs-template-tag,.hljs-lightfair .hljs-deletion{color:#4286f4}.hljs-lightfair .hljs-title,.hljs-lightfair .hljs-section{color:#4286f4;font-weight:bold}.hljs-lightfair .hljs-regexp,.hljs-lightfair .hljs-symbol,.hljs-lightfair .hljs-variable,.hljs-lightfair .hljs-template-variable,.hljs-lightfair .hljs-link,.hljs-lightfair .hljs-selector-attr,.hljs-lightfair .hljs-selector-pseudo{color:#BC6060}.hljs-lightfair .hljs-literal{color:#62bcbc}.hljs-lightfair .hljs-built_in,.hljs-lightfair .hljs-bullet,.hljs-lightfair .hljs-code,.hljs-lightfair .hljs-addition{color:#25c6c6}.hljs-lightfair .hljs-meta-string{color:#4d99bf}.hljs-lightfair .hljs-emphasis{font-style:italic}.hljs-lightfair .hljs-strong{font-weight:bold}",magula:".hljs-magula .hljs{display:block;overflow-x:auto;padding:.5em;background-color:#f4f4f4}.hljs-magula .hljs,.hljs-magula .hljs-subst{color:black}.hljs-magula .hljs-string,.hljs-magula .hljs-title,.hljs-magula .hljs-symbol,.hljs-magula .hljs-bullet,.hljs-magula .hljs-attribute,.hljs-magula .hljs-addition,.hljs-magula .hljs-variable,.hljs-magula .hljs-template-tag,.hljs-magula .hljs-template-variable{color:#050}.hljs-magula .hljs-comment,.hljs-magula .hljs-quote{color:#777}.hljs-magula .hljs-number,.hljs-magula .hljs-regexp,.hljs-magula .hljs-literal,.hljs-magula .hljs-type,.hljs-magula .hljs-link{color:#800}.hljs-magula .hljs-deletion,.hljs-magula .hljs-meta{color:#00e}.hljs-magula .hljs-keyword,.hljs-magula .hljs-selector-tag,.hljs-magula .hljs-doctag,.hljs-magula .hljs-title,.hljs-magula .hljs-section,.hljs-magula .hljs-built_in,.hljs-magula .hljs-tag,.hljs-magula .hljs-name{font-weight:bold;color:navy}.hljs-magula .hljs-emphasis{font-style:italic}.hljs-magula .hljs-strong{font-weight:bold}","mono-blue":".hljs-mono-blue .hljs{display:block;overflow-x:auto;padding:.5em;background:#eaeef3}.hljs-mono-blue .hljs{color:#00193a}.hljs-mono-blue .hljs-keyword,.hljs-mono-blue .hljs-selector-tag,.hljs-mono-blue .hljs-title,.hljs-mono-blue .hljs-section,.hljs-mono-blue .hljs-doctag,.hljs-mono-blue .hljs-name,.hljs-mono-blue .hljs-strong{font-weight:bold}.hljs-mono-blue .hljs-comment{color:#738191}.hljs-mono-blue .hljs-string,.hljs-mono-blue .hljs-title,.hljs-mono-blue .hljs-section,.hljs-mono-blue .hljs-built_in,.hljs-mono-blue .hljs-literal,.hljs-mono-blue .hljs-type,.hljs-mono-blue .hljs-addition,.hljs-mono-blue .hljs-tag,.hljs-mono-blue .hljs-quote,.hljs-mono-blue .hljs-name,.hljs-mono-blue .hljs-selector-id,.hljs-mono-blue .hljs-selector-class{color:#0048ab}.hljs-mono-blue .hljs-meta,.hljs-mono-blue .hljs-subst,.hljs-mono-blue .hljs-symbol,.hljs-mono-blue .hljs-regexp,.hljs-mono-blue .hljs-attribute,.hljs-mono-blue .hljs-deletion,.hljs-mono-blue .hljs-variable,.hljs-mono-blue .hljs-template-variable,.hljs-mono-blue .hljs-link,.hljs-mono-blue .hljs-bullet{color:#4c81c9}.hljs-mono-blue .hljs-emphasis{font-style:italic}","monokai-sublime":".hljs-monokai-sublime .hljs{display:block;overflow-x:auto;padding:.5em;background:#23241f}.hljs-monokai-sublime .hljs,.hljs-monokai-sublime .hljs-tag,.hljs-monokai-sublime .hljs-subst{color:#f8f8f2}.hljs-monokai-sublime .hljs-strong,.hljs-monokai-sublime .hljs-emphasis{color:#a8a8a2}.hljs-monokai-sublime .hljs-bullet,.hljs-monokai-sublime .hljs-quote,.hljs-monokai-sublime .hljs-number,.hljs-monokai-sublime .hljs-regexp,.hljs-monokai-sublime .hljs-literal,.hljs-monokai-sublime .hljs-link{color:#ae81ff}.hljs-monokai-sublime .hljs-code,.hljs-monokai-sublime .hljs-title,.hljs-monokai-sublime .hljs-section,.hljs-monokai-sublime .hljs-selector-class{color:#a6e22e}.hljs-monokai-sublime .hljs-strong{font-weight:bold}.hljs-monokai-sublime .hljs-emphasis{font-style:italic}.hljs-monokai-sublime .hljs-keyword,.hljs-monokai-sublime .hljs-selector-tag,.hljs-monokai-sublime .hljs-name,.hljs-monokai-sublime .hljs-attr{color:#f92672}.hljs-monokai-sublime .hljs-symbol,.hljs-monokai-sublime .hljs-attribute{color:#66d9ef}.hljs-monokai-sublime .hljs-params,.hljs-monokai-sublime .hljs-class .hljs-title{color:#f8f8f2}.hljs-monokai-sublime .hljs-string,.hljs-monokai-sublime .hljs-type,.hljs-monokai-sublime .hljs-built_in,.hljs-monokai-sublime .hljs-builtin-name,.hljs-monokai-sublime .hljs-selector-id,.hljs-monokai-sublime .hljs-selector-attr,.hljs-monokai-sublime .hljs-selector-pseudo,.hljs-monokai-sublime .hljs-addition,.hljs-monokai-sublime .hljs-variable,.hljs-monokai-sublime .hljs-template-variable{color:#e6db74}.hljs-monokai-sublime .hljs-comment,.hljs-monokai-sublime .hljs-deletion,.hljs-monokai-sublime .hljs-meta{color:#75715e}",
 monokai:".hljs-monokai .hljs{display:block;overflow-x:auto;padding:.5em;background:#272822;color:#ddd}.hljs-monokai .hljs-tag,.hljs-monokai .hljs-keyword,.hljs-monokai .hljs-selector-tag,.hljs-monokai .hljs-literal,.hljs-monokai .hljs-strong,.hljs-monokai .hljs-name{color:#f92672}.hljs-monokai .hljs-code{color:#66d9ef}.hljs-monokai .hljs-class .hljs-title{color:white}.hljs-monokai .hljs-attribute,.hljs-monokai .hljs-symbol,.hljs-monokai .hljs-regexp,.hljs-monokai .hljs-link{color:#bf79db}.hljs-monokai .hljs-string,.hljs-monokai .hljs-bullet,.hljs-monokai .hljs-subst,.hljs-monokai .hljs-title,.hljs-monokai .hljs-section,.hljs-monokai .hljs-emphasis,.hljs-monokai .hljs-type,.hljs-monokai .hljs-built_in,.hljs-monokai .hljs-builtin-name,.hljs-monokai .hljs-selector-attr,.hljs-monokai .hljs-selector-pseudo,.hljs-monokai .hljs-addition,.hljs-monokai .hljs-variable,.hljs-monokai .hljs-template-tag,.hljs-monokai .hljs-template-variable{color:#a6e22e}.hljs-monokai .hljs-comment,.hljs-monokai .hljs-quote,.hljs-monokai .hljs-deletion,.hljs-monokai .hljs-meta{color:#75715e}.hljs-monokai .hljs-keyword,.hljs-monokai .hljs-selector-tag,.hljs-monokai .hljs-literal,.hljs-monokai .hljs-doctag,.hljs-monokai .hljs-title,.hljs-monokai .hljs-section,.hljs-monokai .hljs-type,.hljs-monokai .hljs-selector-id{font-weight:bold}",nord:".hljs-nord .hljs{display:block;overflow-x:auto;padding:.5em;background:#2E3440}.hljs-nord .hljs,.hljs-nord .hljs-subst{color:#D8DEE9}.hljs-nord .hljs-selector-tag{color:#81A1C1}.hljs-nord .hljs-selector-id{color:#8FBCBB;font-weight:bold}.hljs-nord .hljs-selector-class{color:#8FBCBB}.hljs-nord .hljs-selector-attr{color:#8FBCBB}.hljs-nord .hljs-selector-pseudo{color:#88C0D0}.hljs-nord .hljs-addition{background-color:rgba(163,190,140,0.5)}.hljs-nord .hljs-deletion{background-color:rgba(191,97,106,0.5)}.hljs-nord .hljs-built_in,.hljs-nord .hljs-type{color:#8FBCBB}.hljs-nord .hljs-class{color:#8FBCBB}.hljs-nord .hljs-function{color:#88C0D0}.hljs-nord .hljs-function>.hljs-title{color:#88C0D0}.hljs-nord .hljs-keyword,.hljs-nord .hljs-literal,.hljs-nord .hljs-symbol{color:#81A1C1}.hljs-nord .hljs-number{color:#B48EAD}.hljs-nord .hljs-regexp{color:#EBCB8B}.hljs-nord .hljs-string{color:#A3BE8C}.hljs-nord .hljs-title{color:#8FBCBB}.hljs-nord .hljs-params{color:#D8DEE9}.hljs-nord .hljs-bullet{color:#81A1C1}.hljs-nord .hljs-code{color:#8FBCBB}.hljs-nord .hljs-emphasis{font-style:italic}.hljs-nord .hljs-formula{color:#8FBCBB}.hljs-nord .hljs-strong{font-weight:bold}.hljs-nord .hljs-link:hover{text-decoration:underline}.hljs-nord .hljs-quote{color:#4C566A}.hljs-nord .hljs-comment{color:#4C566A}.hljs-nord .hljs-doctag{color:#8FBCBB}.hljs-nord .hljs-meta,.hljs-nord .hljs-meta-keyword{color:#5E81AC}.hljs-nord .hljs-meta-string{color:#A3BE8C}.hljs-nord .hljs-attr{color:#8FBCBB}.hljs-nord .hljs-attribute{color:#D8DEE9}.hljs-nord .hljs-builtin-name{color:#81A1C1}.hljs-nord .hljs-name{color:#81A1C1}.hljs-nord .hljs-section{color:#88C0D0}.hljs-nord .hljs-tag{color:#81A1C1}.hljs-nord .hljs-variable{color:#D8DEE9}.hljs-nord .hljs-template-variable{color:#D8DEE9}.hljs-nord .hljs-template-tag{color:#5E81AC}.hljs-nord .abnf .hljs-attribute{color:#88C0D0}.hljs-nord .abnf .hljs-symbol{color:#EBCB8B}.hljs-nord .apache .hljs-attribute{color:#88C0D0}.hljs-nord .apache .hljs-section{color:#81A1C1}.hljs-nord .arduino .hljs-built_in{color:#88C0D0}.hljs-nord .aspectj .hljs-meta{color:#D08770}.hljs-nord .aspectj>.hljs-title{color:#88C0D0}.hljs-nord .bnf .hljs-attribute{color:#8FBCBB}.hljs-nord .clojure .hljs-name{color:#88C0D0}.hljs-nord .clojure .hljs-symbol{color:#EBCB8B}.hljs-nord .coq .hljs-built_in{color:#88C0D0}.hljs-nord .cpp .hljs-meta-string{color:#8FBCBB}.hljs-nord .css .hljs-built_in{color:#88C0D0}.hljs-nord .css .hljs-keyword{color:#D08770}.hljs-nord .diff .hljs-meta{color:#8FBCBB}.hljs-nord .ebnf .hljs-attribute{color:#8FBCBB}.hljs-nord .glsl .hljs-built_in{color:#88C0D0}.hljs-nord .groovy .hljs-meta:not(:first-child){color:#D08770}.hljs-nord .haxe .hljs-meta{color:#D08770}.hljs-nord .java .hljs-meta{color:#D08770}.hljs-nord .ldif .hljs-attribute{color:#8FBCBB}.hljs-nord .lisp .hljs-name{color:#88C0D0}.hljs-nord .lua .hljs-built_in{color:#88C0D0}.hljs-nord .moonscript .hljs-built_in{color:#88C0D0}.hljs-nord .nginx .hljs-attribute{color:#88C0D0}.hljs-nord .nginx .hljs-section{color:#5E81AC}.hljs-nord .pf .hljs-built_in{color:#88C0D0}.hljs-nord .processing .hljs-built_in{color:#88C0D0}.hljs-nord .scss .hljs-keyword{color:#81A1C1}.hljs-nord .stylus .hljs-keyword{color:#81A1C1}.hljs-nord .swift .hljs-meta{color:#D08770}.hljs-nord .vim .hljs-built_in{color:#88C0D0;font-style:italic}.hljs-nord .yaml .hljs-meta{color:#D08770}",obsidian:".hljs-obsidian .hljs{display:block;overflow-x:auto;padding:.5em;background:#282b2e}.hljs-obsidian .hljs-keyword,.hljs-obsidian .hljs-selector-tag,.hljs-obsidian .hljs-literal,.hljs-obsidian .hljs-selector-id{color:#93c763}.hljs-obsidian .hljs-number{color:#ffcd22}.hljs-obsidian .hljs{color:#e0e2e4}.hljs-obsidian .hljs-attribute{color:#668bb0}.hljs-obsidian .hljs-code,.hljs-obsidian .hljs-class .hljs-title,.hljs-obsidian .hljs-section{color:white}.hljs-obsidian .hljs-regexp,.hljs-obsidian .hljs-link{color:#d39745}.hljs-obsidian .hljs-meta{color:#557182}.hljs-obsidian .hljs-tag,.hljs-obsidian .hljs-name,.hljs-obsidian .hljs-bullet,.hljs-obsidian .hljs-subst,.hljs-obsidian .hljs-emphasis,.hljs-obsidian .hljs-type,.hljs-obsidian .hljs-built_in,.hljs-obsidian .hljs-selector-attr,.hljs-obsidian .hljs-selector-pseudo,.hljs-obsidian .hljs-addition,.hljs-obsidian .hljs-variable,.hljs-obsidian .hljs-template-tag,.hljs-obsidian .hljs-template-variable{color:#8cbbad}.hljs-obsidian .hljs-string,.hljs-obsidian .hljs-symbol{color:#ec7600}.hljs-obsidian .hljs-comment,.hljs-obsidian .hljs-quote,.hljs-obsidian .hljs-deletion{color:#818e96}.hljs-obsidian .hljs-selector-class{color:#A082BD}.hljs-obsidian .hljs-keyword,.hljs-obsidian .hljs-selector-tag,.hljs-obsidian .hljs-literal,.hljs-obsidian .hljs-doctag,.hljs-obsidian .hljs-title,.hljs-obsidian .hljs-section,.hljs-obsidian .hljs-type,.hljs-obsidian .hljs-name,.hljs-obsidian .hljs-strong{font-weight:bold}",ocean:".hljs-ocean .hljs-comment,.hljs-ocean .hljs-quote{color:#65737e}.hljs-ocean .hljs-variable,.hljs-ocean .hljs-template-variable,.hljs-ocean .hljs-tag,.hljs-ocean .hljs-name,.hljs-ocean .hljs-selector-id,.hljs-ocean .hljs-selector-class,.hljs-ocean .hljs-regexp,.hljs-ocean .hljs-deletion{color:#bf616a}.hljs-ocean .hljs-number,.hljs-ocean .hljs-built_in,.hljs-ocean .hljs-builtin-name,.hljs-ocean .hljs-literal,.hljs-ocean .hljs-type,.hljs-ocean .hljs-params,.hljs-ocean .hljs-meta,.hljs-ocean .hljs-link{color:#d08770}.hljs-ocean .hljs-attribute{color:#ebcb8b}.hljs-ocean .hljs-string,.hljs-ocean .hljs-symbol,.hljs-ocean .hljs-bullet,.hljs-ocean .hljs-addition{color:#a3be8c}.hljs-ocean .hljs-title,.hljs-ocean .hljs-section{color:#8fa1b3}.hljs-ocean .hljs-keyword,.hljs-ocean .hljs-selector-tag{color:#b48ead}.hljs-ocean .hljs{display:block;overflow-x:auto;background:#2b303b;color:#c0c5ce;padding:.5em}.hljs-ocean .hljs-emphasis{font-style:italic}.hljs-ocean .hljs-strong{font-weight:bold}","paraiso-dark":".hljs-paraiso-dark .hljs-comment,.hljs-paraiso-dark .hljs-quote{color:#8d8687}.hljs-paraiso-dark .hljs-variable,.hljs-paraiso-dark .hljs-template-variable,.hljs-paraiso-dark .hljs-tag,.hljs-paraiso-dark .hljs-name,.hljs-paraiso-dark .hljs-selector-id,.hljs-paraiso-dark .hljs-selector-class,.hljs-paraiso-dark .hljs-regexp,.hljs-paraiso-dark .hljs-link,.hljs-paraiso-dark .hljs-meta{color:#ef6155}.hljs-paraiso-dark .hljs-number,.hljs-paraiso-dark .hljs-built_in,.hljs-paraiso-dark .hljs-builtin-name,.hljs-paraiso-dark .hljs-literal,.hljs-paraiso-dark .hljs-type,.hljs-paraiso-dark .hljs-params,.hljs-paraiso-dark .hljs-deletion{color:#f99b15}.hljs-paraiso-dark .hljs-title,.hljs-paraiso-dark .hljs-section,.hljs-paraiso-dark .hljs-attribute{color:#fec418}.hljs-paraiso-dark .hljs-string,.hljs-paraiso-dark .hljs-symbol,.hljs-paraiso-dark .hljs-bullet,.hljs-paraiso-dark .hljs-addition{color:#48b685}.hljs-paraiso-dark .hljs-keyword,.hljs-paraiso-dark .hljs-selector-tag{color:#815ba4}.hljs-paraiso-dark .hljs{display:block;overflow-x:auto;background:#2f1e2e;color:#a39e9b;padding:.5em}.hljs-paraiso-dark .hljs-emphasis{font-style:italic}.hljs-paraiso-dark .hljs-strong{font-weight:bold}","paraiso-light":".hljs-paraiso-light .hljs-comment,.hljs-paraiso-light .hljs-quote{color:#776e71}.hljs-paraiso-light .hljs-variable,.hljs-paraiso-light .hljs-template-variable,.hljs-paraiso-light .hljs-tag,.hljs-paraiso-light .hljs-name,.hljs-paraiso-light .hljs-selector-id,.hljs-paraiso-light .hljs-selector-class,.hljs-paraiso-light .hljs-regexp,.hljs-paraiso-light .hljs-link,.hljs-paraiso-light .hljs-meta{color:#ef6155}.hljs-paraiso-light .hljs-number,.hljs-paraiso-light .hljs-built_in,.hljs-paraiso-light .hljs-builtin-name,.hljs-paraiso-light .hljs-literal,.hljs-paraiso-light .hljs-type,.hljs-paraiso-light .hljs-params,.hljs-paraiso-light .hljs-deletion{color:#f99b15}.hljs-paraiso-light .hljs-title,.hljs-paraiso-light .hljs-section,.hljs-paraiso-light .hljs-attribute{color:#fec418}.hljs-paraiso-light .hljs-string,.hljs-paraiso-light .hljs-symbol,.hljs-paraiso-light .hljs-bullet,.hljs-paraiso-light .hljs-addition{color:#48b685}.hljs-paraiso-light .hljs-keyword,.hljs-paraiso-light .hljs-selector-tag{color:#815ba4}.hljs-paraiso-light .hljs{display:block;overflow-x:auto;background:#e7e9db;color:#4f424c;padding:.5em}.hljs-paraiso-light .hljs-emphasis{font-style:italic}.hljs-paraiso-light .hljs-strong{font-weight:bold}",purebasic:".hljs-purebasic .hljs{display:block;overflow-x:auto;padding:.5em;background:#FFFFDF}.hljs-purebasic .hljs,.hljs-purebasic .hljs-type,.hljs-purebasic .hljs-function,.hljs-purebasic .hljs-name,.hljs-purebasic .hljs-number,.hljs-purebasic .hljs-attr,.hljs-purebasic .hljs-params,.hljs-purebasic .hljs-subst{color:#000000}.hljs-purebasic .hljs-comment,.hljs-purebasic .hljs-regexp,.hljs-purebasic .hljs-section,.hljs-purebasic .hljs-selector-pseudo,.hljs-purebasic .hljs-addition{color:#00AAAA}.hljs-purebasic .hljs-title,.hljs-purebasic .hljs-tag,.hljs-purebasic .hljs-variable,.hljs-purebasic .hljs-code{color:#006666}.hljs-purebasic .hljs-keyword,.hljs-purebasic .hljs-class,.hljs-purebasic .hljs-meta-keyword,.hljs-purebasic .hljs-selector-class,.hljs-purebasic .hljs-built_in,.hljs-purebasic .hljs-builtin-name{color:#006666;font-weight:bold}.hljs-purebasic .hljs-string,.hljs-purebasic .hljs-selector-attr{color:#0080FF}.hljs-purebasic .hljs-symbol,.hljs-purebasic .hljs-link,.hljs-purebasic .hljs-deletion,.hljs-purebasic .hljs-attribute{color:#924B72}.hljs-purebasic .hljs-meta,.hljs-purebasic .hljs-literal,.hljs-purebasic .hljs-selector-id{color:#924B72;font-weight:bold}.hljs-purebasic .hljs-strong,.hljs-purebasic .hljs-name{font-weight:bold}.hljs-purebasic .hljs-emphasis{font-style:italic}",qtcreator_dark:".hljs-qtcreator_dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#000000}.hljs-qtcreator_dark .hljs,.hljs-qtcreator_dark .hljs-subst,.hljs-qtcreator_dark .hljs-tag,.hljs-qtcreator_dark .hljs-title{color:#aaaaaa}.hljs-qtcreator_dark .hljs-strong,.hljs-qtcreator_dark .hljs-emphasis{color:#a8a8a2}.hljs-qtcreator_dark .hljs-bullet,.hljs-qtcreator_dark .hljs-quote,.hljs-qtcreator_dark .hljs-number,.hljs-qtcreator_dark .hljs-regexp,.hljs-qtcreator_dark .hljs-literal{color:#ff55ff}.hljs-qtcreator_dark .hljs-code .hljs-selector-class{color:#aaaaff}.hljs-qtcreator_dark .hljs-emphasis,.hljs-qtcreator_dark .hljs-stronge,.hljs-qtcreator_dark .hljs-type{font-style:italic}.hljs-qtcreator_dark .hljs-keyword,.hljs-qtcreator_dark .hljs-selector-tag,.hljs-qtcreator_dark .hljs-function,.hljs-qtcreator_dark .hljs-section,.hljs-qtcreator_dark .hljs-symbol,.hljs-qtcreator_dark .hljs-name{color:#ffff55}.hljs-qtcreator_dark .hljs-attribute{color:#ff5555}.hljs-qtcreator_dark .hljs-variable,.hljs-qtcreator_dark .hljs-params,.hljs-qtcreator_dark .hljs-class .hljs-title{color:#8888ff}.hljs-qtcreator_dark .hljs-string,.hljs-qtcreator_dark .hljs-selector-id,.hljs-qtcreator_dark .hljs-selector-attr,.hljs-qtcreator_dark .hljs-selector-pseudo,.hljs-qtcreator_dark .hljs-type,.hljs-qtcreator_dark .hljs-built_in,.hljs-qtcreator_dark .hljs-builtin-name,.hljs-qtcreator_dark .hljs-template-tag,.hljs-qtcreator_dark .hljs-template-variable,.hljs-qtcreator_dark .hljs-addition,.hljs-qtcreator_dark .hljs-link{color:#ff55ff}.hljs-qtcreator_dark .hljs-comment,.hljs-qtcreator_dark .hljs-meta,.hljs-qtcreator_dark .hljs-deletion{color:#55ffff}",qtcreator_light:".hljs-qtcreator_light .hljs{display:block;overflow-x:auto;padding:.5em;background:#ffffff}.hljs-qtcreator_light .hljs,.hljs-qtcreator_light .hljs-subst,.hljs-qtcreator_light .hljs-tag,.hljs-qtcreator_light .hljs-title{color:#000000}.hljs-qtcreator_light .hljs-strong,.hljs-qtcreator_light .hljs-emphasis{color:#000000}.hljs-qtcreator_light .hljs-bullet,.hljs-qtcreator_light .hljs-quote,.hljs-qtcreator_light .hljs-number,.hljs-qtcreator_light .hljs-regexp,.hljs-qtcreator_light .hljs-literal{color:#000080}.hljs-qtcreator_light .hljs-code .hljs-selector-class{color:#800080}.hljs-qtcreator_light .hljs-emphasis,.hljs-qtcreator_light .hljs-stronge,.hljs-qtcreator_light .hljs-type{font-style:italic}.hljs-qtcreator_light .hljs-keyword,.hljs-qtcreator_light .hljs-selector-tag,.hljs-qtcreator_light .hljs-function,.hljs-qtcreator_light .hljs-section,.hljs-qtcreator_light .hljs-symbol,.hljs-qtcreator_light .hljs-name{color:#808000}.hljs-qtcreator_light .hljs-attribute{color:#800000}.hljs-qtcreator_light .hljs-variable,.hljs-qtcreator_light .hljs-params,.hljs-qtcreator_light .hljs-class .hljs-title{color:#0055AF}.hljs-qtcreator_light .hljs-string,.hljs-qtcreator_light .hljs-selector-id,.hljs-qtcreator_light .hljs-selector-attr,.hljs-qtcreator_light .hljs-selector-pseudo,.hljs-qtcreator_light .hljs-type,.hljs-qtcreator_light .hljs-built_in,.hljs-qtcreator_light .hljs-builtin-name,.hljs-qtcreator_light .hljs-template-tag,.hljs-qtcreator_light .hljs-template-variable,.hljs-qtcreator_light .hljs-addition,.hljs-qtcreator_light .hljs-link{color:#008000}.hljs-qtcreator_light .hljs-comment,.hljs-qtcreator_light .hljs-meta,.hljs-qtcreator_light .hljs-deletion{color:#008000}",railscasts:".hljs-railscasts .hljs{display:block;overflow-x:auto;padding:.5em;background:#232323;color:#e6e1dc}.hljs-railscasts .hljs-comment,.hljs-railscasts .hljs-quote{color:#bc9458;font-style:italic}.hljs-railscasts .hljs-keyword,.hljs-railscasts .hljs-selector-tag{color:#c26230}.hljs-railscasts .hljs-string,.hljs-railscasts .hljs-number,.hljs-railscasts .hljs-regexp,.hljs-railscasts .hljs-variable,.hljs-railscasts .hljs-template-variable{color:#a5c261}.hljs-railscasts .hljs-subst{color:#519f50}.hljs-railscasts .hljs-tag,.hljs-railscasts .hljs-name{color:#e8bf6a}.hljs-railscasts .hljs-type{color:#da4939}.hljs-railscasts .hljs-symbol,.hljs-railscasts .hljs-bullet,.hljs-railscasts .hljs-built_in,.hljs-railscasts .hljs-builtin-name,.hljs-railscasts .hljs-attr,.hljs-railscasts .hljs-link{color:#6d9cbe}.hljs-railscasts .hljs-params{color:#d0d0ff}.hljs-railscasts .hljs-attribute{color:#cda869}.hljs-railscasts .hljs-meta{color:#9b859d}.hljs-railscasts .hljs-title,.hljs-railscasts .hljs-section{color:#ffc66d}.hljs-railscasts .hljs-addition{background-color:#144212;color:#e6e1dc;display:inline-block;width:100%}.hljs-railscasts .hljs-deletion{background-color:#600;color:#e6e1dc;display:inline-block;width:100%}.hljs-railscasts .hljs-selector-class{color:#9b703f}.hljs-railscasts .hljs-selector-id{color:#8b98ab}.hljs-railscasts .hljs-emphasis{font-style:italic}.hljs-railscasts .hljs-strong{font-weight:bold}.hljs-railscasts .hljs-link{text-decoration:underline}",rainbow:".hljs-rainbow .hljs{display:block;overflow-x:auto;padding:.5em;background:#474949;color:#d1d9e1}.hljs-rainbow .hljs-comment,.hljs-rainbow .hljs-quote{color:#969896;font-style:italic}.hljs-rainbow .hljs-keyword,.hljs-rainbow .hljs-selector-tag,.hljs-rainbow .hljs-literal,.hljs-rainbow .hljs-type,.hljs-rainbow .hljs-addition{color:#cc99cc}.hljs-rainbow .hljs-number,.hljs-rainbow .hljs-selector-attr,.hljs-rainbow .hljs-selector-pseudo{color:#f99157}.hljs-rainbow .hljs-string,.hljs-rainbow .hljs-doctag,.hljs-rainbow .hljs-regexp{color:#8abeb7}.hljs-rainbow .hljs-title,.hljs-rainbow .hljs-name,.hljs-rainbow .hljs-section,.hljs-rainbow .hljs-built_in{color:#b5bd68}.hljs-rainbow .hljs-variable,.hljs-rainbow .hljs-template-variable,.hljs-rainbow .hljs-selector-id,.hljs-rainbow .hljs-class .hljs-title{color:#ffcc66}.hljs-rainbow .hljs-section,.hljs-rainbow .hljs-name,.hljs-rainbow .hljs-strong{font-weight:bold}.hljs-rainbow .hljs-symbol,.hljs-rainbow .hljs-bullet,.hljs-rainbow .hljs-subst,.hljs-rainbow .hljs-meta,.hljs-rainbow .hljs-link{color:#f99157}.hljs-rainbow .hljs-deletion{color:#dc322f}.hljs-rainbow .hljs-formula{background:#eee8d5}.hljs-rainbow .hljs-attr,.hljs-rainbow .hljs-attribute{color:#81a2be}.hljs-rainbow .hljs-emphasis{font-style:italic}",routeros:".hljs-routeros .hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs-routeros .hljs,.hljs-routeros .hljs-subst{color:#444}.hljs-routeros .hljs-comment{color:#888888}.hljs-routeros .hljs-keyword,.hljs-routeros .hljs-selector-tag,.hljs-routeros .hljs-meta-keyword,.hljs-routeros .hljs-doctag,.hljs-routeros .hljs-name{font-weight:bold}.hljs-routeros .hljs-attribute{color:#0E9A00}.hljs-routeros .hljs-function{color:#99069A}.hljs-routeros .hljs-builtin-name{color:#99069A}.hljs-routeros .hljs-type,.hljs-routeros .hljs-string,.hljs-routeros .hljs-number,.hljs-routeros .hljs-selector-id,.hljs-routeros .hljs-selector-class,.hljs-routeros .hljs-quote,.hljs-routeros .hljs-template-tag,.hljs-routeros .hljs-deletion{color:#880000}.hljs-routeros .hljs-title,.hljs-routeros .hljs-section{color:#880000;font-weight:bold}.hljs-routeros .hljs-regexp,.hljs-routeros .hljs-symbol,.hljs-routeros .hljs-variable,.hljs-routeros .hljs-template-variable,.hljs-routeros .hljs-link,.hljs-routeros .hljs-selector-attr,.hljs-routeros .hljs-selector-pseudo{color:#BC6060}.hljs-routeros .hljs-literal{color:#78A960}.hljs-routeros .hljs-built_in,.hljs-routeros .hljs-bullet,.hljs-routeros .hljs-code,.hljs-routeros .hljs-addition{color:#0C9A9A}.hljs-routeros .hljs-meta{color:#1f7199}.hljs-routeros .hljs-meta-string{color:#4d99bf}.hljs-routeros .hljs-emphasis{font-style:italic}.hljs-routeros .hljs-strong{font-weight:bold}","school-book":".hljs-school-book .hljs{display:block;overflow-x:auto;padding:15px .5em .5em 30px;font-size:11px;line-height:16px;background:#f6f6ae url(./school-book.png);border-top:solid 2px #d2e8b9;border-bottom:solid 1px #d2e8b9}.hljs-school-book .hljs-keyword,.hljs-school-book .hljs-selector-tag,.hljs-school-book .hljs-literal{color:#005599;font-weight:bold}.hljs-school-book .hljs,.hljs-school-book .hljs-subst{color:#3e5915}.hljs-school-book .hljs-string,.hljs-school-book .hljs-title,.hljs-school-book .hljs-section,.hljs-school-book .hljs-type,.hljs-school-book .hljs-symbol,.hljs-school-book .hljs-bullet,.hljs-school-book .hljs-attribute,.hljs-school-book .hljs-built_in,.hljs-school-book .hljs-builtin-name,.hljs-school-book .hljs-addition,.hljs-school-book .hljs-variable,.hljs-school-book .hljs-template-tag,.hljs-school-book .hljs-template-variable,.hljs-school-book .hljs-link{color:#2c009f}.hljs-school-book .hljs-comment,.hljs-school-book .hljs-quote,.hljs-school-book .hljs-deletion,.hljs-school-book .hljs-meta{color:#e60415}.hljs-school-book .hljs-keyword,.hljs-school-book .hljs-selector-tag,.hljs-school-book .hljs-literal,.hljs-school-book .hljs-doctag,.hljs-school-book .hljs-title,.hljs-school-book .hljs-section,.hljs-school-book .hljs-type,.hljs-school-book .hljs-name,.hljs-school-book .hljs-selector-id,.hljs-school-book .hljs-strong{font-weight:bold}.hljs-school-book .hljs-emphasis{font-style:italic}","shades-of-purple":".hljs-shades-of-purple .hljs{display:block;overflow-x:auto;line-height:1.45;padding:2rem;background:#2d2b57;font-weight:normal}.hljs-shades-of-purple .hljs-title{color:#fad000;font-weight:normal}.hljs-shades-of-purple .hljs-name{color:#a1feff}.hljs-shades-of-purple .hljs-tag{color:#ffffff}.hljs-shades-of-purple .hljs-attr{color:#f8d000;font-style:italic}.hljs-shades-of-purple .hljs-built_in,.hljs-shades-of-purple .hljs-selector-tag,.hljs-shades-of-purple .hljs-section{color:#fb9e00}.hljs-shades-of-purple .hljs-keyword{color:#fb9e00}.hljs-shades-of-purple .hljs,.hljs-shades-of-purple .hljs-subst{color:#e3dfff}.hljs-shades-of-purple .hljs-string,.hljs-shades-of-purple .hljs-attribute,.hljs-shades-of-purple .hljs-symbol,.hljs-shades-of-purple .hljs-bullet,.hljs-shades-of-purple .hljs-addition,.hljs-shades-of-purple .hljs-code,.hljs-shades-of-purple .hljs-regexp,.hljs-shades-of-purple .hljs-selector-class,.hljs-shades-of-purple .hljs-selector-attr,.hljs-shades-of-purple .hljs-selector-pseudo,.hljs-shades-of-purple .hljs-template-tag,.hljs-shades-of-purple .hljs-quote,.hljs-shades-of-purple .hljs-deletion{color:#4cd213}.hljs-shades-of-purple .hljs-meta,.hljs-shades-of-purple .hljs-meta-string{color:#fb9e00}.hljs-shades-of-purple .hljs-comment{color:#ac65ff}.hljs-shades-of-purple .hljs-keyword,.hljs-shades-of-purple .hljs-selector-tag,.hljs-shades-of-purple .hljs-literal,.hljs-shades-of-purple .hljs-name,.hljs-shades-of-purple .hljs-strong{font-weight:normal}.hljs-shades-of-purple .hljs-literal,.hljs-shades-of-purple .hljs-number{color:#fa658d}.hljs-shades-of-purple .hljs-emphasis{font-style:italic}.hljs-shades-of-purple .hljs-strong{font-weight:bold}","solarized-dark":".hljs-solarized-dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-solarized-dark .hljs-comment,.hljs-solarized-dark .hljs-quote{color:#586e75}.hljs-solarized-dark .hljs-keyword,.hljs-solarized-dark .hljs-selector-tag,.hljs-solarized-dark .hljs-addition{color:#859900}.hljs-solarized-dark .hljs-number,.hljs-solarized-dark .hljs-string,.hljs-solarized-dark .hljs-meta .hljs-meta-string,.hljs-solarized-dark .hljs-literal,.hljs-solarized-dark .hljs-doctag,.hljs-solarized-dark .hljs-regexp{color:#2aa198}.hljs-solarized-dark .hljs-title,.hljs-solarized-dark .hljs-section,.hljs-solarized-dark .hljs-name,.hljs-solarized-dark .hljs-selector-id,.hljs-solarized-dark .hljs-selector-class{color:#268bd2}.hljs-solarized-dark .hljs-attribute,.hljs-solarized-dark .hljs-attr,.hljs-solarized-dark .hljs-variable,.hljs-solarized-dark .hljs-template-variable,.hljs-solarized-dark .hljs-class .hljs-title,.hljs-solarized-dark .hljs-type{color:#b58900}.hljs-solarized-dark .hljs-symbol,.hljs-solarized-dark .hljs-bullet,.hljs-solarized-dark .hljs-subst,.hljs-solarized-dark .hljs-meta,.hljs-solarized-dark .hljs-meta .hljs-keyword,.hljs-solarized-dark .hljs-selector-attr,.hljs-solarized-dark .hljs-selector-pseudo,.hljs-solarized-dark .hljs-link{color:#cb4b16}.hljs-solarized-dark .hljs-built_in,.hljs-solarized-dark .hljs-deletion{color:#dc322f}.hljs-solarized-dark .hljs-formula{background:#073642}.hljs-solarized-dark .hljs-emphasis{font-style:italic}.hljs-solarized-dark .hljs-strong{font-weight:bold}","solarized-light":".hljs-solarized-light .hljs{display:block;overflow-x:auto;padding:.5em;background:#fdf6e3;color:#657b83}.hljs-solarized-light .hljs-comment,.hljs-solarized-light .hljs-quote{color:#93a1a1}.hljs-solarized-light .hljs-keyword,.hljs-solarized-light .hljs-selector-tag,.hljs-solarized-light .hljs-addition{color:#859900}.hljs-solarized-light .hljs-number,.hljs-solarized-light .hljs-string,.hljs-solarized-light .hljs-meta .hljs-meta-string,.hljs-solarized-light .hljs-literal,.hljs-solarized-light .hljs-doctag,.hljs-solarized-light .hljs-regexp{color:#2aa198}.hljs-solarized-light .hljs-title,.hljs-solarized-light .hljs-section,.hljs-solarized-light .hljs-name,.hljs-solarized-light .hljs-selector-id,.hljs-solarized-light .hljs-selector-class{color:#268bd2}.hljs-solarized-light .hljs-attribute,.hljs-solarized-light .hljs-attr,.hljs-solarized-light .hljs-variable,.hljs-solarized-light .hljs-template-variable,.hljs-solarized-light .hljs-class .hljs-title,.hljs-solarized-light .hljs-type{color:#b58900}.hljs-solarized-light .hljs-symbol,.hljs-solarized-light .hljs-bullet,.hljs-solarized-light .hljs-subst,.hljs-solarized-light .hljs-meta,.hljs-solarized-light .hljs-meta .hljs-keyword,.hljs-solarized-light .hljs-selector-attr,.hljs-solarized-light .hljs-selector-pseudo,.hljs-solarized-light .hljs-link{color:#cb4b16}.hljs-solarized-light .hljs-built_in,.hljs-solarized-light .hljs-deletion{color:#dc322f}.hljs-solarized-light .hljs-formula{background:#eee8d5}.hljs-solarized-light .hljs-emphasis{font-style:italic}.hljs-solarized-light .hljs-strong{font-weight:bold}",sunburst:".hljs-sunburst .hljs{display:block;overflow-x:auto;padding:.5em;background:#000;color:#f8f8f8}.hljs-sunburst .hljs-comment,.hljs-sunburst .hljs-quote{color:#aeaeae;font-style:italic}.hljs-sunburst .hljs-keyword,.hljs-sunburst .hljs-selector-tag,.hljs-sunburst .hljs-type{color:#e28964}.hljs-sunburst .hljs-string{color:#65b042}.hljs-sunburst .hljs-subst{color:#daefa3}.hljs-sunburst .hljs-regexp,.hljs-sunburst .hljs-link{color:#e9c062}.hljs-sunburst .hljs-title,.hljs-sunburst .hljs-section,.hljs-sunburst .hljs-tag,.hljs-sunburst .hljs-name{color:#89bdff}.hljs-sunburst .hljs-class .hljs-title,.hljs-sunburst .hljs-doctag{text-decoration:underline}.hljs-sunburst .hljs-symbol,.hljs-sunburst .hljs-bullet,.hljs-sunburst .hljs-number{color:#3387cc}.hljs-sunburst .hljs-params,.hljs-sunburst .hljs-variable,.hljs-sunburst .hljs-template-variable{color:#3e87e3}.hljs-sunburst .hljs-attribute{color:#cda869}.hljs-sunburst .hljs-meta{color:#8996a8}.hljs-sunburst .hljs-formula{background-color:#0e2231;color:#f8f8f8;font-style:italic}.hljs-sunburst .hljs-addition{background-color:#253b22;color:#f8f8f8}.hljs-sunburst .hljs-deletion{background-color:#420e09;color:#f8f8f8}.hljs-sunburst .hljs-selector-class{color:#9b703f}.hljs-sunburst .hljs-selector-id{color:#8b98ab}.hljs-sunburst .hljs-emphasis{font-style:italic}.hljs-sunburst .hljs-strong{font-weight:bold}","tomorrow-night-blue":".hljs-tomorrow-night-blue .hljs-comment,.hljs-tomorrow-night-blue .hljs-quote{color:#7285b7}.hljs-tomorrow-night-blue .hljs-variable,.hljs-tomorrow-night-blue .hljs-template-variable,.hljs-tomorrow-night-blue .hljs-tag,.hljs-tomorrow-night-blue .hljs-name,.hljs-tomorrow-night-blue .hljs-selector-id,.hljs-tomorrow-night-blue .hljs-selector-class,.hljs-tomorrow-night-blue .hljs-regexp,.hljs-tomorrow-night-blue .hljs-deletion{color:#ff9da4}.hljs-tomorrow-night-blue .hljs-number,.hljs-tomorrow-night-blue .hljs-built_in,.hljs-tomorrow-night-blue .hljs-builtin-name,.hljs-tomorrow-night-blue .hljs-literal,.hljs-tomorrow-night-blue .hljs-type,.hljs-tomorrow-night-blue .hljs-params,.hljs-tomorrow-night-blue .hljs-meta,.hljs-tomorrow-night-blue .hljs-link{color:#ffc58f}.hljs-tomorrow-night-blue .hljs-attribute{color:#ffeead}.hljs-tomorrow-night-blue .hljs-string,.hljs-tomorrow-night-blue .hljs-symbol,.hljs-tomorrow-night-blue .hljs-bullet,.hljs-tomorrow-night-blue .hljs-addition{color:#d1f1a9}.hljs-tomorrow-night-blue .hljs-title,.hljs-tomorrow-night-blue .hljs-section{color:#bbdaff}.hljs-tomorrow-night-blue .hljs-keyword,.hljs-tomorrow-night-blue .hljs-selector-tag{color:#ebbbff}.hljs-tomorrow-night-blue .hljs{display:block;overflow-x:auto;background:#002451;color:white;padding:.5em}.hljs-tomorrow-night-blue .hljs-emphasis{font-style:italic}.hljs-tomorrow-night-blue .hljs-strong{font-weight:bold}","tomorrow-night-bright":".hljs-tomorrow-night-bright .hljs-comment,.hljs-tomorrow-night-bright .hljs-quote{color:#969896}.hljs-tomorrow-night-bright .hljs-variable,.hljs-tomorrow-night-bright .hljs-template-variable,.hljs-tomorrow-night-bright .hljs-tag,.hljs-tomorrow-night-bright .hljs-name,.hljs-tomorrow-night-bright .hljs-selector-id,.hljs-tomorrow-night-bright .hljs-selector-class,.hljs-tomorrow-night-bright .hljs-regexp,.hljs-tomorrow-night-bright .hljs-deletion{color:#d54e53}.hljs-tomorrow-night-bright .hljs-number,.hljs-tomorrow-night-bright .hljs-built_in,.hljs-tomorrow-night-bright .hljs-builtin-name,.hljs-tomorrow-night-bright .hljs-literal,.hljs-tomorrow-night-bright .hljs-type,.hljs-tomorrow-night-bright .hljs-params,.hljs-tomorrow-night-bright .hljs-meta,.hljs-tomorrow-night-bright .hljs-link{color:#e78c45}.hljs-tomorrow-night-bright .hljs-attribute{color:#e7c547}.hljs-tomorrow-night-bright .hljs-string,.hljs-tomorrow-night-bright .hljs-symbol,.hljs-tomorrow-night-bright .hljs-bullet,.hljs-tomorrow-night-bright .hljs-addition{color:#b9ca4a}.hljs-tomorrow-night-bright .hljs-title,.hljs-tomorrow-night-bright .hljs-section{color:#7aa6da}.hljs-tomorrow-night-bright .hljs-keyword,.hljs-tomorrow-night-bright .hljs-selector-tag{color:#c397d8}.hljs-tomorrow-night-bright .hljs{display:block;overflow-x:auto;background:black;color:#eaeaea;padding:.5em}.hljs-tomorrow-night-bright .hljs-emphasis{font-style:italic}.hljs-tomorrow-night-bright .hljs-strong{font-weight:bold}","tomorrow-night-eighties":".hljs-tomorrow-night-eighties .hljs-comment,.hljs-tomorrow-night-eighties .hljs-quote{color:#999999}.hljs-tomorrow-night-eighties .hljs-variable,.hljs-tomorrow-night-eighties .hljs-template-variable,.hljs-tomorrow-night-eighties .hljs-tag,.hljs-tomorrow-night-eighties .hljs-name,.hljs-tomorrow-night-eighties .hljs-selector-id,.hljs-tomorrow-night-eighties .hljs-selector-class,.hljs-tomorrow-night-eighties .hljs-regexp,.hljs-tomorrow-night-eighties .hljs-deletion{color:#f2777a}.hljs-tomorrow-night-eighties .hljs-number,.hljs-tomorrow-night-eighties .hljs-built_in,.hljs-tomorrow-night-eighties .hljs-builtin-name,.hljs-tomorrow-night-eighties .hljs-literal,.hljs-tomorrow-night-eighties .hljs-type,.hljs-tomorrow-night-eighties .hljs-params,.hljs-tomorrow-night-eighties .hljs-meta,.hljs-tomorrow-night-eighties .hljs-link{color:#f99157}.hljs-tomorrow-night-eighties .hljs-attribute{color:#ffcc66}.hljs-tomorrow-night-eighties .hljs-string,.hljs-tomorrow-night-eighties .hljs-symbol,.hljs-tomorrow-night-eighties .hljs-bullet,.hljs-tomorrow-night-eighties .hljs-addition{color:#99cc99}.hljs-tomorrow-night-eighties .hljs-title,.hljs-tomorrow-night-eighties .hljs-section{color:#6699cc}.hljs-tomorrow-night-eighties .hljs-keyword,.hljs-tomorrow-night-eighties .hljs-selector-tag{color:#cc99cc}.hljs-tomorrow-night-eighties .hljs{display:block;overflow-x:auto;background:#2d2d2d;color:#cccccc;padding:.5em}.hljs-tomorrow-night-eighties .hljs-emphasis{font-style:italic}.hljs-tomorrow-night-eighties .hljs-strong{font-weight:bold}","tomorrow-night":".hljs-tomorrow-night .hljs-comment,.hljs-tomorrow-night .hljs-quote{color:#969896}.hljs-tomorrow-night .hljs-variable,.hljs-tomorrow-night .hljs-template-variable,.hljs-tomorrow-night .hljs-tag,.hljs-tomorrow-night .hljs-name,.hljs-tomorrow-night .hljs-selector-id,.hljs-tomorrow-night .hljs-selector-class,.hljs-tomorrow-night .hljs-regexp,.hljs-tomorrow-night .hljs-deletion{color:#cc6666}.hljs-tomorrow-night .hljs-number,.hljs-tomorrow-night .hljs-built_in,.hljs-tomorrow-night .hljs-builtin-name,.hljs-tomorrow-night .hljs-literal,.hljs-tomorrow-night .hljs-type,.hljs-tomorrow-night .hljs-params,.hljs-tomorrow-night .hljs-meta,.hljs-tomorrow-night .hljs-link{color:#de935f}.hljs-tomorrow-night .hljs-attribute{color:#f0c674}.hljs-tomorrow-night .hljs-string,.hljs-tomorrow-night .hljs-symbol,.hljs-tomorrow-night .hljs-bullet,.hljs-tomorrow-night .hljs-addition{color:#b5bd68}.hljs-tomorrow-night .hljs-title,.hljs-tomorrow-night .hljs-section{color:#81a2be}.hljs-tomorrow-night .hljs-keyword,.hljs-tomorrow-night .hljs-selector-tag{color:#b294bb}.hljs-tomorrow-night .hljs{display:block;overflow-x:auto;background:#1d1f21;color:#c5c8c6;padding:.5em}.hljs-tomorrow-night .hljs-emphasis{font-style:italic}.hljs-tomorrow-night .hljs-strong{font-weight:bold}",
-tomorrow:".hljs-tomorrow .hljs-comment,.hljs-tomorrow .hljs-quote{color:#8e908c}.hljs-tomorrow .hljs-variable,.hljs-tomorrow .hljs-template-variable,.hljs-tomorrow .hljs-tag,.hljs-tomorrow .hljs-name,.hljs-tomorrow .hljs-selector-id,.hljs-tomorrow .hljs-selector-class,.hljs-tomorrow .hljs-regexp,.hljs-tomorrow .hljs-deletion{color:#c82829}.hljs-tomorrow .hljs-number,.hljs-tomorrow .hljs-built_in,.hljs-tomorrow .hljs-builtin-name,.hljs-tomorrow .hljs-literal,.hljs-tomorrow .hljs-type,.hljs-tomorrow .hljs-params,.hljs-tomorrow .hljs-meta,.hljs-tomorrow .hljs-link{color:#f5871f}.hljs-tomorrow .hljs-attribute{color:#eab700}.hljs-tomorrow .hljs-string,.hljs-tomorrow .hljs-symbol,.hljs-tomorrow .hljs-bullet,.hljs-tomorrow .hljs-addition{color:#718c00}.hljs-tomorrow .hljs-title,.hljs-tomorrow .hljs-section{color:#4271ae}.hljs-tomorrow .hljs-keyword,.hljs-tomorrow .hljs-selector-tag{color:#8959a8}.hljs-tomorrow .hljs{display:block;overflow-x:auto;background:white;color:#4d4d4c;padding:.5em}.hljs-tomorrow .hljs-emphasis{font-style:italic}.hljs-tomorrow .hljs-strong{font-weight:bold}",vs:".hljs-vs .hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-vs .hljs-comment,.hljs-vs .hljs-quote,.hljs-vs .hljs-variable{color:#008000}.hljs-vs .hljs-keyword,.hljs-vs .hljs-selector-tag,.hljs-vs .hljs-built_in,.hljs-vs .hljs-name,.hljs-vs .hljs-tag{color:#00f}.hljs-vs .hljs-string,.hljs-vs .hljs-title,.hljs-vs .hljs-section,.hljs-vs .hljs-attribute,.hljs-vs .hljs-literal,.hljs-vs .hljs-template-tag,.hljs-vs .hljs-template-variable,.hljs-vs .hljs-type,.hljs-vs .hljs-addition{color:#a31515}.hljs-vs .hljs-deletion,.hljs-vs .hljs-selector-attr,.hljs-vs .hljs-selector-pseudo,.hljs-vs .hljs-meta{color:#2b91af}.hljs-vs .hljs-doctag{color:#808080}.hljs-vs .hljs-attr{color:#f00}.hljs-vs .hljs-symbol,.hljs-vs .hljs-bullet,.hljs-vs .hljs-link{color:#00b0e8}.hljs-vs .hljs-emphasis{font-style:italic}.hljs-vs .hljs-strong{font-weight:bold}",vs2015:".hljs-vs2015 .hljs{display:block;overflow-x:auto;padding:.5em;background:#1E1E1E;color:#DCDCDC}.hljs-vs2015 .hljs-keyword,.hljs-vs2015 .hljs-literal,.hljs-vs2015 .hljs-symbol,.hljs-vs2015 .hljs-name{color:#569CD6}.hljs-vs2015 .hljs-link{color:#569CD6;text-decoration:underline}.hljs-vs2015 .hljs-built_in,.hljs-vs2015 .hljs-type{color:#4EC9B0}.hljs-vs2015 .hljs-number,.hljs-vs2015 .hljs-class{color:#B8D7A3}.hljs-vs2015 .hljs-string,.hljs-vs2015 .hljs-meta-string{color:#D69D85}.hljs-vs2015 .hljs-regexp,.hljs-vs2015 .hljs-template-tag{color:#9A5334}.hljs-vs2015 .hljs-subst,.hljs-vs2015 .hljs-function,.hljs-vs2015 .hljs-title,.hljs-vs2015 .hljs-params,.hljs-vs2015 .hljs-formula{color:#DCDCDC}.hljs-vs2015 .hljs-comment,.hljs-vs2015 .hljs-quote{color:#57A64A;font-style:italic}.hljs-vs2015 .hljs-doctag{color:#608B4E}.hljs-vs2015 .hljs-meta,.hljs-vs2015 .hljs-meta-keyword,.hljs-vs2015 .hljs-tag{color:#9B9B9B}.hljs-vs2015 .hljs-variable,.hljs-vs2015 .hljs-template-variable{color:#BD63C5}.hljs-vs2015 .hljs-attr,.hljs-vs2015 .hljs-attribute,.hljs-vs2015 .hljs-builtin-name{color:#9CDCFE}.hljs-vs2015 .hljs-section{color:gold}.hljs-vs2015 .hljs-emphasis{font-style:italic}.hljs-vs2015 .hljs-strong{font-weight:bold}.hljs-vs2015 .hljs-bullet,.hljs-vs2015 .hljs-selector-tag,.hljs-vs2015 .hljs-selector-id,.hljs-vs2015 .hljs-selector-class,.hljs-vs2015 .hljs-selector-attr,.hljs-vs2015 .hljs-selector-pseudo{color:#D7BA7D}.hljs-vs2015 .hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-vs2015 .hljs-deletion{background-color:#600;display:inline-block;width:100%}",xcode:".hljs-xcode .hljs{display:block;overflow-x:auto;padding:.5em;background:#fff;color:black}.hljs-xcode .xml .hljs-meta{color:#c0c0c0}.hljs-xcode .hljs-comment,.hljs-xcode .hljs-quote{color:#007400}.hljs-xcode .hljs-tag,.hljs-xcode .hljs-attribute,.hljs-xcode .hljs-keyword,.hljs-xcode .hljs-selector-tag,.hljs-xcode .hljs-literal,.hljs-xcode .hljs-name{color:#aa0d91}.hljs-xcode .hljs-variable,.hljs-xcode .hljs-template-variable{color:#3F6E74}.hljs-xcode .hljs-code,.hljs-xcode .hljs-string,.hljs-xcode .hljs-meta-string{color:#c41a16}.hljs-xcode .hljs-regexp,.hljs-xcode .hljs-link{color:#0E0EFF}.hljs-xcode .hljs-title,.hljs-xcode .hljs-symbol,.hljs-xcode .hljs-bullet,.hljs-xcode .hljs-number{color:#1c00cf}.hljs-xcode .hljs-section,.hljs-xcode .hljs-meta{color:#643820}.hljs-xcode .hljs-class .hljs-title,.hljs-xcode .hljs-type,.hljs-xcode .hljs-built_in,.hljs-xcode .hljs-builtin-name,.hljs-xcode .hljs-params{color:#5c2699}.hljs-xcode .hljs-attr{color:#836C28}.hljs-xcode .hljs-subst{color:#000}.hljs-xcode .hljs-formula{background-color:#eee;font-style:italic}.hljs-xcode .hljs-addition{background-color:#baeeba}.hljs-xcode .hljs-deletion{background-color:#ffc8bd}.hljs-xcode .hljs-selector-id,.hljs-xcode .hljs-selector-class{color:#9b703f}.hljs-xcode .hljs-doctag,.hljs-xcode .hljs-strong{font-weight:bold}.hljs-xcode .hljs-emphasis{font-style:italic}",xt256:".hljs-xt256 .hljs{display:block;overflow-x:auto;color:#eaeaea;background:#000;padding:.5em}.hljs-xt256 .hljs-subst{color:#eaeaea}.hljs-xt256 .hljs-emphasis{font-style:italic}.hljs-xt256 .hljs-strong{font-weight:bold}.hljs-xt256 .hljs-builtin-name,.hljs-xt256 .hljs-type{color:#eaeaea}.hljs-xt256 .hljs-params{color:#da0000}.hljs-xt256 .hljs-literal,.hljs-xt256 .hljs-number,.hljs-xt256 .hljs-name{color:#ff0000;font-weight:bolder}.hljs-xt256 .hljs-comment{color:#969896}.hljs-xt256 .hljs-selector-id,.hljs-xt256 .hljs-quote{color:#00ffff}.hljs-xt256 .hljs-template-variable,.hljs-xt256 .hljs-variable,.hljs-xt256 .hljs-title{color:#00ffff;font-weight:bold}.hljs-xt256 .hljs-selector-class,.hljs-xt256 .hljs-keyword,.hljs-xt256 .hljs-symbol{color:#fff000}.hljs-xt256 .hljs-string,.hljs-xt256 .hljs-bullet{color:#00ff00}.hljs-xt256 .hljs-tag,.hljs-xt256 .hljs-section{color:#000fff}.hljs-xt256 .hljs-selector-tag{color:#000fff;font-weight:bold}.hljs-xt256 .hljs-attribute,.hljs-xt256 .hljs-built_in,.hljs-xt256 .hljs-regexp,.hljs-xt256 .hljs-link{color:#ff00ff}.hljs-xt256 .hljs-meta{color:#fff;font-weight:bolder}",zenburn:".hljs-zenburn .hljs{display:block;overflow-x:auto;padding:.5em;background:#3f3f3f;color:#dcdcdc}.hljs-zenburn .hljs-keyword,.hljs-zenburn .hljs-selector-tag,.hljs-zenburn .hljs-tag{color:#e3ceab}.hljs-zenburn .hljs-template-tag{color:#dcdcdc}.hljs-zenburn .hljs-number{color:#8cd0d3}.hljs-zenburn .hljs-variable,.hljs-zenburn .hljs-template-variable,.hljs-zenburn .hljs-attribute{color:#efdcbc}.hljs-zenburn .hljs-literal{color:#efefaf}.hljs-zenburn .hljs-subst{color:#8f8f8f}.hljs-zenburn .hljs-title,.hljs-zenburn .hljs-name,.hljs-zenburn .hljs-selector-id,.hljs-zenburn .hljs-selector-class,.hljs-zenburn .hljs-section,.hljs-zenburn .hljs-type{color:#efef8f}.hljs-zenburn .hljs-symbol,.hljs-zenburn .hljs-bullet,.hljs-zenburn .hljs-link{color:#dca3a3}.hljs-zenburn .hljs-deletion,.hljs-zenburn .hljs-string,.hljs-zenburn .hljs-built_in,.hljs-zenburn .hljs-builtin-name{color:#cc9393}.hljs-zenburn .hljs-addition,.hljs-zenburn .hljs-comment,.hljs-zenburn .hljs-quote,.hljs-zenburn .hljs-meta{color:#7f9f7f}.hljs-zenburn .hljs-emphasis{font-style:italic}.hljs-zenburn .hljs-strong{font-weight:bold}"},engine:r}},{}],16:[function(e,t,a){function r(){}function i(e,t,a){var r,s;for(a=a||[];null!==(r=t.exec(e));)r.index>0&&a.push({type:"text",text:e.substring(0,r.index)}),r[l]?a.push({type:"code",text:r[0]}):r[c]?a.push({type:"text",text:r[0]}):r[_]?a.push({type:"fences",text:r[0]}):r[m]?a.push({type:"def",id:r[m].toLowerCase(),href:r[u],title:r[p]}):r[h]?a.push({type:"macro",name:r[h],args:(r[g]||"").split(",").map(n),obj:r[E]}):r[S]||r[b]?a.push({type:"separator",text:r[S]||r[b]}):r[T]?a.push({type:"notes_separator",text:r[T]}):r[d]&&(s=o(e,r.index+r[0].length),void 0!==s?(e=e.substring(s.length+1),"\\"!==r[0][0]?(a.push({type:"content_start",classes:r[d].substring(1).split("."),block:-1!==s.indexOf("\n")}),i(s,N,a),a.push({type:"content_end",block:-1!==s.indexOf("\n")})):a.push({type:"text",text:r[0].substring(1)+s+"]"})):a.push({type:"text",text:r[0]})),e=e.substring(r.index+r[0].length);return(e||!e&&0===a.length)&&a.push({type:"text",text:e}),a}function s(e,t){return new RegExp(e.source.replace(/\w{2,}/g,function(e){return t[e].source}))}function n(e){return"string"==typeof e?e.trim():e}function o(e,t){for(var a,r=1,i=t;r>0&&i<e.length;)a=e[i++],r+="["===a&&1||"]"===a&&-1||0;if(0===r)return e=e.substr(t,i-t-1)}t.exports=r;var l=1,c=2,d=3,_=4,m=5,u=6,p=7,h=8,g=9,E=10,S=11,b=12,T=13,f={CODE:/(?:^|\n\n)( {4}[^\n]+\n*)+/,INLINE_CODE:/\`([^\`].*?)\`/,CONTENT:/(?:\\)?((?:\.[a-zA-Z_\-][a-zA-Z\-_0-9]*)+)\[/,FENCES:/(?:^|\n) *(`{3,}|~{3,}) *(?:\S+)? *\n(?:[\s\S]+?)\s*\4 *(?:\n+|$)/,DEF:/(?:^|\n) *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,MACRO:/!\[:([^\] ]+)([^\]]*)\](?:\(([^\)]*)\))?/,SLIDE_SEPARATOR:/(?:^|\n)(---)(?:\n|$)/,FRAGMENT_SEPARATOR:/(?:^|\n)(--)(?![^\n])/,NOTES_SEPARATOR:/(?:^|\n)(\?{3})(?:\n|$)/},C=s(/CODE|INLINE_CODE|CONTENT|FENCES|DEF|MACRO|SLIDE_SEPARATOR|FRAGMENT_SEPARATOR|NOTES_SEPARATOR/,f),N=s(/CODE|INLINE_CODE|CONTENT|FENCES|DEF|MACRO/,f);r.prototype.lex=function(e){var t,a=i(e.replace("\r",""),C);for(t=a.length-2;t>=0;t--)"text"===a[t].type&&"text"===a[t+1].type&&(a[t].text+=a[t+1].text,a.splice(t+1,1));return a}},{}],17:[function(e,t,a){(t.exports={}).hello=function(){return"hello!"}},{}],18:[function(e,t,a){function r(e,t,a,r,s){var n=this;n.properties=a.properties||{},n.links=a.links||{},n.content=a.content||[],n.notes=a.notes||"",n.getSlideIndex=function(){return e},n.getSlideNumber=function(){return t},r&&i(n,r,s)}function i(e,t,a){s(e,t),o(e,t),c(e,t,a)}function s(e,t){var a,r;for(a in t.properties)t.properties.hasOwnProperty(a)&&!n(a)&&(r=[t.properties[a]],"class"===a&&e.properties[a]&&r.push(e.properties[a]),"class"!==a&&void 0!==e.properties[a]||(e.properties[a]=r.join(", ")))}function n(e){return"name"===e||"layout"===e||"count"===e}function o(e,t){var a;e.properties.content=e.content.slice(),l(e,t.content),a=e.expandVariables(!0),void 0===a.content&&(e.content=e.content.concat(e.properties.content)),delete e.properties.content}function l(e,t){var a;for(e.content=[],a=0;a<t.length;++a)"string"==typeof t[a]?e.content.push(t[a]):(e.content.push({block:t[a].block,class:t[a].class}),l(e.content[e.content.length-1],t[a].content))}function c(e,t,a){t.notes&&a.inheritPresenterNotes&&(e.notes=t.notes+"\n\n"+e.notes)}e("../converter");t.exports=r,r.prototype.expandVariables=function(e,t,a){function r(t,r,i,n){var o,l=n.trim();return r?e?t[0]:i:e&&"content"!==l?t:(o=s[l],void 0!==o?(a[l]=o,o):"content"===l?"":i)}var i,s=this.properties;for(t=void 0!==t?t:this.content,a=a||{},i=0;i<t.length;++i)"string"==typeof t[i]?t[i]=t[i].replace(/(\\)?(\{\{([^\}\n]+)\}\})/g,r):this.expandVariables(e,t[i].content,a);return a}},{"../converter":13}],19:[function(e,t,a){function r(e,t,a,r){function l(t){t=t||"",v=i(t,a),s(v),O={},v.forEach(function(e){for(var t in e.links)e.links.hasOwnProperty(t)&&(O[t]=e.links[t])}),e.emit("slidesChanged")}function c(e,r){var i=new t.XMLHttpRequest;return i.open("GET",a.sourceUrl,!0),i.onload=function(e){if(4===i.readyState){if(200!==i.status)throw Error(i.statusText);a.source=i.responseText.replace(/\r\n/g,"\n"),l(a.source),"function"==typeof r&&r(R)}},i.onerror=function(e){throw Error(i.statusText)},i.send(null),i}function d(){e.emit("resize")}function _(){return O}function m(){return v.map(function(e){return e})}function u(){return v.length}function p(e){return v.byName[e]}function h(e){return v.byNumber[e]}function g(){e.emit("togglePresenterMode")}function E(){e.emit("toggleHelp")}function S(){e.emit("toggleBlackout")}function b(){e.emit("toggleMirrored")}function T(){e.emit("toggleFullscreen")}function f(){e.emit("createClone")}function C(){e.emit("resetTimer")}function N(e,t){return function(){return void 0===a[e]?t:a[e]}}var R=this,v=[],O={};v.byName={},a=a||{},o.call(R,e),n.call(R,e),R.loadFromString=l,R.loadFromUrl=c,R.update=d,R.getLinks=_,R.getSlides=m,R.getSlideCount=u,R.getSlideByName=p,R.getSlidesByNumber=h,R.togglePresenterMode=g,R.toggleHelp=E,R.toggleBlackout=S,R.toggleMirrored=b,R.toggleFullscreen=T,R.createClone=f,R.resetTimer=C,R.getRatio=N("ratio","4:3"),R.getHighlightStyle=N("highlightStyle","default"),R.getHighlightLines=N("highlightLines",!1),R.getHighlightSpans=N("highlightSpans",!1),R.getHighlightInlineCode=N("highlightInlineCode",!1),R.getHighlightLanguage=N("highlightLanguage",""),R.getSlideNumberFormat=N("slideNumberFormat","%current% / %total%"),R.getCloneTarget=N("cloneTarget","_blank"),e.on("toggleBlackout",function(e){e&&!1===e.propagate||(R.clone&&!R.clone.closed&&R.clone.postMessage("toggleBlackout","*"),window.opener&&window.opener.postMessage("toggleBlackout","*"))}),a.sourceUrl?c(a.sourceUrl,r):(l(a.source),"function"==typeof r&&r(R))}function i(e,t){var a,r=new c,i=r.parse(e,d,t),s=[],n={};s.byName={},s.byNumber={};var o=0;return i.forEach(function(e,r){var i,c;"true"===e.properties.continued&&r>0?i=s[s.length-1]:n[e.properties.template]?i=n[e.properties.template]:"false"===e.properties.layout?a=void 0:a&&"true"!==e.properties.layout&&(i=a),"true"===e.properties.continued&&!1===t.countIncrementalSlides&&void 0===e.properties.count&&(e.properties.count="false");var d=(e.properties.class||"").split(/,| /),_=t.excludedClasses||[],m=0===d.filter(function(e){return-1!==_.indexOf(e)}).length;m&&"true"!==e.properties.layout&&"false"!==e.properties.count&&(o++,s.byNumber[o]=[]),void 0===t.includePresenterNotes||t.includePresenterNotes||(e.notes=""),c=new l(s.length,o,e,i,t),e.properties.name&&(n[e.properties.name]=c),"true"===e.properties.layout?a=c:(m&&(s.push(c),void 0!==s.byNumber[o]&&s.byNumber[o].push(c)),e.properties.name&&(s.byName[e.properties.name]=c))}),s}function s(e){e.forEach(function(e){e.expandVariables()})}var n=e("./slideshow/navigation"),o=e("./slideshow/events"),l=(e("../utils"),e("./slide")),c=e("../parser"),d=e("../macros");t.exports=r},{"../macros":17,"../parser":22,"../utils":25,"./slide":18,"./slideshow/events":20,"./slideshow/navigation":21}],20:[function(e,t,a){function r(e){var t=this,a=new i;a.setMaxListeners(0),t.on=function(){return a.on.apply(a,arguments),t},["showSlide","hideSlide","beforeShowSlide","afterShowSlide","beforeHideSlide","afterHideSlide","toggledPresenter"].map(function(r){e.on(r,function(e){var i=t.getSlides()[e];a.emit(r,i)})})}var i=e("events").EventEmitter;t.exports=r},{events:1}],21:[function(e,t,a){function r(e){function t(){e.emit("pause")}function a(){e.emit("resume")}function r(){return u}function i(t,a){var r=t===u,i=t<0||t>m.getSlideCount()-1;void 0===a&&(a=!1),r||i||(-1!==u&&e.emit("hideSlide",u,!1),null===p?p=!1:!1===p&&(e.emit("start"),p=!0),e.emit("showSlide",t),u=t,e.emit("slideChanged",t+1),a||(m.clone&&!m.clone.closed&&m.clone.postMessage("gotoSlide:"+(u+1),"*"),window.opener&&window.opener.postMessage("gotoSlide:"+(u+1),"*")))}function s(e,t){i(_(e),t)}function n(e,t){var a=m.getSlidesByNumber(parseInt(e,10));a&&a.length&&i(a[0].getSlideIndex(),t)}function o(){i(u-1)}function l(){i(u+1)}function c(){i(0)}function d(){i(m.getSlideCount()-1)}function _(t){var a,r;return"number"==typeof t?t-1:(a=parseInt(t,10),a.toString()===t?a-1:t.match(/^p\d+$/)?(e.emit("forcePresenterMode"),parseInt(t.substr(1),10)-1):(r=m.getSlideByName(t),r?r.getSlideIndex():0))}var m=this,u=-1,p=null;m.getCurrentSlideIndex=r,m.gotoSlide=s,m.gotoSlideNumber=n,m.gotoPreviousSlide=o,m.gotoNextSlide=l,m.gotoFirstSlide=c,m.gotoLastSlide=d,m.pause=t,m.resume=a,e.on("gotoSlide",s),e.on("gotoSlideNumber",n),e.on("gotoPreviousSlide",o),e.on("gotoNextSlide",l),e.on("gotoFirstSlide",c),e.on("gotoLastSlide",d),e.on("slidesChanged",function(){u>m.getSlideCount()&&(u=m.getSlideCount())}),e.on("createClone",function(){!m.clone||m.clone.closed?m.clone=window.open(location.href,m.getCloneTarget(),"location=no"):m.clone.focus()}),e.on("resetTimer",function(){p=!1})}t.exports=r},{}],22:[function(e,t,a){function r(){}function i(){return{content:[],properties:{continued:"false"},links:{}}}function s(e){return{class:e.classes.join(" "),block:e.block,content:[]}}function n(e,t){var a=e.content;void 0!==e.notes&&(a=e.notes);var r=a.length-1;"string"==typeof a[r]&&"string"==typeof t?a[r]+=t:a.push(t)}function o(e,t){for(var a,r=/^\n*([-\w]+):([^$\n]*)|\n*(?:<!--\s*)([-\w]+):([^$\n]*?)(?:\s*-->)/i;null!==(a=r.exec(e));)e=e.substr(0,a.index)+e.substr(a.index+a[0].length),void 0!==a[1]?t[a[1].trim()]=a[2].trim():t[a[3].trim()]=a[4].trim(),r.lastIndex=a.index;return e}function l(e){var t=/^([ \t]*)[^ \t\n]/gm,a=function(e,t){for(var a,r=[];null!==(a=t.exec(e));)r.push(a[1]);return r}(e,t).map(function(e){return e.length}),r=Math.min.apply(Math,a),i=new RegExp("^[ \\t]{0,"+r+"}","gm");return e.replace(i,"")}var c=e("./lexer");t.exports=r,r.prototype.parse=function(e,t,a){var r=this,d=new c,_=d.lex(l(e)),m=[],u=[i()];return t=t||{},a=a||{},_.forEach(function(e){switch(e.type){case"text":case"code":case"fences":n(u[u.length-1],e.text);break;case"def":u[0].links[e.id]={href:e.href,title:e.title};break;case"macro":var o=t[e.name];if("function"!=typeof o)throw new Error('Macro "'+e.name+"\" not found. You need to define macro using remark.macros['"+e.name+"'] = function () { ... };");var l=o.apply(e.obj,e.args);"string"==typeof l?(l=r.parse(l,t),n(u[u.length-1],l[0].content[0])):n(u[u.length-1],void 0===l?"":l.toString());break;case"content_start":u.push(s(e));break;case"content_end":n(u[u.length-2],u[u.length-1]),u.pop();break;case"separator":if("--"===e.text&&!0===a.disableIncrementalSlides){void 0!==u[0].notes&&delete u[0].notes;break}m.push(u[0]),u=[i()],u[0].properties.continued=("--"===e.text).toString();break;case"notes_separator":u[0].notes=[]}}),m.push(u[0]),m.forEach(function(e){e.content[0]=o(e.content[0]||"",e.properties)}),m.filter(function(e){return"true"!==(e.properties.exclude||"").toLowerCase()})}},{"./lexer":16}],23:[function(e,t,a){t.exports={version:"0.15.0",documentStyles:"html{font-size:20px}html.remark-container,body.remark-container{height:100%;width:100%;-webkit-print-color-adjust:exact}.remark-container{background:#d7d8d2;margin:0;overflow:hidden}.remark-container:focus{outline-style:solid;outline-width:1px}.remark-container:-webkit-full-screen{width:100%;height:100%}body:-webkit-full-screen{background:#000000}body:-moz-full-screen{background:#000000}body:fullscreen{background:#000000}.remark-slides-area{position:relative;height:100%;width:100%}.remark-slide-container{display:none;position:absolute;height:100%;width:100%;page-break-after:always}.remark-slide-scaler{background-color:transparent;overflow:auto;position:absolute;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top-left;-moz-box-shadow:0 0 30px #888;-webkit-box-shadow:0 0 30px #888;box-shadow:0 0 30px #888}.remark-slide{height:100%;width:100%;display:table;table-layout:fixed;position:relative}.remark-slide>.left{text-align:left}.remark-slide>.center{text-align:center}.remark-slide>.right{text-align:right}.remark-slide>.top{vertical-align:top}.remark-slide>.middle{vertical-align:middle}.remark-slide>.bottom{vertical-align:bottom}.remark-slide-content{background-color:#fff;background-position:center;background-repeat:no-repeat;display:table-cell;padding:1em 4em 1em 4em}.remark-slide-content .left{display:block;text-align:left}.remark-slide-content .center{display:block;text-align:center}.remark-slide-content .right{display:block;text-align:right}.remark-slide-number{bottom:12px;opacity:.5;position:absolute;right:20px}.remark-slide-notes{border-top:3px solid black;position:absolute;display:none}.remark-code{font-size:smaller}.remark-code-line{min-height:1em}.remark-code-line-highlighted{background-color:rgba(255,255,0,0.5)}.remark-code-span-highlighted{background-color:rgba(255,255,0,0.5);padding:1px 2px 2px 2px}.remark-visible{display:block;z-index:2}.remark-fading{display:block;z-index:1}.remark-fading .remark-slide-scaler{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.remark-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;display:none;background:#000;z-index:2}.remark-pause{bottom:0;top:0;right:0;left:0;display:none;position:absolute;z-index:1000}.remark-pause .remark-pause-lozenge{margin-top:30%;text-align:center}.remark-pause .remark-pause-lozenge span{color:white;background:black;border:2px solid black;border-radius:20px;padding:20px 30px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:42pt;font-weight:bold}.remark-container.remark-presenter-mode.remark-pause-mode .remark-pause{display:block}.remark-container.remark-presenter-mode.remark-pause-mode .remark-backdrop{display:block;opacity:.5}.remark-help{bottom:0;top:0;right:0;left:0;display:none;position:absolute;z-index:1000;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top-left}.remark-help .remark-help-content{color:white;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:12pt;position:absolute;top:5%;bottom:10%;height:10%;left:5%;width:90%}.remark-help .remark-help-content h1{font-size:36px}.remark-help .remark-help-content td{color:white;font-size:12pt;padding:10px}.remark-help .remark-help-content td:first-child{padding-left:0}.remark-help .remark-help-content .key{background:white;color:black;min-width:1em;display:inline-block;padding:3px 6px;text-align:center;border-radius:4px;font-size:14px}.remark-help .dismiss{top:85%}.remark-container.remark-help-mode .remark-help{display:block}.remark-container.remark-help-mode .remark-backdrop{display:block;opacity:.95}.remark-preview-area{bottom:2%;left:2%;display:none;opacity:.5;position:absolute;height:47.25%;width:48%}.remark-preview-area .remark-slide-container{display:block}.remark-notes-area{background:#fff;bottom:0;color:black;display:none;left:52%;overflow:hidden;position:absolute;right:0;top:0}.remark-notes-area .remark-top-area{height:50px;left:20px;position:absolute;right:10px;top:10px}.remark-notes-area .remark-bottom-area{position:absolute;top:75px;bottom:10px;left:20px;right:10px}.remark-notes-area .remark-bottom-area .remark-toggle{display:block;text-decoration:none;font-family:Helvetica,arial,freesans,clean,sans-serif;height:21px;font-size:.75em;text-transform:uppercase;color:#ccc}.remark-notes-area .remark-bottom-area .remark-notes-current-area{height:70%;position:relative}.remark-notes-area .remark-bottom-area .remark-notes-current-area .remark-notes{clear:both;border-top:1px solid #f5f5f5;position:absolute;top:22px;bottom:0px;left:0px;right:0px;overflow-y:auto;margin-bottom:20px;padding-top:10px}.remark-notes-area .remark-bottom-area .remark-notes-preview-area{height:30%;position:relative}.remark-notes-area .remark-bottom-area .remark-notes-preview-area .remark-notes-preview{border-top:1px solid #f5f5f5;position:absolute;top:22px;bottom:0px;left:0px;right:0px;overflow-y:auto}.remark-notes-area .remark-bottom-area .remark-notes>*:first-child,.remark-notes-area .remark-bottom-area .remark-notes-preview>*:first-child{margin-top:5px}.remark-notes-area .remark-bottom-area .remark-notes>*:last-child,.remark-notes-area .remark-bottom-area .remark-notes-preview>*:last-child{margin-bottom:0}.remark-toolbar{color:#979892;vertical-align:middle}.remark-toolbar .remark-toolbar-link{border:2px solid #d7d8d2;color:#979892;display:inline-block;padding:2px 2px;text-decoration:none;text-align:center;min-width:20px}.remark-toolbar .remark-toolbar-link:hover{border-color:#979892;color:#676862}.remark-toolbar .remark-toolbar-timer{border:2px solid black;border-radius:10px;background:black;color:white;display:inline-block;float:right;padding:5px 10px;font-family:sans-serif;font-weight:bold;font-size:175%;text-decoration:none;text-align:center}.remark-container.remark-presenter-mode .remark-slides-area{top:2%;left:2%;height:47.25%;width:48%}.remark-container.remark-presenter-mode .remark-preview-area{display:block}.remark-container.remark-presenter-mode .remark-notes-area{display:block}.remark-container.remark-blackout-mode:not(.remark-presenter-mode) .remark-backdrop{display:block;opacity:.99}.remark-container.remark-mirrored-mode:not(.remark-presenter-mode) .remark-slides-area{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1)}@media print{.remark-container{overflow:visible;background-color:#fff}.remark-container.remark-presenter-mode .remark-slides-area{top:0px;left:0px;height:100%;width:681px}.remark-container.remark-presenter-mode .remark-preview-area,.remark-container.remark-presenter-mode .remark-notes-area{display:none}.remark-container.remark-presenter-mode .remark-slide-notes{display:block;margin-left:30px;width:621px}.remark-slide-container{display:block;position:relative}.remark-slide-scaler{-moz-box-shadow:none;-webkit-box-shadow:none;-webkit-transform-origin:initial;box-shadow:none}}@page{margin:0}",containerLayout:'<div class="remark-notes-area">\n  <div class="remark-top-area">\n    <div class="remark-toolbar">\n      <a class="remark-toolbar-link" href="#increase">+</a>\n      <a class="remark-toolbar-link" href="#decrease">-</a>\n      <span class="remark-toolbar-timer"></span>\n    </div>\n  </div>\n  <div class="remark-bottom-area">\n    <div class="remark-notes-current-area">\n      <div class="remark-toggle">Notes for current slide</div>\n      <div class="remark-notes"></div>\n    </div>\n    <div class="remark-notes-preview-area">\n      <div class="remark-toggle">Notes for next slide</div>\n      <div class="remark-notes-preview"></div>\n    </div>\n  </div>\n</div>\n<div class="remark-slides-area"></div>\n<div class="remark-preview-area"></div>\n<div class="remark-backdrop"></div>\n<div class="remark-pause">\n  <div class="remark-pause-lozenge">\n    <span>Paused</span>\n  </div>\n</div>\n<div class="remark-help">\n  <div class="remark-help-content">\n    <h1>Help</h1>\n    <p><b>Keyboard shortcuts</b></p>\n    <table class="light-keys">\n      <tr>\n        <td>\n          <span class="key"><b>&uarr;</b></span>,\n          <span class="key"><b>&larr;</b></span>,\n          <span class="key">Pg Up</span>,\n          <span class="key">k</span>\n        </td>\n        <td>Go to previous slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key"><b>&darr;</b></span>,\n          <span class="key"><b>&rarr;</b></span>,\n          <span class="key">Pg Dn</span>,\n          <span class="key">Space</span>,\n          <span class="key">j</span>\n        </td>\n        <td>Go to next slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">Home</span>\n        </td>\n        <td>Go to first slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">End</span>\n        </td>\n        <td>Go to last slide</td>\n      </tr>\n      <tr>\n        <td>\n          Number + <span class="key">Return</span>\n        </td>\n        <td>Go to specific slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">b</span>&nbsp;/\n          <span class="key">m</span>&nbsp;/\n          <span class="key">f</span>\n        </td>\n        <td>Toggle blackout / mirrored / fullscreen mode</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">c</span>\n        </td>\n        <td>Clone slideshow</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">p</span>\n        </td>\n        <td>Toggle presenter mode</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">s</span>\n        </td>\n        <td>Start & Stop the presentation timer</td>\n      </tr>\n       <tr>\n        <td>\n          <span class="key">t</span>\n        </td>\n        <td>Reset the presentation timer</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">?</span>,\n          <span class="key">h</span>\n        </td>\n        <td>Toggle this help</td>\n      </tr>\n    </table>\n  </div>\n  <div class="content dismiss">\n    <table class="light-keys">\n      <tr>\n        <td>\n          <span class="key">Esc</span>\n        </td>\n        <td>Back to slideshow</td>\n      </tr>\n    </table>\n  </div>\n</div>\n'}},{}],24:[function(e,t,a){function r(e,t){var a=this;a.events=e,a.slideshow=t,a.ratio=i(t),a.dimensions=s(a.ratio),a.events.on("propertiesChanged",function(e){e.hasOwnProperty("ratio")&&(a.ratio=i(t),a.dimensions=s(a.ratio))})}function i(e){var t,a=e.getRatio().split(":");return t={width:parseInt(a[0],10),height:parseInt(a[1],10)},t.ratio=t.width/t.height,t}function s(e){return{width:Math.floor(n/l*e.ratio),height:o}}var n=908,o=681,l=n/o;t.exports=r,r.prototype.scaleToFit=function(e,t){var a,r,i,s,n,o=this,l=t.clientHeight,c=t.clientWidth,d=o.ratio,_=o.dimensions;a=c/d.width>l/d.height?l/_.height:c/_.width,r=_.width*a,i=_.height*a,s=(c-r)/2,n=(l-i)/2,e.style["-webkit-transform"]="scale("+a+")",e.style.MozTransform="scale("+a+")",e.style.left=Math.max(s,0)+"px",e.style.top=Math.max(n,0)+"px"}},{}],25:[function(e,t,a){a.addClass=function(e,t){e.className=a.getClasses(e).concat([t]).join(" ")},a.removeClass=function(e,t){e.className=a.getClasses(e).filter(function(e){return e!==t}).join(" ")},a.toggleClass=function(e,t){var r=a.getClasses(e),i=r.indexOf(t);-1!==i?r.splice(i,1):r.push(t),e.className=r.join(" ")},a.getClasses=function(e){return e.className.split(" ").filter(function(e){return""!==e})},a.hasClass=function(e,t){return-1!==a.getClasses(e).indexOf(t)},a.getPrefixedProperty=function(e,t){var a=t[0].toUpperCase()+t.slice(1);return e[t]||e["moz"+a]||e["webkit"+a]}},{}],26:[function(e,t,a){function r(e,t,a){var r=this;r.events=e,r.element=t,r.slideViewsAccessor=a,r.configureElements(),e.on("showSlide",function(e){r.showSlide(e)})}e("../converter");t.exports=r,r.prototype.showSlide=function(e){var t=this,a=t.slideViewsAccessor(),r=a[e],i=a[e+1];t.notesElement.innerHTML=r.notesElement.innerHTML,t.notesPreviewElement.innerHTML=i?i.notesElement.innerHTML:""},r.prototype.configureElements=function(){var e=this;e.notesElement=e.element.getElementsByClassName("remark-notes")[0],e.notesPreviewElement=e.element.getElementsByClassName("remark-notes-preview")[0],e.notesElement.addEventListener("mousewheel",function(e){e.stopPropagation()}),e.notesPreviewElement.addEventListener("mousewheel",function(e){e.stopPropagation()}),e.toolbarElement=e.element.getElementsByClassName("remark-toolbar")[0];var t={increase:function(){e.notesElement.style.fontSize=(parseFloat(e.notesElement.style.fontSize)||1)+.1+"em",e.notesPreviewElement.style.fontsize=e.notesElement.style.fontSize},decrease:function(){e.notesElement.style.fontSize=(parseFloat(e.notesElement.style.fontSize)||1)-.1+"em",e.notesPreviewElement.style.fontsize=e.notesElement.style.fontSize}};e.toolbarElement.getElementsByTagName("a").forEach(function(e){e.addEventListener("click",function(e){var a=e.target.hash.substr(1);t[a](),e.preventDefault()})})}},{"../converter":13}],27:[function(e,t,a){function r(e,t,a,r){var i=this;i.events=e,i.slideshow=t,i.scaler=a,i.slide=r,i.slideNumber=new g(r,t),i.configureElements(),i.updateDimensions(),i.events.on("propertiesChanged",function(e){e.hasOwnProperty("ratio")&&i.updateDimensions()})}function i(e){var t=document.createElement("div");return t.className="remark-slide","true"===e.properties.continued&&b.addClass(t,"remark-slide-incremental"),t}function s(e,t,a){var r=document.createElement("div");return a.properties.name&&(r.id="slide-"+a.properties.name),n(t,r,a.properties),r.innerHTML=E.convertMarkdown(a.content,t.getLinks()),_(r,t),r}function n(e,t,a){t.className="",d(t,a),c(t,a,e),l(t,a)}function o(e,t){var a=document.createElement("div");return a.className="remark-slide-notes",a.innerHTML=E.convertMarkdown(t,e.getLinks()),_(a,e),a}function l(e,t){var a=t["background-image"],r=t["background-color"],i=t["background-size"],s=t["background-position"];a&&(e.style.backgroundImage=a),r&&(e.style.backgroundColor=r),i&&(e.style.backgroundSize=i),s&&(e.style.backgroundPosition=s)}function c(e,t,a){
-var r=t["highlight-style"]||a.getHighlightStyle();r&&b.addClass(e,"hljs-"+r)}function d(e,t){b.addClass(e,"remark-slide-content"),(t.class||"").split(/,| /).filter(function(e){return""!==e}).forEach(function(t){b.addClass(e,t)})}function _(e,t){var a,r=e.getElementsByTagName("code"),i=t.getHighlightLines(),s=t.getHighlightSpans(),n=t.getHighlightInlineCode();r.forEach(function(e){if(""===e.className&&(e.className=t.getHighlightLanguage()),"PRE"!==e.parentElement.tagName)return b.addClass(e,"remark-inline-code"),void(n&&S.engine.highlightBlock(e,""));i&&(a=m(e)),""!==e.className&&S.engine.highlightBlock(e,"  "),u(e),i&&p(e,a.highlightedLines),s&&h(e,s),b.addClass(e,"remark-code")})}function m(e){var t=[];return e.innerHTML=e.innerHTML.split(/\r?\n/).map(function(e,a){return 0===e.indexOf("*")?(t.push(a),e.replace(/^\*( )?/,"$1$1")):e}).join("\n"),{highlightedLines:t}}function u(e){var t=e.innerHTML.split(/\r?\n/).map(function(e){return'<div class="remark-code-line">'+e+"</div>"});t.length&&-1!==t[t.length-1].indexOf("><")&&t.pop(),e.innerHTML=t.join("")}function p(e,t){t.forEach(function(t){b.addClass(e.childNodes[t],"remark-code-line-highlighted")})}function h(e,t){var a;if(!0===t)a=/([^`])`([^`]+?)`/g;else{if(!(t instanceof RegExp))throw new Error("Illegal value for `highlightSpans`");if(!t.global)throw new Error("The regular expression in `highlightSpans` must have flag /g");var r=t.flags||"g";a=new RegExp("([^])"+t.source,r)}e.childNodes.forEach(function(e){e.innerHTML=e.innerHTML.replace(a,function(e,t,a){return"\\"===t?e.substr(1):t+'<span class="remark-code-span-highlighted">'+a+"</span>"})})}var g=e("../components/slide-number/slide-number"),E=e("../converter"),S=e("../highlighter"),b=e("../utils");t.exports=r,r.prototype.updateDimensions=function(){var e=this,t=e.scaler.dimensions;e.scalingElement.style.width=t.width+"px",e.scalingElement.style.height=t.height+"px"},r.prototype.scale=function(e){var t=this;t.scaler.scaleToFit(t.scalingElement,e)},r.prototype.show=function(){b.addClass(this.containerElement,"remark-visible"),b.removeClass(this.containerElement,"remark-fading")},r.prototype.hide=function(){var e=this;b.removeClass(this.containerElement,"remark-visible"),b.addClass(this.containerElement,"remark-fading"),setTimeout(function(){b.removeClass(e.containerElement,"remark-fading")},1e3)},r.prototype.configureElements=function(){var e=this;e.containerElement=document.createElement("div"),e.containerElement.className="remark-slide-container",e.scalingElement=document.createElement("div"),e.scalingElement.className="remark-slide-scaler",e.element=i(e.slide),e.contentElement=s(e.events,e.slideshow,e.slide),e.notesElement=o(e.slideshow,e.slide.notes),e.contentElement.appendChild(e.slideNumber.element),e.element.appendChild(e.contentElement),e.scalingElement.appendChild(e.element),e.containerElement.appendChild(e.scalingElement),e.containerElement.appendChild(e.notesElement)},r.prototype.scaleBackgroundImage=function(e){var t,a,r,i=this,s=window.getComputedStyle(this.contentElement),n=s.backgroundImage,o=s.backgroundSize,l=s.backgroundPosition;(!o&&!l||i.backgroundSizeSet)&&null!==(t=/^url\(("?)([^\)]+?)\1\)/.exec(n))&&(a=new Image,a.onload=function(){a.width>e.width||a.height>e.height?i.originalBackgroundSize||(i.originalBackgroundSize=i.contentElement.style.backgroundSize,i.originalBackgroundPosition=i.contentElement.style.backgroundPosition,i.backgroundSizeSet=!0,r=e.width/a.width<e.height/a.height?e.width/a.width:e.height/a.height,i.contentElement.style.backgroundSize=a.width*r+"px "+a.height*r+"px",i.contentElement.style.backgroundPosition="50% "+(e.height-a.height*r)/2+"px"):i.backgroundSizeSet&&(i.contentElement.style.backgroundSize=i.originalBackgroundSize,i.contentElement.style.backgroundPosition=i.originalBackgroundPosition,i.backgroundSizeSet=!1)},a.src=t[2])}},{"../components/slide-number/slide-number":"components/slide-number","../converter":13,"../highlighter":15,"../utils":25}],28:[function(e,t,a){function r(e,t,a,r){var s=this,n=a.container;s.events=e,s.dom=t,s.slideshow=r,s.scaler=new c(e,r),s.slideViews=[],s.configureContainerElement(n),s.configureChildElements(),s.updateDimensions(),s.scaleElements(),s.updateSlideViews(),s.timer=new o(e,s.timerElement,a.timer),e.on("slidesChanged",function(){s.updateSlideViews()}),e.on("hideSlide",function(e){s.elementArea.getElementsByClassName("remark-fading").forEach(function(e){_.removeClass(e,"remark-fading")}),s.hideSlide(e)}),e.on("showSlide",function(e){s.showSlide(e)}),e.on("forcePresenterMode",function(){_.hasClass(s.containerElement,"remark-presenter-mode")||(_.toggleClass(s.containerElement,"remark-presenter-mode"),s.scaleElements(),m.setPageOrientation("landscape"))}),e.on("togglePresenterMode",function(){_.toggleClass(s.containerElement,"remark-presenter-mode"),s.scaleElements(),e.emit("toggledPresenter",s.slideshow.getCurrentSlideIndex()+1),_.hasClass(s.containerElement,"remark-presenter-mode")?m.setPageOrientation("portrait"):m.setPageOrientation("landscape")}),e.on("toggleHelp",function(){_.toggleClass(s.containerElement,"remark-help-mode")}),e.on("toggleBlackout",function(){_.toggleClass(s.containerElement,"remark-blackout-mode")}),e.on("toggleMirrored",function(){_.toggleClass(s.containerElement,"remark-mirrored-mode")}),e.on("hideOverlay",function(){_.removeClass(s.containerElement,"remark-blackout-mode"),_.removeClass(s.containerElement,"remark-help-mode")}),e.on("pause",function(){_.toggleClass(s.containerElement,"remark-pause-mode")}),e.on("resume",function(){_.toggleClass(s.containerElement,"remark-pause-mode")}),i(s)}function i(e){var t=_.getPrefixedProperty(e.containerElement,"requestFullScreen"),a=_.getPrefixedProperty(document,"cancelFullScreen");e.events.on("toggleFullscreen",function(){_.getPrefixedProperty(document,"fullscreenElement")||_.getPrefixedProperty(document,"fullScreenElement")||!t?a&&a.call(document):t.call(e.containerElement,Element.ALLOW_KEYBOARD_INPUT),e.scaleElements()})}function s(e,t,a){a.forEach(function(a){t.addEventListener(a,function(){var t=Array.prototype.slice.call(arguments);e.emit.apply(e,[a].concat(t))})})}var n=e("./slideView"),o=e("../components/timer/timer"),l=e("./notesView"),c=e("../scaler"),d=e("../resources"),_=e("../utils"),m=e("../components/printing/printing");t.exports=r,r.prototype.isEmbedded=function(){return this.containerElement!==this.dom.getBodyElement()},r.prototype.configureContainerElement=function(e){var t=this;t.containerElement=e,_.addClass(e,"remark-container"),e===t.dom.getBodyElement()?(_.addClass(t.dom.getHTMLElement(),"remark-container"),s(t.events,window,["hashchange","resize","keydown","keypress","mousewheel","message","DOMMouseScroll"]),s(t.events,t.containerElement,["touchstart","touchmove","touchend","click","contextmenu"])):(e.style.position="absolute",e.tabIndex=-1,s(t.events,window,["resize"]),s(t.events,e,["keydown","keypress","mousewheel","touchstart","touchmove","touchend"])),t.events.on("tap",function(e){e<t.containerElement.clientWidth/2?t.slideshow.gotoPreviousSlide():t.slideshow.gotoNextSlide()})},r.prototype.configureChildElements=function(){function e(){a.scaleElements()}function t(e){var t;t=e.isPortrait?.4*e.pageHeight:e.pageHeight,a.slideViews.forEach(function(a){a.scale({clientWidth:e.pageWidth,clientHeight:t}),e.isPortrait&&(a.scalingElement.style.top="20px",a.notesElement.style.top=t+40+"px")})}var a=this;a.containerElement.innerHTML+=d.containerLayout,a.elementArea=a.containerElement.getElementsByClassName("remark-slides-area")[0],a.previewArea=a.containerElement.getElementsByClassName("remark-preview-area")[0],a.notesArea=a.containerElement.getElementsByClassName("remark-notes-area")[0],a.notesView=new l(a.events,a.notesArea,function(){return a.slideViews}),a.backdropElement=a.containerElement.getElementsByClassName("remark-backdrop")[0],a.helpElement=a.containerElement.getElementsByClassName("remark-help")[0],a.timerElement=a.notesArea.getElementsByClassName("remark-toolbar-timer")[0],a.pauseElement=a.containerElement.getElementsByClassName("remark-pause")[0],a.events.on("propertiesChanged",function(e){e.hasOwnProperty("ratio")&&a.updateDimensions()}),a.events.on("resize",e),m.init(),m.on("print",t)},r.prototype.updateSlideViews=function(){var e=this;e.slideViews.forEach(function(t){e.elementArea.removeChild(t.containerElement)}),e.slideViews=e.slideshow.getSlides().map(function(t){return new n(e.events,e.slideshow,e.scaler,t)}),e.slideViews.forEach(function(t){e.elementArea.appendChild(t.containerElement)}),e.updateDimensions(),e.slideshow.getCurrentSlideIndex()>-1&&e.showSlide(e.slideshow.getCurrentSlideIndex())},r.prototype.scaleSlideBackgroundImages=function(e){this.slideViews.forEach(function(t){t.scaleBackgroundImage(e)})},r.prototype.showSlide=function(e){var t=this,a=t.slideViews[e],r=t.slideViews[e+1];t.events.emit("beforeShowSlide",e),a.show(),t.previewArea.innerHTML=r?r.containerElement.outerHTML:"",t.events.emit("afterShowSlide",e)},r.prototype.hideSlide=function(e){var t=this,a=t.slideViews[e];t.events.emit("beforeHideSlide",e),a.hide(),t.events.emit("afterHideSlide",e)},r.prototype.updateDimensions=function(){var e=this,t=e.scaler.dimensions;e.helpElement.style.width=t.width+"px",e.helpElement.style.height=t.height+"px",e.scaleSlideBackgroundImages(t),e.scaleElements()},r.prototype.scaleElements=function(){var e=this;e.slideViews.forEach(function(t){t.scale(e.elementArea)}),e.previewArea.children.length&&e.scaler.scaleToFit(e.previewArea.children[0].children[0],e.previewArea),e.scaler.scaleToFit(e.helpElement,e.containerElement),e.scaler.scaleToFit(e.pauseElement,e.containerElement)}},{"../components/printing/printing":"components/printing","../components/timer/timer":"components/timer","../resources":23,"../scaler":24,"../utils":25,"./notesView":26,"./slideView":27}],"components/printing":[function(e,t,a){function r(){}var i=e("events").EventEmitter,s=e("../styler/styler");r.prototype=new i,r.prototype.init=function(){var e=this;if(this.setPageOrientation("landscape"),!window.matchMedia)return!1;window.matchMedia("print").addListener(function(t){e.onPrint(t)})},r.prototype.onPrint=function(e){e.matches&&this.emit("print",{isPortrait:"portrait"===this._orientation,pageHeight:this._pageHeight,pageWidth:this._pageWidth})},r.prototype.setPageOrientation=function(e){if("portrait"===e)this._pageHeight=908,this._pageWidth=681;else{if("landscape"!==e)throw new Error("Unknown print orientation: "+e);this._pageHeight=681,this._pageWidth=908}this._orientation=e,s.setPageSize(this._pageWidth+"px "+this._pageHeight+"px")},t.exports=new r},{"../styler/styler":"components/styler",events:1}],"components/slide-number":[function(e,t,a){function r(e,t){var a=this;a.slide=e,a.slideshow=t,a.element=document.createElement("div"),a.element.className="remark-slide-number",a.element.innerHTML=i(a.slide,a.slideshow)}function i(e,t){var a=t.getSlideNumberFormat(),r=t.getSlides(),i=s(e,t),n=s(r[r.length-1],t);return"function"==typeof a?a.call(t,i,n):a.replace("%current%",i).replace("%total%",n)}function s(e,t){return e.getSlideNumber()}t.exports=r},{}],"components/styler":[function(e,t,a){function r(){var e,t,a;if(!s()){e=document.getElementsByTagName("head")[0],t=document.createElement("style"),t.type="text/css",t.title="remark",t.innerHTML=o.documentStyles;for(a in l.styles)l.styles.hasOwnProperty(a)&&(t.innerHTML=t.innerHTML+l.styles[a]);e.insertBefore(t,e.firstChild)}}function i(e){n(s()).style.size=e}function s(){var e,t=document.styleSheets.length;for(e=0;e<t;++e)if("remark"===document.styleSheets[e].title)return document.styleSheets[e]}function n(e){var t,a=e.cssRules.length;for(t=0;t<a;++t)if(e.cssRules[t]instanceof window.CSSPageRule)return e.cssRules[t]}var o=e("../../resources"),l=e("../../highlighter");t.exports={styleDocument:r,setPageSize:i}},{"../../highlighter":15,"../../resources":23}],"components/timer":[function(e,t,a){function r(e,t,a){var r=this;r.options=d({},{enabled:!0,resetable:!0,startOnChange:!0,formatter:o},a||{}),r.element=t,r.reset(),e.on("start",function(){r.options.startOnChange&&e.emit("startTimer")}),e.on("startTimer",function(){r.start()}),e.on("pauseTimer",function(){r.pause()}),e.on("toggleTimer",function(){r.toggle()}),e.on("resetTimer",function(){r.options.resetable&&r.reset()}),setInterval(function(){r.tick()},100)}function i(){var e=this,t=(new Date).getTime();e.currentTick=t,e.lastTick=t,e.elapsedTime=0}function s(e,t){var a=this;a.identifier=e,a.updater=t}function n(e,t){var a=this;a.element=e,a.enabled=t.enabled,a.formatter=t.formatter,a.enabled||(a.element.style="display: none")}function o(e){var t=e;t=l(t,1e3);var a=t%60;t=l(t,60);var r=t%60;return(t=l(t,60))+":"+[r,a].map(function(e){return""+e}).map(function(e){return c(e,2,"0")}).join(":")}function l(e,t){return Math.floor(e/t)}function c(e,t,a){for(var r=e;r.length<t;)r=a+r;return r}var d=(e("../../utils"),e("extend"));t.exports=r,r.prototype.tick=function(){var e=this;e.chronos.tick(),e.state.update(e.chronos),e.view.update(e.chronos.elapsedTime)},r.prototype.start=function(){var e=this;e.state=e.RUNNING},r.prototype.pause=function(){var e=this;e.state=e.PAUSED},r.prototype.toggle=function(){var e=this;e.state===e.RUNNING?e.state=e.PAUSED:e.state=e.RUNNING},r.prototype.reset=function(){var e=this;e.chronos=new i,e.state=e.INITIAL,e.view=new n(e.element,e.options)},r.prototype.INITIAL=new s("INITIAL",function(e){}),r.prototype.RUNNING=new s("RUNNING",function(e){e.addDelta()}),r.prototype.PAUSED=new s("PAUSED",function(e){}),i.prototype.tick=function(){var e=this,t=(new Date).getTime();e.lastTick=e.currentTick,e.currentTick=t},i.prototype.addDelta=function(){var e=this,t=e.currentTick-e.lastTick;e.elapsedTime+=t},s.prototype.update=function(e){this.updater(e)},n.prototype.update=function(e){var t=this,a=t.enabled?t.formatter(e):"";t.element.innerHTML=a}},{"../../utils":25,extend:2}]},{},[5]);
+tomorrow:".hljs-tomorrow .hljs-comment,.hljs-tomorrow .hljs-quote{color:#8e908c}.hljs-tomorrow .hljs-variable,.hljs-tomorrow .hljs-template-variable,.hljs-tomorrow .hljs-tag,.hljs-tomorrow .hljs-name,.hljs-tomorrow .hljs-selector-id,.hljs-tomorrow .hljs-selector-class,.hljs-tomorrow .hljs-regexp,.hljs-tomorrow .hljs-deletion{color:#c82829}.hljs-tomorrow .hljs-number,.hljs-tomorrow .hljs-built_in,.hljs-tomorrow .hljs-builtin-name,.hljs-tomorrow .hljs-literal,.hljs-tomorrow .hljs-type,.hljs-tomorrow .hljs-params,.hljs-tomorrow .hljs-meta,.hljs-tomorrow .hljs-link{color:#f5871f}.hljs-tomorrow .hljs-attribute{color:#eab700}.hljs-tomorrow .hljs-string,.hljs-tomorrow .hljs-symbol,.hljs-tomorrow .hljs-bullet,.hljs-tomorrow .hljs-addition{color:#718c00}.hljs-tomorrow .hljs-title,.hljs-tomorrow .hljs-section{color:#4271ae}.hljs-tomorrow .hljs-keyword,.hljs-tomorrow .hljs-selector-tag{color:#8959a8}.hljs-tomorrow .hljs{display:block;overflow-x:auto;background:white;color:#4d4d4c;padding:.5em}.hljs-tomorrow .hljs-emphasis{font-style:italic}.hljs-tomorrow .hljs-strong{font-weight:bold}",vs:".hljs-vs .hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-vs .hljs-comment,.hljs-vs .hljs-quote,.hljs-vs .hljs-variable{color:#008000}.hljs-vs .hljs-keyword,.hljs-vs .hljs-selector-tag,.hljs-vs .hljs-built_in,.hljs-vs .hljs-name,.hljs-vs .hljs-tag{color:#00f}.hljs-vs .hljs-string,.hljs-vs .hljs-title,.hljs-vs .hljs-section,.hljs-vs .hljs-attribute,.hljs-vs .hljs-literal,.hljs-vs .hljs-template-tag,.hljs-vs .hljs-template-variable,.hljs-vs .hljs-type,.hljs-vs .hljs-addition{color:#a31515}.hljs-vs .hljs-deletion,.hljs-vs .hljs-selector-attr,.hljs-vs .hljs-selector-pseudo,.hljs-vs .hljs-meta{color:#2b91af}.hljs-vs .hljs-doctag{color:#808080}.hljs-vs .hljs-attr{color:#f00}.hljs-vs .hljs-symbol,.hljs-vs .hljs-bullet,.hljs-vs .hljs-link{color:#00b0e8}.hljs-vs .hljs-emphasis{font-style:italic}.hljs-vs .hljs-strong{font-weight:bold}",vs2015:".hljs-vs2015 .hljs{display:block;overflow-x:auto;padding:.5em;background:#1E1E1E;color:#DCDCDC}.hljs-vs2015 .hljs-keyword,.hljs-vs2015 .hljs-literal,.hljs-vs2015 .hljs-symbol,.hljs-vs2015 .hljs-name{color:#569CD6}.hljs-vs2015 .hljs-link{color:#569CD6;text-decoration:underline}.hljs-vs2015 .hljs-built_in,.hljs-vs2015 .hljs-type{color:#4EC9B0}.hljs-vs2015 .hljs-number,.hljs-vs2015 .hljs-class{color:#B8D7A3}.hljs-vs2015 .hljs-string,.hljs-vs2015 .hljs-meta-string{color:#D69D85}.hljs-vs2015 .hljs-regexp,.hljs-vs2015 .hljs-template-tag{color:#9A5334}.hljs-vs2015 .hljs-subst,.hljs-vs2015 .hljs-function,.hljs-vs2015 .hljs-title,.hljs-vs2015 .hljs-params,.hljs-vs2015 .hljs-formula{color:#DCDCDC}.hljs-vs2015 .hljs-comment,.hljs-vs2015 .hljs-quote{color:#57A64A;font-style:italic}.hljs-vs2015 .hljs-doctag{color:#608B4E}.hljs-vs2015 .hljs-meta,.hljs-vs2015 .hljs-meta-keyword,.hljs-vs2015 .hljs-tag{color:#9B9B9B}.hljs-vs2015 .hljs-variable,.hljs-vs2015 .hljs-template-variable{color:#BD63C5}.hljs-vs2015 .hljs-attr,.hljs-vs2015 .hljs-attribute,.hljs-vs2015 .hljs-builtin-name{color:#9CDCFE}.hljs-vs2015 .hljs-section{color:gold}.hljs-vs2015 .hljs-emphasis{font-style:italic}.hljs-vs2015 .hljs-strong{font-weight:bold}.hljs-vs2015 .hljs-bullet,.hljs-vs2015 .hljs-selector-tag,.hljs-vs2015 .hljs-selector-id,.hljs-vs2015 .hljs-selector-class,.hljs-vs2015 .hljs-selector-attr,.hljs-vs2015 .hljs-selector-pseudo{color:#D7BA7D}.hljs-vs2015 .hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-vs2015 .hljs-deletion{background-color:#600;display:inline-block;width:100%}",xcode:".hljs-xcode .hljs{display:block;overflow-x:auto;padding:.5em;background:#fff;color:black}.hljs-xcode .xml .hljs-meta{color:#c0c0c0}.hljs-xcode .hljs-comment,.hljs-xcode .hljs-quote{color:#007400}.hljs-xcode .hljs-tag,.hljs-xcode .hljs-attribute,.hljs-xcode .hljs-keyword,.hljs-xcode .hljs-selector-tag,.hljs-xcode .hljs-literal,.hljs-xcode .hljs-name{color:#aa0d91}.hljs-xcode .hljs-variable,.hljs-xcode .hljs-template-variable{color:#3F6E74}.hljs-xcode .hljs-code,.hljs-xcode .hljs-string,.hljs-xcode .hljs-meta-string{color:#c41a16}.hljs-xcode .hljs-regexp,.hljs-xcode .hljs-link{color:#0E0EFF}.hljs-xcode .hljs-title,.hljs-xcode .hljs-symbol,.hljs-xcode .hljs-bullet,.hljs-xcode .hljs-number{color:#1c00cf}.hljs-xcode .hljs-section,.hljs-xcode .hljs-meta{color:#643820}.hljs-xcode .hljs-class .hljs-title,.hljs-xcode .hljs-type,.hljs-xcode .hljs-built_in,.hljs-xcode .hljs-builtin-name,.hljs-xcode .hljs-params{color:#5c2699}.hljs-xcode .hljs-attr{color:#836C28}.hljs-xcode .hljs-subst{color:#000}.hljs-xcode .hljs-formula{background-color:#eee;font-style:italic}.hljs-xcode .hljs-addition{background-color:#baeeba}.hljs-xcode .hljs-deletion{background-color:#ffc8bd}.hljs-xcode .hljs-selector-id,.hljs-xcode .hljs-selector-class{color:#9b703f}.hljs-xcode .hljs-doctag,.hljs-xcode .hljs-strong{font-weight:bold}.hljs-xcode .hljs-emphasis{font-style:italic}",xt256:".hljs-xt256 .hljs{display:block;overflow-x:auto;color:#eaeaea;background:#000;padding:.5em}.hljs-xt256 .hljs-subst{color:#eaeaea}.hljs-xt256 .hljs-emphasis{font-style:italic}.hljs-xt256 .hljs-strong{font-weight:bold}.hljs-xt256 .hljs-builtin-name,.hljs-xt256 .hljs-type{color:#eaeaea}.hljs-xt256 .hljs-params{color:#da0000}.hljs-xt256 .hljs-literal,.hljs-xt256 .hljs-number,.hljs-xt256 .hljs-name{color:#ff0000;font-weight:bolder}.hljs-xt256 .hljs-comment{color:#969896}.hljs-xt256 .hljs-selector-id,.hljs-xt256 .hljs-quote{color:#00ffff}.hljs-xt256 .hljs-template-variable,.hljs-xt256 .hljs-variable,.hljs-xt256 .hljs-title{color:#00ffff;font-weight:bold}.hljs-xt256 .hljs-selector-class,.hljs-xt256 .hljs-keyword,.hljs-xt256 .hljs-symbol{color:#fff000}.hljs-xt256 .hljs-string,.hljs-xt256 .hljs-bullet{color:#00ff00}.hljs-xt256 .hljs-tag,.hljs-xt256 .hljs-section{color:#000fff}.hljs-xt256 .hljs-selector-tag{color:#000fff;font-weight:bold}.hljs-xt256 .hljs-attribute,.hljs-xt256 .hljs-built_in,.hljs-xt256 .hljs-regexp,.hljs-xt256 .hljs-link{color:#ff00ff}.hljs-xt256 .hljs-meta{color:#fff;font-weight:bolder}",zenburn:".hljs-zenburn .hljs{display:block;overflow-x:auto;padding:.5em;background:#3f3f3f;color:#dcdcdc}.hljs-zenburn .hljs-keyword,.hljs-zenburn .hljs-selector-tag,.hljs-zenburn .hljs-tag{color:#e3ceab}.hljs-zenburn .hljs-template-tag{color:#dcdcdc}.hljs-zenburn .hljs-number{color:#8cd0d3}.hljs-zenburn .hljs-variable,.hljs-zenburn .hljs-template-variable,.hljs-zenburn .hljs-attribute{color:#efdcbc}.hljs-zenburn .hljs-literal{color:#efefaf}.hljs-zenburn .hljs-subst{color:#8f8f8f}.hljs-zenburn .hljs-title,.hljs-zenburn .hljs-name,.hljs-zenburn .hljs-selector-id,.hljs-zenburn .hljs-selector-class,.hljs-zenburn .hljs-section,.hljs-zenburn .hljs-type{color:#efef8f}.hljs-zenburn .hljs-symbol,.hljs-zenburn .hljs-bullet,.hljs-zenburn .hljs-link{color:#dca3a3}.hljs-zenburn .hljs-deletion,.hljs-zenburn .hljs-string,.hljs-zenburn .hljs-built_in,.hljs-zenburn .hljs-builtin-name{color:#cc9393}.hljs-zenburn .hljs-addition,.hljs-zenburn .hljs-comment,.hljs-zenburn .hljs-quote,.hljs-zenburn .hljs-meta{color:#7f9f7f}.hljs-zenburn .hljs-emphasis{font-style:italic}.hljs-zenburn .hljs-strong{font-weight:bold}"},engine:r}},{}],16:[function(e,t,a){function r(){}function i(e,t,a){var r,s;for(a=a||[];null!==(r=t.exec(e));)r.index>0&&a.push({type:"text",text:e.substring(0,r.index)}),r[l]?a.push({type:"code",text:r[0]}):r[c]?a.push({type:"text",text:r[0]}):r[_]?a.push({type:"fences",text:r[0]}):r[m]?a.push({type:"def",id:r[m].toLowerCase(),href:r[u],title:r[p]}):r[h]?a.push({type:"macro",name:r[h],args:(r[g]||"").split(",").map(n),obj:r[E]}):r[S]||r[b]?a.push({type:"separator",text:r[S]||r[b]}):r[T]?a.push({type:"notes_separator",text:r[T]}):r[d]&&(s=o(e,r.index+r[0].length),void 0!==s?(e=e.substring(s.length+1),"\\"!==r[0][0]?(a.push({type:"content_start",classes:r[d].substring(1).split("."),block:-1!==s.indexOf("\n")}),i(s,N,a),a.push({type:"content_end",block:-1!==s.indexOf("\n")})):a.push({type:"text",text:r[0].substring(1)+s+"]"})):a.push({type:"text",text:r[0]})),e=e.substring(r.index+r[0].length);return(e||!e&&0===a.length)&&a.push({type:"text",text:e}),a}function s(e,t){return new RegExp(e.source.replace(/\w{2,}/g,function(e){return t[e].source}))}function n(e){return"string"==typeof e?e.trim():e}function o(e,t){for(var a,r=1,i=t;r>0&&i<e.length;)a=e[i++],r+="["===a&&1||"]"===a&&-1||0;if(0===r)return e=e.substr(t,i-t-1)}t.exports=r;var l=1,c=2,d=3,_=4,m=5,u=6,p=7,h=8,g=9,E=10,S=11,b=12,T=13,f={CODE:/(?:^|\n\n)( {4}[^\n]+\n*)+/,INLINE_CODE:/\`([^\`].*?)\`/,CONTENT:/(?:\\)?((?:\.[a-zA-Z_\-][a-zA-Z\-_0-9]*)+)\[/,FENCES:/(?:^|\n) *(`{3,}|~{3,}) *(?:\S+)? *\n(?:[\s\S]+?)\s*\4 *(?:\n+|$)/,DEF:/(?:^|\n) *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,MACRO:/!\[:([^\] ]+)([^\]]*)\](?:\(([^\)]*)\))?/,SLIDE_SEPARATOR:/(?:^|\n)(---|<!--\s*break\s*-->)(?:\n|$)/,FRAGMENT_SEPARATOR:/(?:^|\n)(--)(?![^\n])/,NOTES_SEPARATOR:/(?:^|\n)(\?{3})(?:\n|$)/},C=s(/CODE|INLINE_CODE|CONTENT|FENCES|DEF|MACRO|SLIDE_SEPARATOR|FRAGMENT_SEPARATOR|NOTES_SEPARATOR/,f),N=s(/CODE|INLINE_CODE|CONTENT|FENCES|DEF|MACRO/,f);r.prototype.lex=function(e){var t,a=i(e.replace("\r",""),C);for(t=a.length-2;t>=0;t--)"text"===a[t].type&&"text"===a[t+1].type&&(a[t].text+=a[t+1].text,a.splice(t+1,1));return a}},{}],17:[function(e,t,a){(t.exports={}).hello=function(){return"hello!"}},{}],18:[function(e,t,a){function r(e,t,a,r,s){var n=this;n.properties=a.properties||{},n.links=a.links||{},n.content=a.content||[],n.notes=a.notes||"",n.getSlideIndex=function(){return e},n.getSlideNumber=function(){return t},r&&i(n,r,s)}function i(e,t,a){s(e,t),o(e,t),c(e,t,a)}function s(e,t){var a,r;for(a in t.properties)t.properties.hasOwnProperty(a)&&!n(a)&&(r=[t.properties[a]],"class"===a&&e.properties[a]&&r.push(e.properties[a]),"class"!==a&&void 0!==e.properties[a]||(e.properties[a]=r.join(", ")))}function n(e){return"name"===e||"layout"===e||"count"===e}function o(e,t){var a;e.properties.content=e.content.slice(),l(e,t.content),a=e.expandVariables(!0),void 0===a.content&&(e.content=e.content.concat(e.properties.content)),delete e.properties.content}function l(e,t){var a;for(e.content=[],a=0;a<t.length;++a)"string"==typeof t[a]?e.content.push(t[a]):(e.content.push({block:t[a].block,class:t[a].class}),l(e.content[e.content.length-1],t[a].content))}function c(e,t,a){t.notes&&a.inheritPresenterNotes&&(e.notes=t.notes+"\n\n"+e.notes)}e("../converter");t.exports=r,r.prototype.expandVariables=function(e,t,a){function r(t,r,i,n){var o,l=n.trim();return r?e?t[0]:i:e&&"content"!==l?t:(o=s[l],void 0!==o?(a[l]=o,o):"content"===l?"":i)}var i,s=this.properties;for(t=void 0!==t?t:this.content,a=a||{},i=0;i<t.length;++i)"string"==typeof t[i]?t[i]=t[i].replace(/(\\)?(\{\{([^\}\n]+)\}\})/g,r):this.expandVariables(e,t[i].content,a);return a}},{"../converter":13}],19:[function(e,t,a){function r(e,t,a,r){function l(t){t=t||"",v=i(t,a),s(v),O={},v.forEach(function(e){for(var t in e.links)e.links.hasOwnProperty(t)&&(O[t]=e.links[t])}),e.emit("slidesChanged")}function c(e,r){var i=new t.XMLHttpRequest;return i.open("GET",a.sourceUrl,!0),i.onload=function(e){if(4===i.readyState){if(200!==i.status)throw Error(i.statusText);a.source=i.responseText.replace(/\r\n/g,"\n"),l(a.source),"function"==typeof r&&r(R)}},i.onerror=function(e){throw Error(i.statusText)},i.send(null),i}function d(){e.emit("resize")}function _(){return O}function m(){return v.map(function(e){return e})}function u(){return v.length}function p(e){return v.byName[e]}function h(e){return v.byNumber[e]}function g(){e.emit("togglePresenterMode")}function E(){e.emit("toggleHelp")}function S(){e.emit("toggleBlackout")}function b(){e.emit("toggleMirrored")}function T(){e.emit("toggleFullscreen")}function f(){e.emit("createClone")}function C(){e.emit("resetTimer")}function N(e,t){return function(){return void 0===a[e]?t:a[e]}}var R=this,v=[],O={};v.byName={},a=a||{},o.call(R,e),n.call(R,e),R.loadFromString=l,R.loadFromUrl=c,R.update=d,R.getLinks=_,R.getSlides=m,R.getSlideCount=u,R.getSlideByName=p,R.getSlidesByNumber=h,R.togglePresenterMode=g,R.toggleHelp=E,R.toggleBlackout=S,R.toggleMirrored=b,R.toggleFullscreen=T,R.createClone=f,R.resetTimer=C,R.getRatio=N("ratio","4:3"),R.getHighlightStyle=N("highlightStyle","default"),R.getHighlightLines=N("highlightLines",!1),R.getHighlightSpans=N("highlightSpans",!1),R.getHighlightInlineCode=N("highlightInlineCode",!1),R.getHighlightLanguage=N("highlightLanguage",""),R.getSlideNumberFormat=N("slideNumberFormat","%current% / %total%"),R.getCloneTarget=N("cloneTarget","_blank"),e.on("toggleBlackout",function(e){e&&!1===e.propagate||(R.clone&&!R.clone.closed&&R.clone.postMessage("toggleBlackout","*"),window.opener&&window.opener.postMessage("toggleBlackout","*"))}),a.sourceUrl?c(a.sourceUrl,r):(l(a.source),"function"==typeof r&&r(R))}function i(e,t){var a,r=new c,i=r.parse(e,d,t),s=[],n={};s.byName={},s.byNumber={};var o=0;return i.forEach(function(e,r){var i,c;"true"===e.properties.continued&&r>0?i=s[s.length-1]:n[e.properties.template]?i=n[e.properties.template]:"false"===e.properties.layout?a=void 0:a&&"true"!==e.properties.layout&&(i=a),"true"===e.properties.continued&&!1===t.countIncrementalSlides&&void 0===e.properties.count&&(e.properties.count="false");var d=(e.properties.class||"").split(/,| /),_=t.excludedClasses||[],m=0===d.filter(function(e){return-1!==_.indexOf(e)}).length;m&&"true"!==e.properties.layout&&"false"!==e.properties.count&&(o++,s.byNumber[o]=[]),void 0===t.includePresenterNotes||t.includePresenterNotes||(e.notes=""),c=new l(s.length,o,e,i,t),e.properties.name&&(n[e.properties.name]=c),"true"===e.properties.layout?a=c:(m&&(s.push(c),void 0!==s.byNumber[o]&&s.byNumber[o].push(c)),e.properties.name&&(s.byName[e.properties.name]=c))}),s}function s(e){e.forEach(function(e){e.expandVariables()})}var n=e("./slideshow/navigation"),o=e("./slideshow/events"),l=(e("../utils"),e("./slide")),c=e("../parser"),d=e("../macros");t.exports=r},{"../macros":17,"../parser":22,"../utils":25,"./slide":18,"./slideshow/events":20,"./slideshow/navigation":21}],20:[function(e,t,a){function r(e){var t=this,a=new i;a.setMaxListeners(0),t.on=function(){return a.on.apply(a,arguments),t},["showSlide","hideSlide","beforeShowSlide","afterShowSlide","beforeHideSlide","afterHideSlide","toggledPresenter"].map(function(r){e.on(r,function(e){var i=t.getSlides()[e];a.emit(r,i)})})}var i=e("events").EventEmitter;t.exports=r},{events:1}],21:[function(e,t,a){function r(e){function t(){e.emit("pause")}function a(){e.emit("resume")}function r(){return u}function i(t,a){var r=t===u,i=t<0||t>m.getSlideCount()-1;void 0===a&&(a=!1),r||i||(-1!==u&&e.emit("hideSlide",u,!1),null===p?p=!1:!1===p&&(e.emit("start"),p=!0),e.emit("showSlide",t),u=t,e.emit("slideChanged",t+1),a||(m.clone&&!m.clone.closed&&m.clone.postMessage("gotoSlide:"+(u+1),"*"),window.opener&&window.opener.postMessage("gotoSlide:"+(u+1),"*")))}function s(e,t){i(_(e),t)}function n(e,t){var a=m.getSlidesByNumber(parseInt(e,10));a&&a.length&&i(a[0].getSlideIndex(),t)}function o(){i(u-1)}function l(){i(u+1)}function c(){i(0)}function d(){i(m.getSlideCount()-1)}function _(t){var a,r;return"number"==typeof t?t-1:(a=parseInt(t,10),a.toString()===t?a-1:t.match(/^p\d+$/)?(e.emit("forcePresenterMode"),parseInt(t.substr(1),10)-1):(r=m.getSlideByName(t),r?r.getSlideIndex():0))}var m=this,u=-1,p=null;m.getCurrentSlideIndex=r,m.gotoSlide=s,m.gotoSlideNumber=n,m.gotoPreviousSlide=o,m.gotoNextSlide=l,m.gotoFirstSlide=c,m.gotoLastSlide=d,m.pause=t,m.resume=a,e.on("gotoSlide",s),e.on("gotoSlideNumber",n),e.on("gotoPreviousSlide",o),e.on("gotoNextSlide",l),e.on("gotoFirstSlide",c),e.on("gotoLastSlide",d),e.on("slidesChanged",function(){u>m.getSlideCount()&&(u=m.getSlideCount())}),e.on("createClone",function(){!m.clone||m.clone.closed?m.clone=window.open(location.href,m.getCloneTarget(),"location=no"):m.clone.focus()}),e.on("resetTimer",function(){p=!1})}t.exports=r},{}],22:[function(e,t,a){function r(){}function i(){return{content:[],properties:{continued:"false"},links:{}}}function s(e){return{class:e.classes.join(" "),block:e.block,content:[]}}function n(e,t){var a=e.content;void 0!==e.notes&&(a=e.notes);var r=a.length-1;"string"==typeof a[r]&&"string"==typeof t?a[r]+=t:a.push(t)}function o(e,t){for(var a,r=/^\n*([-\w]+):([^$\n]*)|\n*(?:<!--\s*)([-\w]+):([^$\n]*?)(?:\s*-->)/i;null!==(a=r.exec(e));)e=e.substr(0,a.index)+e.substr(a.index+a[0].length),void 0!==a[1]?t[a[1].trim()]=a[2].trim():t[a[3].trim()]=a[4].trim(),r.lastIndex=a.index;return e}function l(e){var t=/^([ \t]*)[^ \t\n]/gm,a=function(e,t){for(var a,r=[];null!==(a=t.exec(e));)r.push(a[1]);return r}(e,t).map(function(e){return e.length}),r=Math.min.apply(Math,a),i=new RegExp("^[ \\t]{0,"+r+"}","gm");return e.replace(i,"")}var c=e("./lexer");t.exports=r,r.prototype.parse=function(e,t,a){var r=this,d=new c,_=d.lex(l(e)),m=[],u=[i()];return t=t||{},a=a||{},_.forEach(function(e){switch(e.type){case"text":case"code":case"fences":n(u[u.length-1],e.text);break;case"def":u[0].links[e.id]={href:e.href,title:e.title};break;case"macro":var o=t[e.name];if("function"!=typeof o)throw new Error('Macro "'+e.name+"\" not found. You need to define macro using remark.macros['"+e.name+"'] = function () { ... };");var l=o.apply(e.obj,e.args);"string"==typeof l?(l=r.parse(l,t),n(u[u.length-1],l[0].content[0])):n(u[u.length-1],void 0===l?"":l.toString());break;case"content_start":u.push(s(e));break;case"content_end":n(u[u.length-2],u[u.length-1]),u.pop();break;case"separator":if("--"===e.text&&!0===a.disableIncrementalSlides){void 0!==u[0].notes&&delete u[0].notes;break}m.push(u[0]),u=[i()],u[0].properties.continued=("--"===e.text).toString();break;case"notes_separator":u[0].notes=[]}}),m.push(u[0]),m.forEach(function(e){e.content[0]=o(e.content[0]||"",e.properties)}),m.filter(function(e){return"true"!==(e.properties.exclude||"").toLowerCase()})}},{"./lexer":16}],23:[function(e,t,a){t.exports={version:"0.15.0",documentStyles:"html.remark-container,body.remark-container{height:100%;width:100%;-webkit-print-color-adjust:exact}.remark-container{background:#d7d8d2;margin:0;overflow:hidden}.remark-container:focus{outline-style:solid;outline-width:1px}.remark-container:-webkit-full-screen{width:100%;height:100%}body:-webkit-full-screen{background:#000000}body:-moz-full-screen{background:#000000}body:fullscreen{background:#000000}.remark-slides-area{position:relative;height:100%;width:100%}.remark-slide-container{display:none;position:absolute;height:100%;width:100%;page-break-after:always}.remark-slide-scaler{background-color:transparent;overflow:auto;position:absolute;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top-left;-moz-box-shadow:0 0 30px #888;-webkit-box-shadow:0 0 30px #888;box-shadow:0 0 30px #888}.remark-slide{height:100%;width:100%;display:table;table-layout:fixed;position:relative}.remark-slide>.left{text-align:left}.remark-slide>.center{text-align:center}.remark-slide>.right{text-align:right}.remark-slide>.top{vertical-align:top}.remark-slide>.middle{vertical-align:middle}.remark-slide>.bottom{vertical-align:bottom}.remark-slide-content{background-color:#fff;background-position:center;background-repeat:no-repeat;display:table-cell;font-size:20px;padding:1em 4em 1em 4em}.remark-slide-content h1{font-size:55px}.remark-slide-content h2{font-size:45px}.remark-slide-content h3{font-size:35px}.remark-slide-content .left{display:block;text-align:left}.remark-slide-content .center{display:block;text-align:center}.remark-slide-content .right{display:block;text-align:right}.remark-slide-number{bottom:12px;opacity:.5;position:absolute;right:20px}.remark-slide-notes{border-top:3px solid black;position:absolute;display:none}.remark-code{font-size:18px}.remark-code-line{min-height:1em}.remark-code-line-highlighted{background-color:rgba(255,255,0,0.5)}.remark-code-span-highlighted{background-color:rgba(255,255,0,0.5);padding:1px 2px 2px 2px}.remark-visible{display:block;z-index:2}.remark-fading{display:block;z-index:1}.remark-fading .remark-slide-scaler{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.remark-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;display:none;background:#000;z-index:2}.remark-pause{bottom:0;top:0;right:0;left:0;display:none;position:absolute;z-index:1000}.remark-pause .remark-pause-lozenge{margin-top:30%;text-align:center}.remark-pause .remark-pause-lozenge span{color:white;background:black;border:2px solid black;border-radius:20px;padding:20px 30px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:42pt;font-weight:bold}.remark-container.remark-presenter-mode.remark-pause-mode .remark-pause{display:block}.remark-container.remark-presenter-mode.remark-pause-mode .remark-backdrop{display:block;opacity:.5}.remark-help{bottom:0;top:0;right:0;left:0;display:none;position:absolute;z-index:1000;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top-left}.remark-help .remark-help-content{color:white;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:12pt;position:absolute;top:5%;bottom:10%;height:10%;left:5%;width:90%}.remark-help .remark-help-content h1{font-size:36px}.remark-help .remark-help-content td{color:white;font-size:12pt;padding:10px}.remark-help .remark-help-content td:first-child{padding-left:0}.remark-help .remark-help-content .key{background:white;color:black;min-width:1em;display:inline-block;padding:3px 6px;text-align:center;border-radius:4px;font-size:14px}.remark-help .dismiss{top:85%}.remark-container.remark-help-mode .remark-help{display:block}.remark-container.remark-help-mode .remark-backdrop{display:block;opacity:.95}.remark-preview-area{bottom:2%;left:2%;display:none;opacity:.5;position:absolute;height:47.25%;width:48%}.remark-preview-area .remark-slide-container{display:block}.remark-notes-area{background:#fff;bottom:0;color:black;display:none;left:52%;overflow:hidden;position:absolute;right:0;top:0}.remark-notes-area .remark-top-area{height:50px;left:20px;position:absolute;right:10px;top:10px}.remark-notes-area .remark-bottom-area{position:absolute;top:75px;bottom:10px;left:20px;right:10px}.remark-notes-area .remark-bottom-area .remark-toggle{display:block;text-decoration:none;font-family:Helvetica,arial,freesans,clean,sans-serif;height:21px;font-size:.75em;text-transform:uppercase;color:#ccc}.remark-notes-area .remark-bottom-area .remark-notes-current-area{height:70%;position:relative}.remark-notes-area .remark-bottom-area .remark-notes-current-area .remark-notes{clear:both;border-top:1px solid #f5f5f5;position:absolute;top:22px;bottom:0px;left:0px;right:0px;overflow-y:auto;margin-bottom:20px;padding-top:10px}.remark-notes-area .remark-bottom-area .remark-notes-preview-area{height:30%;position:relative}.remark-notes-area .remark-bottom-area .remark-notes-preview-area .remark-notes-preview{border-top:1px solid #f5f5f5;position:absolute;top:22px;bottom:0px;left:0px;right:0px;overflow-y:auto}.remark-notes-area .remark-bottom-area .remark-notes>*:first-child,.remark-notes-area .remark-bottom-area .remark-notes-preview>*:first-child{margin-top:5px}.remark-notes-area .remark-bottom-area .remark-notes>*:last-child,.remark-notes-area .remark-bottom-area .remark-notes-preview>*:last-child{margin-bottom:0}.remark-toolbar{color:#979892;vertical-align:middle}.remark-toolbar .remark-toolbar-link{border:2px solid #d7d8d2;color:#979892;display:inline-block;padding:2px 2px;text-decoration:none;text-align:center;min-width:20px}.remark-toolbar .remark-toolbar-link:hover{border-color:#979892;color:#676862}.remark-toolbar .remark-toolbar-timer{border:2px solid black;border-radius:10px;background:black;color:white;display:inline-block;float:right;padding:5px 10px;font-family:sans-serif;font-weight:bold;font-size:175%;text-decoration:none;text-align:center}.remark-container.remark-presenter-mode .remark-slides-area{top:2%;left:2%;height:47.25%;width:48%}.remark-container.remark-presenter-mode .remark-preview-area{display:block}.remark-container.remark-presenter-mode .remark-notes-area{display:block}.remark-container.remark-blackout-mode:not(.remark-presenter-mode) .remark-backdrop{display:block;opacity:.99}.remark-container.remark-mirrored-mode:not(.remark-presenter-mode) .remark-slides-area{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1)}@media print{.remark-container{overflow:visible;background-color:#fff}.remark-container.remark-presenter-mode .remark-slides-area{top:0px;left:0px;height:100%;width:681px}.remark-container.remark-presenter-mode .remark-preview-area,.remark-container.remark-presenter-mode .remark-notes-area{display:none}.remark-container.remark-presenter-mode .remark-slide-notes{display:block;margin-left:30px;width:621px}.remark-slide-container{display:block;position:relative}.remark-slide-scaler{-moz-box-shadow:none;-webkit-box-shadow:none;-webkit-transform-origin:initial;box-shadow:none}}@page{margin:0}",containerLayout:'<div class="remark-notes-area">\n  <div class="remark-top-area">\n    <div class="remark-toolbar">\n      <a class="remark-toolbar-link" href="#increase">+</a>\n      <a class="remark-toolbar-link" href="#decrease">-</a>\n      <span class="remark-toolbar-timer"></span>\n    </div>\n  </div>\n  <div class="remark-bottom-area">\n    <div class="remark-notes-current-area">\n      <div class="remark-toggle">Notes for current slide</div>\n      <div class="remark-notes"></div>\n    </div>\n    <div class="remark-notes-preview-area">\n      <div class="remark-toggle">Notes for next slide</div>\n      <div class="remark-notes-preview"></div>\n    </div>\n  </div>\n</div>\n<div class="remark-slides-area"></div>\n<div class="remark-preview-area"></div>\n<div class="remark-backdrop"></div>\n<div class="remark-pause">\n  <div class="remark-pause-lozenge">\n    <span>Paused</span>\n  </div>\n</div>\n<div class="remark-help">\n  <div class="remark-help-content">\n    <h1>Help</h1>\n    <p><b>Keyboard shortcuts</b></p>\n    <table class="light-keys">\n      <tr>\n        <td>\n          <span class="key"><b>&uarr;</b></span>,\n          <span class="key"><b>&larr;</b></span>,\n          <span class="key">Pg Up</span>,\n          <span class="key">k</span>\n        </td>\n        <td>Go to previous slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key"><b>&darr;</b></span>,\n          <span class="key"><b>&rarr;</b></span>,\n          <span class="key">Pg Dn</span>,\n          <span class="key">Space</span>,\n          <span class="key">j</span>\n        </td>\n        <td>Go to next slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">Home</span>\n        </td>\n        <td>Go to first slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">End</span>\n        </td>\n        <td>Go to last slide</td>\n      </tr>\n      <tr>\n        <td>\n          Number + <span class="key">Return</span>\n        </td>\n        <td>Go to specific slide</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">b</span>&nbsp;/\n          <span class="key">m</span>&nbsp;/\n          <span class="key">f</span>\n        </td>\n        <td>Toggle blackout / mirrored / fullscreen mode</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">c</span>\n        </td>\n        <td>Clone slideshow</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">p</span>\n        </td>\n        <td>Toggle presenter mode</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">s</span>\n        </td>\n        <td>Start & Stop the presentation timer</td>\n      </tr>\n       <tr>\n        <td>\n          <span class="key">t</span>\n        </td>\n        <td>Reset the presentation timer</td>\n      </tr>\n      <tr>\n        <td>\n          <span class="key">?</span>,\n          <span class="key">h</span>\n        </td>\n        <td>Toggle this help</td>\n      </tr>\n    </table>\n  </div>\n  <div class="content dismiss">\n    <table class="light-keys">\n      <tr>\n        <td>\n          <span class="key">Esc</span>\n        </td>\n        <td>Back to slideshow</td>\n      </tr>\n    </table>\n  </div>\n</div>\n'}},{}],24:[function(e,t,a){function r(e,t){var a=this;a.events=e,a.slideshow=t,a.ratio=i(t),a.dimensions=s(a.ratio),a.events.on("propertiesChanged",function(e){e.hasOwnProperty("ratio")&&(a.ratio=i(t),a.dimensions=s(a.ratio))})}function i(e){var t,a=e.getRatio().split(":");return t={width:parseInt(a[0],10),height:parseInt(a[1],10)},t.ratio=t.width/t.height,t}function s(e){return{width:Math.floor(n/l*e.ratio),height:o}}var n=908,o=681,l=n/o;t.exports=r,r.prototype.scaleToFit=function(e,t){var a,r,i,s,n,o=this,l=t.clientHeight,c=t.clientWidth,d=o.ratio,_=o.dimensions;a=c/d.width>l/d.height?l/_.height:c/_.width,r=_.width*a,i=_.height*a,s=(c-r)/2,n=(l-i)/2,e.style["-webkit-transform"]="scale("+a+")",e.style.MozTransform="scale("+a+")",e.style.left=Math.max(s,0)+"px",e.style.top=Math.max(n,0)+"px"}},{}],25:[function(e,t,a){a.addClass=function(e,t){e.className=a.getClasses(e).concat([t]).join(" ")},a.removeClass=function(e,t){e.className=a.getClasses(e).filter(function(e){return e!==t}).join(" ")},a.toggleClass=function(e,t){var r=a.getClasses(e),i=r.indexOf(t);-1!==i?r.splice(i,1):r.push(t),e.className=r.join(" ")},a.getClasses=function(e){return e.className.split(" ").filter(function(e){return""!==e})},a.hasClass=function(e,t){return-1!==a.getClasses(e).indexOf(t)},a.getPrefixedProperty=function(e,t){var a=t[0].toUpperCase()+t.slice(1);return e[t]||e["moz"+a]||e["webkit"+a]}},{}],26:[function(e,t,a){function r(e,t,a){var r=this;r.events=e,r.element=t,r.slideViewsAccessor=a,r.configureElements(),e.on("showSlide",function(e){r.showSlide(e)})}e("../converter");t.exports=r,r.prototype.showSlide=function(e){var t=this,a=t.slideViewsAccessor(),r=a[e],i=a[e+1];t.notesElement.innerHTML=r.notesElement.innerHTML,t.notesPreviewElement.innerHTML=i?i.notesElement.innerHTML:""},r.prototype.configureElements=function(){var e=this;e.notesElement=e.element.getElementsByClassName("remark-notes")[0],e.notesPreviewElement=e.element.getElementsByClassName("remark-notes-preview")[0],e.notesElement.addEventListener("mousewheel",function(e){e.stopPropagation()}),e.notesPreviewElement.addEventListener("mousewheel",function(e){e.stopPropagation()}),e.toolbarElement=e.element.getElementsByClassName("remark-toolbar")[0];var t={increase:function(){e.notesElement.style.fontSize=(parseFloat(e.notesElement.style.fontSize)||1)+.1+"em",e.notesPreviewElement.style.fontsize=e.notesElement.style.fontSize},decrease:function(){e.notesElement.style.fontSize=(parseFloat(e.notesElement.style.fontSize)||1)-.1+"em",e.notesPreviewElement.style.fontsize=e.notesElement.style.fontSize}};e.toolbarElement.getElementsByTagName("a").forEach(function(e){e.addEventListener("click",function(e){var a=e.target.hash.substr(1);t[a](),e.preventDefault()})})}},{"../converter":13}],27:[function(e,t,a){function r(e,t,a,r){var i=this;i.events=e,i.slideshow=t,i.scaler=a,i.slide=r,i.slideNumber=new g(r,t),i.configureElements(),i.updateDimensions(),i.events.on("propertiesChanged",function(e){e.hasOwnProperty("ratio")&&i.updateDimensions()})}function i(e){var t=document.createElement("div");return t.className="remark-slide","true"===e.properties.continued&&b.addClass(t,"remark-slide-incremental"),t}function s(e,t,a){var r=document.createElement("div");return a.properties.name&&(r.id="slide-"+a.properties.name),n(t,r,a.properties),r.innerHTML=E.convertMarkdown(a.content,t.getLinks()),_(r,t),r}function n(e,t,a){t.className="",d(t,a),c(t,a,e),l(t,a)}function o(e,t){var a=document.createElement("div");return a.className="remark-slide-notes",a.innerHTML=E.convertMarkdown(t,e.getLinks()),_(a,e),a}function l(e,t){var a=t["background-image"],r=t["background-color"],i=t["background-size"],s=t["background-position"]
+;a&&(e.style.backgroundImage=a),r&&(e.style.backgroundColor=r),i&&(e.style.backgroundSize=i),s&&(e.style.backgroundPosition=s)}function c(e,t,a){var r=t["highlight-style"]||a.getHighlightStyle();r&&b.addClass(e,"hljs-"+r)}function d(e,t){b.addClass(e,"remark-slide-content"),(t.class||"").split(/,| /).filter(function(e){return""!==e}).forEach(function(t){b.addClass(e,t)})}function _(e,t){var a,r=e.getElementsByTagName("code"),i=t.getHighlightLines(),s=t.getHighlightSpans(),n=t.getHighlightInlineCode();r.forEach(function(e){if(""===e.className&&(e.className=t.getHighlightLanguage()),"PRE"!==e.parentElement.tagName)return b.addClass(e,"remark-inline-code"),void(n&&S.engine.highlightBlock(e,""));i&&(a=m(e)),""!==e.className&&S.engine.highlightBlock(e,"  "),u(e),i&&p(e,a.highlightedLines),s&&h(e,s),b.addClass(e,"remark-code")})}function m(e){var t=[];return e.innerHTML=e.innerHTML.split(/\r?\n/).map(function(e,a){return 0===e.indexOf("*")?(t.push(a),e.replace(/^\*( )?/,"$1$1")):e}).join("\n"),{highlightedLines:t}}function u(e){var t=e.innerHTML.split(/\r?\n/).map(function(e){return'<div class="remark-code-line">'+e+"</div>"});t.length&&-1!==t[t.length-1].indexOf("><")&&t.pop(),e.innerHTML=t.join("")}function p(e,t){t.forEach(function(t){b.addClass(e.childNodes[t],"remark-code-line-highlighted")})}function h(e,t){var a;if(!0===t)a=/([^`])`([^`]+?)`/g;else{if(!(t instanceof RegExp))throw new Error("Illegal value for `highlightSpans`");if(!t.global)throw new Error("The regular expression in `highlightSpans` must have flag /g");var r=t.flags||"g";a=new RegExp("([^])"+t.source,r)}e.childNodes.forEach(function(e){e.innerHTML=e.innerHTML.replace(a,function(e,t,a){return"\\"===t?e.substr(1):t+'<span class="remark-code-span-highlighted">'+a+"</span>"})})}var g=e("../components/slide-number/slide-number"),E=e("../converter"),S=e("../highlighter"),b=e("../utils");t.exports=r,r.prototype.updateDimensions=function(){var e=this,t=e.scaler.dimensions;e.scalingElement.style.width=t.width+"px",e.scalingElement.style.height=t.height+"px"},r.prototype.scale=function(e){var t=this;t.scaler.scaleToFit(t.scalingElement,e)},r.prototype.show=function(){b.addClass(this.containerElement,"remark-visible"),b.removeClass(this.containerElement,"remark-fading")},r.prototype.hide=function(){var e=this;b.removeClass(this.containerElement,"remark-visible"),b.addClass(this.containerElement,"remark-fading"),setTimeout(function(){b.removeClass(e.containerElement,"remark-fading")},1e3)},r.prototype.configureElements=function(){var e=this;e.containerElement=document.createElement("div"),e.containerElement.className="remark-slide-container",e.scalingElement=document.createElement("div"),e.scalingElement.className="remark-slide-scaler",e.element=i(e.slide),e.contentElement=s(e.events,e.slideshow,e.slide),e.notesElement=o(e.slideshow,e.slide.notes),e.contentElement.appendChild(e.slideNumber.element),e.element.appendChild(e.contentElement),e.scalingElement.appendChild(e.element),e.containerElement.appendChild(e.scalingElement),e.containerElement.appendChild(e.notesElement)},r.prototype.scaleBackgroundImage=function(e){var t,a,r,i=this,s=window.getComputedStyle(this.contentElement),n=s.backgroundImage,o=s.backgroundSize,l=s.backgroundPosition;(!o&&!l||i.backgroundSizeSet)&&null!==(t=/^url\(("?)([^\)]+?)\1\)/.exec(n))&&(a=new Image,a.onload=function(){a.width>e.width||a.height>e.height?i.originalBackgroundSize||(i.originalBackgroundSize=i.contentElement.style.backgroundSize,i.originalBackgroundPosition=i.contentElement.style.backgroundPosition,i.backgroundSizeSet=!0,r=e.width/a.width<e.height/a.height?e.width/a.width:e.height/a.height,i.contentElement.style.backgroundSize=a.width*r+"px "+a.height*r+"px",i.contentElement.style.backgroundPosition="50% "+(e.height-a.height*r)/2+"px"):i.backgroundSizeSet&&(i.contentElement.style.backgroundSize=i.originalBackgroundSize,i.contentElement.style.backgroundPosition=i.originalBackgroundPosition,i.backgroundSizeSet=!1)},a.src=t[2])}},{"../components/slide-number/slide-number":"components/slide-number","../converter":13,"../highlighter":15,"../utils":25}],28:[function(e,t,a){function r(e,t,a,r){var s=this,n=a.container;s.events=e,s.dom=t,s.slideshow=r,s.scaler=new c(e,r),s.slideViews=[],s.configureContainerElement(n),s.configureChildElements(),s.updateDimensions(),s.scaleElements(),s.updateSlideViews(),s.timer=new o(e,s.timerElement,a.timer),e.on("slidesChanged",function(){s.updateSlideViews()}),e.on("hideSlide",function(e){s.elementArea.getElementsByClassName("remark-fading").forEach(function(e){_.removeClass(e,"remark-fading")}),s.hideSlide(e)}),e.on("showSlide",function(e){s.showSlide(e)}),e.on("forcePresenterMode",function(){_.hasClass(s.containerElement,"remark-presenter-mode")||(_.toggleClass(s.containerElement,"remark-presenter-mode"),s.scaleElements(),m.setPageOrientation("landscape"))}),e.on("togglePresenterMode",function(){_.toggleClass(s.containerElement,"remark-presenter-mode"),s.scaleElements(),e.emit("toggledPresenter",s.slideshow.getCurrentSlideIndex()+1),_.hasClass(s.containerElement,"remark-presenter-mode")?m.setPageOrientation("portrait"):m.setPageOrientation("landscape")}),e.on("toggleHelp",function(){_.toggleClass(s.containerElement,"remark-help-mode")}),e.on("toggleBlackout",function(){_.toggleClass(s.containerElement,"remark-blackout-mode")}),e.on("toggleMirrored",function(){_.toggleClass(s.containerElement,"remark-mirrored-mode")}),e.on("hideOverlay",function(){_.removeClass(s.containerElement,"remark-blackout-mode"),_.removeClass(s.containerElement,"remark-help-mode")}),e.on("pause",function(){_.toggleClass(s.containerElement,"remark-pause-mode")}),e.on("resume",function(){_.toggleClass(s.containerElement,"remark-pause-mode")}),i(s)}function i(e){var t=_.getPrefixedProperty(e.containerElement,"requestFullScreen"),a=_.getPrefixedProperty(document,"cancelFullScreen");e.events.on("toggleFullscreen",function(){_.getPrefixedProperty(document,"fullscreenElement")||_.getPrefixedProperty(document,"fullScreenElement")||!t?a&&a.call(document):t.call(e.containerElement,Element.ALLOW_KEYBOARD_INPUT),e.scaleElements()})}function s(e,t,a){a.forEach(function(a){t.addEventListener(a,function(){var t=Array.prototype.slice.call(arguments);e.emit.apply(e,[a].concat(t))})})}var n=e("./slideView"),o=e("../components/timer/timer"),l=e("./notesView"),c=e("../scaler"),d=e("../resources"),_=e("../utils"),m=e("../components/printing/printing");t.exports=r,r.prototype.isEmbedded=function(){return this.containerElement!==this.dom.getBodyElement()},r.prototype.configureContainerElement=function(e){var t=this;t.containerElement=e,_.addClass(e,"remark-container"),e===t.dom.getBodyElement()?(_.addClass(t.dom.getHTMLElement(),"remark-container"),s(t.events,window,["hashchange","resize","keydown","keypress","mousewheel","message","DOMMouseScroll"]),s(t.events,t.containerElement,["touchstart","touchmove","touchend","click","contextmenu"])):(e.style.position="absolute",e.tabIndex=-1,s(t.events,window,["resize"]),s(t.events,e,["keydown","keypress","mousewheel","touchstart","touchmove","touchend"])),t.events.on("tap",function(e){e<t.containerElement.clientWidth/2?t.slideshow.gotoPreviousSlide():t.slideshow.gotoNextSlide()})},r.prototype.configureChildElements=function(){function e(){a.scaleElements()}function t(e){var t;t=e.isPortrait?.4*e.pageHeight:e.pageHeight,a.slideViews.forEach(function(a){a.scale({clientWidth:e.pageWidth,clientHeight:t}),e.isPortrait&&(a.scalingElement.style.top="20px",a.notesElement.style.top=t+40+"px")})}var a=this;a.containerElement.innerHTML+=d.containerLayout,a.elementArea=a.containerElement.getElementsByClassName("remark-slides-area")[0],a.previewArea=a.containerElement.getElementsByClassName("remark-preview-area")[0],a.notesArea=a.containerElement.getElementsByClassName("remark-notes-area")[0],a.notesView=new l(a.events,a.notesArea,function(){return a.slideViews}),a.backdropElement=a.containerElement.getElementsByClassName("remark-backdrop")[0],a.helpElement=a.containerElement.getElementsByClassName("remark-help")[0],a.timerElement=a.notesArea.getElementsByClassName("remark-toolbar-timer")[0],a.pauseElement=a.containerElement.getElementsByClassName("remark-pause")[0],a.events.on("propertiesChanged",function(e){e.hasOwnProperty("ratio")&&a.updateDimensions()}),a.events.on("resize",e),m.init(),m.on("print",t)},r.prototype.updateSlideViews=function(){var e=this;e.slideViews.forEach(function(t){e.elementArea.removeChild(t.containerElement)}),e.slideViews=e.slideshow.getSlides().map(function(t){return new n(e.events,e.slideshow,e.scaler,t)}),e.slideViews.forEach(function(t){e.elementArea.appendChild(t.containerElement)}),e.updateDimensions(),e.slideshow.getCurrentSlideIndex()>-1&&e.showSlide(e.slideshow.getCurrentSlideIndex())},r.prototype.scaleSlideBackgroundImages=function(e){this.slideViews.forEach(function(t){t.scaleBackgroundImage(e)})},r.prototype.showSlide=function(e){var t=this,a=t.slideViews[e],r=t.slideViews[e+1];t.events.emit("beforeShowSlide",e),a.show(),t.previewArea.innerHTML=r?r.containerElement.outerHTML:"",t.events.emit("afterShowSlide",e)},r.prototype.hideSlide=function(e){var t=this,a=t.slideViews[e];t.events.emit("beforeHideSlide",e),a.hide(),t.events.emit("afterHideSlide",e)},r.prototype.updateDimensions=function(){var e=this,t=e.scaler.dimensions;e.helpElement.style.width=t.width+"px",e.helpElement.style.height=t.height+"px",e.scaleSlideBackgroundImages(t),e.scaleElements()},r.prototype.scaleElements=function(){var e=this;e.slideViews.forEach(function(t){t.scale(e.elementArea)}),e.previewArea.children.length&&e.scaler.scaleToFit(e.previewArea.children[0].children[0],e.previewArea),e.scaler.scaleToFit(e.helpElement,e.containerElement),e.scaler.scaleToFit(e.pauseElement,e.containerElement)}},{"../components/printing/printing":"components/printing","../components/timer/timer":"components/timer","../resources":23,"../scaler":24,"../utils":25,"./notesView":26,"./slideView":27}],"components/printing":[function(e,t,a){function r(){}var i=e("events").EventEmitter,s=e("../styler/styler");r.prototype=new i,r.prototype.init=function(){var e=this;if(this.setPageOrientation("landscape"),!window.matchMedia)return!1;window.matchMedia("print").addListener(function(t){e.onPrint(t)})},r.prototype.onPrint=function(e){e.matches&&this.emit("print",{isPortrait:"portrait"===this._orientation,pageHeight:this._pageHeight,pageWidth:this._pageWidth})},r.prototype.setPageOrientation=function(e){if("portrait"===e)this._pageHeight=908,this._pageWidth=681;else{if("landscape"!==e)throw new Error("Unknown print orientation: "+e);this._pageHeight=681,this._pageWidth=908}this._orientation=e,s.setPageSize(this._pageWidth+"px "+this._pageHeight+"px")},t.exports=new r},{"../styler/styler":"components/styler",events:1}],"components/slide-number":[function(e,t,a){function r(e,t){var a=this;a.slide=e,a.slideshow=t,a.element=document.createElement("div"),a.element.className="remark-slide-number",a.element.innerHTML=i(a.slide,a.slideshow)}function i(e,t){var a=t.getSlideNumberFormat(),r=t.getSlides(),i=s(e,t),n=s(r[r.length-1],t);return"function"==typeof a?a.call(t,i,n):a.replace("%current%",i).replace("%total%",n)}function s(e,t){return e.getSlideNumber()}t.exports=r},{}],"components/styler":[function(e,t,a){function r(){var e,t,a;if(!s()){e=document.getElementsByTagName("head")[0],t=document.createElement("style"),t.type="text/css",t.title="remark",t.innerHTML=o.documentStyles;for(a in l.styles)l.styles.hasOwnProperty(a)&&(t.innerHTML=t.innerHTML+l.styles[a]);e.insertBefore(t,e.firstChild)}}function i(e){n(s()).style.size=e}function s(){var e,t=document.styleSheets.length;for(e=0;e<t;++e)if("remark"===document.styleSheets[e].title)return document.styleSheets[e]}function n(e){var t,a=e.cssRules.length;for(t=0;t<a;++t)if(e.cssRules[t]instanceof window.CSSPageRule)return e.cssRules[t]}var o=e("../../resources"),l=e("../../highlighter");t.exports={styleDocument:r,setPageSize:i}},{"../../highlighter":15,"../../resources":23}],"components/timer":[function(e,t,a){function r(e,t,a){var r=this;r.options=d({},{enabled:!0,resetable:!0,startOnChange:!0,formatter:o},a||{}),r.element=t,r.reset(),e.on("start",function(){r.options.startOnChange&&e.emit("startTimer")}),e.on("startTimer",function(){r.start()}),e.on("pauseTimer",function(){r.pause()}),e.on("toggleTimer",function(){r.toggle()}),e.on("resetTimer",function(){r.options.resetable&&r.reset()}),setInterval(function(){r.tick()},100)}function i(){var e=this,t=(new Date).getTime();e.currentTick=t,e.lastTick=t,e.elapsedTime=0}function s(e,t){var a=this;a.identifier=e,a.updater=t}function n(e,t){var a=this;a.element=e,a.enabled=t.enabled,a.formatter=t.formatter,a.enabled||(a.element.style="display: none")}function o(e){var t=e;t=l(t,1e3);var a=t%60;t=l(t,60);var r=t%60;return(t=l(t,60))+":"+[r,a].map(function(e){return""+e}).map(function(e){return c(e,2,"0")}).join(":")}function l(e,t){return Math.floor(e/t)}function c(e,t,a){for(var r=e;r.length<t;)r=a+r;return r}var d=(e("../../utils"),e("extend"));t.exports=r,r.prototype.tick=function(){var e=this;e.chronos.tick(),e.state.update(e.chronos),e.view.update(e.chronos.elapsedTime)},r.prototype.start=function(){var e=this;e.state=e.RUNNING},r.prototype.pause=function(){var e=this;e.state=e.PAUSED},r.prototype.toggle=function(){var e=this;e.state===e.RUNNING?e.state=e.PAUSED:e.state=e.RUNNING},r.prototype.reset=function(){var e=this;e.chronos=new i,e.state=e.INITIAL,e.view=new n(e.element,e.options)},r.prototype.INITIAL=new s("INITIAL",function(e){}),r.prototype.RUNNING=new s("RUNNING",function(e){e.addDelta()}),r.prototype.PAUSED=new s("PAUSED",function(e){}),i.prototype.tick=function(){var e=this,t=(new Date).getTime();e.lastTick=e.currentTick,e.currentTick=t},i.prototype.addDelta=function(){var e=this,t=e.currentTick-e.lastTick;e.elapsedTime+=t},s.prototype.update=function(e){this.updater(e)},n.prototype.update=function(e){var t=this,a=t.enabled?t.formatter(e):"";t.element.innerHTML=a}},{"../../utils":25,extend:2}]},{},[5]);
\ No newline at end of file
diff --git a/assets/fonts/font-awesome/YanoneKaffeesatz-Bold.otf b/assets/webfonts/YanoneKaffeesatz-Bold.otf
similarity index 100%
rename from assets/fonts/font-awesome/YanoneKaffeesatz-Bold.otf
rename to assets/webfonts/YanoneKaffeesatz-Bold.otf
diff --git a/assets/fonts/font-awesome/YanoneKaffeesatz-Light.otf b/assets/webfonts/YanoneKaffeesatz-Light.otf
similarity index 100%
rename from assets/fonts/font-awesome/YanoneKaffeesatz-Light.otf
rename to assets/webfonts/YanoneKaffeesatz-Light.otf
diff --git a/assets/fonts/font-awesome/YanoneKaffeesatz-Regular.otf b/assets/webfonts/YanoneKaffeesatz-Regular.otf
similarity index 100%
rename from assets/fonts/font-awesome/YanoneKaffeesatz-Regular.otf
rename to assets/webfonts/YanoneKaffeesatz-Regular.otf
diff --git a/assets/fonts/font-awesome/YanoneKaffeesatz-Thin.otf b/assets/webfonts/YanoneKaffeesatz-Thin.otf
similarity index 100%
rename from assets/fonts/font-awesome/YanoneKaffeesatz-Thin.otf
rename to assets/webfonts/YanoneKaffeesatz-Thin.otf
diff --git a/assets/webfonts/fa-brands-400.ttf b/assets/webfonts/fa-brands-400.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..cf6a98f45c6197e6321c93e9133c2f759098c958
Binary files /dev/null and b/assets/webfonts/fa-brands-400.ttf differ
diff --git a/assets/webfonts/fa-brands-400.woff2 b/assets/webfonts/fa-brands-400.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..c740267c65619493adcb588b6b8ac7603fc88ceb
Binary files /dev/null and b/assets/webfonts/fa-brands-400.woff2 differ
diff --git a/assets/webfonts/fa-regular-400.ttf b/assets/webfonts/fa-regular-400.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..9ef8a3728c536ec66b2bc25779b258ab4d311061
Binary files /dev/null and b/assets/webfonts/fa-regular-400.ttf differ
diff --git a/assets/webfonts/fa-regular-400.woff2 b/assets/webfonts/fa-regular-400.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..a865b2f586d1e4ad222b1d06f3a32e4b30b9c2df
Binary files /dev/null and b/assets/webfonts/fa-regular-400.woff2 differ
diff --git a/assets/webfonts/fa-solid-900.ttf b/assets/webfonts/fa-solid-900.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..2b964362150d6e6ab303efbbc353f0b4c433fca7
Binary files /dev/null and b/assets/webfonts/fa-solid-900.ttf differ
diff --git a/assets/webfonts/fa-solid-900.woff2 b/assets/webfonts/fa-solid-900.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..021d33fb659a8ac7e7ac346e403c059d28c439ff
Binary files /dev/null and b/assets/webfonts/fa-solid-900.woff2 differ
diff --git a/assets/webfonts/fa-v4compatibility.ttf b/assets/webfonts/fa-v4compatibility.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..f07e670d5f8c997526bc6c111f29110954347585
Binary files /dev/null and b/assets/webfonts/fa-v4compatibility.ttf differ
diff --git a/assets/webfonts/fa-v4compatibility.woff2 b/assets/webfonts/fa-v4compatibility.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..6f96a1129451e9b2e8177c797313d2584ed09609
Binary files /dev/null and b/assets/webfonts/fa-v4compatibility.woff2 differ
diff --git a/assignments/accessibility.md b/assignments/accessibility.md
deleted file mode 100644
index 69630ce781f9f84a5a04346db6367370e91e3144..0000000000000000000000000000000000000000
--- a/assignments/accessibility.md
+++ /dev/null
@@ -1,232 +0,0 @@
----
-layout: assignment
-published: true
-
-title: Accessibility
-code: as3
-
-assigned: April 22, 2020
-due:
- - <strong>Due</strong> April 30, 2020, 10:00pm
- - <strong>Lock</strong> May 2, 2020, 10:00pm
-
-revised: 10:00 PM Tuesday, April 21st, 2020
-
-objective: Identify and repair app accessibility issues.
-
-android_goals:
-  - Basics of Android assistive tools
-hci_goals:
-  - Explore App accessibility
-  - Understanding the impact of different accessibility issues
-  - Simple repairs to accessibility issues
-  - Write up a report on accessiblity issues
----
-
-* TOC
-{:toc}
-
-This assignment has two parts that are inter-related. Part 1 of this assignment involves finding
-all the accessibility problems in the code base for our toy camera app, a  and documenting them,
-while in Part 2 of the assignment you will fix these problems. It will be important to iterate on this find/fix cycles as
-fixing one problem may uncover new ones. You will use a number of tools to find these issues,
-including but not limited to the Google Accessibility Scanner and TalkBack. It will be important
-for you to experience the app through the use of a screen reader to find all of the problems
-a user might encounter.
-
-# GitGrade links
-
-**Classroom** [Summary](https://gitgrade.cs.washington.edu/student/summary/8723)
-
-**Links:** [Accept the Assignment](https://gitgrade.cs.washington.edu/student/assignment/122) / [Turn-in the Assignment](https://gitgrade.cs.washington.edu/student/assignment/122/turnin)
-
-# Part 1
-
-Tasks:
-- Learn different categories of app accessibility issues
-- Identify accessibility issues in our example app
-- Write a detailed report as a communication tool to developers who need to make the app accessible
-
-Accessibility is an important part of any app. Whether you are developing a new app or adding features
-to an existing one, it is important to consider the accessibility of your app's components.
-
-For some background you will want to do the following:
-
-- Start by watching this [quick video](https://youtu.be/1by5J7c5Vz4) to learn how visually-impaired
-users interact with Android applications. The video also offers some tips on ensuring your app is
-compatible with assistive tools.
-- Next read the list of errors that are found by Google's accessibility Scanner which is
-show in Table 2 on the 8th page of the PDF (which is numbered page 9) of
-[Epidemiology as a Framework for Large-Scale Mobile Application Accessibility Assessment](https://xiaoyizhang.me/assets/Paper/ASSETS_2017_Epidemiology.pdf).
-- Finally, because it is important to write succinct and yet descriptive alt text (content descriptions), you
-should read about [proper alt text writing](https://webaim.org/techniques/alttext/).
-
-For example, consider this view of the Layout Inspector of the layout app that we recently completed.
-(You will not be using your layout code for this assignment, we are using it for illustrative
-purposes here.) The selected image in the upper left of the screen does not have
-`contentDescription` property. **Google's Accessibility Scanner** will classify this as
-"Item Label" error (defined in the paper above), which will also mean a screen reader cannot
-read the alternative text of the image to people with visual impairments.
-
-![Screenshot of an image without contentDescription property in layout editor](accessibility-img/1.png){:width="500px"}
-
-The goal of Part 1 of the assignment is to identify **at least 10** accessibility issues in the app
-you will be given, **at least one** can't be found with the Accessibility Scanner. All of
-the issues listed in the ASSETS/Epidemiology paper may NOT be represented in the app, but you should be aware
-that they could be found in other apps. For your reference, we identified at least 12 errors in the app.
-
-## Setup
-In order to proceed you will need to setup your device and your Android Studio IDE.
-
-### Adding Markdown Viewing in Android Studio
-You will be writing your report in "Markdown." Markdown is a a text markup language that
-allows for simple formatting using plain text files. We have provided you with a `Part1.md` starter
-file that is in the root directory of your the repository you received when you accessed the
-assignment.
-
-You can edit your markdown file in any text editor, including Android Studio. We recommend you install
-the [Markdown Navigator](https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced) to help
-you preview your edits. (Click on the pictures to see a larger version)
-
-[![Screenshot of the first step of installing the markdown navigator](accessibility-img/mdnavigator1.png){:width="250px"}](accessibility-img/mdnavigator1.png)
-[![Screenshot of the second step of installing the markdown navigator](accessibility-img/mdnavigator2.png){:width="250px"}](accessibility-img/mdnavigator2.png)
-[![Screenshot of the third step of installing the markdown navigator](accessibility-img/mdnavigator3.png){:width="250px"}](accessibility-img/mdnavigator3.png)
-
-Once you have the Markdown Navigator installed, open up `Part1.md` and click the button pointed to
-by the arrow in the following image to bring up the Markdown Preview pane.
-
-![Screenshot preview pane of the Markdown navigator](accessibility-img/mdnavigator4.png){:width="500px"}
-
-### Installing Accessibility Scanner
-
-You must first install the Accessibility scanner on your Android Device or in your Emulator using the
-Google Play store. IMPORTANT: The Pixel 2 XL Emulator does NOT have the Google Play store on it,
-so you have to start by installing the Pixel 2 or other Emulator where you can also install the Play Store
-using the *Tools-&gt;AVD Manager*. The best way to determine if the Emulator has the Play Store
-is to look for the icon under the Play Store column in the AVD Manager.
-
-![Screenshot of the AVD Manager with an emulator that has the play store and one that does not](accessibility-img/avd.png){:width="300px"}
-
-To create another emulator, press the *Create Virtual Device* button, then find an emulator that has
-the Play Store icon in the Play Store column. Click Next and follow the instructions for the rest of the installation.
-
-![Creating a new device with the play store using the AVD Manager ](accessibility-img/playstoreemulator.png){:width="500px"}
-
-Note that you will have to specifically choose this new emulator (as opposed to the one you were
-using before) when you are running your application on the emulator through Android Studio.
-
-To install the Accessibility Scanner, search for it in the Play Store and install it on your device or emulator.
-The installation process will be the same for a physical phone or the emulator equipt with the Play Store.
-Follow the instructions on the
-[Getting started with Google Accessibility Scanner](https://support.google.com/accessibility/android/answer/6376570?hl=en&ref_topic=6376582)
-page to get the scanner working on your device.
-
-Another option is to install the Android Accessibility Suite which contains both the Accessibility
-Scanner and TalkBack if it has not been installed before.
-
-### Installing TalkBack
-
-You will need to have a good understanding of how to set up and use
-[Talkback](https://support.google.com/accessibility/android/answer/6283677?hl=en) one
-of the assistive tools built-in to you Android.  You may want to try using
-talk back on another application before you use it on the app you are given for this assignment.
-
-
-### Other Tools
-
-Another built-in assistive tool is [Switch Access](https://support.google.com/accessibility/android/answer/6122836?hl=en),
-which you may choose to set up and use.
-
-## Writing the report.
-
-Use the Accessibility Scanner, Talkback, and perhaps other tools to detect defects in our toy camera app.
-The Accessibility Scanner is decent with suggested fixes to problems it finds, however, some solutions
-are not obvious for each screen element type, so you will have to do some research to
-find all of the attributes that help to make an application more accessible. It may also help
-to use other tools (such as the Layout Inspector in Android) to help you track down the location
-of the issue the Accessibility tools find.
-
-As you find issues in the app, write them up in your report. Your report structure will contain
-two sections, an Overview in which you will describe your experience using assistive tools while testing the
-accessibility of the app before and after fixing issues, and a "table" of issues you found
-and how you fixed them. The outline of this report is given to you in `Part1.md` which remember is
-in the root directory of your the repository you received when you accessed the
-assignment. To open this file you can either use the _File-&gt;Open_ menu item, or change the _Android_
-drop down above the `app` folder to say _Project_ and double click on `Part1.md` from there.
-
-
-![Viewing the project as an android project you can't see Part1.md](accessibility-img/androidview.png){:width="200px"} &nbsp; &nbsp; 
-![Viewing the project as just a project you can see Part1.md](accessibility-img/projectview.png){:width="200px"}
-
-
-For each issue you identify within the app, document the following details:
-- The XML id of the item that needs to be fixed. If there is no id you can describe it briefly (~3 words)
-- The issue type as drawn from the list in ASSETS/Epidemiology paper.
-- The fix should provide a brief description (1 sentence or so) of what you did. If the fix involves
-changing or adding alt text, you should include the alt text you added for each inaccessible UI element in your
-fix description.
-- The file or files in which you fixed this issue
-- The line number(s) where you fixed this issue
-
-An example issue is shown in the `Part1.md` file. *Please* retain the two spaces at the end
-of every line so the line breaks will be maintained
-([examples](https://gist.github.com/shaunlebron/746476e6e7a4d698b373)). This will help the staff
-in grading your assignment.
-
------- Sample Issue ------  
-*Id*: @+id/edit  
-*Issue*: Item Type Label contains unnecessary text  
-*Fix*: Remove the word "button" from the text description  
-*File*: string.xml  
-*Line number*: 11
-
-**Resources**
-
-- [Android Accessibility Overview](https://developer.android.com/guide/topics/ui/accessibility/)
-- [Android Accessibility Guides](https://developer.android.com/guide/topics/ui/accessibility/apps)
-- [Material Design: Assistive Technology](https://material.io/design/usability/accessibility.html#assistive-technology)
-
-
-# Part 2
-
-Tasks:
-
-- Repair accessibility issues you identified in part 1, including the sample issue
-
-For each issue that you identified in the app, please repair it by modifying code or XML layout file.
-You must also repair the sample issue that we have identified but not yet fixed in the code.
-For reference, in the sample solution we ran the app through the Accessibility Scanner and
-identified and fixed at least 12 issues (including the one we identified).
-
-For any repairs involving strings, please add a new entry for the fix into the strings.xml file,
-and then reference it (thereby retaining the old entry in the file). Recall that you can reference
-a string by changing the `contentDescription` property in the
-layout editor, or calling the equivalent method (`imageView.setContentDescription(...)`)
-
-All of these changes only require modifying existing XML attributes or adding new ones;
-or changing a line or two of code.
-
-# Turn-in
-
-## Submission Instructions
-
-You will turn in both Part 1 and Part 2 via GitGrade. The files you will need to include are:
-
-```
-- Part1.md
-- MainActivity.java
-- app_bar_main.xml
-- content_main.xml
-- nav_header_main.xml
-- strings.xml
-- colors.xml
-```
-
-## Grading (25pts)
-
-- Part 1
-  - Description of the experience using assistive tools to test the app (Accessibility Scanner, TalkBack etc.): 3 pts
-  - Correctly documents all 10 or more accessibility issues including location of the fix: 10 pts
-- Part 2
-  - Fixes the issues identified in part 1 by modifying / adding new attributes to the xml tags: 10 pts
-  - Updated content descriptions are correct per Webaim's guidelines: 2 pts
diff --git a/assignments/colorpicker-img/1.png b/assignments/colorpicker-img/1.png
deleted file mode 100644
index b34a0f5c049fd18795bbb93ab224100f1945d277..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/1.png and /dev/null differ
diff --git a/assignments/colorpicker-img/2.png b/assignments/colorpicker-img/2.png
deleted file mode 100644
index b5b03dcd14635f68272108dc4f05252c752a2946..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/2.png and /dev/null differ
diff --git a/assignments/colorpicker-img/Destroy_Activities.png b/assignments/colorpicker-img/Destroy_Activities.png
deleted file mode 100644
index d871eafc70fecd331b9554cfd7eab7dd6f6a8fed..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/Destroy_Activities.png and /dev/null differ
diff --git a/assignments/colorpicker-img/FSM.key b/assignments/colorpicker-img/FSM.key
deleted file mode 100755
index 381251d8e1e958bf5d29e5b7175be232ce7969a5..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/FSM.key and /dev/null differ
diff --git a/assignments/colorpicker-img/doorlocked.jpg b/assignments/colorpicker-img/doorlocked.jpg
deleted file mode 100644
index ef3df3e3168002966bde98ecce44e43ea12b7138..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/doorlocked.jpg and /dev/null differ
diff --git a/assignments/colorpicker-img/doorunlocked.jpg b/assignments/colorpicker-img/doorunlocked.jpg
deleted file mode 100644
index 26ef94f9ee783c460bcc1534003363465542af02..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/doorunlocked.jpg and /dev/null differ
diff --git a/assignments/colorpicker-img/fsm.png b/assignments/colorpicker-img/fsm.png
deleted file mode 100644
index e848395aea631596b14fbe7f51726da13aee70d4..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/fsm.png and /dev/null differ
diff --git a/assignments/colorpicker-img/logcat_diagram.png b/assignments/colorpicker-img/logcat_diagram.png
deleted file mode 100644
index e48b6b6f18bfac73a59b13a34f834aea1e689ec6..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/logcat_diagram.png and /dev/null differ
diff --git a/assignments/colorpicker-img/oven.mp4 b/assignments/colorpicker-img/oven.mp4
deleted file mode 100644
index 5eb6c0f8a58e9f9b9ec31158405d20d9be8eae97..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/oven.mp4 and /dev/null differ
diff --git a/assignments/colorpicker-img/thumb_diagrams.jpg b/assignments/colorpicker-img/thumb_diagrams.jpg
deleted file mode 100644
index d4ff332324ad8475585b2649b8916f7c47153056..0000000000000000000000000000000000000000
Binary files a/assignments/colorpicker-img/thumb_diagrams.jpg and /dev/null differ
diff --git a/assignments/colorpicker.md b/assignments/colorpicker.md
deleted file mode 100644
index 2dee3c91f2b25d3b9bdb9b77228686e8d0ad6198..0000000000000000000000000000000000000000
--- a/assignments/colorpicker.md
+++ /dev/null
@@ -1,530 +0,0 @@
----
-layout: assignment
-published: true
-
-title: Color Picker
-code: as4
-
-assigned: May 1st, 2020
-due:
- - <strong>Due</strong> May 11th, 2020, 10:00pm (including reflection)
- - <strong>Lock</strong> May 13th, 2020, 10:00pm
-revised: 11:00pm Thursday,  April 30th, 2020
-
-objective: Create an RGB color picker which lets you choose a color on a rainbow circle (color wheel).
-
-android_goals:
-  - Understand Android event handling APIs
-  - Handle touch input properly
-  - Understand app lifecycle
-  - Save app state in Bundle
-hci_goals:
-  - Create non-rectangle interactor
-  - Propositional Production System
-  - Event handlers and event bubbling
-  - Callbacks
----
-
-* TOC
-{:toc}
-
-# GitGrade links
-
-**Classroom** [Summary](https://gitgrade.cs.washington.edu/student/summary/8723)
-
-**ColorPicker:** [Accept the Assignment](https://gitgrade.cs.washington.edu/student/assignment/124) / [Turn-in the Assignment](https://gitgrade.cs.washington.edu/student/assignment/124/turnin)
-
-
-# Goal
-
-There are two parts to this assignment, creating an RGB color picker interactor which lets you choose a color on a rainbow circle (color wheel), then using it in an application.
-
-__Important definition__: The term `wheel` used throughout the spec refers to the dial **and** inner circle; it is the larger circle that contains all interface you will be drawing.
-
-The RGB color picker works as follows: There is a small white "thumb" that marks the color currently indicated on the dial (the outer rim of the color picker), and that indicated color is displayed in the inner circle of the color wheel. The user interacts with this thumb by pressing down on it, then rotating it around the wheel. While the thumb is moving it is 50% opaque, and it will return to 100% opaque as soon as the user lifts their pointer from the screen and a new color is selected.
-
-When the user has completed the selection of a new color using the RGB color picker interactor, the application will change the color displayed on the screen behind the wheel.
-
-A video of how this interactor works in the application can be found
-[here](https://courses.cs.washington.edu/courses/cse340/videos/colorpicker_su19.webm).
-
-
-You will play two developer roles in this assignment
-- You will be a __Component Developer__ as you implement the RBG Color Picker interactor.
-- You will be an __Interface Programmer__ as you use this new interactor in your App.
-
-## Component Developer Role
-Your primary goal in this assignment is to create
-`ColorPickerView.java`. This is your _custom interactor_ and it must
-be implemented so it can be used by any application. `ColorPickerView.java` inherits from
-`AbstractColorPickerView.java` which must remain **untouched**.
-
-Tasks for `ColorPickerView`
-
-- Handle different input events in `onTouchEvent`
-- Initialize properties during `onLayout`
-- Draw the rainbow colored wheel and thumb in `onDraw`
-- Save/restore view state locally
-
-## Interface Programmer Role
-
-You will also edit `MainActivity.java`. This is your
-_application_ which will _use_ your custom color picker interactor. `MainActivity`
-inherits from `AbstractMainActivity` which must remain **untouched**.
-
-Tasks for `MainActivity`
-
-- Register callbacks
-- Save application state in bundle
-- Restore activity state from bundle
-
-You will be turning in  `ColorPickerView.java` and `MainActivity.java` so make sure that any variables/fields you create/modify are in these files. **Do NOT modify any other files in this project.**
-
-<span style="color:red">Note: We will be asking you to re-use your color picker (`ColorPickerView`
-which inherits from `AbstractColorPickerView`) in a later assignment so it is important that you understand
-how the custom interactor communicates with an application.</span>
-
-# Getting Started
-
-You will be editing `ColorPickerView.java` and `MainActivity.java`. As such it is important to understand the inheritance chains of these two files, as you will be using **a lot** of variables and functions defined in parent classes.
-
-**Read the abstract base classes, including all of the comments in `AbstractColorPicker.java` and `AbstractMainActivity.java` before you begin**. Where applicable, you **must** use the inherited variables and functions (do not overload the inherited functions).
-
-The structure of the code is represented by the
-[Unified Modeling Language](https://en.wikipedia.org/wiki/Unified_Modeling_Language) (UML)
-diagram shown below. The symbols can be read as follows: + is a public field or method, #
-is protected, and - is private. Any method that is in _italics_ is an abstract method, meaning
-is must be overridden in the child class.
-
-<div class="mermaid">
-classDiagram
-  AppCompatActivity <|-- AbstractMainActivity
-  AbstractMainActivity <|-- MainActivity
-  AppCompatImageView <|-- AbstractColorPickerView
-  AbstractColorPickerView <|-- ColorPickerView
-  class AbstractMainActivity{
-    #ColorPicker mColorPicker
-    +colorToString()
-    #setStartingColor()*
-  }
-  class MainActivity{
-    -mColorView
-    -mLabelView
-    +onColorSelected()
-    #setStartingColor()
-    +onSaveInstanceState()
-    +onRestoreInstanceState()
-  }
-  class AbstractColorPickerView{
-    +DEFAULT_COLOR
-    +RADIUS_TO_THUMB_RATIO
-    #mCenterX
-    #mCenterY
-    #mRadius
-    #mState
-    -mColorChangeListeners
-    +setColor()*
-    +addColorChangeListener()
-    +removeColorChangeListener()
-    #invokeColorChangeListeners()
-    #essentialGeometry()*
-    #getTouchAngle()
-    +getColorFromAngle()
-  }
-  class ColorPickerView{
-    #mCurrentColor
-    +setColor()
-    -updateModel()
-    +onDraw()
-    +onLayout()
-    #essentialGeometry()
-    +onTouchEvent()
-    +getAngleFromColor()
-  }
-
-</div>
-
-
-_Related Readings_:
-It will be helpful to read
-[Android/Custom-Drawing](https://developer.android.com/training/custom-views/custom-drawing)
-and
-[Android/UI-Events](https://developer.android.com/guide/topics/ui/ui-events)
-to understand parts of the assignment that seem tricky.
-
-# Part 1: Creating your interactor
-
-Implementing your color picker interactor will require you to support input handling, maintaining and mutating state, and drawing to the screen in `ColorPickerView.java`.
-
-## Drawing
-
-Drawing is implemented in `ColorPickerView#onDraw(Canvas)`. You will need to draw the thumb and the color in the center of the circle. We provide a color
-dial in the drawable folder and it is already being drawn by `AbstractColorPickerView#onDraw(Canvas)`
-which is called because `ColorPickerView` inherits from `AbstractColorPickerView`.
-
-The height and width of the of the dial determined by the bounding box of the `ColorPickerView`. The
-the radius of the actual ColorPicker interactor is the half the smaller of the width or the height of that
-that bounding box.
-
-![Screenshot of color picker, original](colorpicker-img/1.png){:width="49%"}
-![Screenshot of color picker, after moving to a new color](colorpicker-img/2.png){:width="49%"}
-
-### Important Variables
-
-- Some parts of your drawing code will require you to know the size of the view you are drawing in.
-The protected variables `mRadius` (the radius of both dial and inner circle), `mCenterX`, and `mCenterY`
-in  `AbstractColorPickerView.java` must be calculated in your `onLayout` method.
-- The ColorPicker displays the last selected color on the wheel when it is made visible on the screen.
-The ColorPicker saves its internal state in the ColorPicker model which, for the purposes
-of this assignment, is stored in the protected `mCurrentColor` variable accessible through the
-public `setColor` method. The ColorPicker interactor will need to be redrawn when the model changes.
-
-_Related APIs_:
-[View#onLayout](<https://developer.android.com/reference/android/view/View.html#onLayout(boolean,%20int,%20int,%20int,%20int)>)
-
-### Thumb
-
-In the screenshots above there is a visible thumb (the white circle) that marks the selected color
-on the dial. The thumb is drawn in `ColorPickerView#onDraw(Canvas)`. It must move around as a user
-interacts with the color picker.
-
-The thumb must be constrained to move along a circular track that places it within the dial. It must move along that track even when the user is dragging their finger inside the inner circle.
-
-Visually, the thumb's radius is `0.085` times the outer-radius of the dial (center of circle to outside edge of color). This value is provided to you as a constant in `AbstractColorPickerView`. Positioning the thumb is similar to `AbstractColorPickerView#getTouchAngle(float, float)` but instead of finding the angle based on the thumb location, you're finding the thumb location based on the angle, additionally constraining the thumb to stay within the color band.
-
-The PPS specification (found below) uses a float [0,1] to represent alpha, but Paint expects an int
-[0, 255]. Be sure to make the correct conversion (multiply by 255, then cast the result to `int`).
-
-### Center Circle
-
-Inside the multi-color dial is a circle whose color is the same as the live selected color.
-It must be centered on the center of the wheel, and use up all available space up to the dial.
-The color of the inner circle, which represents the RGB Color Picker model, must update while you
-drag the thumb. In contrast, the colored box and text, which represent the application’s model
-(remember the Model View Controller (MVC)), must update only when the mouse is released.
-
-## Touch Input Events
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((Start))
-A -- "Press:insideWheel? A" --> I((Inside))
-I -- "Release:B" --> E[End]
-I -- "Drag:insideWheel? C" --> I
-I -- "Drag:outsideWheel? D" --> I
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class S invisible
-class A start
-class E finish
-class I normal
-
-</div>
-
-Where
-- A is updateModel();invalidate()
-- B is invokeColorChangeListeners();invalidate()
-- C is updateModel();invalidate()
-- D is doNothing()
-
-Note that the End state only exists to show the lifetime of a _single_ interaction. Because the user can interact with the color picker any number of times, we would actually return to the Start state when the thumb is released. For some examples of single interactions, see the images below.
-
-We'll handle touch input by implementing `ColorPickerView#onTouchEvent(MotionEvent)`. This is the event handler that will be called when a touch occurs in this view. Feedback is needed when the user is interacting with the color picker, so you will have to ensure that the view is _redrawn_. Recall that we want to use `invalidate()` to do this and even though `invalidate()` does not directly trigger redraws and may have no impact, you still do not want to call it more than needed. In other words, it is considered good code quality to only call `invalidate()` when necessary.
-In fact we **will be taking off points** for unnecessary `invalidate()` calls. Follow the PPS spec and don't call aything it doesn't specify. You should never need to call `onDraw()`.
-
-As you write the PPS, make sure to utilize proper coding style to ensure that the code is readable to someone not familiar with the project. For an example of how to translate PPS into code, see the [PPS page]({{site.baseurl}}/docs/pps).
-
-_Related APIs_:
-[View](https://developer.android.com/reference/android/view/View) (see documentation on Drawing)
-
-![Diagrams of single interactions](colorpicker-img/thumb_diagrams.jpg)
-
-### Transitioning out of the Start State
-
-As shown in the state diagram, when in the Start state (before interaction begins), we ignore any touches that are outside of the wheel. These events must be _rejected_ by your `ColorPickerView` so that other interactors can use them if they want. Specifically, views that may lie underneath our `ColorPickerView` must be able to react to events outside the wheel, but within the square of the `ColorPickerView`. Only transition out of the start state when the user presses on or inside the wheel. When you transition out of the start state, color is updated, thumb transparency is changed (alpha becomes `0.5f`), and thumb position is updated.
-
-The starter code already has some built-in functionality to help you test whether or not you are
-correctly rejecting input. When you click outside the wheel, there will be a Toast (a pop up message)
-that says "You have clicked outside the wheel!". If this message does not appear when you
-click outside the wheel, then you are not correctly rejecting input.
-
-### Transitions within the Inside State
-
-Once interaction with the wheel begins, you must only update the ColorPickerView's local model
-when the user is dragging their finger inside the wheel.
-
-- When a finger drags on screen inside the wheel, the thumb will follow the angle the finger is at,
-and the color of the center circle will update to reflect the change in the local model for the Color Picker.
-- When a finger drags on screen outside the wheel, the thumb will stay at the most recent angle
-within the wheel. If the finger re-enters the wheel at a different angle, the thumb must jump to
-that angle and the color within the wheel must display the corresponding color.
-
-Use the `x` and `y` coordinates of the touch event to calculate the angle (in radians) of the touch
-on the wheel with `AbstractColorPickerView#getTouchAngle(float, float)`. It is difficult to do this
-mapping in traditional RGB color space. The HSV color space discussed during class fits this task well.
-You can read more about the HSV color space [here](https://en.wikipedia.org/wiki/HSL_and_HSV). Since
-we're just adjusting color, we only want to modify hue while leaving saturation and value constant.
-You may see detailed instruction in code comments under `AbstractColorPickerView#getColorFromAngle(double)`,
- which we provide you. Use this implementation to guide your work on `ColorPickerView#getAngleFromColor(int)`, which does the opposite operation.
-
-Notice that our color dial is rotated `90°` from just the hue value converted to radians - our
-red color is at the top, but in the HSV model, the red color is to the right. This adjustment is
-applied in `AbstractColorPickerView#getColorFromAngle(double)`. You will also have to apply this
- when implementing `ColorPickerView#getAngleFromColor(int)`. For information about why colors are
- being stored as `int` values, see the [Misc.](#misc) section below.
-
-Here are some test values to help test your implementation of `ColorPickerView#getAngleFromColor(int)`:
-- angle: 2.5769272, color: -16774401 (blue)
-- angle: -1.5461564, color: -64000 (red)
-- angle: 0.42093232, color: -15073536 (green)
-
-### Transition to the end state.
-
-When the user finishes interacting with the wheel, you must update the UI to reflect the new selected color, by calling the `onColorSelected` method in the `ColorChangeListener` with our newly selected color. In addition, the thumb transparency must be reset to an alpha of `1f` (fully opaque).
-
-### Essential Geometry
-
-When a motion event occurs, we must change the coordinates into the form consumed by the state
-machine queries. The `essentialGeometry` method translates these coordinates into an ENUM which
-represents whether or not the motion event was inside of the dial. This is important because the
-state machine only relies on whether or not the motion event is within the color wheel and
-must not be interpreting "raw" coordinates.
-
-_Related APIs_:
-[MotionEvent](https://developer.android.com/reference/android/view/MotionEvent) / [Color](https://developer.android.com/reference/android/graphics/Color) / [ColorUtils](https://developer.android.com/reference/android/support/v4/graphics/ColorUtils) / [View#onTouchEvent](<https://developer.android.com/reference/android/view/View.html#onTouchEvent(android.view.MotionEvent)>) / [EssentialGeometry](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)
-
-# Part 2: Implementing the application layer
-
-Your application is to make use of your color picker. The application needs to be notified from the `ColorPickerView` when the color changes. In our case, it will use the information to display the newly chosen color in a rectangle at the bottom of the screen and update the application model, though other applications might do something different. Examples of other applications that use their own implementation of a color picker include Photoshop, MS Paint, etc.
-
-## Setting up the Application
-
-The code you will write for the application is in `MainActivity` which inherits from `AbstractMainActivity`. An important variable stored in `AbstractMainActivity` is the `ColorPickerView` named `colorPicker`.
-
-The application layer must set the default color of `colorPicker` using
-`MainActivity#setStartingColor(int)`. We provide this default as `AbstractColorPickerView.DEFAULT_VALUE`
-(it's red). `MainActivity#setStartingColor(int)` must also trigger `onColorSelected` to
-ensure that the default color value is shown on the screen.
-
-## Managing Application State with Listeners
-
-To find out about color changes, the application needs to register a callback by calling
-`AbstractColorPickerView.addColorListener(ColorChangeListener)`. This callback
-must update the application's `colorView` and `colorTextView` whenever `onColorSelected`
-is called to demonstrate that the application correctly retrieved a color from `colorPickerView`.
-This means you are **prohibited** from leveraging publicly accessible
-fields/functions on the color picker to observe the `ColorPickerView` state.
-
-As good practice, you should always unregister listeners when they are no longer relevant. This must
-done in `MainActivity.java#onDestroy()` which is called when the application is killed.
-
-You may notice that `AbstractColorPickerView.java` keeps a `List` of `ColorChangeListeners`. This allows for our interactor to be more flexible because it can register many listeners that will all be notified when a new color is selected. For more on custom listeners, see [CodePath's guide to creating custom listeners](https://guides.codepath.com/android/Creating-Custom-Listeners). For more information about Fragments, see the [Android Fragment API](https://developer.android.com/guide/components/fragments).
-
-# Part 3: Save and Restore Application Model using Bundle
-
-You are to also save application model (i.e. the current color as known by the application) in the
-`onSaveInstanceState` bundle object. When user switches focus to some other app, Android kills our Activity.
-We will use the bundle to get the saved state back.
-
-We want to manage the state at the application level (`MainActivity.java`) versus at the interactor level. Thus you will need to set the state of the color picker in the application layer when the bundle is loaded.
-
-Notice from the documentation that `onRestoreInstanceState` is called after `onCreate` if a bundle
-exists. This is where you will access the information we saved in `onSaveInstanceState` to restore
-the current color with the color we had before our Activity was killed.
-
-<span style="color:red">We will kill your application during our testing process to ensure the state
-is properly saved. To simulate our tests, you can use the adb to test killing it, or in your phone's Developer options set Apps -> Don't keep activity.</span>
-
-![Clicking 'Don't Keep Activites' Android Developer Settings, 50%](colorpicker-img/Destroy_Activities.png){:width="30%"}
-
-If you do not already have developer options enabled follow the guide [here.]({{site.baseurl}}/docs/dev_mode)
-
-
-
-## Wheel default state and bundle interaction
-
-The best way to test this functionality is to enable the setting referenced above, and then press
-home, then return to the app. The color that was selected when you killed the app should still be
-restored when the app is restarted. **Quitting the app from multitasking (i.e. when the app is open,
-click on the square) will destroy the bundle.** Steps to test this is working correctly are as follows:
-
-Using the bundle:
-
-1. User opens app for first time. The wheel is invisible and color in the box is red (the default).
-2. User clicks on box to show wheel and changes color to blue.
-3. User leaves app (via home button) while wheel is still visible.
-4. User returns to app. The color in the box is blue and the wheel is invisible.
-5. User clicks in the color box and the wheel becomes visible with blue as the selected color.
-
-No bundle exists when app is unloaded:
-
-1. User opens app for first time. The wheel is invisible and color in the box is red (the default).
-2. User clicks on box to show wheel and changes color to blue.
-3. User leaves app (via home button).
-4. User unloads the app completely from memory.  
-5. User returns to app. The color in the box is red and the wheel is not visible. Clicking
-on the color box brings up the Color Picker with red as the selected color.
-
-Note that you do not have to do anything to handle the logic for displaying the wheel.
-The wheel is invisible by default when the activity is created,
-and its visible/invisible state is NOT stored in the bundle.
-
-
-
-_Related APIs_:
-[Saving and Restoring State](https://developer.android.com/guide/components/activities/activity-lifecycle.html#saras)
-| [Android Developer Options](https://developer.android.com/studio/debug/dev-options) | [Explanations for how to use Bundle](https://stackoverflow.com/questions/6525698/how-to-use-onsavedinstancestate-example-please)
-
-# Part 4: Reflection
-
-For this part, you will submit your reflection on this assignment to Gradescope. Create a MS Word, Google or other type of document and copy the following questions (in italics below) into that document. Add your responses below each question. You can have more than one answer per page, but if you can, please try to avoid page breaks in the middle of a question. Insert page breaks between questions as needed.
-
-- _The ColorPicker app as it is written is not accessible._
-  - _Without actually running the
-Accessibility Scanner, describe at least two issues that you think you would find with that tool.
-Why would these issues be an impediment to some users? How would you fix them?_
-  - _After you responded to the above, run accessibility scanner. Were you surprised by any of
-  the results?_
-
-- _The GE Oven/Microwave combo has a REALLY annoying knob for changing the time on a timer. You can see
-a [video](colorpicker-img/oven.mp4) of how this works in action but the gist is this:_  
-  _1. Start: Timer mode has been selected and your cursor is on the Minutes/Seconds menu item_
-  _2. Press the rotating dial button (hopefully not rotating at the same time, which will switch you back to Hours/Minutes mode) to
-  switch to "change minutes" mode._  
-  _3. Rotate the dial clockwise to add a minute._  
-  _4. Rotate the dial counter clockwise to subtract a minute._  
-  _5. Press the button to switch to "change seconds" mode._  
-  _6. Rotate the dial clockwise to add a second._  
-  _7. Rotate the dial counter clockwise to subtract a second._  
-  _8. Press the button to "end" the setting and start the timer._  
-
-  _Draw the PPS for this interactor. To help you with this problem you can use the following:_
-
-  - _EssentialGeometry: Clockwise, Counterclockwise_
-  - _The following events: Press, Rotate_
-  - _And the following methods or actions: `initTimer()`, `subMinute()`, `addMinute()`
-   `switchToSeconds()`, `addSecond()`, `subSecond()`, `startTimer()`_
-
-- _On our side, we've learned a lot about ourselves by quickly trying to transition this course
-online and at a distance. What do you think you are learning about yourself and your study habits so far this quarter?"_
-
-
-
-
-# Debugging tips and tricks
-
-Logging output is especially useful for testing the functionality of sections of code such as `getAngleFromColor` and other methods. Much like `System.out.print` in Java, Android provides its own class for producing output: `Log`. We suggest that you use `Log.i` and create your own custom tag so that you can filter the output for the information you want. Below is an example of how to use the `Log.i` function.
-
-```java
-private static final String TAG = "ColorPicker MainActivity";
-
-Log.i(TAG, "Hello world!");
-```
-
-To make full use of Logcat, make sure to configure the priority level (in this case, the "i" in `Log.i` stands for "Info") and use the correct tag (in this case, "ColorPicker MainActivity"). It's also good to check that you have the correct device/emulator selected.
-
-__Note__: Remember to take your `Log.i` debugging calls out of your code before turning it in.
-
-![Logcat diagram](colorpicker-img/logcat_diagram.png)
-
-_Related APIs_:
-[Android Log.\*](https://developer.android.com/reference/android/util/Log.html) | [Using Logcat](https://developer.android.com/studio/debug/am-logcat)
-
-# Misc.
-
-
-This assignment does require doing some math, and you are welcome to use the Java Math functions.
-**Hint:** Remember that the `y` direction is positive pointing down the canvas, not pointing up
-like a traditional cartesian coordinate system. This may impact the
-values returned from trigonometric functions.
-
-_Related APIs_:
-[Java Math.\*](https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html)
-
-## Integer representations of RGB colors
-
-Colors on computer screens are often thought of as R, G, B, (and alpha) values ranging from 0 to 255, using
-hexidecimal representations (`#00` to `#FF`) of those numbers for each value. For example the
-hexidecimal representation of the color #FF0410 would be
-
-FF <- red value = 255 in decimal  
-04 <- green value = 4 in decimal  
-10 <- blue value  =  16 in decimal  
-
-But the real `int` representation of this RGB  value is
-
-`255 * 256 ^ 2 + 04 * 256 + 16 * 1` = 16712720.
-
-
-
-# Turn-in
-
-## Submission Instructions
-
-### Part 1-3:
-
-Remember to continually commit your changes to Gitlab (`git add`/`git commit`/`git push`), and then turn in your code using the GitGrade link at the top of this page.
-
-Note: we will ONLY be using your code in the following files:
-
-```
- - ColorPickerView.java
- - MainActivity.java
-```
-
-### Part 4:
-
-You are to turn in Part 4 to Gradescope.
-
-## Grading (40pts)
-
-### Code (31 pts)
-
-This code portion of this homework will be out of 31 points and will roughly (subject to small adjustments) be distributed as:
-
-- Code quality(4 pts)
-  - Code compiles and runs
-  - Does not re-write helper methods in stub code
-  - Does not duplicate inherited instance variables
-  - Utilizes callback and MVC correctly
-- Event Handling (`onTouchEvent`, etc) : (9 pts)
-  - Correctly determines essential geometry
-  - Implement PPS properly
-  - Implements circular interaction properly
-- Feedback (onDraw)  (6pts)
-- Responds to callback in Application (3 pts)
-- Layout Management (2 pts)
-- View Model Management (2 pts)
-- Correctly calls `invalidate` when `setColor` is called (1pt)
-- Correctly update model in the view whenever internal state changes (1 pt)
-- Application model management (2 pts)
-- Application/View Resilience (3 pts)
-
-### Reflection (9pts)
-
-For this part, you will submit your reflection on this assignment to Gradescope. Create a MS Word,
-Google or other type of document and copy the following questions (in italics below) into that document.
-Add your responses below each question. You can have more than one answer per page, but if you can,
-please try to avoid page breaks in the middle of a question. Insert page breaks between questions as needed.
-
-Each of the 3 reflection questions is worth 3 points. Remember that the grading for these reflection
-questions is based on the following rubric:
-
-- Student gives at least a minimum answer to all parts of the guiding question.
-- Clear/concise but descriptive examples are given throughout the response. An uninformed reader
-can create a mental picture of the situation being described. Abstract concepts are explained accurately.
-- Student elaborates on the significance and meaning of the examples; why they are important.
-- Occasionally a student will be given extra credit for an particularly insightful reflection.
-
-## IDE Errors/Warnings you can ignore
-
-<span style="color:red;">**NOTE:**</span> An error/warning that can be ignored for this assignment **cannot** be ignored for every assignment. Check IDE notices against specs on per assignment basis.
-
-- `onTouchEvent`
-  - Custom view ColorPickerView overrides `onTouchEvent` but not `performClick`
-- Anonymous Class Replaced with Lambda
-  - "anonymous new `AbstractColorPickerView.ColorListener()` can be replaced with lambda"
diff --git a/assignments/consent.md b/assignments/consent.md
deleted file mode 100644
index 0d0ed84f2eb04c86327323c99608f8790b9fb91b..0000000000000000000000000000000000000000
--- a/assignments/consent.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-layout: default
----
-
-# Consent Form for CSE340
-
-Contact information for person running study: _[Fill in]_
-
-# Introduction and Purpose of study (Beneficience)
-
-_[Fill in: Write 1-2 sentences about what this study is about]_
-
-# Requirements for participation (Respect for Persons)
-
-To participate in this study you must be _[Fill in: Requirements (only age:
-must be 18 or older)]_
-
-# Study procedures (Respect for Persons)
-You will complete a series of menu selections during this study. You
-will need to click on 108 menus to complete the session as
-mentioned above. You should expect this to take approximately _[Fill
-in: X Minutes]_
-
-_[Fill in: Tell the participant if they will be compensated or not]_
-
-# Voluntary nature of Study (Respect for Persons)
-Your participation is voluntary and you can stop at any time without
-penalty. Your decision not to participate will not have an impact on _[Fill
-in: What might be coercive to the participant]_
-
-# Benefits of Study (Beneficience)
-This study will not directly benefit you. However, it will help us to
-understand _[Fill in]_  
-
-# Contact (of IRB typically; Me in this case)
-If you have any concerns about this study, you can reach out to the
-Professor in charge, {{site.author.name}}, bricker [at] uw.edu
-
-# Written Consent
-
-To affirm your consent to participate in this study, please fill out the following form
-[https://bit.ly/20sp-Menus-Consent](https://bit.ly/20sp-Menus-Consent).
diff --git a/assignments/contextaware.md b/assignments/contextaware.md
deleted file mode 100644
index 49ff953a608a897aa9601c6154c890a3a723d427..0000000000000000000000000000000000000000
--- a/assignments/contextaware.md
+++ /dev/null
@@ -1,161 +0,0 @@
----
-layout: assignment
-title: Context Awareness
-code: A3
-published: draft
-assigned: <!-- Tuesday, May 28, 2019 -->
-due: <!-- 11:59 PM Friday, June 7, 2019 -->
-revised: <!-- 9 pm Friday, June 8, 2019 -->
-
-objective: Build a context aware application.
-
-hci_goals:
-  - Create an app that uses implicit data
-  - Make a usable app as defined by the <a href="https://www.usability.gov/how-to-and-tools/methods/system-usability-scale.html">SUS
-    </a> when evaluated by a TA 
-  - Make an accessible app
----
-
-- TOC
-{:toc}
-
-# Task for Assignment
-
-You have learned many things this quarter. Now is your chance to use
-  them to create something larger than any one assignment we did. In
-  this assignment, that could include an existing interface but must
-  *also* use context somehow.
-
-## Kinds of Context
-
-There are 3 kinds of context aware applications, which function in the
-following ways:
-- Attach context information for retrieval later (e.g., Leave a note
-  while at CSE; when come back to CSE the day after, user can see the
-  note again) 
-- Automatically execute things (e.g., Automatically suggest a new
-  navigation route when a driver exits from a wrong ramp.) 
-- Present info based on context (e.g., Send a notification of bus
-  schedule when user is at bus station) 
-
-You may build an utility app or game, and you should use at least two
-fences (**one of them must be location**). 
-
-If you want to start with an existing app, you could think about how
-  to extend the drawing app to be context aware. For example, you
-  could support loading of drawings based on location (you could store
-  them in the bundle and only provide access to drawings that were
-  created in the current location).  Or, you could
-  automatically undo the last action whenever the user runs, and redo
-  it when they walk and do nothing when they hold still. Finally, the
-  colors available could change depending upon what location you are
-  in (maybe purple is only available on the UW campus!). 
-
-# Important Assessment goals 
-We will be looking for whether you app is accessible and
-    usable. Although there isn't a simple scale available for
-    assessing context-aware applications, we have modified the
-     system usability scale (
-    [SUS](https://www.usability.gov/how-to-and-tools/methods/system-usability-scale.html))
-    as follows and will use it to assess your app (each rated from
-    Strongly Agree to Strongly Disagree on a 5 point scale)
-	
-1) I think that I would like to keep using this app.
-
-2) I found the system unnecessarily complex.
-
-3) I thought the system was easy to use.
-
-4) I found the use of implicit and explicit data in this app to be well integrated.
-
-5) I thought there was too much inconsistency in this system.
-
-6) I would imagine that most people would learn to use this system very quickly.
-
-7) I found the system very cumbersome to use.
-
-8) I felt very confident using the system.
-
-# Group Project
-This is a **group project**. We will assign you to groups to make sure
-every group has an android phone. 
-
-We will also assess the group experience as part of the grade.  This
-will be based on a survey at the end asking you to describe your
-contributions, your group members' contributions and mention any
-issues. We expect everyone to get full credit for this point, but will
-be using this to check for any problems.
-
-# Video
-The video for this project should be about 2 minutes long (+/- 30
-secs). It can be made with slides/photos + video clips for the
-visuals, and you can either use text (shown in the video) or spoken
-audio to provide the information listed below. It should
-have the following structure:
-
-## Opening slide
-Should use text, not voiceover for this.
-
-Title for the project 
-Names of team members
-
-## Story
-Brief (30 second) introduction to what you created. Should cover the
-following
-- What is the need (e.g. "Remembering not to be late for class")
-- Why is this hard (e.g. "I tend to sleep late")
-- What is the solution (e.g. "Calculate distance to class an hour
-  before class starts and set an alarm to go off with enough time to
-  walk there")
-  
-## Demonstration
-Pick 1-3 use scenarios and show clips of someone using the application
-with explanations
-
-## Credits
-End with credits saying who did what in the project
-
-# Turn-in
-Turn in your code, an apk file and a video.
-
-This video will serve as the demonstration
-for the modified SUS assessment. You can use captions or voice-over to
-explain your application. 
-
-## Submission Instructions
-
-You submit this assignment <a href="https://canvas.uw.edu/courses/1317447/assignments/4723261">on canvas</a>:
-
-- Files to turn in:
-  - `src.zip`: a ZIP file containing your source
-  - `video.mp4`: your video (other filetypes also work) unless using a
-    video hosting website such as YouTube
-  - `context.apk`: Your apk 
-- Then, make a comment on your submission with:
-  - A link to your repository. Make sure that we have access to it by
-    giving access to the `cse340` if visible to you, otherwise `rfrowe`
-  - Brief notes on anything you wish to tell us about your assignment
-    - These will be visible to all group members
-  - Link to your hosted video (unless you turned in a video file)
-
-- **In Addition**: *every* member of your group should fill
-out [this group participation survey](https://forms.gle/79xCgpa99nBXbq7W6)
-
-## Grading (5pts)
-
-- Part 1: App (3 pts)
-  - Use location and another sensor: 1pt
-  - App is context-aware: 1pt
-  - App is accessible: 1 pt
-  - You score well on the modified
-    [SUS](https://www.usability.gov/how-to-and-tools/methods/system-usability-scale.html)
-    when evaluated by a TA 
-- Group participation: 1pt 
-
-In peer grading survey,
-- We will ask what type of context is used
-- Ask if the app is enjoyable, in a Likert scale
-- Prompt to write a paragraph feedback
-
-Late policy: Since context uses half days, all group members must have
-at least 1/2 day left to get a free late day 
diff --git a/assignments/doodle-img/add_image_sample.png b/assignments/doodle-img/add_image_sample.png
deleted file mode 100644
index ac732a5dc033dce73e3c17cfaa1396f84a380b4c..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/add_image_sample.png and /dev/null differ
diff --git a/assignments/doodle-img/add_line_sample.png b/assignments/doodle-img/add_line_sample.png
deleted file mode 100644
index 3c515959519b0ea01cc4f36b5cdacfd81ab5017a..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/add_line_sample.png and /dev/null differ
diff --git a/assignments/doodle-img/add_text_sample.png b/assignments/doodle-img/add_text_sample.png
deleted file mode 100644
index 3d242f3fe22046bad75bd237d6b228deceddab85..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/add_text_sample.png and /dev/null differ
diff --git a/assignments/doodle-img/csverror.gif b/assignments/doodle-img/csverror.gif
deleted file mode 100644
index b524ecaa626a2a5dba2d6492b58d5827f5645a43..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/csverror.gif and /dev/null differ
diff --git a/assignments/doodle-img/part1playback.gif b/assignments/doodle-img/part1playback.gif
deleted file mode 100644
index cf04eb5b392191c528185cc7ffa23f44bff55e9f..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/part1playback.gif and /dev/null differ
diff --git a/assignments/doodle-img/part1playback.webm b/assignments/doodle-img/part1playback.webm
deleted file mode 100644
index e5b6217a364e95ad4677b4b74307eac326ace719..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/part1playback.webm and /dev/null differ
diff --git a/assignments/doodle-img/recordingvideo.mp4 b/assignments/doodle-img/recordingvideo.mp4
deleted file mode 100644
index 38a4a5688d46aa458f77a06817ddc43167321d99..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/recordingvideo.mp4 and /dev/null differ
diff --git a/assignments/doodle-img/samplevideo.webm b/assignments/doodle-img/samplevideo.webm
deleted file mode 100644
index efe69dd84426427fdfa60d21a499f9a722d02e2b..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/samplevideo.webm and /dev/null differ
diff --git a/assignments/doodle-img/screenshot.jpeg b/assignments/doodle-img/screenshot.jpeg
deleted file mode 100644
index 943ec73e9a63ddcfba41f691fe0fd50f07d053f9..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/screenshot.jpeg and /dev/null differ
diff --git a/assignments/doodle-img/screenshot.png b/assignments/doodle-img/screenshot.png
deleted file mode 100644
index 8d809763b1a6f2c53c5d6f7a33ec6cc08c8f346e..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/screenshot.png and /dev/null differ
diff --git a/assignments/doodle-img/screenshot_no_animation.png b/assignments/doodle-img/screenshot_no_animation.png
deleted file mode 100644
index 8d809763b1a6f2c53c5d6f7a33ec6cc08c8f346e..0000000000000000000000000000000000000000
Binary files a/assignments/doodle-img/screenshot_no_animation.png and /dev/null differ
diff --git a/assignments/doodle.md b/assignments/doodle.md
deleted file mode 100644
index fed97d397f1399185972542b5379502c7ab6a0aa..0000000000000000000000000000000000000000
--- a/assignments/doodle.md
+++ /dev/null
@@ -1,494 +0,0 @@
-
----
-layout: assignment
-published: true
-
-title: Doodle
-code: AS1
-
-assigned: Wednesday, April 1, 2020
-due:
-- <strong>Code</strong><br>
-  Due 10:00pm, Thursday, April 9, 2020<br>
-  Lock 10:00pm Saturday, April 11, 2020
-- <strong>Peer evaluation</strong><br>
-  Due 10:00PM Date
-- <strong>Reflection</strong><br>
-  Due 10:00PM 11-Apr, 2021<br>
-  Lock 10:00PM 12-Apr, 2021<br>
-revised: March 31, 2021
-
-objective: Create an Android app that draws a doodle consisting of a text, a line, and a set of images on the main canvas.
-
-hci_goals:
-  - Use abstractions to draw on screen
-  - Create animations
-  - Use coordinate transformation
-  - Try to create something appealing
-android_goals:
-  - Get familiar with Android Studio
-  - Understand XML and View
-  - Load image and drawable resources
-  - Learn Activity Lifecycle
----
-
-## GitGrade Turn-in links
-
-- [Accept the Assignment](https://gitgrade.cs.washington.edu/student/assignment/116)
-- [Turn-in the Assignment](https://gitgrade.cs.washington.edu/student/assignment/116/turnin)
-- [Review your Submissions](https://gitgrade.cs.washington.edu/student/summary/8723)
-
-# Assignment Description
-
-For this assignment, you will be creating an activity class which will allow you to create
-"Doodles" consisting of images, lines, and text.
-
-This assignment will take about 6 - 8 hours to complete. You should expect this amount of workload
-on most assignments this quarter, so make sure to build good habits when completing it.
-
-If you find yourself taking additional time on this submission, we strongly suggest that you
-get in touch with the course staff on Ed or in person.
-
-The assignment is broken into four parts
-- Part 1: Demonstrate that you can build an app in Android studio that includes images, text, lines and an animation.
-- Part 2: Create an interesting and creative Doodle of your own.
-- Part 3: Review three of your peers Doodles.
-- Part 4: Reflect on what you learned in the assignment and from the peer reviews you receive.
-
-* TOC
-{:toc}
-
-
-# Part 1: Learning by Doing
-
-**Tasks**:
-
-* Get your development environment ready
-  * Download and install Android development environment and git if you do not already have it
-  * Accept the Doodle assignment from [Gitgrade](https://gitgrade.cs.washington.edu/student/assignment/116)
-  * Successfully clone our starter code to your computer
-* Open our skeleton code in Android Studio, read through and understand it
-* Implement three methods: `addImage`, `addText`, `addLine`
-* Call the methods you implemented and compare your app screen with our screenshot
-* Animate `UW` so it slides from left to right when the app opens.
-
-## Prepping your development environment
-
-Instructions for downloading and installing the Android development environment are on our
-[schedule](../schedule) page and have been sent out through our Ed discussion platform.
-Please come to our first section or office hours if you are having any trouble with your machine set up.
-
-Use GitGrade to accept the assignment and receive the starter code. See the
-[instructions](../docs/gitgrade) for more details.  
-
-## Understanding the starter code
-
-We have provided you with the shell of an application which has the following class structure.
-
-<div class="mermaid" style="width:100%;">
-classDiagram
-  AppCompatActivity --> TabActivity
-  TabActivity --> Doodler
-  Doodler --> Part1
-  Part1 --> Part1Activity
-  Part1 --> Part2Activity
-
-  View --> ImageView
-  View --> TextView
-  View --> LineView
-
-  class Doodler {
-    &lt;&lt;abstract&gt;&gt;
-    +addImage()
-    +addText()
-    +addLine()
-    +doodle()
-  }
-  class Part1 {
-    +addImage()
-    +addText()
-    +addLine()
-  }
-  class LineView {
-    - endPoint
-    - brush
-  }
-
-  class Part1Activity {
-    +doodle()
-  }
-
-  class Part2Activity {
-    +doodle()
-  }
-
-</div>
-
-
-`AppCompatActivity` is an Android class that we subclassed in `TabActivity` so we can switch back and
-forth between your Part 1 and Part 2 code using the blue navigation bar at the bottom of the screen.
-You should not edit this part of the code but if you are curious, this tabbing functionality is
-controlled by the code in the `Part1Activity#onCreate(Bundle)` and `Part2Activity#onCreate(Bundle)` methods.
-We are using a View called BottomNavigationView that gives the functionality of a navigation bar -
-the switch statement in each of the `onCreate` methods tells the program when to show which activity.
-
-**Note:** The notation such as `Part1Activity#onCreate(Bundle)` is a common shortcut to demonstrate a specific
-method in a specific class (here the `onCreate` method which takes a `Bundle` as parameter
-in the `Part1Activity` class).
-
-
-## Your Tasks...
-
-This task involves implementing three methods in `Part1.java`. Each method is named here but
-detailed doc comments can be found in `Part1`'s superclass, `Doodler`, which also defines some
-nice helper methods. It also defines the `onCreate` behavior of the Activity which calls the
-method `Doodler#doodle(FrameLayout)`.
-
-In `Part1`, you'll find missing implementations for three methods: `addImage`, `addText`, and `addLine`.
-
-Subclasses of `Part1` will have access to these methods once they are implemented. Take a look at
-an example of this in `Part1Activity`. It extends `Part1` and uses the three methods to
-draw the following image on the screen:
-
-![A screenshot with a heart on it made up of smaller pictures. There's an "I" in the upper left and a "UW" in the middle left](doodle-img/screenshot_no_animation.png){:width="25%"}
-
-You'll notice in `doodle` in `Part1` that we use `scaleX` and `scaleY` around our coordinates
-(and size for images). These allow us to ensure the doodle still looks good on smaller screen sizes.
-**If you use _any_ pixel coordinates in your solutions, remember to wrap them in these scaling methods**.
-These will scale coordinates from the Pixel 2 XL to the dimensions of your device's screen.
-We'd recommend that you use a Pixel 2 XL emulator to compare the finished doodle against our
-screenshot to be sure you're implementing everything right.
-
-### Specification for addImage
-
-```java
-ImageView addImage(FrameLayout doodleView, String imageName, float x, float y, int size);
-```
-
-Most of this method is implemented for you. Please read through it to understand how it works,
-then try to set the size and location of ImageView added in this method. Critically, the images are
-going to be squished into a square, so only one `size` parameter is given.
-
-In order to implement this correctly you need to properly position the bounding box of the view:
-the `x` and `y` location relative to the parents are passed in as parameters and the `size` parameter
-is used for both the width and height. Setting the width and height will be done using the  
-`getLayoutParams()` and `setLayoutParams()`.
-
-If you implement it correctly, you'll see the image below if you run:
-
-```java
-addImage(doodleView, "food_3", scaleX(300), scaleY(300), scaleX(300));
-```
-
-![An image of a sushi bowl in the middle of the screen.](doodle-img/add_image_sample.png){:width="25%"}
-
-
-Remember that this is covered in section (😉).
-
-*Related APIs*:
-[ImageView](https://developer.android.com/reference/android/widget/ImageView.html)
-
-### Specification for addText
-
-```java
-TextView addText(FrameLayout doodleView, String text, float x, float y, int fontSize, int color);
-```
-This does not need to have it's bounding box adjusted.
-
-You may find the comments and the implementation of `addImage` useful. Make sure you are not
-editing the `xml`, `addText` is an abstracted function for adding text to a canvas, not
-specific to the contents in Part1. The font-family is the default one, no need to do anything
-special here.
-
-If you implement it correctly, you'll see the image below if you run:
-
-```java
-addText(doodleView, "CSE340", scaleX(550), scaleY(200), 60, Color.rgb(51,0,111));
-```
-
-![A purple text "CSE340" shows at the top right of the screenshot.](doodle-img/add_text_sample.png){:width="25%"}
-
-*Related APIs*: [TextView](https://developer.android.com/reference/android/widget/TextView.html)
-
-### Specification for addLine
-
-```java
-LineView addLine(FrameLayout doodleView, float startX, float startY, float endX, float endY,
-                int lineWidth, int color);
-```
-
-There are several ways to draw a line. The Android Code snippets blog has
-[a good example](https://android--code.blogspot.com/2015/11/android-how-to-draw-line-on-canvas.html).
-
-For this method, you will be using a class called `LineView` whose job is to draw a line onto the
-canvas. Parameters passed into `addLine` should also be passed into the `LineView` constructor to create a line
-of the appropriate color. You will be implementing both the constructor and `onDraw` methods in `LineView`.
-To this end, we have provided some blank stub code for you to
-fill in. Each `LineView` should draw a single line onto the canvas.
-
-By default, the size of the `LineView` will start out as the size of it's parent, i.e. the Canvas.
-In order to implement `addLine` correctly you need to adjust the size of this view (the bounding box)
-to be _ONLY_ from the from `startx`, `starty`, to `endx` and `endy`, and ensure that it is correctly
-located at `startx` `starty`. To do this you will use the method we discussed in
-class (`getLayoutParams()` and `setLayoutParams()` and `setX()` `setY()`).
-
-If you implement it correctly, you'll see the image below if you run:
-
-```java
-addLine(doodleView, scaleX(100), scaleY(250), scaleX(700), scaleY(1200), 15, Color.rgb(200,0,0));
-addLine(doodleView, scaleX(400), scaleY(1500), scaleX(250), scaleY(100), 20, Color.rgb(0,0,255));
-```
-
-![A red line starts from top left to the center of the screenshot. A blue line also is present](doodle-img/add_line_sample.png){:width="25%"}
-
-**Updated Note for 2020:** You only have to handle lines that have a negative, 0, or infinite slope. In other words,
-you do not need to handle a line that draws from the lower left to upper right OR the upper right to the
-lower left.
-
-### Animating Text
-
-Once you've implemented the three methods defined above, your doodle should match. For the last part,
- you will need to figure out how to animate text. In `Part1Activity#doodle(FrameLayout)`,
- use animations to move the `TextView` variable `uw` from `(50f, 1650f)` to `(1050f, 1650f)`. Remember to apply
- `scaleX` and `scaleY` to these animations. The animation should last `1000ms` (milliseconds not seconds).
-
-Once you've finished your animation, your doodle should match this screenshot:
-
-![A screenshot with a heart on it made up of smaller pictures. There's an "I" in the upper left and a "UW" in the middle right](doodle-img/screenshot.png){:width="25%"}
-
-A gif  of this animation is shown below but you can also see a higher resolution
-[.webm version](doodle-img/part1playback.webm) of this file as well.
-
-![An animation with a heart on it made up of smaller pictures. There's an "I" in the upper left and a "UW" in the middle left](doodle-img/part1playback.gif){:width="25%"}
-
-*Related APIs* and documentation:
-
-* [ObjectAnimator](https://developer.android.com/reference/android/animation/ObjectAnimator)
-* A beginners guide to implement Android Animations —
-[Part 1](https://medium.com/@shubham08gupta/a-beginners-guide-to-implement-android-animations-part-1-2-part-series-b5fce1fc85) (2 part series)
-
-
-
-### Important note for Windows Users
-
-In the past we have had issues with the app crashing because of the
-line endings in the `.csv` file on Windows machines. When you
-clone the repository onto your Windows machine, all the line endings are automatically converted to
-carriage returns (`“\r\n”`) instead of the usual new line character (`“\n”`). This will prevent the
-`.csv` from being parsed correctly due to the regular expression (regex) we use. There are 2 ways to fix this:
-
-- Changing the line endings to “LF” in the bottom right hand corner of Android Studio
-(should initially say “CRLF”). See this animated [.gif](doodle-img/csverror.gif) for more details.
-- Replacing the `scan.useDelimiter(“[\n]”)` line in `Doodler.java` with
-`scan.useDelimiter("[,]|\\r\\n|[\\n\\r\\u2028\\u2029\\u0085]")`
-
-
-# Part 2: Custom Doodle
-
-***
-
-**Tasks**:
-
-* Design a beautiful doodle of your own.
-* Implement your design in Android.
-* Create a video of your Animation
-
-This is where your creativity comes into play. We've created a blank slate for you in `Part2Activity`.
-In here you must use all three methods implemented in [Part 1](#part-1-learning-by-doing) to draw your own doodle,
-and your doodle should have an animation incorporated into it. You are also
-welcome to implement new methods in `Part2Activity` to make a more creative and beautiful doodle.
-
-To start you must spend 5-15 minutes sketching out your idea. Here you should you think about how
-to incorporate lines, text, and images, and how these will be moved around the screen. Storyboarding
-is a good way to sketch out how this animation will progress. For more information about
-[storyboarding](https://en.wikipedia.org/wiki/Storyboard)
-watch at least the first 1:30 of this [video](https://www.youtube.com/watch?v=m2JJxRlxV2s). This storyboard
-does not have to be very complex - even 2-3 frames will give you an idea of how to progress. **This
-storyboard will be turned in as part of your reflection.**
-
-To ensure your peer reviewers see your Custom Doodle once you've completed it, take a video of the
-running doodle to submit through
-[this web form](https://docs.google.com/forms/d/e/1FAIpQLSd8sN1aB7JZIS_POZWVdtTsL7e0ZVGkjS_WBINo_cKLv6OH_w/viewform).
-
-* To see how to capture a your running animation on the emulator,  
-watch this [video](doodle-img/recordingvideo.mp4).
-* To capture your doodle on your phone
-(tethered to Android Studio), do [this](https://developer.android.com/studio/debug/am-video), but you
-have to put your phone into [Developer mode](https://developer.android.com/studio/debug/dev-options) first.
-
-
-**Tips**:
-
-* Aim for complexity similar to [Part 1](#part-1-learning-by-doing) (images, text, and shapes) though you don't need
-to use as many images. Try to be creative - your work will be evaluated by your peers.
-* You may use the attractive home-cooked food images ([photo credit](https://www.XiaoyiZhang.me))
-we include in `res/drawable` or use your own images.
-* If your animation is  slow, laggy, or not visibly showing (particularly ) on the emulator), try the following
-  * Reduce the number of images you put on canvas or reduce the file size of images
-  (e.g., convert png to jpg, reduce resolution of image file).
-  * Check the duration of the animation. Recall that the parameter to the method if in milliseconds, not
-  seconds. It may be worth inflating the number you pass in during testing.
-  * Ensure that your animation `propertyName` is set correctly for your intended animation
-  * Ensure that your animation starts and ends in different locations if necessary (translating in place is not visibly discernible)
-  * Recall that `Path` and `onFloat` take absolute coordinates unless otherwise specified
-  * Ensure that animations have not been turned off in the settings app of the phone/emulator
-* Recall that "Child views are drawn in a stack, with the most recently added child on top."
-(from the [FrameLayout](https://developer.android.com/reference/android/widget/FrameLayout) documentation).
-You can add a child at a specific index in the child list,
-see the documentation of the [ViewGroup](https://developer.android.com/reference/android/view/ViewGroup)
-documentation for more about how to add and remove children.
-* You can switch between the activities by using the navigation bar at the bottom of the screen.
-* **Make sure that your doodle depends on _nothing_ outside of the files described in [Turn-in](#turn-in).**
-
-
-*Related APIs*:
-[Android Animation](https://developer.android.com/training/animation/reposition-view) /
-[View Animation](https://developer.android.com/guide/topics/graphics/view-animation.html) /
-[Property Animation](https://developer.android.com/guide/topics/graphics/prop-animation.html) /
-[Vogella Tutorials - Android Animation](http://www.vogella.com/tutorials/AndroidAnimation/article.html)
-
-## Commenting your code
-
-Most of the starter code has been fairly well commented for you. However there are some places you
-should add comments as you are completing your solution:
-1.  If you have any significantly complicated code for your custom doodle, add comments that might
-help your TA effectively grade your awesome work!
-2.  If you received significant help from a source on any part of your code, be sure to
-add a comment referencing their help.  See the
-[Collaboration Policies](../academic-conduct#collaboration-policies)
-portion of our syllabus for more details.
-3.  If you add and use an image that requires copyright, you may add the attribution in your
-source code where you add the image to the screen. See the
-[Application Content](../academic-conduct#application-content)
-portion of our syllabus for more details.
-
-# Part 3: Peer Review
-
-The Custom Doodle will be peer reviewed as part of the grading process. We will use these
-peer reviews to ensure that you have implemented all of the parts required for [Part 2](#part-2-custom-doodle)
-
-Peer grading will take place once everyone has turned in their assignments. You will receive an
-email with links to three other students' `.apk` files (and associated videos) and a link to a form to fill
-out for each student you have been assigned to peer grade. You will load these files into the
-emulator via Android Studio or onto a physical phone, view and review their
-custom doodles for Part 2, then fill out the survey to give them your feedback. **Note:** you *must*
-evaluate the a given doodle based on the `.apk`, using the video only as a backup, for instance, if
-the animation does not run on your emulator or phone when you load it.
-
-Additionally, you will have a chance to nominate the most creative doodles! The winners will be
-shown off in class later this term.
-
-# Part 4: Reflection
-
-Each assignment this quarter will have a reflection component as it is a vital part of your
-work as a Programmer, Computer Scientist, and/or Engineer.  Your reflections do not have to be long
-(please no more than a paragraph or two in length). Details on what a well
-written reflection includes can be found [here](reflection). You will be graded on your answers to
-these reflection questions based on the following
-
-* Student gives at least a minimum answer to all parts of the guiding question.
-* Clear/concise but descriptive examples are given throughout the response. An uninformed
-reader can create a mental picture of the situation being described. Abstract concepts are explained accurately.
-* Student elaborates on the significance and meaning of the examples; why they are important.
-* Occasionally a student will be given extra credit for an particularly insightful reflection.  
-
-Create a MS Word, Google or other type of document and copy the following questions (in italics below) into
-that document. Add your your responses below each question. You can have
-more than one answer per page, but if you can, please try to avoid page breaks in the middle of
-a question. Insert page breaks between questions as needed.
-
-You will need to submit your write up as a PDF file. If you are new to Gradescope, see this
-[document](https://gradescope-static-assets.s3-us-west-2.amazonaws.com/help/submitting_hw_guide.pdf)
-for instructions on how to scan and submit hand-written solutions.
-
-Gradescope accounts will be created on the first (or second) day of the quarter for all
-registered students. You will receive an email message from Gradescope with a link that you can
-use to create an account and submit your solution. Your Gradescope username will be your UW
-email address. If you are not registered for the course before the assignment is due, please
-email the instructor with your name, your UW ID number, and your
-UW email address (uwnetid@uw.edu) so we can set up a Gradescope account for you.
-
-For this assignment, your reflection should cover the following:
-
-* _Include the sketches and storyboard you made as part of your design work for [Part 2](#part-2-custom-doodle) and
-a screen capture of your beautiful Doodle._
-
-* _In looking at your design sketches from [Part 2](#part-2-custom-doodle), what changed when you did your
-actual implementation? Why did you make those changes from your original design vision?_
-
-* _Why is be better to animate a `View`, rather than invalidate/redraw its contents?_
-
-* _At the moment, other than the bottomNavigationBar, our application does not respond to the user at all.
-Think of at least two ways that you would go about adding interactivity to this application._
-
-* _What did you learn from reading the peer evaluation about the user experience of your doodle?_
-
-# Turn-in
-
-## Part 1 and Part 2: Code
-
-You will turn in the following files on GitGrade [here](https://gitgrade.cs.washington.edu/student/assignment/116/turnin).
-
-Make sure you only edited the following files for turn in:
-
-```txt
-─ Part1.java
-- LineView.java
-─ Part1Activity.java
-─ Part2Activity.java
-- part2.csv (optional)
-```
-
-Do not edit any of the other files with one exception: if you are on a Windows machine and need
-to modify the `scan.useDelimiter(“[\n]”)` call in `Doodler#addAllImagesFromData(FrameLayout)`.
-
-If you use your own images in [Part 2](#part-2-custom-doodle), please make sure to add and commit them to
-your repository in the `res/drawable` directory. If your images are not there, your custom doodle
-will not work for others and you will NOT get credit for the work you did.
-
-If you're positioning a large number of images for [Part 2](#part-2-custom-doodle), it is best to use a
-CSV similar to `data.csv` which is used for the heart in [Part 1](#part-1-learning-by-doing). Include this as
-`part2.csv` if necessary. Remember, the CSV coordinates are on a Pixel 2 XL and scaled to the
-current screen in `Doodler#addAllImagesFromData(FrameLayout)`.
-
-Remember to submit a video of your custom doodle animation through [this web form](https://docs.google.com/forms/d/e/1FAIpQLSd8sN1aB7JZIS_POZWVdtTsL7e0ZVGkjS_WBINo_cKLv6OH_w/viewform) at the same time you submit your code.
-
-
-**Follow these instructions to submit to GitGrade**
-
-- Make sure the code you want to submit is pushed to GitLab (origin/master)
-  - If you just commit locally and don't push, GitGrade won't see those changes
-- (Optional) Go to your repo on GitLab to double check that the latest commit hash matches your latest local commit hash
-- Go to the turn in link
-- Check the box and click "Turn in"
-
-## Part 3: Peer Evaluation
-
-You will receive more details about this step of the assignment in our second lab. We will
-send out the emails to your uw.edu email account. Make sure to reach out on our discussion board
-if you do not receive the emails when it is announced that they were sent out (but check your
-  spam folder first!)
-
-## Part 4: Reflection
-
-The reflection will be turned in to Gradescope.
-
-### Grading (40pts)
-
-This HW will be out of 40 points and will roughly (subject to small adjustments) be distributed as:
-
-* Part 1
-  * `addImage`: 2 pts
-  * `addText`: 3 pts
-  * `addLine`: 8 pts
-  * `UW` Animation: 4 pts
-* Part 2
-  * Static verification of custom Doodle (1pt)
-  * Active custom Doodle as verified through Peer Evaluation
-    * Using each of the three methods at least once: 3 pts
-    * Using an animation: 1 pt
-* Part 1 & 2 Code quality (2 pts)
-* Part 3: Complete assigned peer evaluations: 3 pt
-* Part 4: Reflection
-  * Sketch for part 2 is turned in with reflection (1pt)
-  * Each of the 4 question is worth 3 points (12 pts total)
diff --git a/assignments/accessibility-img/1.png b/assignments/img/1.png
similarity index 100%
rename from assignments/accessibility-img/1.png
rename to assignments/img/1.png
diff --git a/assignments/accessibility-img/androidview.png b/assignments/img/androidview.png
similarity index 100%
rename from assignments/accessibility-img/androidview.png
rename to assignments/img/androidview.png
diff --git a/assignments/accessibility-img/avd.png b/assignments/img/avd.png
similarity index 100%
rename from assignments/accessibility-img/avd.png
rename to assignments/img/avd.png
diff --git a/assignments/accessibility-img/mdnavigator1.png b/assignments/img/mdnavigator1.png
similarity index 100%
rename from assignments/accessibility-img/mdnavigator1.png
rename to assignments/img/mdnavigator1.png
diff --git a/assignments/accessibility-img/mdnavigator2.png b/assignments/img/mdnavigator2.png
similarity index 100%
rename from assignments/accessibility-img/mdnavigator2.png
rename to assignments/img/mdnavigator2.png
diff --git a/assignments/accessibility-img/mdnavigator3.png b/assignments/img/mdnavigator3.png
similarity index 100%
rename from assignments/accessibility-img/mdnavigator3.png
rename to assignments/img/mdnavigator3.png
diff --git a/assignments/accessibility-img/mdnavigator4.png b/assignments/img/mdnavigator4.png
similarity index 100%
rename from assignments/accessibility-img/mdnavigator4.png
rename to assignments/img/mdnavigator4.png
diff --git a/assignments/accessibility-img/playstoreemulator.png b/assignments/img/playstoreemulator.png
similarity index 100%
rename from assignments/accessibility-img/playstoreemulator.png
rename to assignments/img/playstoreemulator.png
diff --git a/assignments/accessibility-img/projectview.png b/assignments/img/projectview.png
similarity index 100%
rename from assignments/accessibility-img/projectview.png
rename to assignments/img/projectview.png
diff --git a/assignments/index.md b/assignments/index.md
index 16c45ad82e2de07534c6606a428cd668bacff85d..1478b422f3be33cca6f2e88afca27715ec144e74 100644
--- a/assignments/index.md
+++ b/assignments/index.md
@@ -1,29 +1,21 @@
-
 ---
 layout: default
+title: Assignments
+description: Course assignments
+warning: draft
 ---
 
 * TOC
 {:toc}
 
-You can track your assignments through our [GitGrade portal]({{site.gitgrade}}). Through GitGrade you
-will accept an assignment, which will create a repository containing assignment stub code
-[on gitlab]({{site.gitlab}}). Once you have completed your assignment, commmitted your code
-to your assignment repo, you will again return to Gitgrade to turn in your assignment.
+You can track your assignments through our [Canvas portal]({{site.canvas}}). Please check submission formats for each assignment. Please contact the course staff when in doubt.
 
-Reminder, our class discussion board is on the class [Ed]({{site.piazza}}) should you have any
-questions or run into issue.
+Reminder, our class discussion happens using the class [discussion board]({{site.piazza}}) should you have any
+questions or run into issue, please contact the course staff.
 
 Reminder: assignment and solution code must *not* be shared or made public through gitlab, or posted
 on public repositories such as Github.
 
 | Assignment                                                  | out    | due    | lock    | Peer Eval        | Reflection |
 |-------------------------------------------------------------|--------|--------|---------|------------------|------------|
-| [Doodle]({{site.baseurl}}/assignments/doodle)               | 1-Apr  | 9-Apr  | 11-Apr  | 12 Apr -- 14 Apr | 15-Apr     |
-| [Layout]({{site.baseurl}}/assignments/layout)  parts 1-2    | 10-Apr | 17-Apr | N/A     | N/A              | N/A        |
-| [Layout]({{site.baseurl}}/assignments/layout)  parts 3-4    |        | 24-Apr | 25-Apr  | N/A              | 24-Apr     |
-| [Accessibility]({{site.baseurl}}/assignments/accessibility) | 22-Apr | 30-Apr | 2-May   | N/A              | N/A        |
-| [Color Picker]({{site.baseurl}}/assignments/colorpicker)    | 1-May  | 11-May | 13-May  | N/A              | 11-May     |
-| [Menus]({{site.baseurl}}/assignments/menus) parts 1-4       | 12-May | 21-May | 22-May  | N/A              | N/A        |
-| [Menus]({{site.baseurl}}/assignments/menus) parts 5-6       | 20-May | 25-May | 27-May  | N/A              | 25-May     |
-| [Undo]({{site.baseurl}}/assignments/undo)                   | 22-May | 1-Jun  | 3-Jun   | 3-Jun -- 5-Jun   | 8-Jun      |
+| TBD               | TBD  | TBD  |TBD  | TBD | TBD     |
diff --git a/assignments/layout-img/1_landscape.png b/assignments/layout-img/1_landscape.png
deleted file mode 100644
index 81910a74050cea8f28e3bec26cc10fa97d08d473..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/1_landscape.png and /dev/null differ
diff --git a/assignments/layout-img/1_portrait.png b/assignments/layout-img/1_portrait.png
deleted file mode 100644
index 9bd05c02c72702aa248ba15346a46bf1e9ae0036..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/1_portrait.png and /dev/null differ
diff --git a/assignments/layout-img/3_landscape.png b/assignments/layout-img/3_landscape.png
deleted file mode 100644
index 2b35654bbbaf23c88394da72f780ac675447e613..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/3_landscape.png and /dev/null differ
diff --git a/assignments/layout-img/3_landscape_scrolled.png b/assignments/layout-img/3_landscape_scrolled.png
deleted file mode 100644
index ed704982bc17697e0f2cc8f9674659dfe4a42214..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/3_landscape_scrolled.png and /dev/null differ
diff --git a/assignments/layout-img/3_portrait.png b/assignments/layout-img/3_portrait.png
deleted file mode 100644
index 5c0b44bfdbd1e87ec6765a0fa67022f85285c41e..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/3_portrait.png and /dev/null differ
diff --git a/assignments/layout-img/3_portrait_measured.png b/assignments/layout-img/3_portrait_measured.png
deleted file mode 100644
index 1a6d04655cb7a7c78c82a637839b436c0d4ea2ac..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/3_portrait_measured.png and /dev/null differ
diff --git a/assignments/layout-img/3_portrait_measured_bottom.png b/assignments/layout-img/3_portrait_measured_bottom.png
deleted file mode 100644
index c27b5bd3f31446224bf9546815c57d62da83929a..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/3_portrait_measured_bottom.png and /dev/null differ
diff --git a/assignments/layout-img/3_portrait_scrolled.png b/assignments/layout-img/3_portrait_scrolled.png
deleted file mode 100644
index 75dea3cc77afe1a7de03d4b62e7bf48eff82c9f4..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/3_portrait_scrolled.png and /dev/null differ
diff --git a/assignments/layout-img/LayoutSpec.pdf b/assignments/layout-img/LayoutSpec.pdf
deleted file mode 100644
index b1a9bf3628f70c46e6aec4bae7413274d9319097..0000000000000000000000000000000000000000
--- a/assignments/layout-img/LayoutSpec.pdf
+++ /dev/null
@@ -1,966 +0,0 @@
-%PDF-1.5
%âãÏÓ
-1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</OFF[9 0 R]/ON[10 0 R 11 0 R 12 0 R]/Order 13 0 R/RBGroups[]>>/OCGs[9 0 R 10 0 R 11 0 R 12 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 54424/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c145 79.163499, 2018/08/13-16:40:22        ">
-   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-      <rdf:Description rdf:about=""
-            xmlns:dc="http://purl.org/dc/elements/1.1/"
-            xmlns:xmp="http://ns.adobe.com/xap/1.0/"
-            xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
-            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
-            xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
-            xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
-            xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"
-            xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
-            xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
-            xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#"
-            xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
-            xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
-         <dc:format>application/pdf</dc:format>
-         <dc:title>
-            <rdf:Alt>
-               <rdf:li xml:lang="x-default">LayoutSpec</rdf:li>
-            </rdf:Alt>
-         </dc:title>
-         <xmp:MetadataDate>2019-09-09T01:26:12-07:00</xmp:MetadataDate>
-         <xmp:ModifyDate>2019-09-09T01:26:12-07:00</xmp:ModifyDate>
-         <xmp:CreateDate>2019-09-09T01:26:12-07:00</xmp:CreateDate>
-         <xmp:CreatorTool>Adobe Illustrator CC 23.0 (Windows)</xmp:CreatorTool>
-         <xmp:Thumbnails>
-            <rdf:Alt>
-               <rdf:li rdf:parseType="Resource">
-                  <xmpGImg:width>256</xmpGImg:width>
-                  <xmpGImg:height>160</xmpGImg:height>
-                  <xmpGImg:format>JPEG</xmpGImg:format>
-                  <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAoAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUv8w6hLp2hX99CAZbaCSSMHpyVSVr9OKvm6&#xA;7vLq8uHubqV555DV5JCWYn5nJIUsVdirsVdirsVZ7+UWt6hD5hXSxKzWN0khaFiSquilg6jsdqHA&#xA;Ve04EuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVJfOv/ACiWr/8A&#xA;MLL/AMRxVfJpWl/odm+pwcvq5NfTSteHyxVif1Gy/wCWeL/gF/phQvvDoUUMcci26uu7SOsadR9n&#xA;enT3xVSluvLTRRQxvaSSDq/7oHf9gdzTFURJBpUlvEsUEUhG5lCJ/wACKDcDFUZoGnae+oqGtYmH&#xA;Ftiint8sVRepWdpb+bfLxt4I4S31zl6aqtaQjrQDFLXkPzTfa/pOo3t9HHG9nqV/ZItur0MVpO0a&#xA;EqWclyq7079BgVLrv82tJsYbiXUdI1Sw9C3S+9K5igSRrN51t2ueHrFkWNnUyLIFkUb8MVRV3+Zm&#xA;jRapcaVa2d7qOoRXS2EEFqkRFxObf6zIsUkssUdIYiDIzsoFabnFW9M/M3y9qN1b2tvFciea2vbp&#xA;43RAYTp0qw3EMo5njKrvsBUHx6Yql3lz8zLzX/N1pYWekXA0K+0a21aC8k+rrIn1l3+KQC5Y+n8I&#xA;j4qhbnX9ijYql+sfmV5gtvMmrabC2mWk+nTxx6domocoLrVIikbPJbXcs8FulTIQo4PuN6Yqncv5&#xA;paRDe3UMum6gllY6imk32qmOH6rDcy+mI+RE3qlWaZV5KhoT8VBTFVVPzO0Br1I2guo9MluLiyg1&#xA;t0j+pSXNosjTRKRIZtvRejNGFYqeJOKo3yx5yi8wFWh0rUbK2mgW7sry8hRYbiB2oro8by8SwowS&#xA;Xg/E140xVjWlfmdqr3mtT6rpksGn2mpDRtIsYYoXurm82/d+qLtk5EVYho0RV39Q7gKpk35qaT6l&#xA;raRaXqE+rXN5PpzaTGtubiG5t4fXdJS06wgGMhg4kK074q35m8x+Z4/OWg+XNGks7MaraXl1cXF9&#xA;bSXbIbUxcUVIbm1G/qmvxHFUu0z83AfK8Ot6no160MaTyalfWUaGyhjt7qS2MokmkjZw3pF+EfNw&#xA;u5FKEqorW/zOMVh5rbRdIu7258swzGa6YWwtPWS3WdN2uIpHTi/JuArQHuV5KusfzSWRbW2m0HU5&#xA;dUNjDqGo2tqltK1vDOxRJeCXDvIrlSyrD6jhftAHbFUX+aXmfzJ5Y8pXetaFZ2t1JZxvNcveSOqR&#xA;ogrURxjlIWO1Oa/PFUf5t8yXOieSr7X4YUmntLUXAjavCpAqxA+Iha8qDc0oMVa8h+YL7X9AGo3Y&#xA;jes80dteQRyQQ3UEchWO5iilaR0SRRUVc+IJBGKpRp/mvzbF5r0jStcgs4RriXksWmwBjdWSWtCj&#xA;TzCaWKYOpAJVEAY03xVnGKuxV2KuxV2KpL51/wCUS1f/AJhZf+I4qgz5fvF8vJCdd1FliiSTkTbc&#xA;39OknB3EAYq3Hi2+67Yq8l1545/NN/ba/e3iaQYeFrb2bcODlVKuRVVfv9qvXJISVvIfkW4eJofM&#xA;01opB9Zbi0eV+XYgpwXfwrgVSg/LzypxRrjzWinn+8VLOY/B7Enr/sT/AFVTWy0f8uNJjmeG6v76&#xA;5cj0XUvBwAHYoYatU9TX5DFWaflpb6rqOmwpdapdJJFO7w3kZjErxR0IRzIsgZSahqjfEpZReabP&#xA;b+dtBuJdRubv1EuoxDP6IjThETyVYo4vibnQk+AxVDeX/I3mfRIr+xttdtf0VqF5eXkiiwlW8j+u&#xA;yNIwjuRecAyFvhb0T8sCpLpf5Sp5e+t6iYYNaeTR5dHuNN0+zhsZr0Tyxs0889xcsskzBDzZ236i&#xA;n2SqiPLX5Xanpnlby0sWorZ+adHklvLi8njN7FLPeIUuY5l9SBnHFgqsrrTiMVVIfyluLOS2u9O1&#xA;kQ6nw1KPU7qa19VZzq0yzzvHGJo/RdXUcN3AHUHFUf5Z/Lu78vX2i3NrqkcqadpEOiX0cts1biK3&#xA;ZnjkiYTD0W5ua1D7be+KrfMn5e6xrVtrOltr5/QOuSepdWd3bG6ngBVQyWc5mRYUPCoDRPxJJWmK&#xA;pPY/lr5hvJ9dsr++Fl5dvdeTURYiJZZ7iG3W3eIrcrN+7V5IAHV4y3w7UrhVEWX5LaVa6rJMGsTp&#xA;0k13OVGmW51FvrnOsbajIZH4RmU8OKK9KDlTbArJPKPlvzDokMFnfa4uo6bY2qWdjbJaLbsFjICS&#xA;TyepKZJAi8fg4KevGuKpdcflw72t36Gpelfvrh8w6fctBzSGcqE9OSL1F9VOHJTR0O+1KYqs0v8A&#xA;LM2mv2Wv3GoifU49QutT1BkgMcc8lzZ/U1jiQyyGJIkoRVnJ7nfFUd5l/L3SPMfmjSdZ1aO3vbTS&#xA;7e6gOmXVslxHI1yYyJKyEqpT0/5D17YqkPnn8m7fzNcXRjvLa1tLiwTT4La4sVuhZGMsVlsf3sKQ&#xA;M3IB/gJIGxXFU7svy+ig07zVYTXplh80NIZCsfAwrJZpaED4m5bR8q7daYqkWt/lNrGtabZ2Ooa1&#xA;YS/VrWO0Fz+iU9eH0Wqs9lMbgzW8xXYsXda7qq9MVZd5y8s/4k8o6l5e+tG1/SFubf62U9UpWnxF&#xA;OScun8wxVT81eUhr2g2+mC5EEtpNbXNvLJEJ4WltXDoJoCyepGSu68h89sVSvyL+XcnlfVtS1F76&#xA;G6OpJGn1eG2e3it/Tkkk9O2DTz+nCWmZvT3+I15U2CrflbyV5k0rzFe61qes2erT6gSLiY6fLDcr&#xA;CAfSt4JTeSxxQxtvxEXxftGu+KszxV2KuxV2KuxVJfOv/KJav/zCy/8AEcVRsn/HFb/mGP8AybxV&#xA;5T5z8uSahEt5aLyuoRxeMdXTrt7jJIeesrKxVgQwNCDsQRirWKo7R9GvNVuhBbr8I/vZSPhRfEn9&#xA;QxV7R5Qs4bKeC1gFIoYyq+PTcn3J3wFUw1r/AJSzy5/0e/8AJkYpTbUtV07TLf6xf3MdtDWgeRgK&#xA;nwHcn5YFST/lZHkn/q6J/wABL/zRhpXf8rI8k/8AV0T/AICX/mjGld/ysjyT/wBXRP8AgJf+aMaV&#xA;3/KyPJP/AFdE/wCAl/5oxpXf8rI8k/8AV0T/AICX/mjGld/ysjyT/wBXRP8AgJf+aMaVE6f538qa&#xA;hcrbWupRPO5oiNyQsT0C8wtT7YKVPMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqS+df+US&#xA;1f8A5hZf+I4qj+DSaRwQVdrfio8SUoMVY3+htT/3wfvX+uFCXaj5Fi1Budzp/KX/AH6pCN9JUiv0&#xA;4qlGnfl/ot1NdLBbSzNYzG2uUdnULKEWSm/Dl8Mi7rUY2rI7by3dWsQht7MRRjoicQPwOKppoum3&#xA;sF8JJoiiBWFSR3+RxS7Wv+Us8uf9Hv8AyZGKvL/zdvrmfzY9tI5MFpFGsKdhzUOx+ZJxCGE4Vdir&#xA;sVaxVvFXYq4Eggg0I6HFX0d5Ovbi+8r6ZdXLc55IF9Rz1Yr8NT7mm+RSnGKuxV2KuxV2KuxV2Kux&#xA;V2KuxV2KuxV2KuxV2KpL51/5RLV/+YWX/iOKplDKsWnJK1SscIYgdaBa4qgf8TWH++5fuX/mrDSu&#xA;/wATWH++5fuX/mrGlS/S9dWK61SS5gKLcXYktvTYOWiFvDGGevDi3KNvhFfniqYf4msP99y/cv8A&#xA;zVjSq9nrVrdziGNHDEE1YADb5E4FS7Wv+Us8uf8AR7/yZGFVLQ/+U28z/wCpp/8AyakxVkuBXYq7&#xA;FUg8oHS+Os/o/hxGq3f1rhX/AHo5D1a178uuKp/irsVUrz/eSf8A4xt/xE4qkvkD/lDdK/4wD/iR&#xA;xKp/irsVdiqje31lYWkt5fXEdraQKXnuJ3WONFHVndiFUfPFWJ3mgaf50079I2usSXGi6n6c9qi8&#xA;zDwERSqDkmztxbp2P8xxdro+0/AoxgOIdevO+73j+wIh/KmuLZFRrM1xeRiQ25aSeCPlKy15+nI5&#xA;ZVRSFBrStRQ74EjX4uL+7AiavaJO18rA68+/qut/KOqK8EsmsS+pGtoJSnq85PqqcWV5DLVw5Zju&#xA;OpqQcUT7QxkEDGKPF3bcXcOHatvkm+g+YtC8wWC6hot9DqFmxK+tA4cBh1VgN1Yd1bcYXVJjirsV&#xA;dirsVdirsVdiqS+df+US1f8A5hZf+I4qjZP+OK3/ADDH/k3irEMKETPFGkETIOQfdpa96fZp2pir&#xA;p4o0giKDlz3aWvem607UxV08UaQRFBy57tLXvT7FO1MVRXl7/jpL/qt+rEpROtf8pZ5c/wCj3/ky&#xA;MVUtD/5TbzP/AKmn/wDJqTFVXzR/eW/yb9YxCpHihfJFJHxDjiWHIA9ae+KuMLpGrleKuTx7V7k/&#xA;jirhFJ6Rlp8ANOR7k+GKrMVZvef7yT/8Y2/4icCUl8gf8obpX/GAf8SOJVP8VdirsVYf+Z/5XeX/&#xA;AMxNCXStYluIPQZpbSe2lZPTlIoGaP8Au5B7MvyIrirDtD/5xb/LG00i0tdTtpb+/hjVLi9WeeES&#xA;uu3P01kIWvgMVR3/AELL+UH/AFapv+ku4/5rxW3f9Cy/lB/1apv+ku4/5rxW0R+U35FeXvy7ludQ&#xA;gvLm/wBavQRdXTu0UPEsW4Jbo3Cm43csa9CMVel4q7FXYq7FXYq7FXYqkvnX/lEtX/5hZf8AiOKo&#xA;Y+bvKr6EsiazZMksKxRMLiIhnkAjRV+Lcs7BRTqcVYfrHm3y9pDtHf3iRzKOTQqGkkAPQlUDFa17&#xA;4UJFdfnR5W4rGkd1JGmwEUSAVpu3xupxVTk/O3y1IiR/VbxY06KI4qV7k/veuKpha/mv5WvgsQea&#xA;BI6bNC5Wv8zGP1OvicVZXoHmHQkkgv31C3SymJiiuHlRY2kbYIGJA5bdMUo291rR77zpoFvZX1vd&#xA;TxLdySxQypIyo8VFYhSaAlTiqvof/KbeZ/8AU0//AJNSYqq+aP7y3+TfrGIVJYywkUru1RxHvXbF&#xA;CtfBfWqPtkVlAPIBu4BxVdebpEz7TkUZQa/CAOJPgfbFXSb2UZkorLtDQ7lSTWq/PviqFxVm95/v&#xA;JP8A8Y2/4icCUl8gf8obpX/GAf8AEjiVT/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUl86/8&#xA;olq//MLL/wARxVFyRx/oNl4jiLeoWgpUJUH798VeI61NceX/ADdd6lBBFK+oQem/1hPUR4mCh0IP&#xA;ulPlkkIObX9DuJY5LnyxphaMEKIYzEtD24gsPl4dsVU01LylEqiHyrZjg3qJ6jyS/FWvxc6ll/yS&#xA;aYqjx5/vIIJ7fTdNsNOhuDWZLaHhzNKVahHL/ZVxVmX5SaWlnYRKYwq3DSXCx02FacTT/Y8hgKsr&#xA;1lV/xf5dag5EXgLdyBCKD8cUpZZ6hqFt+YOvRW+lzX0EsVmZ7iGSBREUibgpWaSNm58j9npTftir&#xA;XmTWrtfrE99pk9la2URkilkeCQzrx5OESKSQqykU+KlaineiFedjzn541TSm1Xy/oKy2SzNASxea&#xA;UMgBLGNPT+H4tyK074oY7e+dfzRiuJIJLN7eaNfUeNbQkhCKhviDfD74qhYfP/5kTJFNErzRSvwi&#xA;dbUMrv8AyKQu59hillei6n+b9zK6zaREsUIq8t3G8CnelEYN8RB68Qad8UJ5oPmq4v8AU73SL2xa&#xA;11KwXlIEbnE42+yzBOvIEV+/FWeXeva8dDknPlq8F4YiXs/Xsfhrsw9T1+Jou+BK/wAgf8obpX/G&#xA;Af8AEjiVT/FXYq7FWE6n+aljpd9c2t9oWsxx27yJ9eW05Wr8JlhUpLzH94XBWoFfuqqtl/Na0WBp&#xA;U8u68/BRIyfUHDcP3RagLblVmrx6niwxVq4/NSOOVUj8ta5KjOiFxZstAW4uaE/s7H3xVMrnzyIt&#xA;KtdSi0PVZorlVdoRbUmiVmZaSRluQYcK08KYhztHohn/AI4Q/rGlSTzrCtz9Wj0u/lnUr6kawgso&#xA;ZZGUkBv2vS2r4jBbYOzDw8RnAD3+7y82R4XWuxV2KuxV2KuxV2KpL51/5RLV/wDmFl/4jiqNk/44&#xA;rf8AMMf+TeKvPte0O31ez9GQ8Jkq0E1KlW/oe+FDzfUtA1XTnIuIG9MdJkBaM/7IfxwqgY45JGCR&#xA;qXc9FUEn7hirKfL3km6nlS41NDDbLuIW2d/Yj9kePfFXqPlxQuoIqgBQjAAdAKYClFa1/wApZ5c/&#xA;6Pf+TIxVS0P/AJTbzP8A6mn/APJqTFXedLZLqBbZ/sTRSRt8mAGIV4cLzWtIuJLaK6mtZIno6RyM&#xA;g5Kag0BHzGFCMi87eaYiCt+7FSWBdY5DyPUnmrVO/fFVR/P3m114tfk7ca+lDWn+twr7fLbFUJP5&#xA;q8yTsWk1O5LGlSJGXoKD7JGKsk8gWEzfWdUnLM0v7qNmJJYA1c1PuAMVe0Xn+8k//GNv+InIpSXy&#xA;B/yhulf8YB/xI4lU/wAVdirF/wAx9NivPLvqPNqcL2UyTw/oZ3S7Z2BhCjhuV/e1Pyrirzl9SM9q&#xA;Ldk87vE13FeC5IZZUaISELQKP3bAhjGduQUUpU4VUdQmuZYkgh1PzrbNHMITfXEIAjYpFGrCvpq3&#xA;qgmh5bMxqO2KEZ5pk006sbjVbrzjavpkxihkt6pbN6LRW4kV14owndUk+Lqa7b7qXfWg+j2U8Vx5&#xA;4DXtxzlk9Phcxrpq8SZY6UC3JkUdKtTsARiqisbyT3wivvPDJbxwzAvUOHeUWZMIdCWYJMXZa9Fr&#xA;Su+KvUvJgr5fgnE2oSrdM86jVhxu0DsfgdSBxAP2R2GBU8xV2KuxV2KuxV2KpL51/wCUS1f/AJhZ&#xA;f+I4qqWuv+XzZxK2pWhBjUMpmj/l6H4sVb/S3lT/AJbLH/kZD/XFXfpbyp/y2WP/ACMh/riqT6Dq&#xA;vlH65rhS8tuJ1D/dso6i1gDcPUP2OVacfh8MVTj9LeVP+Wyx/wCRkP8AXFW01nywjckvrJW8VliB&#xA;/A4qld/qWnXnm3y8LS6huCn1zmIpFelYRSvEmmFV+h/8pt5n/wBTT/8Ak1Jiqr5o/vLf5N+sYhWC&#xA;eZvKsWrD14CIr5RQMfsuB0DU/XhQwC/0jUrByt1bvGB+3SqH5MNsVQscckjBI1LseiqCT9wxVkmh&#xA;+Sb+7kSW+U21r1KttIw8Av7P04q9BgghghSGFAkUYCog6ADArOrz/eSf/jG3/ETgSkvkD/lDdK/4&#xA;wD/iRxKp/irsVdiqRaz5UTU72K8/Sd/ZyRGqpbTlI9wFPwUI3Axc/Ta84oGPBCQPfHf5rYPKky3p&#xA;uJtXvZY1YNFD6rCgUR7MamtTGeXGleRFMFMp68GHCIQHnXv/AF7c+SSW35Vta2/oW3mzX4o1DCIf&#xA;XeXAMgTbkjdKVHgdxvhdciYPy8uYr03b+adamf0bmBI3uE9NRdV+IKIx8UWxjPagxVdo35eS6XqZ&#xA;vh5l1m7DTC4ktbm6EkLOAwIKlfssrAcRt8IpirL8VdirsVdirsVdirsVSXzr/wAolq//ADCy/wDE&#xA;cVfG/lNhYeY7C9vYK2kEnOZZYPWRlAPwlGR68ulaVHUUIrhVKfqd5/viT/gG/pirJLuy0yPyLaCO&#xA;KGbW5rotJ6aTi4hhUOKSFl4NzPH7P2aDqWNFUp0K14axZSXkfp2qTI8rTQvLHRTWjoFcsppQ/Cfk&#xA;emKq/mpLe58wXs2lWrJp7OBbhIiilVULy4hI6ciK/YX/AFV6BVHeX18v2/l3Xl1C2nfXbiFYtK5W&#xA;vqwqPUQuVYuCkpFfiK/CoNDU0xVmX/OOcM0fnsepGyVienIEV/dv44q9+0P/AJTbzP8A6mn/APJq&#xA;TFU01XSmvmjIkEfpgjcVrWnvgVAf4Xk/5aB/wJ/rhtXf4Xk/5aB/wJ/rjaoDR9Iu70XnrKLQ213N&#xA;boKh/USMjjL8J25g/ZO4xVH/AOF5P+Wgf8Cf642rv8Lyf8tA/wCBP9cbVO7z/eSf/jG3/ETgVJfI&#xA;H/KG6V/xgH/EjiVT/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUv8w6fLqOhX9jCQJbmCSOOv&#xA;TkykLX6cVfN13aXVncPbXUTQTxmjxOCrA/I5JClirsVdirsVdirPfyi0W/m8wrqgjZbK1SQNMwIV&#xA;ndSgVT3O9TgKvRND/wCU28z/AOpp/wDyakxSmuqat9QaMel6nqAn7XGlKexwKgf8U/8ALr/w/wDz&#xA;bhpXf4p/5df+H/5txpUv0fW720F59bjjmNxdzTw+lyjCRORwRuXPk4A+JhQHwGKph/in/l1/4f8A&#xA;5txpXf4p/wCXX/h/+bcaVObz/eSf/jG3/ETgVJfIH/KG6V/xgH/EjiVT/FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYqskhhkp6kavTpyAP68VW/U7T/AHxH/wACv9MVd9TtP98R/wDAr/TFXfU7&#xA;T/fEf/Ar/TFXfU7T/fEf/Ar/AExV31O0/wB8R/8AAr/TFVUAAAAUA2AGKsa0P/lNvM/+pp//ACak&#xA;wqq+aP7y3+TfrGIVJFALAE0BIBJ7YoVruNY5fTVCoUUqerf5W22Kt3MSRJGFUnkORl7NXsKeGKua&#xA;JFtFcKWaQ7v2WhPw/M4qh8VZvef7yT/8Y2/4icCWG6brx0H8r7PU1jEskUCrFGdgXd+Ir7CtThVK&#xA;vI/mzzb5ovbqB76G0ECCQFbdXryalN2GKE11TU/MunyzibWYVhg3eZ7ZEUClSSS9BirC9Q/OoWhI&#xA;i1g3hG1YLJeNf9aR0H3Yqks//OQHmAV9Aep4c440/VzxSoH/AJyC829oYvuX/mjFXD/nIPzZ3hi+&#xA;gL/zRiqNtvz+1Rj/AKS7xDxjt4pP1vHirJNF/NGTWJUgtdfiS5fZbea0Ebk+Aq3Fj7A4oZlpS+ar&#xA;6ORjrEcfAgUFohrUf64xSw6f8z/MGkeZp7C/aK8sbadoZmEfpuUVqF14k796Y0h61gS7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYqxrQ/wDlNvM/+pp//JqTCqr5o/vLf5N+sYhWO3F/YWlGvLiOBO5kdU2+&#xA;bEYoS+889+UuYrqlqqJ8KKkgcAdeq8sVWSfmD5OkVIo9TgRF6VY7saAkkjFUZb+avLtzEsFpqNrI&#xA;7GrhZkLsQTT4a1p9GKo0EEVG4OKs3vP95J/+Mbf8ROBLzXWP/JMWn+pB/wAnsKEB+SX/AB1tS/4w&#xA;J/xPEqmP5pWZu9M1OHcpVGkUd1UqT93XEKwPyxrOhaX5em0DUdKGoWNxMZ5Wkep5bAUUcaEBdmVl&#xA;PvTbFUXexflHqkEccmlXWmPG4IktCinhQVDE+py38Vr/AJWKqE3lr8nriWGWOa+tEjY+rbjkRIoN&#xA;RUsJivzB+gdcVVotI/Ju31BLsQXkyIpH1VyxgL/ssUJ5n5erT27YqmOmeafIuivJdaTofoajKnFp&#xA;YwV4n/IkMrMAe4VV964qkfmLU183eZdNvDa+hdQenBEwkaRmCvVS5PEfCSTsB13wq9w8sf3E/wDr&#xA;D9WApeGedP8AlLdX/wCYuX/iZwofRuRS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwuz0Szv/zA166n&#xA;e4WW2is1jEFzPApEsTcuaxOgb7AoW6dupwqoeb9FTTrW+udPmufrd3buay3E8/FokIUxLK7hDv26&#xA;7V6DEK8f0vSfJdxphi8wG+l1RpzK2oQMvIxkAcCX9TwrupNT18VCtJ5D/LuaZ5IPMk9tCy1jt5bZ&#xA;5HRvAyARq/y4r/rYqpRfl75J9CNpvNLeqG/eqlpJTj4Dc0/1t/8AVxVNLPRPyk06SWRkvdUBUBI5&#xA;W2G+5UiODf8A1gf44qj/ACPHAPMGqLphnh0OWPlBYyPyETEqNiO5+Lp28aVwq9Uu/JmkDQ5NPE+o&#xA;CBIqKf0he86J8Q+Mzcu3XrkUsT1j/wAkxaf6kH/J7ChKPybso7jWr13eVfSgFFjleNTyYD4ghXlS&#xA;m1cSll+p2MMVzdWpLyxOzlvWdpWIlqzLycs3EcqAV2Gw2xQ8h13R59Kv3t3BMRJaCTsydvpHfCqX&#xA;Yq7FXYq7FWY+Q9DdpTqs60jQFbYHux2Zvo6Yq9R8vadDNJLctJOGUCP00mlSOleXIorBeX+V1wFL&#xA;xHzVbrbeZNSt1d3WK4kQPK7SSEK1Ks7Esx8ScKH0lkUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvDv&#xA;zK/NPV/InnnUF0+0t7r9IR25l+sc/h9GMU48GXr6hwqxjUfz68532lrq0mlacLOOYWtVkYv6jqXA&#xA;MfqFwKIdyKYqwCbz5evK7raQxqzEhByotT0FT0GNqi9Q17zDp9vb3F1ZQJDdVELLIr7qiSMrBHYo&#xA;wWZCVah3xVBx+ddSkdY0tomdyFVRy3J2HfG1RWqeYte0udIL20t0eRPUjMcizIyFitVeJ3Q/EpHX&#xA;FUy8tfmtr1iwstP0y3uLm7kVVFJC7sfhRAFYdztirLNW/wCckPPFld3emXujafFdW7vb3MYaR+Lq&#xA;SjryWRlND4HFXoOsf+SYtP8AUg/5PYoQH5Jf8dbUv+MCf8TxKsv1n/jpz/Mf8RGKpNqmlWep2pt7&#xA;par1Rxsyt4qcVYDqvkrV7N2a3T63B+y0Y+OnunX7q4VSKWCaI8ZY2jbwYEH8cVVrXTdQumAtraSW&#xA;vdVJH0npirKtD8hSFln1UgINxaoak/67Dp9H34qzZESNFRFCooAVQKAAdABgVkflj+4n/wBYfqxK&#xA;XhnnT/lLdX/5i5f+JnCh9G5FLsVdirsVdirsVdirsVdirsVdirsVdir5v/PXQH1XzzMyzCL0o4xu&#xA;vKvKNPceGFDBD5WvTpa6aLqP0BObkt6bcy5QJQnlSgA227nFUJ/gWf8A5a1/4A/1xpKZax5fudSW&#xA;2SttZxWkfpQw26TBAvUmkksnxE7k9SeuKEDa+S54LmKczwzCJ1cxSRsyPxNeLgMKqeh3xpKN17Qt&#xA;U1u/+vXl2nrCOOEUEr/DEgRavLJJIxoOrMfuxQ1oWg6roepR6jY3cBuIwy0nt0nQq44upSXkPiUk&#xA;HvTGlUtU8q3up6ldajc3cYuLuV55RHCETnIxY8VU0AqcaV75rH/kmLT/AFIP+T2Ksb/LLzT5e8vX&#xA;97PrV9FYxTxKkTykgMwapAoD2xKvQ7v8xvy0i9KW71O0j+soJoZJY2HqRklQ6lk+JaqRUeGKVD/l&#xA;Z/5S/wDV40//AIH/AJtxVefzJ/KpYllOq2IiclUkKHiStKgHhTauKpbrn5lflPLYBF1W2kPr2xKW&#xA;zNFJRbiMk819M8QBVvi3WoNRtiqZL+ZP5VNG8q6rYmKMgO4QlVLV41PHatNsVWf8rP8Ayl/6vGn/&#xA;APA/824qq235i/lddTCG21OznmIZhHHGXYhFLMaKhOygk+2KtRfmx+VsQIi12yjB6harX7lwK8e8&#xA;y39nqHmDUb6zlWe0ubiSWCZfsujMSGHzySH0pkUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvOvzI/L&#xA;y/1m9XVdJ4vclBHcWzMEL8fssrNRa02NThBVgX/KufOv/Vrk/wCDj/5qwod/yrnzr/1a5P8Ag4/+&#xA;asVd/wAq586/9WuT/g4/+asVd/yrnzr/ANWuT/g4/wDmrFXf8q586/8AVrk/4OP/AJqxV3/KufOv&#xA;/Vrk/wCDj/5qxVFad+VnnC7uVjmtRZwk/HPM6EKPZVLMT9GC1eqa55QS78mHy9ZSemYo41t3foWi&#xA;Ib46fzEb0wJeIeZvyW/MLUooorewjrE5JZ7iEAilNviJwqlN9+RX5r3kVnFLY2wWxg+rQ8bmOpT1&#xA;Hl+IljvylP0bYqhP+hePzP8A+WKD/pJi/riqaXn5Lfmvc6FYaP8Ao63SCxeWTkLtWLtKa1IZiF47&#xA;0C0G5PUmqqV/9C8fmf8A8sUH/STF/XFU0tvyX/Nm38v3eix6baiG9lSWaY3KepSOhCD4+IHJQem/&#xA;foKKpX/0Lx+Z/wDyxQf9JMX9cVTXQPyc/OPQprmXT7O0DXdvLaT+pLBJWOZSpoW3UivIUPUCtRti&#xA;qVf9C8fmf/yxQf8ASTF/XFWdeWfye83gWVnqUCWlvEqLcT+rG/wr9rgEZiT4VAxtD3rAl2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV//9k=</xmpGImg:image>
-               </rdf:li>
-            </rdf:Alt>
-         </xmp:Thumbnails>
-         <xmpMM:InstanceID>uuid:559e743a-28e7-4925-88aa-a149edfbb1ef</xmpMM:InstanceID>
-         <xmpMM:DocumentID>xmp.did:578294d2-d6b0-344f-b159-7628ac6a8f47</xmpMM:DocumentID>
-         <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
-         <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
-         <xmpMM:DerivedFrom rdf:parseType="Resource">
-            <stRef:instanceID>uuid:fee9adc9-99ff-4f50-b2e9-7f830b63b763</stRef:instanceID>
-            <stRef:documentID>xmp.did:cc21c36f-daca-5d4d-86ed-0422dbc64d3a</stRef:documentID>
-            <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
-            <stRef:renditionClass>proof:pdf</stRef:renditionClass>
-         </xmpMM:DerivedFrom>
-         <xmpMM:History>
-            <rdf:Seq>
-               <rdf:li rdf:parseType="Resource">
-                  <stEvt:action>saved</stEvt:action>
-                  <stEvt:instanceID>xmp.iid:cc21c36f-daca-5d4d-86ed-0422dbc64d3a</stEvt:instanceID>
-                  <stEvt:when>2019-08-04T17:05:28-07:00</stEvt:when>
-                  <stEvt:softwareAgent>Adobe Illustrator CC 23.0 (Windows)</stEvt:softwareAgent>
-                  <stEvt:changed>/</stEvt:changed>
-               </rdf:li>
-               <rdf:li rdf:parseType="Resource">
-                  <stEvt:action>saved</stEvt:action>
-                  <stEvt:instanceID>xmp.iid:578294d2-d6b0-344f-b159-7628ac6a8f47</stEvt:instanceID>
-                  <stEvt:when>2019-09-09T01:25:58-07:00</stEvt:when>
-                  <stEvt:softwareAgent>Adobe Illustrator CC 23.0 (Windows)</stEvt:softwareAgent>
-                  <stEvt:changed>/</stEvt:changed>
-               </rdf:li>
-            </rdf:Seq>
-         </xmpMM:History>
-         <illustrator:StartupProfile>Print</illustrator:StartupProfile>
-         <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
-         <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
-         <xmpTPg:NPages>1</xmpTPg:NPages>
-         <xmpTPg:MaxPageSize rdf:parseType="Resource">
-            <stDim:w>8.500000</stDim:w>
-            <stDim:h>8.017512</stDim:h>
-            <stDim:unit>Inches</stDim:unit>
-         </xmpTPg:MaxPageSize>
-         <xmpTPg:Fonts>
-            <rdf:Bag>
-               <rdf:li rdf:parseType="Resource">
-                  <stFnt:fontName>AcuminVariableConcept</stFnt:fontName>
-                  <stFnt:fontFamily>Acumin Variable Concept</stFnt:fontFamily>
-                  <stFnt:fontFace>Default</stFnt:fontFace>
-                  <stFnt:fontType>Open Type</stFnt:fontType>
-                  <stFnt:versionString>Version 1.020;hotconv 1.0.108;makeotfexe 2.5.65593</stFnt:versionString>
-                  <stFnt:composite>False</stFnt:composite>
-                  <stFnt:fontFileName>AcuminVariableConcept.otf</stFnt:fontFileName>
-               </rdf:li>
-               <rdf:li rdf:parseType="Resource">
-                  <stFnt:fontName>AktivGrotesk-Medium</stFnt:fontName>
-                  <stFnt:fontFamily>Aktiv Grotesk</stFnt:fontFamily>
-                  <stFnt:fontFace>Medium</stFnt:fontFace>
-                  <stFnt:fontType>Open Type</stFnt:fontType>
-                  <stFnt:versionString>Version 3.002</stFnt:versionString>
-                  <stFnt:composite>False</stFnt:composite>
-                  <stFnt:fontFileName>14038</stFnt:fontFileName>
-               </rdf:li>
-               <rdf:li rdf:parseType="Resource">
-                  <stFnt:fontName>RobotoMono-BoldItalic</stFnt:fontName>
-                  <stFnt:fontFamily>Roboto Mono</stFnt:fontFamily>
-                  <stFnt:fontFace>Bold Italic</stFnt:fontFace>
-                  <stFnt:fontType>TrueType</stFnt:fontType>
-                  <stFnt:versionString>Version 2.000985; 2015; ttfautohint (v1.3)</stFnt:versionString>
-                  <stFnt:composite>False</stFnt:composite>
-                  <stFnt:fontFileName>RobotoMono-BoldItalic.ttf</stFnt:fontFileName>
-               </rdf:li>
-               <rdf:li rdf:parseType="Resource">
-                  <stFnt:fontName>RobotoMono-Italic</stFnt:fontName>
-                  <stFnt:fontFamily>Roboto Mono</stFnt:fontFamily>
-                  <stFnt:fontFace>Italic</stFnt:fontFace>
-                  <stFnt:fontType>TrueType</stFnt:fontType>
-                  <stFnt:versionString>Version 2.000985; 2015; ttfautohint (v1.3)</stFnt:versionString>
-                  <stFnt:composite>False</stFnt:composite>
-                  <stFnt:fontFileName>RobotoMono-Italic.ttf</stFnt:fontFileName>
-               </rdf:li>
-            </rdf:Bag>
-         </xmpTPg:Fonts>
-         <xmpTPg:PlateNames>
-            <rdf:Seq>
-               <rdf:li>Cyan</rdf:li>
-               <rdf:li>Magenta</rdf:li>
-               <rdf:li>Yellow</rdf:li>
-               <rdf:li>Black</rdf:li>
-            </rdf:Seq>
-         </xmpTPg:PlateNames>
-         <xmpTPg:SwatchGroups>
-            <rdf:Seq>
-               <rdf:li rdf:parseType="Resource">
-                  <xmpG:groupName>Default Swatch Group</xmpG:groupName>
-                  <xmpG:groupType>0</xmpG:groupType>
-                  <xmpG:Colorants>
-                     <rdf:Seq>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>White</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>Black</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>100.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>CMYK Red</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>CMYK Yellow</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>CMYK Green</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>100.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>CMYK Cyan</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>100.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>CMYK Blue</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>100.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>CMYK Magenta</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>15.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>90.000000</xmpG:yellow>
-                           <xmpG:black>10.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>90.000000</xmpG:magenta>
-                           <xmpG:yellow>85.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>80.000000</xmpG:magenta>
-                           <xmpG:yellow>95.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>50.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>35.000000</xmpG:magenta>
-                           <xmpG:yellow>85.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>5.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>90.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>20.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>50.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>75.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>85.000000</xmpG:cyan>
-                           <xmpG:magenta>10.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>10.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>90.000000</xmpG:cyan>
-                           <xmpG:magenta>30.000000</xmpG:magenta>
-                           <xmpG:yellow>95.000000</xmpG:yellow>
-                           <xmpG:black>30.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>75.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>75.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>80.000000</xmpG:cyan>
-                           <xmpG:magenta>10.000000</xmpG:magenta>
-                           <xmpG:yellow>45.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>70.000000</xmpG:cyan>
-                           <xmpG:magenta>15.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>85.000000</xmpG:cyan>
-                           <xmpG:magenta>50.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>100.000000</xmpG:cyan>
-                           <xmpG:magenta>95.000000</xmpG:magenta>
-                           <xmpG:yellow>5.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>100.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>25.000000</xmpG:yellow>
-                           <xmpG:black>25.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>75.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>50.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>35.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>35.000000</xmpG:yellow>
-                           <xmpG:black>10.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>10.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>50.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>95.000000</xmpG:magenta>
-                           <xmpG:yellow>20.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>25.000000</xmpG:cyan>
-                           <xmpG:magenta>25.000000</xmpG:magenta>
-                           <xmpG:yellow>40.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>40.000000</xmpG:cyan>
-                           <xmpG:magenta>45.000000</xmpG:magenta>
-                           <xmpG:yellow>50.000000</xmpG:yellow>
-                           <xmpG:black>5.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>50.000000</xmpG:cyan>
-                           <xmpG:magenta>50.000000</xmpG:magenta>
-                           <xmpG:yellow>60.000000</xmpG:yellow>
-                           <xmpG:black>25.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>55.000000</xmpG:cyan>
-                           <xmpG:magenta>60.000000</xmpG:magenta>
-                           <xmpG:yellow>65.000000</xmpG:yellow>
-                           <xmpG:black>40.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>25.000000</xmpG:cyan>
-                           <xmpG:magenta>40.000000</xmpG:magenta>
-                           <xmpG:yellow>65.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>30.000000</xmpG:cyan>
-                           <xmpG:magenta>50.000000</xmpG:magenta>
-                           <xmpG:yellow>75.000000</xmpG:yellow>
-                           <xmpG:black>10.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>35.000000</xmpG:cyan>
-                           <xmpG:magenta>60.000000</xmpG:magenta>
-                           <xmpG:yellow>80.000000</xmpG:yellow>
-                           <xmpG:black>25.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>40.000000</xmpG:cyan>
-                           <xmpG:magenta>65.000000</xmpG:magenta>
-                           <xmpG:yellow>90.000000</xmpG:yellow>
-                           <xmpG:black>35.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>40.000000</xmpG:cyan>
-                           <xmpG:magenta>70.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>50.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>50.000000</xmpG:cyan>
-                           <xmpG:magenta>70.000000</xmpG:magenta>
-                           <xmpG:yellow>80.000000</xmpG:yellow>
-                           <xmpG:black>70.000000</xmpG:black>
-                        </rdf:li>
-                     </rdf:Seq>
-                  </xmpG:Colorants>
-               </rdf:li>
-               <rdf:li rdf:parseType="Resource">
-                  <xmpG:groupName>Grays</xmpG:groupName>
-                  <xmpG:groupType>1</xmpG:groupType>
-                  <xmpG:Colorants>
-                     <rdf:Seq>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>100.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>89.999400</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>79.998800</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>69.999700</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>59.999100</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>50.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>39.999400</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>29.998800</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>19.999700</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>9.999100</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>0.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>4.998800</xmpG:black>
-                        </rdf:li>
-                     </rdf:Seq>
-                  </xmpG:Colorants>
-               </rdf:li>
-               <rdf:li rdf:parseType="Resource">
-                  <xmpG:groupName>Brights</xmpG:groupName>
-                  <xmpG:groupType>1</xmpG:groupType>
-                  <xmpG:Colorants>
-                     <rdf:Seq>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>100.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>75.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>0.000000</xmpG:cyan>
-                           <xmpG:magenta>10.000000</xmpG:magenta>
-                           <xmpG:yellow>95.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>85.000000</xmpG:cyan>
-                           <xmpG:magenta>10.000000</xmpG:magenta>
-                           <xmpG:yellow>100.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>100.000000</xmpG:cyan>
-                           <xmpG:magenta>90.000000</xmpG:magenta>
-                           <xmpG:yellow>0.000000</xmpG:yellow>
-                           <xmpG:black>0.000000</xmpG:black>
-                        </rdf:li>
-                        <rdf:li rdf:parseType="Resource">
-                           <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName>
-                           <xmpG:mode>CMYK</xmpG:mode>
-                           <xmpG:type>PROCESS</xmpG:type>
-                           <xmpG:cyan>60.000000</xmpG:cyan>
-                           <xmpG:magenta>90.000000</xmpG:magenta>
-                           <xmpG:yellow>0.003100</xmpG:yellow>
-                           <xmpG:black>0.003100</xmpG:black>
-                        </rdf:li>
-                     </rdf:Seq>
-                  </xmpG:Colorants>
-               </rdf:li>
-            </rdf:Seq>
-         </xmpTPg:SwatchGroups>
-         <pdf:Producer>Adobe PDF library 15.00</pdf:Producer>
-      </rdf:Description>
-   </rdf:RDF>
-</x:xmpmeta>
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                                                                                                    
-                           
-<?xpacket end="w"?>
-endstream
endobj
3 0 obj
<</Count 1/Kids[14 0 R]/Type/Pages>>
endobj
14 0 obj
<</ArtBox[23.5835 0.0 592.654 555.137]/BleedBox[0.0 0.0 612.0 577.261]/Contents 15 0 R/CropBox[0.0 0.0 612.0 577.261]/MediaBox[0.0 0.0 612.0 577.261]/Parent 3 0 R/Resources<</ExtGState<</GS0 16 0 R>>/Font<</T1_0 6 0 R/TT0 5 0 R/TT1 7 0 R/TT2 8 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 9 0 R/MC1 10 0 R/MC2 11 0 R/MC3 12 0 R>>>>/Thumb 17 0 R/TrimBox[0.0 0.0 612.0 577.261]/Type/Page>>
endobj
15 0 obj
<</Filter/FlateDecode/Length 20803>>stream
-H‰\WInl¹Üëu½ÏäÌ­Û†W
£á… x�\ß@Û÷%Õ#zñ›¡zIæùã/¿<~üúKzü᏿<ÞÒCÿ]©=þýöãÏMþï­Î«Æ�^¢^+꣖¸FôÇÿþö·?ýŠï~ØJÜ­dÉ¥ÀZ~ä:®Õûã=z½æ¨Ïeäw|ÓƸrGüxÿ<à¯{üçËb‡Åß¡S<æºJžñ(¥_)Çãã§~øóí½_-Uüï{ÄU*níWøg]kÁz”k´õøx{/W�ð¸RÆ#·k®õxþá!Wžãóôñ¶h¤|ž#÷+hz%_­×ã×WÌÏË#¯+
Æ12~
-K	?ú¼ÿíË¿yó/çÓ­ÂÁtÕTÊ·‡pm\£à­ÈEŽ†k땯ëëˆÅç>FšWÎãû'QÖUkþ2ñyNúõ>àotf«Oë—õ}d�}ý’?K2EÇ~Cjcµ«-¦)_áÿ	$óg÷ã+y	±~>HíµÒ` äùHýˆ÷-XÀ9!ãIY¨Ì˜ásEõÁƁÐF»-ÈúZ¸w"]Ÿ?(8:I¼"UY¸4(í. ÓÀXˆÅÐ3â£_™~ãœ+èD`c”«ô*
HŒÀcš^‚ÁEÑCL¨%Ú¸#°¤ÌÂ{™|Óžr‡`teòŽ¬ò‡¡
´¶¬"3Ý‰`Û(îùê}ß1Ž¡
ÔB›B$Úº«—Îg´åÔq l0q`¡•«§.¤1¢-“Šh°L8Ö×ô(2-ܘ¨k›@¶*’�öÒ+ãšH;:öê¹í³rr 4Qý,,}<ʱj¥*ž¾1+!w€ßÇ…
-׳+『êÅ~vö
-èª×f¿ËyŠ;z+Žh3Ð*+;Ú‹&Ðò²^A^x;˜�ßdU<Ι—&_3çÍ^YLMn
 ³«»ðªI/2JËáìFRU- CºŠ™wâ0²û…µðzwC¸¶Ȧa¤³A賸	g¥MŒ™i"ˆew6Àas÷T'y%Æp§£WpFÔëþ{U>„6Êáªþ]k,w2
-ç$߯Ò<Ú`4šx® Ëm‹AA$g­®iA–szÞ¼OI<Š•ö�­†X4+œ‹ó4dnj\ÝÎOž[Ÿ:sXâëÄܐtã8ÅeK#Ÿß|ˆ·&�UôX ¹f²« 8S79æÙøý ûHLrPË`Èðé/É!íËÝ^×g_§¡„[ŒŽoPŒÅ%ºÂç¹ÜŒ#œÊ;âràùMÞ§e…µls1ÜÖ$>,ÊÁáç#;EœêrÔ±Ëú¡	¼aØæX4æ±E¿Ð*«l‚îêïÙ͵LS˜â´'6¹„å“)çäȁЮíx:;“Ï@1ôá_°Ú©i&ÝѪzü@ÌTEl‡îÇ¿Qê×yÎ.¶«
-'KÙl÷ŠÐŠH,ÅƒdÌÒíÛªä\[õ­©6‘î1ëNeÞõ,Ú®eahË'óOŸsùbþoÄÃcð^!œ?±RvÄ4Žúò³’¹ÿ@<Âf÷8a4Ü=Žº,v$ÜÑ¥í!øŠÐnLJ‰st&G‡Ì9›¦/•…Ûù©ÉÜ”£$¾ål/i:ËíN5—têxJb´ìP–º,J†/¢-±;hªÀï�- ?kQ=OÖ3Ϋx:up…ÐÊזF¯m@íe÷UMòji8°£©ñ í‡¹ /â@žÒlsù"}âÛÝE“£�ªpÊ3,.ŠyJ}îižiÚ5†ikð«h,tF„&ªœÒ\CÅó<’É•Ä\-¤!!›¡
.³LÂfe-Jqó1†INáùÚ•\=€'�ø,þ’™ÌÈæǹ •3Æ"—)ò»Ây�´€!\l“t‘Áœ~|RCÍëïœ1ECðDl#/O-0±ney9ÀΓ 	ýç,Í|�´€
-ÏͼµHÑkÐU¾
-ƒ7Ñ»LÜÚ@N§W’FyÅYœuÔú€X—ùuüx;�fcH
~|ùT÷±ð|èçEšÒ‘ú©’¨|¦átY!æ>]cÒœUKËÇÛ‰ðPÛÕ̲8v¸$%+ø¤œÚ6S».„íQüI_íÀû³1Ë•ˆªY6Õ¥wÀ
–gßìÅ%ŠÚÆ{CãTt܃-…w ;b²À²ÁpÅ`ÓZ³BЏ´—øIé8S–
-
ÌM’àÄîä9–Io0:1 Ÿóf½W„¼	}.žÄ_(&À›­Úé„;Q¦öÄ­›þÄ;ÐæÒY¹{ar˜Š'¿u­B¢fKÿÙDâ	å30c2¹&K„¶ •<ØÜe'²Å\©†ó¢T„¡òÒà+>öõ5
-¿‘½‘¢ô‰· ÆñJ‹C[PÉûʺöôŠ<5£—“T¸†r¨í‰2 ïóÖjbq!›éah
")¼L3Õiöièb‘ÓÓ÷Ã=Hé¢4*¡Tå;uáÜB額"ªRÒZU¾ò>Ϫ['H|ŸM¤½_¡o%ñ¬=÷«+Ú^\árQ…ˆ•g'ÒV6Ç·ÔJ,þµ…‚Äï
 öâ;>¢ƒðäZµ²…jŒj¹„ÕËp‰ÈSª<Ç–#Z… ’ª÷L¯F Ë‹bnÖñwä©å xØ7®>hÒáy	Žã^“½j­>¼Š¼ZeòðR˜‘'gÙ;á@$×#¯™I£ð�ð=ÉJÔË}•Ü«5:“†³zx‹å¶¥EêÐÕ\\Ñ8NÍItÔ÷¤â˜K2ßÏøšåè€6¬
EËuËvSAe5s݁xœ›æ£M“ö(ÌÃaÚÖEBè÷åžHØ(
-'iå¡Â*ÉMT‡Êà@žZ‹FÛNYÔ~y··–¢5Ì|´2qGh	^?(y^á¾ãFò¨oŠŽ½½"n+ÎÐÔäÆ"‰JÇÐÂjí”|âÊçÖ~EL™£Ï£¸á¤jc÷uSNå UäÇxj'ZُÊLHk5ÏzVKݦj2Ͻ"^€Bcý9Š¸’£On1¸ Rè=Ê=q"^€:ãË8Ï*ÆÖ(ìµ\#Èñ¥ùìeî@<7æ¬ñÔf±M¢Ù—:!ÂñéO-çËD»ÒöŒìÛšÇÁéÝðŽÐ
-›
F†¦'¢¹{š1ǝ	N@Y{zEžšÌI9@©†0ËÕ2¡ŠŽŽ€×,{r O©m {­Kº/­Ý’Èñ̳‰î@hÜ»³X8¯Ý»”=<úÅS/*+÷•–0p8—¼Ñš‡3hrnX{”¢Ï„6‹îÛû5@ïqÿÐû&õ%…ŽÊ‡6îÈSʳnõQ½îŒ><‘³7™éÍñ’R½#´€M)Yñ¡b)•kì…*‰íšM§Ãýq Öëµì]pm;=mN®C;€P4qöòrG¼7Œa„Aàb1ç4o¯¡mfÕØ;ª·—ÿs]Yv1p¯Sø~ÃyfKÝë
-à˜Ý+‰5Ÿ` Â‰ hpéyƒJ&5[ÆøUUÊexSò¸WhÓbÔ”^@ëÚÉ*1
‹Y[ûÍPäQ$R$z³w@vÓ5Òv"Rº¡ÓIïi|§ÁݽŽ¹–Nt.§C°ì?<ñÚ~þ\�¯u«1Ð¥M§^zò;òüè…:íx&óW)—––Z¨~D§¤jÈf³íùú,õç…<BR	OgŠ~-Í„“ÚR.Êam»ê…pN¦}Ô‡æd•àÍÚnúÉ{¹GÑhö—Ô‡æu2èb’šÍ„bÛ¹mÛ/ÄlÑöÓæŠOªWJÕesԲϼ³–­?b_Af«@¢gü(ù^Þû�¤NêZÒõgn¨	’TšÊx?À
-À
-´©!©¼ÖÁldl	hP|«HM5¸·KyH†™â2¥KEdÈ5©Â<ÊDI2^i©lª—½)HŸ\™žGˆáq-' QWT¬Ž@Ÿs‰ôAÞ´cÝÛ(¯ØÖ–7ÈiÅÆwxƒ/b{±ö{z[†$
k2OïÖlJŒ3бÉÉ\YoÊ@I¦’Þ‘Œ–¢ª̉°ÆVÒ€NbgÑjmùKÓ‰á[ßÞË…<òo-;U¦f׬GóŽÎ×Þ¹·.ľÓ3²°I8×ðÏô
-ƒ	fj5ò
-Õ	æDì~[˜Æ>ùNGú±eÉJA5üY»„ƒþ"2ÍÚ^šS©'­pÔC¶>ìrq9ž¦‚½Ìt
ÆD8xc8ã„•€Óº$=–#ÌP„¡¯¡x1A{ÁÌ'3/Še¨x$§À‚ÁÅS'ÏŸIðKDW}ü”¿¤¾¼MÜÁ&:^tIÝv®N¶Áù¬­çeRk89†¿.~µ¦{†÷ª“û>úÞ<�<Læ!,E¸q
-¨ÕÏ39€žk`¼†éa×¢¶Í£;óR[•éÁ­]u!2Ñ”»j®ÎÜÙ–¼nwsZÞYÊ9ºù‹°2¨ò
-ÓÇÐDä°ä-
-'¯6­“V˜5NÄCÕMm£y.ÁDxf2Úšíž°,l`éDo„³áV€´VÅ)SÝœtõäœ"ƒuNA_Ä<åiG—‘²ƒh·²;»Š¤€nZbÜqJÛ¤SG]&©,û{DªZÖ¿)èpšôùØÈÄ\‘´58‰½ÙÌû#žMbé(ôz§Jlä9Þš>Vº€:Ú^ˆõË!‘+ïJA½¯ØY–ΐ§fÒ¾Ç ?OP*”Ø¡Yz$_€:ôBœ‚–º×Èóƒ”ON*¯™Ý63“¯}YG/ä‘ÃhÅ5d×'­¤Uq”¦DSÔõEþççύ°ÆøPšÍ<ÑåÓÜ)isÛr’o/„þ*£5í*o…igyrÈÌ:)&©l{´yäÚÆ´ïàÌ=J‹Æd¿j]#EÜÈ£xSº—^€0mTöªJ7#ŒaQ¸Ö�Ù8cÕ=åœë°§­2ÞÚæÖpØx�[÷^³ø¸W¹ý©Œáb(–š¹BN€ þœ~°e<­]ôXؤÕArW™ÿaŽð/¢täžP³•‡×Òs™]Ï;/Õ8‘GUw².1_•—@!j©g=§fUœÕ5NäQ:ÚKÈ?Ü×äâ¯59á•ìÀ1â(NäÑáä¹CYY£‰š%¬¸56…"žþÜk`”Nßwp1ÓÉ23Åœ¹çG/dZª“Tp9L¥'°Rßj«¢$Ô#]`ú"Mˆ[sš eQ)ta“€!ó³›±Ùv,q":GÙ‚=É­i£À1‰NצGìD<bÙœEGÏT”»McÁp®ÍqOf	kpN1KÎAîu‹yô1´ëHfš1[ÍÜ-¦Áy½l
EjåÔsW[ÞYsŠ/ˆ/láÐ#igöø‚Á…˜we·±.Ñ,µÒ§ú’ÿÞVèì˼g‚%öÜ
-@$B~d2À@”:â­7¶#}‘2v*ºžsÅT´UNÅp“™ôœC¿ˆCД€©NAl;ÖLÃ)¨ÏøjSЉ”ßµWÉzž%öVe
WÎÝ[P/ÄîÂ>?É~åŠlAFâw–Ä‘Kö A_Ä&gLßëbˆ,°ÿÍKb¦-*Ñ+=½Fé‹8%77l¶è¤ù0(­Ø"1•lÝÊ…<2p}†Y`›g²q‰¶ÇÍ’I·Ÿ§]ãØxÖå4WpÓÈ‹ÿVËXç ãjÆ°Xô±ÿelÑdƒ¶pvµá#%ÓSmçÕ/ä¡1o1ûò¤BázHo*Š 'ð0´f93B¤dú[[Ss¸Zm;Á|¼‚*K’…ë�m­!×Ak®¶3GôVñ¯Ó؉lQµgîá=ØÒ ôµÃ Ü®#^GÅ	‘†—)°d½~xžA‹/0¯ávª[;£cq-ÛGw<ëÜ3Í�ª8w¸ÕÉ¡f0¥©ÁsÛ¯'ÂÛçÂÝùƒIýÑx>üÅT?e®_ˆ:‘GqhtgˆAïDŨÁ`e¨‹ÓòßíNO€]Œ›/Þ‡£Pó2;ó.SûÆ?Ësp�ž$<–_9Ið"‚ímœL†þ.qhÃÆ%bR¨J>
Æ·‰Hª¾ÒÙ¤™EêÆã®â„15É«rÊèD|ZzõÃÉg/<Ga
�í­©IˆÕµ5nêÃé¨]#ú|gŸÁ>ã昘}Tj„MçF¢ñ¬Î¸KFãQÁ¤:d•,Ž>3MÔŠq!V®½ß¥oEŸ½cg.ä×êÞËÍâw"ÔϤ¤ä‰B@ûŠÞTäjË;èZÆ…<Rå>†/’´
-—n5÷'d_ÎÏÿ/òÈ^4ÚöIêÖÂÚ}ðo‰ŽÜºØa
üOŠÊxÉ+Ôq+2æE¯S¡œ�•m£'+ËRíøIŽ«Í³é'Â>Z
8[’ü'J˜>PÚh%À©åD嘔ü]º\¦˜V<ñ
-`Ûs+ë:a¨L§\‚I¸€Þº™h—˜÷èµá‹RWwf•ÔƒúqÍ;+´æŠs+3\kl%%ñ7|S…Q¥.…¿äNQ3e°av!‡ëöVÀ^i,)
-•E—çCۻĸ‚ø/Û¯ñ•´AIkU	ªé›¶+NP_äQR¦bQ}5áŽ,„d1¦#ß¾‘•ä.Äi°.këÆœ‘†ÖQ01<qYèxþùs#¬Xõ󺧇<ëžÏÀó£7F¶a˜è³¿Ê¹5†.ºg÷PºôÛJv‘;9ˆ{tΰg]©iW쪎Dc„™µ6^È£PT·y•á(CüÁ“úE¦ÿG$êÛϳ8ÈãX4mÅ+¿»è�l9y¡á‚íC£/„ı~Éf'“MA´LVLGÝRV=nbÛ"‚*ïÀç$ë@§È4c#Ö,
-¬q"äQ–l–ùQ:’È¢㐏‰Ÿ ‰&žˆ©87ër¬æQ$7ÜJb¸íÎüû*#$á‹PU0-’»&ïDÝéœ7|…šO¥Ê’2Fq:‹Û”ú3)Må¡)¶NJ”Ã*™¡—Ù!_„"Ë5ï@¦DV]Êš\ҏø‰_Moú"jù…*Ï8T¶u»³;~¬Tt¥‘†þì8Ü-4¤[.…$ÍŠaX5ôŸ¯�Ú)ãs"6>­Æ²¨HCeVmd)Ù0¸hýlž¾kP——Êž„ó$àê™"~ê´¹*v>b—²
WC6°›:RJAìf7U‡zôBlF{Èîf�úù*É‘#9‚÷~E} ˆØ—/H'A= ¡Á�S`tÑ÷e‹Wwf@:k@€dXezFx¸››q2فfn‹­œÜ ÝRò@,‰s´[‚ŽÍ8·5R‘¬î+hÀ­r /
-õ2fèÀAT—7ÅÛ#>˜‹-HË„—@ž¤&;´¡´)÷¶ørÔ0%WÀžfØ0`¥²Ã¢ì°LšyÙ®ò¾ÆÛœþøcóm6 ÷clª{ª’6í¨®À‹­‰&1ì(rÓYZ¤fÊ×xÑ$ÕùE!u»æ7.
-¹,}ƒtûÉ+ð"•G«†«X©˜°+ÈŽ¹z¨ZÌðþÑŒî†J1ƒkïÅô’»*ªøñ黿®_òG+œGe31mÅTÌÙÎ’
!ÉQë¾�lðÚôŽ7ª"¿õ…v«-–|J‘
-dˆ;âV*Ág{µß†Ú+T]UÝ)Â@º£¯ˆYôEI±	;”1êùÄ$݁i¦&ŠßÊû@ÌNE<‘UôC–¼`v4ÝÏÖò‹Þ¾×|¥©ìfS}eI
K¾&…,g’sx¡+bŠÝÕ'KÕ^ˆ2±H2˜êêWëL8,²üŠ�Œî^ɏë]¥®¢8­1ãB”æcñvú––TZ’ÜNÎnÇéœmiÅæ¢éÙͳh˜^ä¥iܱ]n{•­ñ=¨´Ù!’˜EK?¼;@..ù
-‘dA€>xÐáÌÖ‡'b1³£«Äv“íµ2w±8«Ý½(BQ…ôúj:šœ4º[ZÀŽ7à%¶¤ìh>°	PVZÛÌûíñû´¹#/YšÔb~ñ l­´5&–ßm¬²dÿ TÆõíÜ©ÎÎ"ÎÂÄ“2”¤hå·Ü¾ ŒÖd¥fz[’ùjüœ$¹hpÖˆ7fUŒ;bë 1»åé-öò¶äè ¸o©o»;†ÉŸíhx®'Ó%?¥e•¹C$‡qÖg–œØ ±?¬vU-~ö&nÀKžh€†ÆE[ạiˆv|`e9ÊyEn¦>ÊYÂlÎTcr”…ÐKÊà됥Šç1ÆålÈÜô`w§óùñÇïéá?¿}üñÈúÞ,r@8
õÇîçO=È¿ŸtNûñ¬ Ulû‰yAÙô[Dý^~<³ªa~?Bmøò;Ä{ôt,ð[{|½«WÛWôXâñø|�ɯ%…úåãoøóöÚA�*s âŸïÅ¿þy=8òñ׏þø7Îý—Ç%	RwšÍ\î¾$—!Ïáºnÿçíou¬—n­ôýŸÒ$'>ƒ¹Ý+^¼/ 79ðï<Ç÷Ž0ºhàO³#’c¦Zøÿî¨`²'˜LΫ'ÞšMæl ôqå¿|]ø¸Õ:ôceqtÃtîï<ñ…Äšzæ¬y
-`‚Ÿ[Â詆ïªÅ9xâz'7;{N¶]Cí¡Iç×Rr›³ø
ÐïÀÌ}½NÕÒG»Ä§n¡ÞˆïS
-%pv_ð(B±èUٿϸþ{?çŠ9’)üîýëtígxŽ[?s}ô³¹ö3Cü¯~æñ/
S¾64—·†&â½{GÃD…3E!G~!™ÙªRPýSÓà eq,ò¾™ÀÔ<H¯kŽbnƒR2íÁeJ[K>Àѝ¤üh±b–_��ɶ!€â7¯*Oèš:¤ÓM""KŠ+ÂY>‹È¢¢˜žÀ¬t;uý—š@UÂ]Æ0¥ÓÞÞT¡>›¨ˆQ-¢{Qˆ;B}†áRÎ…F	ïb¨»9l±Â<¤¸¡,÷&„ ˆ¢ ¡¤äōw2xœ¥/`|*ƱÎ,}»ÆqÁT¢]…‹¦—VÌ;–F¼.)sÑîç\Ïj©zgø^ÈpL6Ô›6p Ôë;B Â˜ü¶ð/7Ôi됨ÖæåЄ!Ðd´nzeJòe֍Ÿ$Át^ºuêØ6d:·^m=mO¦|°šO^TÙòmŒ^\šÉÕ±‹³“–ñžª³ßwX¨+BÆRÜÞYŽêX¾cß-È«FXªc`F;DcƒÃë•ö}é$±’|‰¥(ÂìtíY†R·‚#É
B
Ú[:¾Þ”^šÒ
-5定<>X}wo–’UYÙ«Eî�€ÁT×4š<;ä×d±Ë8A ·fuëO±anb*háÆ!º÷ð6q_Z§QÄPÅŒs Œ‘eëDæH,
•®™Št=0^vörË”À‹@ZÜnrœÊø;ªNc,B¥oÅëwàE@.�Ê’/lRg0.¢Ñßr™
-‹ê�ðþ Âèâó¨pfQ¥oÚ�'}óîkž>¹3¨Ø3ÌÆpg´äŽéJí»F¯ˆo¡ðÎY‚¼âĽ¹ÛRÎZ/â(Ù•ÔÂçvÏ&F‡xß.ûÅt ºzv•Ó±žî+—_‚„yÈÐÉ\âòÅ}0jTõaŒebDÔÍ­c½¦ÆÍNqÓO=Çw$º‹LÂRô"·ÉÆíÚÊ8k™{VƒÞ�FÀW»{›¹À݈éðÀ*¾[é?¼7ºr f«ºÌ’M#*pE~“˳•ÓåÍxW„1ŠÅìDÿGÖ¬ªáÛèMæÙÝu fÞU¶ÇÎ{71^Qý›ï§×fÞñ™škDpþšk$lk._mÊǁx–­áÓ%ήæ#ñhdOL¾É:ãáû{^†À­d“ô¦âÀ0]É)®M¶iûÞGaÈK#š*˜[ŸÑ1äköE³‰H½<LñJÆxIite§ýhœ\Ô&ËEµ8z)ƒ³ïh/ÝɁ0Fsƒ¼ûkOÐ
-i×jf…Dº"Œ±|@z²ÈÚÛëTð$DXŽÙ¬Nä%éæA6I¸Õݲ÷ÉŠ6\Q±CÔy"/éO=‹˜´”¯yyŸ›²qön='9Æ@n«»J2kv#H¡è/ô®Èíz A*ìn2¶Ð¦`òAW–Dõ±µì"ñy)È}-Íwh¹ªvÕ@ü¸ŠCöäw„1V(û¶’v¨ë†áÍË"£Fzí�¡&ÎS~£j8Y••4$츮º“a|­8èÀ/Ó¡IŽS¿­Oš’ßh©+ÆaÜëòe‡q&ó:1b‹ù¶@÷úóãDx'Ô —WBWrlsyw>Ÿz¾Æ	K÷S…ѲG#'½JgYLWò;‹}ÏÙP]w„»È’_´‹‚íÙ¬’ùï"Å3„uҁ°M–œÊ¾è?ÊŒ‚Ìæˆ[¹¸î³ò¦2º€•4ýÕGT>“·ìNÄÖÕïwÄœQc:ʾ‰ÞMæÂ䀇¦ø i1Æ1w

5Î>¦G’)Âþ¸cÝL–°á/„§ÆùÊ'= q“ThUð‰¬V;›¢)"Bw²]ÌP6Éš×I@Ëí£HŒ“æ™>øÎû+RåpB;yˆµÚÃ]‘kÒåP2<¼ÑÔð„™ÔxeÉæXϯÑø„9Ò5$Ó#¡DL¦V¨ÛÖz˜£+òÒÐÞËùh$SŽùé|Œhíú„„c©pE,7²õ‡è#‡Ø@†wÐqñÅcIòÜkž¾Wä'Ì[‹îåúEJ̲éŠ0…hTC÷/-ÇÝwg¥ÖSÙ8Æ€ ®n¯ÊÒƒaÑ&Ï–ÉÖ{¥Z‰Þ+Ñž|†Éwá}ú›Ç5hvGÌÚt–± VawkðlÕG°-:G°l	Å·rHêð’N׌aÈdeßB¨©r*þ³ÓªüŽ¼äŠïM’ÍâTL/ì‰NGNÍ9mM.k9›Ò=XI ÏÊÖÀÛZK‰JÄ<�Þ/á0AW¨ñíR‘3iôI©‡"™ÃÆê
-È—ý‡ëêH’]ǁû:ÌzsžÚj4¨~WÌjQ"¤É²ÛK£°‡§J¤‡ç§½ýñÖóo�Ïã¹°ñ¼<ÖbÛȶåræé&©}?7âh¹²Ù“T<•$@¦U*£B˜Îáù٣ɇZggnòZK®[2F²ßÈ£¨4«é+Ã[°=IpZ¥Ýý{1I\÷€€iA|Ì$X{•˜0$J­äiÓî…Ä`©AAUú>|Us¤jÃ:!‰5 ‡ó˜$ŠN°¬hÌiÈ4\î­¾üã
<JJñòvk÷¬uØÉM–;7Ó€3Qž~@Z²Ìõ$_.­=hŠ‡êB‰äºx,ñ<£ZUIC–'i]~¼ ÖŽµ~HU$êËÅLÍz$Ì·Ö‘èD¨aÍÅ㧓;È;j1h8:Ä¿mÞús!ÜcûBÈÒÔThi™fmʤv¸ø¥F ú·~$ÎiT}ö`ù“ˆ9wàŠÍÓðT±Áyd3jlQÙ^0&2Îl3ÒÍl§Únîá=*‘§±Þ4JŒede„”b€ÌùB“…º†j6êØ"xȈI•ü¨²º‘á-ü#˜ÂøåiÙÚr~8b±DŽ¥¹G´éµÕl¿«ƒ&•™¼maHseè3.„{@s²©²É~} tA&µN­×þÙﱃ§½[oE Q
Ù9BAŽà6‹2ÀpŒ˜šTŒ<´œAC„Gþž[áfÔœÚá`á
-õÂUAóþ‹ÿM¿vS]×÷s#Þ¡ÑU’ErÓ;•¯¬`ŠO3~Þå¨äQ>Ú›CMJê–üŠ¢BìmM¹E%NÄÙp;™løÖr’ÓX+¦¶¿õ÷s#¼R\Cÿ÷Œ.Œ­…uæ”\éç«'ìá › ¼ÿ)÷:0È)BYp›MÖŽï–Ùr¤z#T=h‰í€n-º3éñˆ0».Æ<ŠG)›C2­ðŠL#‚_JGu™±³®õF$y*Òµu1KXc;Gx®È)Ô®ã~"¦Œž½G㍓Tš­y⼑†Š…±‹Ã߀‰KSF%åeM¶ëÐ:‹;—ÓYæô ¿!Ò¬P
-A8ªÛJR’é4Õ¯pz#܇f!)©ì~0ø RR§U ñº±îÖı’T2¥œ¡5á
-2{âTÆŠÏRs]È£x”x„Ì&ÃÚŽ5òå¸È0ZçÅq䜿g`ÄXYía(D3¾ãB"íøöÈB¹Æɦ³†Ï>Â!œˆ-ÆZaJ¦g*u«šÜ5þ±ù’¶Sî…ØçDkùÇé¦â=ó@Ì]¾öµZ8¥à¸ÝÑTÓÿŒ^a32â“öT5/„ŽGöœ%o´VK­Qëd»ß7`×Ù¶gfP=Hž)Íβs`Lù~.ÀÞ·†c”ýw–°0YüÇ&lÙþùDeš³^ØšXÛÇ’ø&]½“ãà]ÀÃ\ ñE‰8iU8 3‰h”ÔœaŽµ"L·fUôÈÎSQêæ²Æ2)Ã]ÀC ém8øê|àp‘‡ ô‘\•!ßků>}¸°umöãA.oA_r# sgwJcZ[:¯]ÖbÙ
º¥+¹\€ßM+œDC8£…Jr‹O_Ýà`Øê¦ÞÌháQå¡›.±¿?׏RÐŒ`B—ó1’M„Ù"·ð¶g´ï‰p‡á/§Ý~qÎægLžŒ'áÐÕ™çD<C]e#Åôd2ÞVº¹éóê/^Gï“å­áì¶U{ôäÌS¨oxG-3Bω˜’F7»&ù“J—%>áß
-EO&ÊnJºŸ´¼…Ì`AÉ4‹9’‰a¥ÉçâäcÉ«‘tКŠ£}eS<]?×L0žl¶wÜ¥â~ã#.ÄbÕ÷ø÷áˆ=lY¬Hð¦$ò¯âسÓQ@ˆ¦¼§ê‹#CT«z·Ë2}?7âì³z‰{¬ï¹ú¿{°Ê$u‚õÿ<2òÝì§a'E¿±GáR\®¡˜øýÜ÷Àä‡%àë'Ú|õÈ`´%Û‚ÌÁ¨ÞâÐP4zŒ=º’‡ŸZŠX“bbjwôy#\ڐî¢Ö´užrξì)‰P?Å…x”b
-«Æùo2§£öH»KFCŒd„ù~n„[`3åB•'çÙ£…f–Ïnü6¬÷já³OÄV½w³ðW¯Ö|~Ý•{­jlnñF¸ÅÒGä¬ÐQ’C
?`§ÎwîªÜòF˜[ê½Ð½p­v Žà¬\W^L¹”çFíºëÑ2>íjiÛ´NN±Ã¹~ÇØÔ2ªO@·Í¥8Wde†LÒ÷s#j“9©RS†FtM±ª°„ÂyýýÜ÷€æÆgûÈÒ²$VùŠ9_=ñËÿù?¥ÛŸïX,ë¦Íò�”åf›ËížÌ:âþôt¥1MóÁ&?íOtª¸;ü�8!4˜æ‹MEª"qtU‡IhØï,ιONL†g‘„2]æ¨Ò1c´5o™—žcØOÄ|1‚/åÂÀ(Y¹¥ÙbN+YŠnœ{¼óÖ̦þÁeRèÈbi2]oSëÞ~Üw"äÏ¡#œ²Ï’]aDQHÑ…;û€ØÕ¨tºƒDPuŽF#ÖßÛç*ù|NÄZ"]§{`ý|¶*ŽYÕùï«W)‘|N$$MY(yÀ|
-©ëBno#öLšËâ‰DòÙ;áä#÷•œ-™szÔ7ÿ%Ÿ‰ä“ãÓ³ô=KÒp´<åVµbÌÂ#œˆmFÏnÑÊBÕdËVc¢vx,Ni‰äs"v;ä2~V3]ôâK-<2‰Ô?÷òK>À
ÀSÑJ3â„"Aþiœª|K•ÿ~näùØÅúZç´ðÇÔ„{cŸCr!¶ŸµÛîJ\ÓŠ‰ó°ìiXŸ8šE
~!6Àøz8k-ÙÑ ›¾ŠÔÖýM-÷x#myótIà±.e!WAïz	’êlŠx
-t I¨*8lOgÂ]”_fr¶\;òË	ày˜ðÈZ˜HØJA¬¸[òYrVۍ¯¿€‡@a;1ïÁc9I»l.ï%‹¯ò”¾dúQ{wlûwÔ„|¬9¤êðá×ÏÂ.—²à,¨DWW!]-Å¡ºÌhòDïµê.ˆuG1-»VÑCiuÛ7iøðöiÜùcwuLÊlÄÑQiÛ.f5áx‰†®_&‡•<ѹùcSwßOÌa÷ ٝ€òdO­°ŠI߀¯lÛAêxš¦z3ÑìÉT,|°úYÖ§iݶ&òBL•‚$˧lÙhž‘[ƒh¤ÈXnä
˜šÊ6gŠ)‘€ªRˆe;îuv»îþϦ–D–E$ÚŒB<U¬û⥭D:� R=ÏU–ó&žŠq>‡®–Ëe–~#V¥=bÅ)QL%äIåá+k °fYÅðÕhV柕Hœ€·cY…pk‡@ÝÄ7,k­3•³/ï8)ƒ]ïWnyªy$Ɲ)–È*C½û4Qf„qϾðîT{!|Eë~f“àD’ Ù)Ù,‹Cöo„{Ì8š®aÒUEÃsdý¢Ig—7BW…±ÞÂL¸èí<ý]¸®¶GL¦üB¸Ç÷‚ñf-AvÕ"Æv“™ƒä_À£8c™ƒõçׁË[±`‘û{
Ó9.„{l‡ŠV/òÊêkpöÛ¢lêá·O„~N¤Z2z[J<k.“vYÊMëÂ+Úã8:”fj
-ML<åÐE¹kÃ$Ù¸�F—rŒNÆœsâ)‹;ÀWëéîû¹ïQ9ªÔ²2ôÖ*CRT-¦Fäï}E„:‘G‘¨ê½Øu32ýŸù*Éq%7¢{¢. ‡àt{exáºaÀÙÚ_ßo TJ^ |CÊH2ñ†mFi9Ñs…3ÛüÄèCµ¸Gì#û½ò“Ý¢K9;”[Ây¯¿g„)Ш”/ïgØ;ΑÑê§áùÖ}kþN¤NFEV¨›–î„Ò¯«Û¦Ùk[{Àý)ògGS_WߤDÙ#vÞšÖ”xD.Y¢(Æç€.Æ98¢¾ñxX)‘KžHóÀ»!ÚÍ°RÇNÕ#B ~Dˆ`ÚaB[Å8£M0ÝŽh˜¾ªz㌻$SÓ0‘aªi¾q?ƒXÚµ.š“3B–Ù‰µü¢!*<,S]:.Kºq£Æ1ç
¡I0\\ÊÄaZ"6"¿Ÿ‘7|FH(ͼŽHg¡À8W«Ö¢(q6LÑ>Žˆim¨„]ÌDG3Oy¢¡IÖÚ¢ýˆ[þu?CR¹®Ø)ÅÎ@xö_šb{ Ïˆù9o¾å„Ò	My4™" YxÍínô±Ò$+!EÂ5ç»Ê:ˆ¿­3ŽˆÅNd_äö@…wC(8ÐL}=mGÄ.¨Ñz!R©ƒ�}mø`eëyߘÄ︤␡¶>Ò_¤Uö`o	0¬ûîëÏØNlY±ÔeNË»kûF€6l_î‹`ˆ‘T(ç è»U“êÁ/Ó˜·ºG.JóR¼ó—·Æ�’–
-o‡Ê¼ËÃÜ2‰ˆ¨K�•š0‡êpÑ„”d_×£Ù„|lb$#»Ä⤘2¶bîÀúK_b0¥âÀÅ�ß#xóñäeÂñ|;RÒ—,ÔÇú¢#‹að¹È�ì�68Kìêځ‹®¨ï©Ûè›| fâµ,ÉPò6Ÿ‹UŒr}Ê€
-ŒÝ
-‹†nkÙ®âÝl�È™í~ªÆ¬Y®ñ¢‚a‹ˆÏÑlƒî‘KÆh殺×aÊY£æýõ˜»•?#¨špÒ5}=mµ=³¾ÍY=nزrÜ#¶A™ýž^ršØ†‹¢S=–jØÆ:Í—
úŒ2)|Éåæ †½‰74ÙÒ#°m ¶–¡
"ÞJ¦…mj…þ³‡9"ÌÁÛ­à"ŒLT<Ù¦Ç,•J<#ÆY9'žŒ
¬ž2JPÃN(dŒ(IòÆûÏ)ª*ïÈ2Í̹sr‚[˜áùV刘ºú.Ð"
6(ž´F’k8[1VMßë!…ðL3œ2hš( å…–®T^^è3r‰–Ûð5Nj¹»­èy¼ÐUÑ#B=ÙÎÑÃ’¤ø ‰½›C$ñ¶B÷ˆeÍ*{:ñĿː±	arô)ûesP\ð£mC6d|zµ7åÍÐã,3Ýr-ŽÈ%ÅæÎÀ&ä[òîxà%qˆÔ_Ýt#rÉÙ¤¹·N° ¯	“ÙÄ[¨fûv¼öcg„¢]UeMif"íí�Uv³Ýš[3ß#Lħ®x´f¹_ú͍:�m59{ߏ3b1ö{£WِT½¯…·ð´Ä­ç°
¹G˜Ã¢Sû(Ì1U‚XÔ¡uˆòÐ	É9îç °“Ć_›D$T¯U‹¥ï§MÙ=rÉÍ9¶ßdŽ²™­Jw)Ò‰¥Y9î;ÕìP‰9,é¨Û±Ö&wYÓÏÚîò3âk1¿žÁˆìu–+»™ŸïÇ?¾þýH_þ÷¯Ç_Y¡ ©€ ‰Âfûwýÿ?1]8þ³f
è“·&}vêÚü^?žÒ\@¶÷O¨ñ¥x­“~½üŽÏì‡õl~§ßKü~¿Ò~.)Ùo¿áßØmˆ›â|¾ÿùõóè°_}´¯ÿâäùú(ƒZQÚ½Q›„Ê€«¬£ns¬†éZKôó½>
-*Ç’¾À`]
-œ¿»/úöç)~ö¦h"ñÿd?„ÉLíýgNÜx¢)À-ù-qÙ¿½¯ºßúØA6‰ÌñÑæO�?„@R§Ô&;—LM¢Ù'¨2öÑ1¡xž‹|MÉ"-)|öñŽ Þïçó€0ÊùãyPÏÔ×rŸ"cl¿C{Ôª~ÿ§:þuÈy;dƒ”êƒD3pþB?ò1Ì(3§Žü‚(fëgÉᄬ魿À«o,È~þµö$ïÅë»ýì=÷;õ~µ×i?tã ú¦×CuÈ/¿#‚:ÑM\2¤Z@ÿKnáŒr>`VIµÛÞ~?ÎÈõ€–Õ
-‰’Œ©
-t§Ðè]$&>¹oÜQdöäa²öÑCÌ8z¢'Ó/°DH+azUŠ{) N
-•6¶‘€çŸTlØhÂc0¥µSäèl䬬dÀg¥ŠÇ¶ ¦‚ôV²›||F˜õ)•W ïCjÆ' 'EºnI/ž¤hæF:ôr@ƒN	GêH®c’†rÜ#ÌQlÄ°
-²Š†UßcÐÐ oÐBÕZÆî C CY
-@I Á
-ÝI§³À.*'©jW¡ZÜÈPqËç¨à¨´Eš9¸¬–¨Zª·ŽS¤_Ú~›ÆjGȉµ/Pü¦Æ:"HP¨2,º*
-•ý>ë�ŠÎÕuiÉ9îä ÈÉ~f@%Ðku×
dj.¾”Þa
-‚Ì.
v•BüãI= 8BߦL°º¯ñ8í[ñ󼓠»ÓŽ
--D$b­Dïªä¹w¨!Œ”u
Ëh´ø\5
-S<ÅmPæ@iŠÁ³ÀüTˆs@¢~Q@•j¾9gpG�&m\Ó.”�û󄹫 ŸAÕˆõ9#H1¨ì/ìð
-#“Ø4ØD€3êàHn„ôŸæÀ
-Ñ^€¬
-·´Ö+q@°ˆò-í㈠q¦ó”	w)Cw›z(Ĺ½� 9#—"D¼©Gd*K J,Jpðù|
-E
-ËÇA›ò²ŽÕÔ&`K‰…3ÂR`3c©ÀLÅÒôjH‰¥Aái5;ýDUŽ{„9ÍíÞôZބшޭ™ûîÞU}#÷è"C­ÄcŽ"g«•p3”ãˆ0ÇB{ºç;—ë9fm±¥é[òûûahæe0¬Iêo,¯°…¶QP­9"{Î^FÚ¡MäèÔ;Ù0‘–¼Î2 g„ã¾0­ÿBBœTR.~°ð² V߯Hš³3BÀARJnl,‘wè]c0H§µM1Ƭ{„ÐIG[,PÈ(¨Ç/iBc\‘¶5_„zD¿«x됸BðĆ¥5¸"~IÅë›>#¦‘ŠxE‚§gåL¸¿€.Êaõ\MGÄdÖ9¬Ü{"™‡Â�ÜØ/–×ÍzD˜í»†Ø)5t³¸-ò(7û¥Ë¤ü¹&%“6†¯‘·[UÎ"Ŧw¹’dù¹¤7¢9GH‘ G÷ųFPšÍw6šºëˆ0Çr…9Zì…A)å®Ï”ƒ5¬iZÞBé3B±(¿%p'@�¿¥Šñ(Æz³
-êYÕ8"—$\ß²O	˜Ç./°!搲ã×]q ÁÚ×LܯczS¸õ é÷ˆKŽS c·ì¨jŠ>-BЉ÷\¯Íçˆ\†ùŠ°Šøl¤æ1ôÖ¬%mF-qp˜S.¸DnŒ7ú5¬ÚÓ‚Ú÷ã;FŠ#‚�€Zš"DÆõ,&¸Y¼®œnàÿ”r=#—²N–·
i€ÞLh51¸cùûU•âàI0ÝÓn"CZ‚rh¦Õh<ùm?àZÜ—ŠSÃ4[‡Š9	(Ã6¯%²C¼×ÌpðJQxBòŽèÊúfnt÷ၾõ@“á”u¹"0\²?™ÿãºL²åÖq :÷*j	lÀn=žjÿãŠé/qä#<'ER@D\*ú¦–ªî>5-3~O*úVÜœcZO©îä¦A»Â¤*òíåPBÉVÞº+œìNH§#²º×(d…ow×’_Nêù§t“ï…9K18EX+xÓÇcwBªsU¬J¯hñ%Ñɸ«½¥A¥¥J…nôªX·&£ûJ¡¢¤ÂÿHMMçÐËñBï¶ö½+ÔÏ­ïÃJ9ÖÏ)·A¯ó$ø÷4;ÇÚ-±è]±—º¤¹›Éy0€Û±*ƒ9T²¨Ñ
- w%½Dî²B�£Ñ½f×l$€ã}í‘dô®ØÓ˜(*ö³øeFGwŠ†‡B™„V>ÿ|ñ]1…ü•ò֪ѥ§±}é¥l+ÓÑ»òÈ°wZäÇ_}ØExE(hóðsfLxWœ4¦>%¢‡ƒâ´¦ÖÔ°@%ú´}ï\ã[qà™Ä}0ì½`­ðǯ{*4¡-õ<L¼W…k`³¥Ôæ¡ë`.Ç•–ä:F‘mHúVÅ9	ÎÂÖb�œÃ£h—Ž1ŸÍ|YûQ�üV˜B±Æ6½m|Z!˜Ž#âÆÿ åt•&´øœ…kuXi‡+`t«nµ©|½‰]4ý©]\•G!½¶ßªMTT«wU!CŒý{:Ú’Ðþþ¹+`!(çLÐø
-¤]§ì³fâ1†‰ñ[ ŸDÒöGèÄ؇"7Ú6=×’+š¯
-×Àw­cŠ!ÿG×É(ÊøFŒDËádMÊU1«UíŒÈr’ïœ<xÔ·²,pÇK|+¼&E+kE›ñrfõ PÏÉM»¸í©tÿÜ•G :•q8"#>Òl‘ƒ ’]²]	Ç]ao@”gx­vOŠUä¦Uý
-Cç·ðˆ›Æq„ä�M%åBéð­]¬nö¶»Â1	ñETh5Š(³˜´‹-ÛÓ‰Zߊ'M®ñ¢s'yepŽ8ñP‚ÎËC]žò-X3ªî¦hò¨*ÌvX ˜ä Cƒé/I8ߊ¥«é¥hKÈJGiÚfC~¡Ø1ÍÊqþÉß»bJ0Ý´“‹ßr0$Ñ"S?n±[†¿SÒ’Ï“5HVÛÿ#ˆÕ”ÄáåóX?JzUì(ÁUeŠ’&s×Ä ‘‰B^XÕ•¦¤wÅÎväSØAàä–èdÚ¼ðLßOqª¿*¦$S"Æ“²‹Õ‹¤¼k¢HEkù!	½+|{žªõ…÷²U}”BÅØv¹ŽÖ9ß
-ÇHSÆëÍE£¦¿29Í_×SÚÌZß
-“SIÖâh‘“`(=çy0I±K¦ÉìzU¸îGÃûñ5HA<‘Ìq1ÁA_"Á!ðS`lâî¢Ã¤bÓ¼}㊀GúÎ?7§«Â(
-Mí~)U—qV°?éFžíØyªV¸*\£ìrRfê.lj…pZ-¥¹ž_,U˜ì1}ÛÀOcò¯NÔ”’cÕ¿9×
-f‹&Å+qpÒI)αBY¹h	Mþ{"Ù,­¢·u’
’[x3ì<ý]èiûûç®p
̨ÿbòÑMÐS›÷%žŠ¡¿ór“°^•GÀ´ô¤½F²ƒt-›]oÄÄžæwy
ߊiqŸ|oYºÈž¦;¿Ew§çóß?w…k€RÆû7Uƒ%ã¦þ\DôW¿°E2Òö
¡I(·è™QÜúWK„ªÕ¾t”Å¿wåžÎ|3"ÔN!m8 ©(á9ns‰oå2µã)§p˜ÖtHÓÀ´gäš²‘«ò™Öð>*„‹ÀTç‡)Iæ?ïҐ¿Ÿ-g9vOî›Bҏe•{⥆¤)äÈWÁZuàå°{ßd‚•’W‰?S½µîU Zâg<Rp]«åÊŸC8‚ÎQäêú˜wÅXt˜ôè¥4Bì}¤�˹4G
-ÏMáæ®Pø»×àih/´H¾…²NCj̨Ü×’ä^›˜’Dib=lL×S åcü|ð]1M†gýdˆŠZ^W¢"mŠ—3Š^…d"Ž-÷f¢#¤*°®“ÇÎPð®d°÷@° V{ØÁZaÐ�hÛD6‡“o%óMñwlü‚.ß
ú\	il×–é]áè•È^àY Ë+ÏV“.g¦o*Ü•Gٍ"¡›Çi/
Ýigœ9çd`|Wœ9ÛvÐ¥AB°0+¿ …}lÎk†„¶[¿'_‡ç&!îœS=ÕhÊÎÍ©Ëéæ*<ŠãÑz†½.ê¹Kö}¶÷Ú›–øVaÁ,–Ù7=Í]ÚA6±ÀWy°yæ]1Ï0
-ÈK'©ŠÙ¥™aó£˜Ê5Ußʣʘvð…µ¸†òã®ò=#~Ï%¾•G¬VUè(¸¯r26„Ž6t8À֍^®ÔUšiÂbJ_Å`óŠkqD/»'d¾+*�¶äœKu(=q_²ÇƒQª`âªp
xP¶y!›13‘ÿ£©Ýúöó–'Þ¶=8#8¹
-_ÖÙ*×á<3Ùch>N	L¶Xý*ØU4J;L¿
-3¡t«ì0ˆûP˜hšö¦?ãzúoÚßN;˜j«½
-ˆêZCOþ©’:˜äYIDï
-…+DÜÅ¢)W
-°·ÉLE©«©¦Ý
-|ULDe¨P·õ³S?x°•@´–^Z­[W%èø(;šDœN…ILJ5
‚	Ÿ#}àU°“œ’¿ “¾ËoEææ ‹†ßY"qè]±£MŽw>«phïê“møíd58zOS|è«è¦á»@B’¯Zq>&G‰¿àyW¹õªùiÍÛŒÁ¯\8{დ̷€ÚhÛ½Dœ[ô¡ƒñzaÆÊf4^Æ|Õ–3E;Çœª5É[1éôõo€”Þ®±•Lè¤ã~	‹Ð•¨S­Ë<õ-0«¡ç‡±—!80´'|átÏ€ó4bÿ>Í2ßÊ£ ʐ«Ñgìd~Û›Éfö*‘Sáªpü2‘Œþ@ØÙéíÁ·´¶$Ì|
-ñ7V6Ö&ílŠà`ªÌÀûÔÄaÿB˜Àåt£boG�"!%®v>T¾£VCÍ·‚5Z±Ibº¹
<n^ø t=÷îŒ?—¶qU-ª@=‹ô{Ô­èM{£i’¤Ø&‡H´zqÒ궷E°"òyALÁÿMÌázAh®Šápq2é”»¤–-vñ:áq¢I?ÿýsW¸ÄPôýï7=—Dýïæ®Ü­L±	¦î~vÔGì7¥á¹Õf‘ãÓ-YW…}5}.vs,1T™·L~$¤ji8Ç­ù)p>°'
-%ùh1“ãyï0-‡ãq4èWå!ÍâœÙ5c%-aÃ29øЮbiH.»*%b¬zÊ‘ÀD´ÔÖ&ZB¼«›j¾•G˜Ôö–‚÷ÆßLÐwŠ·À+ÓV(ûé:ËUá©0¨LLÅsQ’‚™gÓ4ùmš¾ê/Tí¬jvË躱`萞 Rà®iߊÄß!4ôšP„T“ø@B³ï<[K6zWÒÑȶt2ñº‚g#E…=q²õÜpô®$1è7]¾joæšÛt$Ÿý·«b>Zò°Ü;ü=¦Ïf:ªuæÙÛ/ ¼*²{^àuJ›.xŽZZ¹ä[pЉ~ò32¡Íæøï3c6‹²È–Þ£Q	Ÿ‹	š¾ŽOÕI$˜_;
ï0”ؾ•GnDæÜ"3ßFOßJ5Ýñ]aìÄd:¹"= vþÄa”(hV€)žøœ}Kq†;ÂÊŠGÄ37åDÇña~þVÎÞøbxÕ¸†vÁÑg®/Ìù*D±À·ò˜¦ÍæB¾Ð¨Á6á'B”XF>¤J­ñ­kšã* È†§¥cªuŸWåQ¥µÿ“^-;rGð>_±GíaVõ~\Eûbƒ0/àƒmÆÚôkH@„aÿ¾#"³{º‹K‰!@œÊíʪÌÊŒŒ0I§í™Ñ9G“¸ŠÙ`¹i°®–›$[Ú"Ÿ‰hZ#­4EVºÓ@Í÷ÕB(
«Œ£éÄál$%8eãîªz”³Å%f+ûYM¯FÇCŠ.éYò¶…U×b¡<`2¼#Ñcõô7šLdÀ\çõM*i¸Äèà‹ÔHÅydfqN)XcéJÄba$	NÅÅ=ÒI†|©sMe­;5XW‹õY§W V)U½9ɧ€ˆ•£šìškò1¶ûÙb¡GÍìÙ$ix*~1ª0ˆM
|m<­
²Ê4°%Õ+±zb9õ¤`=£Û )šîga3BPNR7YÙs™)“*Dw¸i¢ûÚ³’ÊKéïUy%Öwâ×i:ú-Dÿ¡Ia{¦4Q#	¢O
-F¼‰œß¹&:[8É€òe»65Pu¨`XSÓ0oag†ç)@;O]Ó<í5zjáÍÞhL}ÍY,7Miâ½�昪?.Z…D SðùÄ/–›GÊf©Ó4P®Ã‹Œkè-”a4Mt¶æPuN+æJ
„‹v§
-± ýj·É6LÑ,Ò-Šk)ÀvT¡ÖA£
aªŽ”ÌÊ[Á«ÉDÆ0ÁÅn'ËšÙÈ:¯—Œ0ž-7±Ð@ã©mªQÊLòÍ)I‘Á‘6÷ž-dÎhñbøÈÖ&sÎÕ–T¦st““pq	*”?ë²w.”hFÖД8[LDLAÕTPeðƒ2õÊ5!EÝ\r²PÉœ-C„Þª[°Ø¹žq>*nÆ•òrY-ò¡i•AC+:¾5“#˜ºéãßú«å&q¤¦¥ÇÎÐ1£‹MÑ®TàNÃÎH©+g‹	CÒpZ�aRKö÷LZ&Eik“–G߃T3ö�÷ÉØ8—åêQû¼èû6ŒÖpN¼—âÍÓeE°:ªNšÑ­TKAk4ÿT‹…¥I²n$/)(êZqUâØVkÞ°¢ÝgD$ÓЫGöŽ G²_¶+ú%ž¢x‹á&u4‚µ|‡˜eÿ…nl¸Ã^:(£ü´[,‰"À×½9:�#Éo%ä&Ù†ÂÃpæd0¨šä5ݐ—q‰ÒvÖ:ê9V= 3#Ca/uQT¤kUº(ù¬(bV«Å07Ì®k•BÜø� ú­4‘H]5ËM:ÍgÖÄQnpJC¶8‘²v !l’/›bp“óQ‰—g´i„F-“T7œ„g}°'6‹é -?÷£ê™ò‰S³Ë ƒAóØ„£#Q³&‹ª&Ó@>ZÀf6
t°¡ ™¤¥ÿ°i×èIˆ>ÞÅ1W‹Qš˜ýN¼F  œ
-¢±¼ÑƒU­8%ÚVܜϫ¦äO¢>âsÊNÅ©ût1»³á&š6RqjÐEì\†ÔÅ
ã´ªï397<ZŒ^v×–U™5û¢¾¨ƒw
-ôÄ‚êb1†Û“õt˜ÜÃ*5®P‹±äЊ+ލ%-7q¾'á'w³{aˆ½—bL¼UùX,7I€ÁžãGŠ)"f1¡†ÜA‡`®–Mù‰ç.Ó.9˜D- Ü‘Ž¬*ÒÄucS•ŽÅr“…DŸó›ˆ-Dr]+I¥lücÖéêh¹I—¥d2`PÈ¥§l0<0ë5")=ìb¡̍hH#÷àVÓ ¢É�9uçkC>Ζ›f«Vpô•Ô‹5K€r(O³b«Þõdà³";äZ¬q‰.$<Uë ®j딟<@$qµ°BIÓ‰)&1ò4Ñ@åš1/¤‡H í‹…}•+06íDAԝƒ£
-ó$ï3|ÁôÏÙbú'†.´byN2jž¤QØÙA×æ`ìÞëGûmÂîO¤wUøR¢ùà„'þT¬.€W@[Ј
T@Cg ïI!xfŠZ5üj1
$ô'l’cÒc¡†JUãŠG¦ªK,–›p8q!Ž9Š€»²UrB
-Œ¤%f[ëîà´Ø�!­¤¥H`Ae","#Ö¸ˆú—Cèlá «‚9ݽQ:5Ö”"…EhJÌ­>
-ŽSì” %³‹§“mÇüN®‘_›jÁåÙ@œIY·
-x*õÆ|j˜q]Ÿ’Ç•ªfÈb!1@­P]tŽ¡©CZ§Bý'gjÔÕB~SEU5
ùŒh»Ú½•;}â‰\¬…)eºXȳPmÒ€äxTAðžm:†JDÅ``³žu±ÜDÞŠ÷?}‘ý¥a<I÷àÀÊÖþÍ2ºXn"¡$âšr€\J›¤ŠÅDÈQÒ¦OãƒÕÉóÙBU<³!`@’<SIa%ñïMð^-Æ๕–Y«X?Ù^¥²õ¤Ù°a‰€³….@¦IÑÚMŒˆuâV³PÜ æ`;j®#gÅ`ϵé5¯‰<®iÜà¾üó$`>E“e‹Å\ˆË–!ÄCb´uÆ
-Åÿ^\S-ôAÅå5LfcŠq]ŠI=#èÍÅÕr³5sŠ[D#“ºEª˜U#ÏÖ&0z�àôØöàÕªRNÏÒ8k —Ëï>\ƒý÷¯ËQ¿¨'çÞ#­%ñË{}Èÿ_§R}E9
‹+ž`{e-ß—/—+ÇqCÛ‘˾[}ì‹ío¾÷ì{wíGÛ:ø¦ Oï.ß_~ùöÍÃåÛß¼yøöí›ôðÝ/°úþò®Ž&ÒƇ©uÝÿzÌÃSC&€Æ¨|פ©®	5€Fš×à=Ø’HWbvDT/e£ØDqÀçÜ
ðˆDÊæK
-Ö.’b`hš¢þH
^1Þý,_½ì·qÃí‚t=õýóDîÂ9b¾¶¥…íÛßý2·»Åoëþ¶XÖè™÷Œrcr"X4Ûú½˜ñ˜ðJ*Š¬m߈�u&m&c$‡uD¦çP_lÀ)Y`^`ólO`ûûiÑx„Ê$OØ
	ûˆûÛ×~"²á»Óm_“*b¿»ËQs`;ΗèK¿€_Ø
[<æí?Óx,Þ¼/ˆeemâ	‚cj{–XWä2…@µµìé‡s\»1¾¼në¿«gîŽ2»
-cüSGËƳ[sÜɯ/é`…hE%¯£ß½ö‰·ËoO÷P¯¾:¢HÍøy!ý�Î'å—„æ0C€2ëæà‹ÒSY’Ä××ÝðÉÃLH!Ê'¾Ö­‹kó4–Á‚–ë殧ƒ»¿ŒøJ8[‘‘õÒ¯¯-²O}Á‹|¦´ä‹ðÅ•õÕaì•õ³âx¥²¾8†X˜äÒÐDzSxwœój=ùî|bÆz8Yû¸(v=/_uC^Ǫ*¡Ž#c@dXŸ
!ŒRûjñÃgO—'Ötóµ(ÎAüX	<és1|÷L;U'TŠ¸Ó·ÏÏtñüî’ñOœ£ @Æ͸x~ùæ?oÿüñoÿøðøüÏ,¹=þÉ÷ÇdV ÚpP~f°ZˆÌÈý¿ÿæèÙÇ+4'µÇ+¦4UØìWÁ/¨ßùñ
-¸ã¯„_]¿â#FÏnú°§˜5õÍSj´êWݾLô¾û‘…gÄûyà¤ö×?>ÿê•4E“ýOÎöü—ŸN	#Hà
^ð=SöpRT¸ËÕ™˜ý"nBè×xx¿òv}IiËf;Ì_[ê^ÙÅÓA¸ì¬´ßd9ÿÓÓ³þ»¼Ï-&è»xÞÛýþ{¤Q�ÕwÑ=Cìþpø.åýæ}?GÆw×rz5è…SºcÞ¶ßÓqÿ¥Còáùtôù²ý|ÁCeUM/ãø÷ãµæc†ï.Uø÷Rú‡:”~[^8ݳýÿâIåŸ^­Šm�(Æy¯éŸìÜOZÇd?}éƒ{O;@¼VÝéþu«-·ÝkóP×öÕÿX¯¶Õ†aú+~ä!&¾Hµ?`o{¬?PÊú4ØØ:Jÿ~G²§cƒB$ùXŠtÎw\ãÎÕ$ÀÔ×£m†ÅK)ˆšea¡4´¤×{äÿª©ý<›§7}ñ|4§ÁÉ»wó8HRFš»ó"ܯï÷³†ËMÃ1&3:ZgÑpÈÊŠbäTû¸þÖ©a³?Jn°^Œ:ŸJ[¯Ï”mJÙ›]�ÑbÖÎî<êùëB Me1™0wÆYÉmÀÅö$Ajñu½@™�„VE}8H’‘1³€²ÿ³^�±÷
-—)/i)l³ŸTuÛ~h67Ý’’ª]3×ÛâÅu<N]!WŒÏ	Jq9~„)æ{O!ú-¹ª‹<9^j„«Ä}iÛ±í7„´(Sºá©³\ûÝøâÄՏŸT®b¸!xg½ÿÙGñ¯((fòoP¨\ý`�|zi2
-endstream
endobj
17 0 obj
<</BitsPerComponent 8/ColorSpace 18 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 72/Length 938/Width 76>>stream
-8;Z\7bE7E2%+U>,Eq@jL:+:o5[LT3fU^jf=P5IV/NVVY>1HR+J!#oE4`3Z%$r3qk*
-3_^dQ<;!]IcB$gKOS7B.!<SDd;Fu"FPJTKDMV8Y`S$Z\qEm,Peb@;CkcNYQ;"t29+
-4f!P;0)%[QWm8Oa=KiZJLb"LE['X<kmkG/R-]J(kCgJ1+QCf45<6gK2h!'qqs$^0>
-6Js'=HfFuU`uZj3"%2#gY4$Qd/M9u.Hsc5.#o10]1a$sr3f>M4OFb4)jR1?M0mS<B
-\q_g"aT1+0gc]h_K8Z>()2*ne9=j_YNAL=_GF[0j^Su2:U&)9B/E,Ro8\sK6KWE;"
-D-M!CQ!_Rs?O_p'Y4q^6%$uh(AR(*kEQkUR\E72B-!V*th@s\BH2a7rF7U3R(>`n8
-d7839er,jgb@V-u[58d[?fotX7u$:\^M^]ZnD<)\D+;4aY;XjRp_E(S!`\5!>g_U.
-KO7In2u(@!NcJlp'M$C&0"gqWY3-*t3,>l*q.jYi4g(/9c!T<la^8ia_gHq:=1*I)
-gr$OgQ%RERf:G1oj#X9&#B66\a.p0@qDd9&j^N1/IH3q5I2qWdRsgaS7nd6/V-0c5
-]HTngd[-*`ki5r,RLs2-#ZVTbQ/BbsF=1AufA->*@D-]k]Ik[_4Yj2>?Ct-k'6>7T
-bGh8Sjh@,)F:)+#7i_p+XH/Ul!%*L@qu7K\"MU2,BQ$D_TgU,ieNHE+RNT+bs4:2L
-UfMTh`![[3_OD:TKPt.&8Q;to3@TA5Z1.[+PcEg&L0pGH=SNUiqA=[8O_J'+%CN^%
-!gndoktK!m1\o0HiLYm,iM5BKc!IWJ3i8+[V,^Km\K7mg:I-H->$QLa@-WQ5?\dWP
-XSiU.hf50QaF0chi*.\GL)H3<*$Q3"\2IAkEotXc_l\")'-gb,'NYb"0T2!d=l"Re
-5AECb!:p^i])~>
-endstream
endobj
18 0 obj
[/Indexed/DeviceRGB 255 19 0 R]
endobj
19 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
-b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
-E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
-6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
-VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
-PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
-l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
-endstream
endobj
9 0 obj
<</Intent 20 0 R/Name(Layer 3)/Type/OCG/Usage 21 0 R>>
endobj
10 0 obj
<</Intent 22 0 R/Name(Layer 2)/Type/OCG/Usage 23 0 R>>
endobj
11 0 obj
<</Intent 24 0 R/Name(Layer 1)/Type/OCG/Usage 25 0 R>>
endobj
12 0 obj
<</Intent 26 0 R/Name(Layer 4)/Type/OCG/Usage 27 0 R>>
endobj
26 0 obj
[/View/Design]
endobj
27 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 23.0)/Subtype/Artwork>>>>
endobj
24 0 obj
[/View/Design]
endobj
25 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 23.0)/Subtype/Artwork>>>>
endobj
22 0 obj
[/View/Design]
endobj
23 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 23.0)/Subtype/Artwork>>>>
endobj
20 0 obj
[/View/Design]
endobj
21 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 23.0)/Subtype/Artwork>>>>
endobj
6 0 obj
<</BaseFont/GDVRAG+AcuminVariableConcept/Encoding 28 0 R/FirstChar 9/FontDescriptor 29 0 R/LastChar 31/Subtype/Type1/Type/Font/Widths[168 455 641 170 548 484 214 289 324 251 550 550 214 538 529 548 260 444 502 546 508 829 250]>>
endobj
5 0 obj
<</BaseFont/MMXBGU+RobotoMono-BoldItalic/Encoding/WinAnsiEncoding/FirstChar 77/FontDescriptor 30 0 R/LastChar 118/Subtype/TrueType/Type/Font/Widths[587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 587 0 0 0 0 0 587 0 587 0 0 0 0 587 0 0 0 587 0 0 0 587]>>
endobj
7 0 obj
<</BaseFont/YRUVSW+RobotoMono-Italic/Encoding/WinAnsiEncoding/FirstChar 49/FontDescriptor 31 0 R/LastChar 118/Subtype/TrueType/Type/Font/Widths[587 587 587 587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 587 0 0 0 0 0 587 0 587 0 0 0 0 587 0 0 0 587 0 0 0 587]>>
endobj
8 0 obj
<</BaseFont/QATZKM+AktivGrotesk-Medium/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 32 0 R/LastChar 121/Subtype/TrueType/Type/Font/Widths[223 0 0 0 0 0 653 0 0 0 0 0 0 0 0 0 0 592 592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 573 0 0 0 633 0 0 644 0 0 0 0 0 0 0 0 0 0 0 0 0 549 0 564 0 580 356 0 0 0 0 0 0 0 0 609 610 0 393 530 363 574 0 0 0 545]>>
endobj
32 0 obj
<</Ascent 1160/CapHeight 714/Descent -831/Flags 32/FontBBox[-454 -831 2384 1160]/FontFamily(Aktiv Grotesk Medium)/FontFile2 33 0 R/FontName/QATZKM+AktivGrotesk-Medium/FontStretch/Normal/FontWeight 500/ItalicAngle 0/StemV 116/Type/FontDescriptor/XHeight 520>>
endobj
33 0 obj
<</Filter/FlateDecode/Length 13710/Length1 41868>>stream
-H‰|ÖyTGðouÏ´4ˆ€Š’(}Íô¨hÐàDAÐõƒw¢Ü¨„‘QQñŠ¼¬îF¢nÄãÓ¼‘¸QŒTŒD#k<׃M¦™gg³y/š5šUGè­	›vû½š©_uuUwÕçõ¯A�„¢,RǧõŒkë‹‹¡-ßÑ’‘mÏtœ½û÷(€$�á]³I/ØV9€Ù”ç˜eîy§?Ða6ÀÝ™U°$/ößËÑC€ ë³s3sB·…Þlát¼~³iCÈæ°4Ncël{Qq‡šÌjçñ»
-³3±ÒZ
-d¶¡q…=³ØQô5°õí/ÍÍ´çšÃ†çÒ˜ŽiJs.(2ÊÀònþóŽù¹ŽyãÎ×Óx$À&ÃÄ"`FSÍÐQQüâŸlÅ›xdfBÌ&Ƙ\¨4®ÁðÑ>]iAJÒØ$Ô�F#S×ä&Q¦Jò¡bÀ1uþÙè¸4€ý€ötýhÀ1Áþ‚æ3ÿ=íÍjþÿñâJ&:‡V`„ 5Ý©6C8"Ðí謑耎ˆÂKxÐÑ Ò{“¡À+TØÐ…>S7Ä ;zàÄ¢'záUÄ¡7ú /ú¡?` â1	x
ƒ1‰HÂP$#Ã0¿ÃŒÄ(ŒÆŒÅ8ŒG*&àu¤a"&a2¦`*¦a:Þ «:3‘ŽdÒû߁Ø½øŸãÎà4Îâ]Õ/Q‹ø
-ñ5êp	Áe\Á5\ÅuÜÄ
ÜÁmÜE=faVàm¬Â|lD5Þð°šT`Ž’=XOö“Jj·Œl#ŸíäÙ‹?b3)ÇyÜÂ6,Dz9dùïâ#äa>F9ÃŽ%X€"80sQˆ¿’O©ù¥Ä, ˜ü™Äl|€lä"Ÿ`¶£{P‰Oq�ûqUô	âÇ1†9Xˆµ$›ä\l"³HÉ„©
•ÀÄÑÍ¢«
º‡¡tÞÆÒ“¼JF‘4’N2Éb²’l eÄ`:1"ÓŸ™Æ,gʘÓÌEæs›q2
Ì}–°,˳ÖÆ.d—²o³¥ìZöv[ÁbO±5ì%ö
-{ƒ½Ãê¦tS¶i¡é©Y5_4ÿ`~ı\$׉¹xn7‰›ÉÍáìÜ-î÷”3ZÙy–oÏGóqü@>™˧òSøt>‹ÏåùÅüJBQP…$aŠ-Ø…ÕÂFa«°]ø—ð³ðTŒ£ÅaâXqŠ8M|Cœ!®ˆµâMñ[ñøHl’ …H‘’ )’MŠ•zI½¥¾R¼4XJ‘FIi‰´RZ#­—vKû¤ÒAéˆtRª–!3²Yn%‡ÈmåvrYÙ*ÛäX¹¯<UN—7ÉÉ{å
-ù¨\-×È·(¼¢„)í”H¥£ò²¢(ªÒ]‰Uú)	Ê%Y¦ŒTF+Ó”,%W)P(+”5Êe›²G9¯èÊ}c	¶DXdKŒ%É2ÝjU¬C­µ*TFm­†«íÕ(µ³jU{¨}ÔÕ¡–¨«ÔwÕµêFu‡z@ý\ýB=©žVÏ©µêõ²zU­W½6³-ÌÖÖ–`K´
µeزmy¶·ºŒŠQcbbòö¾÷8äqÄ/çŸDû_W_7_?_‚o°/É—âï«òýÓg4i|Øø¬ñyÓs£Ñÿ¦_ŽßŒDÍî%½HM&’’EŠI	5³‘‰b„3§˜3wfÐb¦(`f5³žÝÄîb÷³Ul5{Ž­c¯³·Ø¿™`Ê2Í7•š­æCækæŸ8p!ÔŒÀÉ\"7š›Ìepùœƒ»ÏýÄ=k•ÊÞÌGòß›ÄãÇó“ù©ÔLŸÇ;ø%#‚`…ÉB†/”e3åÂCá‘1J”Äbj³™t±D<&^o‹Nñ¡ø5C¤ÖRGI¢fb¨™8jf ”Ðl¦HZ*•H¥Ò.j¦RúŒš9þ3Árj&Rîø3©òtù}ys‹™3ò5j†	˜‰˜yI‰¦fºP3}ZÌŒ˜ÉPr”|e®²H)Q6Ì|©¸šÍ„[$K·3‰ÿÓLj‹™÷ÕrµR=¬£fªÕš€™:jænÀLj&¾ÅL®-¿ÅLéãVC©øˆ/šš‰ñ
 f}ɾá¾TßMßóÆÁÍfJfˆñÔxlxŒ{Æ·†ÓÐŒšÃ4Züù|yÓ
,3’1ÃèJ3cüèÖ´Å8AÏW»Œ2cƒ±ÝXmüž& È?èïW´¬#kéï*ZÞ¡åCZ6ÒŒb£9Çdèô}}u”Ö¡9uù¯¹Û\óׄÆJ¬ükÙÇš™íL3Éy*<;=ežõž"O†gªçu÷÷žXOê±º—{ïBïï<o¡×î-ð¾åÍ÷ÎñÎòæys½ÙÞ,o†7ý^ñ½N/Fu%z'ºâÝÏÜO÷Ïz÷÷:q5¹O¸ž¸º·º·æCË8w²{¨;Ñ=Äýš{«öÐ0ÑÝÛµÔ5Émñ÷Ò¿Ñ/ëgõZý¸~X¯Òwêy´­¨áO@Ã:=¿~?è4»é3ô©zš>A§¥ÑH~!5ÓcõWôîz7]Ð;ëí]O\ßÑq«]G]‡\;][]«]ö†S
ûJxíŠöV«ÓÎh§´ãZ•V©íÒ¶ik´¥Úb­H›§ÍÕ²´éÚ$-M› ¥jã´1Úh@KÑ´^Z[-XrêNÍétÖ8Ï8O;Oº~¬O©O¬7Ï\Ѻ´õدòð¨Š$ÞýÞ¼ùU¿~|V]•	!!	„ÓÈÉ@¸“˜@BÂ}¬Ü‡‚@ ¢ ‡+÷A¹pE„¹D`¹‚ nf{&€DØoñóÛÿ¬ï«~UÕUõªÞÑýë(Ö1&WɃr¥\!—Ëer©\Rò¤Ì"ó	Ó(3B!¨û0Šïý8W/áû檕Xµ°ßØý¨IRá—"Ç*n¡8þyšhqjL×2µ)êúŽâUÚ}¤úRFêãõmú.ÿWsB¿ ÿb³~³ÙlåîÏö{I?¢_Ò¹G¿ñ@¯ÓúY5ž½?º”¶_?ù€ØÃ%nkÊC?_jþ̽óÿ?ÒÇÿ.o÷}–DÛ£¶è;š-Ê7òPÆÃyu…b"xM?’êÁ)ì”Ä“y{žÂSyO×&s·z·ÝÂñ£"Þ•
à¹F£‹á6:­Œ®Fk£ÑÖH4’Œt£¢á0ùZ¾Úˆ7ÚÉF{#ÅH5:ò÷h£±Ñ„¯1ÒŒL#Ãè`t2ºݍžr„-ÇÈñr(EÈQ2_–½eÙWö“ýé9€j¡xO⯨Š(4ÀÛ¨‡šCZ¡bÑyȁhQŽAèOeÐoàuLÅDŒÃr,„óè)™MOËÙUæÑÙ]ö pªN5¨UÀjC£d/IÓéUš‚õ4–Ð|šƒM4›¶ÒFZGïÑJúÛhvÒ:J‡é /èÁn:E'¨ˆ®Òeº€O„%„°‘—~QA<Ny¢¬¨ƒÏE
QMTqøJaµ(…Ø2E
-‹D…Û¨·‡Ú³Ä1F¼ˆ£b¨˜%¦á¤˜‚ïpqEÌoŠ•b™X,ˆ¹bŠÄz±VxÄN±7ñ3ÕE±8,‰bŸØ+ÊAâšÙS\2sÅ9qÚhöÇM»ÉE±øYÜ4+šOš™¦4#ÍÚfu3Ĭl¶5[˜.3Úl`¦˜I–féòˆ<!¿•'å)ùü^ž“çå¿äyQ^’—e‘¼"¯ZÉV{+ÅJµÒ­+Óª-oÈ£V€UÖª$oÉŸ¤×â–iÙ-i…Zu¬+LþhՐ‡å!yL—×åòš<#ÏZ9VW+×Ê“ßXݬîö¡öaöáözU=Xña|›W¯æÇø]ôP?ÞÏQ'‹<u¦P8ß¾YoÌ:\obhl­·±ó©|†žÁÇð±¼€Oä“Ôø
-Çóùx>AÏäoéCžÆßÖ‡ë#ô‘êÜ1WIÍê/+Œ•«ÕóÕ
-6A/à‹øb}_¢ÏÐgòå¶rö!¾SÞC!-¦´ˆb#>À|H[hm¦h<¥|G³èušI3°kð>ÖbþÏð©A"XT¥´”–Ó2*¤Uä¡w±a6ÓnÚIÓ.ú’öÓAúŠ>§}؁íØ‹=ø»p�_àKìÇ×8ˆâÂù=EoÑK´ÍEKÑGð"ŠÁbNãÎáÎâ{|‹c8ãø7ðn‰…ùÒEšX*–ˆb¹X$ÒTñ¡ø@¼!f‹ùbžØ!¶ŠíbVa%®ã\ÃU¢"žÁS¨€'Pã1Á‰*¨ŒFhˆúxÏ!oáMÔE-ÔAmD 5P¡F5„ ­ÑmÐqhæh
-bÐÑx¹èŠld¡:£2ѐŽ¤!ÉHDÚá%ŒÀ‹‰aŒ¡‚øàôCoôEôD7ô@wÌÆÌÂLLÇ«˜†×ð
-&a
-&£�ù˜€ñ‹Ñƒ—±‹±K°�óñ.V`.æàüt²‘AvqÒ´½Œ—ÓV³¿hÄÞº¤øŠïêòi>„6揬óAI,]­ÔürÞmþ•úß¾¦³x–Éþ;e³6ŠDnu‡¾*^‘–­¥ùmêoã¯ù¥�ï•Û~q,šµ+™Ãj±dæÒØïR´ÖÐodÕXM¯òõ¾ðP2>‚Åë…Å·xxñ¿õ•ZÕc-V‹ÂŽ±`Ì“Ù:-Us³ŽÊsÿÚ÷ôµ½wb5ÎÖðx.øë­T¼©øˆ·¾²*4éÝXªæ‹÷G¬f%XÄ¡êŒ`X*ßÍ,ïuÖZõ˜ûpÿ1ÒÚªÁò^ÖŽy£î»³fj?NQ¨¾&ë睧-U7gÙDöˆzGÒŸô?I›®x"sj}øMoßâËų¼õ½	ÞYÅ‘Þ
ŽÁÞáÊÉî½Q|ëÁI,_­!½XK6˜MÓ—¨sbÛÎÚD7uwêØ!3#=59©]bB|Û6­[µlÑ<®YSWlL“ÆÑÏG5jØ þs‘ÏÖ«[£zxXpP•ÊÎJË?Z6à‘2Ò»aÓÕOær6u;<An-ÈîӝYʐuÁíq(SÓÒ>‡Ûïæ(í­<»þÆ3ºÄ3ú®'p4d
ÃÃ.§Ãói¬Ó±ž§'¤*yr¬3Íá¹è—[ûe[_)£”À@áp•Ï‹ux¸Ûáò4˜WàrǪ|…ÒŒqÆä˜áa¬Ð”J”Jò;ûòà(î´`WýBQßm=zWV¶'>!Õ[!00Íoc1þ\{Œþ\Žn¾šÙDGaØ–‚IëXgw¨•íÌÎÊLõèY*¨@wä{ʆzBœ±ž¡§Ë«–s<aÎX—'Ô©’µL¼{î1ª8ELï¼x¡´%ë¶Å^% ˆùD_‹w“š¿#3U›ªPõè«eâúhÖY)žÿð]­¿‰\WüÎ`0€=f<3×€1æ5cÀÆ`l¼¶µÆ¼ñ?XÛU÷áí*U£$u¢(ÝRU»ê‡¶êCé_Ðâô‘Dm¥¨Rû!RÔ¨Š*µê‡|m%G‘"%ŸÖî¹€Ýõj[k<sï=çžó;¿sÎeæ¨\í̴ͽÔH°Ö¢ëDòþ¹„]'’£sÉÅö:IªŠõîõâ¾»u´-„Ɓýöå…äBKã«oïì“çV£‰gf:¼­U[êÔ­n¬Åãhô·êÄ¡¡\mEð½–ç;
-° ¬VÛ[ºÛZŽBÕwº»Z‘âÁ%›õ™@b—«ï!åì“ã	û•‚&Pàh9_±YݽÕ®s»PŸ·„*'¶ÔÐWÃÕFd	[[OÀØöØÞ±=£}®L"×yõB•æ45’-Xfá†óX!]í)Éh>#T)«—®]²·P""
ÙZ(qbMìüýH\S¯·¥Ê–.0uüüOhm( 3O¼d´·°kíù8iÂE×1ìГt–ÎE/t.¬Ñ`¦½D²èZhY¨â®a¨!u¹Jb#\·ó»°ŠÊÕv¶»U²viÖ‘O^Ⱥ£]€œ
rç9mÏçÚó‹iéñü¹XhêñÂj“XÆ]ƒHh甬
-Í9i›èöï,oxvVa¶¹õîÙÑvóXU›÷Šõý)bÏï6ñj5õá­T_á^"îlhZXˇÆáðÉcêaùX¥®nT߳»Îõê1Måk¤úÝû vEa—órm¿Y¯‘ÒFN .ªEá,jÑ8{LÑZSË€ù–çÉzŽ¬ç:ëZ²®ƒ´PNê<œÕê»gï_ŠçùQ>_¹mC}V™¬
--¡\¼õÁ…l¬VpFÖl‚´	kÄÞS2"^1õGúS¤A:Ôÿk-¥C”û0òa4¦0"㇙z,Ÿ~LúÄ&ÓÍ'/‚¦xöý=ú#x%ãÐ,’UnÖ`¶2š˜ªÁ7Ãõu…sWf††(§('²œ;Ù´¥"6WÊ–ÊEcTVŸða‰uð´K§Õ’§"'’.­Ka:>‘¥“>y(²Óåt°fÎ•H$­VçÂoõ8Í£Òb¿Õzœ
-ŽM9ÒÒÙ…í´k0˜ôpáÁpÞ¿p¾^ÜÞØÀÌFj’<·ß ~ßç’XßèŠ]ò¸ûn³WƇ¢’cÀQàý#SW}£¹˜áW¢8˜Oë­zabL²ãYö^ä[ˆBUàëûðò¬E¶wzLH«¥4=$FF¸ìþ¤Â`¦)ÿm÷õ÷µ7Ÿ,Ñ2ì‰Á‰‹þ3ò jF!“ÑÈ™ô{L/ʝä€Åz"GcÉ.-Z?«ÈY‡™†ïN1>¹øÚf<­d³–Û}bº’½û xín‘JšO#µÂÁf-¿ÏYFç“âáÍôæÆV®1nÁ­¾zQÿo¨R²Ë�Jl2¢¶-§ôOÞ:�º­]†‘’êR–’É„úõƒ%²«‘ìTdž&¨0f°]ÎB¦Â0f¿,dÜî+û×^ÿÆá´ÔoÆéЫô#™kÁðZÎ{úu×&†=|ˆ·~	ÈDøv¹AÿÅQDu÷Ëâ˜[sUöðˆxÄ»å>ñª[Óq›ŠD6 ‡I1¶Pät*]¿~XÓ)RD>àÍØœ.—³M–|þŸè×ד’Ù08.ÝH¬¥<ÒÎÔÕݬ ½o..SØ¢¨;‡_g…ïüTÿYÕÆ\Œ8Äj›S”Ee@J–ü¶Ì”…ÃöH*®ñ•ÐRJüú7áìsê_´™PÅÕááÈD™®céwÄщâ$N²W|º~}Å
-p¢äN:AH'›P0^³ CéÇãO×~ò¼‰6ã¦bJN2ÇJ´g-ãU#\t©]J…ãŠ~ß|§ž-Gí·?×XD»ä[œæßÆa»/=š(ø,t3‘Œ‹³ÂäRøôw@rØÀ1òª›=ŠULc;¶kœ•~PѬçP`þÛe¶;mK
‡¹Í,/MßÌ$å!í¡>÷É|¿™—G&ºßnøKlvo~ÔS13>%(yÉ?ó$à‘Àq7Fªøh˜¾nCn«ûžû#wÏcÛÏm´Ûæ¶i†*F{ݦõd³‹ÏweER%‰d²Ã"m1ßÙ{ù5oas2S:ý.=SL$ú´™|.ßûãríÑë…ý9/ˆSò\uÌÿ3õêBH‚ßê6ýWÄ"^µ:öu«Ö`ªôé(´®Ñp®ÁºÇ•ød
-x,«°Ð[åòÆr<Äð¼wôÕWïS¿ØàW6Ìë}£~qãt¥u¢6¹`}G[qèPÅÔ‰
"‚’h£'ýThPØT´T(”J…éù—ÞÄùú•l}Zôo.î\_ßÞY[ß}áñÙ[¥Ñ@©‘™Ù›OêìOäGœj¶›+6‹q¤B÷êàËA ä"íÍv®Û?,¶·SÜmt@£ÞVÉ•$'¤×âcËøþ¡Óㆢ#‡®\£õ¥`ˆä:·7ï‚O¨?(…Q«c|VVŠAÛòuàux}@[‘9UcÐ_ÑQ=ÇDzŒŒ6
-çE•Á‰úKn1ȸŒýÆA³™CZ¿§é}
ÍJAçé_h=–Î>£þ
a&Ђäzl‚à(G%8ö¡éG&ºf:0ѦÿíÀt-p lo%fä+¬®M<“‚Ö´‘[
-níÚOò¥Œç70vñÐÃíþð?Ò8Åñ”<ÍÞT!u-’Y–u·L±”86ЧgG¸é‰bÀúµ;¡Õ|@óÖ èÐIâàˆÞèÀÉÈH:àt%x³ßg²9ŒÓlè5öý‡ò2®ê*ãøwÏ}	$l¬	”¬„	I ,²“Ob!«•—¶£ÅZÒB‹¤,µÚÃÌÔ:í h+vhµEqtPé‚L­U»0¥¥RlD@Á²<ßyçÅç#)ôÎüçî¹çžåÛÏȱSòšÛ3‚3*8bjøœ×Áw(™$-m@{zfJÿù	‰Cç<x"b•ˆ‹¬°vh£‰Uý##µíëkÖäåfä¤e”W.hÄ&7n\tùT°00?}áB/‘%ª‘âeä9õ¤¤Ú3R&''Z;!{Thú‰ÁäºÉÏËxº¸dø„¢áwÜ^xCùg±‚ËÏ×—g族ò¦\:*/ùübo!s÷ó˜{0f801‰ŒÔ>8#59±¿ãÔå†Eœ×¯4¨ÂOõÕ›³rGå§
z«ëáµ÷ÊÌ
N
f—dÝ”t]p¢wîòoù¥3¥3˳ú©ÊÚ«¸ïæ´ªKŠœyíÎuË,ßÓøÔåiÔXÏkΡ€@r8™ŽÖËÓÎw'µÚÞ˜'u§wVK%žw.Jƒ×)£M«ùþnÉ3Ižì•Ñ^–”‚þÞ£’Å·jù@
-½uROõ¾(ýè+7‚	 ä‚é`*(qß‹u¼þK{˜ê¼’æ¿&åæiI1÷IȐIæÏp;¨¯òþ²„¼tÚ·ÈH³®–?þàû]p¼–¾.öÝÁvK½Ù…¼žcÞÍ’dî–¦EFx“¤E÷'³~)rÓ$OšÑ칃&I™Y¥y¤ÛvN~Nêä\øSdÛ
~'cé·ß;¤”yxÏ”|ï6IeïÕ&ÙœY+5ß—\oŠd!ëYpë«,2äˆrø¨×%…þ÷é’¡`þ;fqÎäUʘÀx®«G¤0¶x«X—3¨]0þ6ÿÉ´{¨”,?{ãÜN¿õ*oP&꺠	äè~L:j’‡ü~2ÞÛ)ù&YÆèwÕ³wÙ4ÉVïäþ½íÈm»L¶rk`Þ’©ºå}ýSù0gÎò·Ë0‡ÉÞiúTǽ [½·;½;xéáÃè}2ü&8eþ†ÎãÁ¾"¶ z…êû0si«Ž{/<)¢óX ï—Ðõøp,j–ã¡ö¬¬zz7K¤Á²žW׌g=»®ß«?èÜzþ¯À*ŸÆk`õÅÃø•=χÌ;G|d|sî‡ÏÀ§ˆF ‡L…ú¡Ú¿úƒ7:ú6…_ZßPßÄ?,ª­ŸLV_åÛ¿"Œ`ï~8$ÉÞ81ªO»‡x~L<ÛvïV·ì9žÕç­ßYŸsïclÀ®`bƒõÏxV[Q}]#Û¸¢¾­ö¥ºÕØ‚dz|ÄYãÖ¶²j’7Õ¿Õ¯ÀwA7x¼
-æGççèzÒákÙ`,¨å Âùf©û65ê« ¨×q¯Ë(ÿa™èü´4ꯠÄôk_н×ôÒ¯}å1ýÁ˜9J5§˜ïs†¤ÅÌ”ló¾¨Ïè9lìè”ñ¼÷j8_$.Îuy¢Î\Ol:@,^ôÿð÷E`çúš´ó7Ø8WäýUF™2ŽµFÓ§í)6•ÑÖ|Ôbå–#•Qñ5ÊrPoãÐÛL°|	ü¨ž¿6‚
à¸{ÜAû_�‡5vÆà¨Í­Ñ¼«1˜œ¥y26i.Ñ<¢¹!6hì·ñ^c8qØÆÞ[Å7籟6–h\L1á‹æ÷RäÅ—îˆÄ.c–!ÏÅœg¹üF¹Ît#·è§&¼ÏÄ؝äÕ¥žü¢J&¿†L1õC%ÿ°ÏÃêÇá_!{ë·äæÉæR( ÝÄ:§mL´>ÆâAÎ<Â[IÌQ_Ü £¾iŽ1n%~÷.öóíg°¥ÎßÞÃÏÚ%©#²½ãœiº­—!f€3YÌ1Ÿ¼­ùöxQ’µÎIH–PàyÐÌžž$o”sŽô—Òþ%¨b›5÷à¯{â͵Ɖ™®¦‰‰ó´pØæš·˜ëö˜8‰›…WÄ6Îƹ|	)nÏ1qy†ÌŽÿÅÈøuzæ‰ÄùѺ'ïÛè9yß~æâOÛÀÒ8,ÎnßpP»¾< îrháýe°Ì�
 Ññë›îß®8V¬R0×ÏÁ‹`»­	µ.‹æÀ(SÚúÌå0­mMv—_wÕ¸Ÿýb™ÝgnŽ°w•ïWç«çì8«¯ïä]êO©rù·®¯|è8§ÏïίÆWØsÔ¯ÆÑ|Ç6.EãÓ§©G?;¨Y[ánp�l‰ÜNl¼[gk*[ŸË{®æÝ,p>~Þ`†Hš~óÞ•TbïD‡iž±bÛ½ô“òÌ<©O¸•<4OÔ¶ø|ž9$•ÔËùÈh¬>é’4ÓLli!Ö£Ãvts’xúœ´iìûœu“´S+ýœñ(ûýïÐW'ÿ,eÌv¬t×Ðn!϶È?c¸ÐñƒË­½œ$~wÛ»SµËƒsù¶Ïý¼
1ó(þÃÙÊö^ÓLì~!gÚƼ‘»˜bš­ã7Ùû\	ëµéš`ˆi“{éíЦð^á<ó¤Ò¢•:¥Õ¾çÁã4——òoUÏ~—Ê,íõ=yœÔڱ̊ƒîk¬ãq1ï¥î>ÙçõŠ“ä‚'ˆAŠèœ]Ò앐§#g›î”½À÷asZWDæk�æ«2ž…ê{ÚEÓêIÑv,ÇCvG¾)+ÂÜ·Ÿ¼¿gޏiÇ=yAõ¹Lwø©ƒ¶Ë¦Ç ¬è}°Ü!:ß.ó6~.ÔÀlEv[ñÅÛö.;Ï| Íp™Í]V'Ap½ùõÜqlÉÝÿüî¨Ciÿ‘ØÅX}öÈ}#0AR™ŒÉ­?ÈÛæ&	P_†¬i£¹Cÿ?*ýu¾@?I¢¿ÀŽUèÇd€æÍ#6Fþ‚¶æ½{iýÁœ~ÙÌ¿¿¥ÿüìÆž¥ýºô'φ̽6äÀãCEÄûNüw¼Ôz{°÷vb	1Ü/"ŽÄ'«éS³ÙKøFmÍk3-×꽏º-ÃÆп#»tê¬&úG!×)Rë7Ðnãß³pL“bÿSðxl8z‡]B|Üc¿•iÔ¼¡÷X­'üvtô9¾1ÆîC÷£kéú³±ó¬Ý!~OÞèL¿,‰Ô.!ö\ke?ó¨#¾cóq-ó‡ìZ%Ô¥¿aÜ&úÇJm ]’ü1¶î,°g‚þlÆ=sócêöIäã3¬×Â|Gè¿™ó×ó²^Æûö±šs¨^ÍãÝüÉ/‰=¼=!+¿9¬äû™Hmän0‘½Ñ_¤^XÅyvIB”Õ¶Ô>¬Žcº3ÿá›ÊXkÕz7*3lÀêáÞÿ$uú¯µ¹"—ï‹bj½h×xÞ,¢Ü³VT.Zë]âüj—ªÇ}Þ{±7Õ¹µyÕ[<»=Z½ü„yÔF±•ÀläyÜúi–½“µŠÆƒ\d²šº2d>ÃØìþG裆x~ß)d?¸ç-¥~ßÆÚ9ä3íÿ!gÕÚ}±³m¯¶”K»‘e	vÝ"UpÿVq—ÿ’_®ÁUUW�^çœ{áÒH" �žAB(Â,´¬Vb§*´°m-EA:¶ˆcku T ŽŠµáUKÐ†"Êé·÷Ù79	'á"üèL|³ö^g?×Y{ïµ´*EϦ²±Xôüi[ªx˜±õ¹T±m¶öŸMr}6ùçѳé(¿ÝMù>â5ÿH|¸­dYgä!è»ZÄ¥(+û¨6ÚOf?Eò
»5wXgîK|¦;ozÞ–t÷ªÓDúâ‹*îìAžÐÓyž|ïÀ=äl¦¾Xzêu,Bªù™Sͧæ²2Ür8bO¢?cFÑã
‘7M¼\‡à(9_{èkÏfm*Ïù»6—°n›Íº÷`Ûľ?ÇžwK¢€ï¬Ã9jþºxŸ�çÖý",…UÐ×C¯=�§
ßÛIO|¶§sŽC)í•]ëÀyšv?¡ßC0	FÂýè>óðlD\–áþÙp	N£kþJ›˜ç�lu°
z”]p~æí/ố¡0–ö¾„3œ~ŸÓöNä!à?ÕÉJÚ¬¥ý|
©ÐݏJ»GmiìÂÞj_Œ®ÙçÚ7nõ?Þâ¹á¾wÐæÉö„:ûà´¥gJׇÈûÚHX›×=‘ñÕ|×;‡&÷›K`¾óOãCGÿf\‹³Z®°›xg—¶Å°@õ¹ÎÔ] ˆÖÕ»¢Î÷<ï¬;CtÿBہö9I;u7¼ê^(åŽ÷ÎûûÎ5þ„Îc3þ_h+삆×�oþOø;ð0´ðÆ?K�Ÿ
‡$Îæ×UlŠcÎyÒ‚<à<S`‚OÂ8h,â~3a.L1õm†xÎè¢í”<­r4ýý^ùýSɍ–­íR`úv….Ё¸h™½ˆx†<Ìz™w?‡xé))°’³Í¥\¢c³|«ßR©"FLGî@B:èvÛ‰;ŸÁ_&£L"G*&—kɽ==/§¬úUðý-îÄ•”2Öi$—É'×J¦“Íý©ÆPßÓݵšToZ²&=Z󪵰öÇÕÌÑÝ™!ÖÒÔY"Ngië4¤Lä„‘»SÍíGí7JÍ} F{÷Xíù.¤Ïj¿Ñ½F÷°GµV×ª~ªÍPìáMð^Dˆ=#ÄBîñA’Ú!):¯Œ°†ï„|-B,!ÏŠ0vDr¡›!MKŽÖ&Þ‡|*÷Þ‘6ÖÞǦ’k}Ì”Ⱦ"’n¥_^’–
-Þt'hзB—ª ü5dœÂ*‘d…ó¤YEîE+ݽÈ=Ÿ¦Y ÍíÔ{ÁÊàÌçÿ™vÄ™OwÝÙºjíôÚÊ<¬%Ø|€6K±“þrÀüA:Þ–4‡ºÓÀ½J–4Mn=ºbtCÑ=@ý`mÎ>l<“¹úÒf
û�ûQ읃n”PVèœ,Iq²¼5à—)š�9n•í»bwÅsè§SÅ”‹µ=ªÚåÒ”õú²ªìlÿž¶fÍÄe)šáèÓ<ˆCÕ8çç\å¿öù
-y@¦nÏÜNcTïWÍGø§ÊâuøF5]àõýw¿ýoô/œ|ûßI}g°NÙŽxÅ£
q[toj¯Ñýš}Z—%Ñšè–è}út•åsă×ÛòL¥-÷Òö÷€Â_öÍ~O:×/"w˜ÈžŸ‚šrjõzx¯d†ÞfîîEÙȺʐân€uF*öù4¼hÊ;§ê-Ùäë³Á×Ç/Â°=ª³;Jg9MŒ|^25eÄ÷W¹SÆò΍•õqu²6Ûô‘×a?̂֐)¦ohieIkºŒ²>áÍŸ)}¸G;óN··;Iª}$k
-u®Us¼!f¼<ÿxRŽõçŽ9 ½É¥:“‹öÂŽ™ü÷<îåfš‰z<Õ_½[9Ö‡ä7Aþ5?øLEõøÉEcχá�<{Œ|Ç°ÂÙi­µ¾ÇšŠ$O“î^–Kî
-Êç‘ÿRž!åc‡Ñ­òÝÍþóê+ÇzNùíÉ›>«· œã+Üùµ¾1”k»_bj¿Â½b
†|÷?Ö2âÚAbk|mnåí¹]ïQÐ;´® ·"ðĪóÞ£sܽç*ý*à>u@ö@÷ºRÊ¥Áï–é»ÜÎv—×u¿½ƒF·ÝNŸ?_÷†¾«Þk˜wÍuóf¼5ÙÕßšÊñ¢o΍tu¬¥–3۵ܷ«lÞ¿R,¡tA÷TPü¤òçXÏT­ç¹ö»HÇA7}/ā뙌mÚ»§7çÆzÞbEuA1f€®ŽË;[ÕuÞÙ7ºjÿ#êŸýk4ÿyt確î”ö3£»áÿî§†4÷Ây'Wqƒ7òè¶Æô–V÷‰ä|þxî¸çýoÊÆ7ÝoªÞoc{‰©o†W}²v½×ï ´/ÃA‰ #ÈVÈVÈ4d2ot+ìËpÐ=Ž<îë•õ‘õ‘-MÿîÈîÈD[Åð^¿Xû·èëü­j™?°(Ní?Îç» ¿ZýÄ-öÿ¿­£¯ñåOOÖ@éŸ51ý“©Üh!,Ð}OKtµÓÉ6r‡ÏÀ·—Äð=Œ€·a1ó1³B$'Rï§"‘®ÜSÍEê“54Cl·o=ùö1d¼ôåS?Ê÷é´½DÛuòü�F@*´7²-Üah}Œ>² Gå:_áŽRw•¾£÷ªºã{÷œ~¢w•9§ìo½Ù;+rß…Õ†™zžÉC÷™Üg7|ÇÈ{T¿3öò¬1ò]˜ß„
-Ó FB!9_oë0ë¾ÊšËÉÑ&KòÁ¾vcl¿%÷ڍˆ%šI.m'úÁ(;A²í2†7e ÝTî"ço·³òí«V~è‰c_«¬.ŒsŸ°ÚÉ$G$NJä[3ΣÁrÝ
-¥·?ô$ï{…ý7˜\Õ¯&ÑñØïoß¹v
-9’a<ô1|‹oŸ#ÇÂpx~ìqí×ðŸ,—àUÒ=l%°ÞÛC+áÚ_ Oå“ dŽ¡©÷2¨q2”½œ"l4–Âc°®@ßâá‡2Ì~zXY0.Á�Ø,Cìä³´›eÆBïä#»Á1ô+³™s—‡ý'ø�®Ãà$3†}eUsë±gÝœßÕœƒáûøŃÈ?Â(0$ûÈ«Áë^xÁ³‡õ+c°*à‚'í8$ìrêåö‰ ïVƒ=ž­,Õ{WRèQi¿Y¾oGh»ùKØ	üë¼YËR³ž3p·a¯GàþÞ†é|¿™´·K|ä™yÂï˜wº†f­[$N×)•$õÝiG]­m
|VÁjc«åÆfݝ(7wÙ£Üñü³Õü¯
-Ù]ã?/5>Xfþ³ò=eß\XTÃßæ!çÕîoÚÏ”o=‚/¨µœ…„ëý*êO¡mÀüN¢$ÙëÑAhõeÆwFWù‘ƒ_8¯Á) ³¶zõÐ\$¾zz@#·¢ÞxoÞ0÷Qß
-=œ†œŠ,…— 7uµê¡%^ûP1zìCûášÑ³ïðEÖò²$9$)Ô:RþT’ƒø–ÊœM€¶õøבöèþN¿}ÞÞÿË~ùÇVu–qüýu퀖¹èÜ°;‡%ÄqnR	cŽØŸ”e]×z”–°zÆ9´wmïiî½mW6èÀÒ°éɲÉÜ A£[âZÊ4$»D£F¦Œˆ8'q‰&ŸábŒõûþ0mpf“?–˜¼7ùœçy¿ïó<ïsΕíBîõ›Ð7{ÇÄgAtø‘¿Ž¶%(¿­mÅ¿ä¾®èsðoëz|ÌqßD…ö¡²ËymÃœ_Xð'÷Sti¿ó¿jª‘±ä ‰O[Á¶Î}ÐQ/p.!m±Ü¡})V‚�ŸÏa¾¿kĵإcJ VÄ48½ û²:ôÿuUÞbtÜqqÈ3lœGžAÉÏCVëØE0 QåÏ�Ü!q¸MÛUÈ÷Ó6p«Ž5gÖÈã&–žÕ¶Rvy
œ5ö}SÇ¥ƒ¾bôg ß4>’wê2ˆQ'mç£_àÐo&›ùoÌÚ¯cZÔ›Ø~Ô¬7>çâHÌ­róYÅU¿]ßA±,‹‘~yñ†9øOôžø˜ŽG€ÐÏAn…Džá/ë;äÀöŽ«ï2Cß'¸àÈcü‡hcðÞØûåyígù¾àO¡îgúÞ¨\�{ˆæ^NB_ù°¶…ºK2^¿kbvv°ñ[}ÿʸRÆÍW
¿@y¹Î/Òæï.þ{Ž<ç ñëJm±	v¸Kaé·cü^“'kßÜy._€<
-Y£c—Ô÷Güö|ý#è;Í<SÞs‚›Ø‘÷�óŠ�¶t®ƒD®ØGÈóÃæn'¤ÌØ‹ø5֐÷è—fN™Ó^¼QŸ‰Ë|ø+•s—
-Ø€¿òROå~ÅÔý:|ÎŽC¾¨û‹µ_¤¯ÔûÜèâsXç)“¿ù*$rÖœ÷ˆÉ™À-‡”ç—¶û9¸ˆ±›Ì¹d¼¼¢ý sº´…sƒö“À{ÏÙmì#óðí¶YßK^¡óˆúÙmú®«¸HužU9z\çÊ«ó¤Óir‹ÌGßC¹F÷U1$çBž'áwä&¶*‘9ß
-޵ΘFžI~ÿ|gyÿçN³Îmâ]¿ß2>~ÇøVî¥à[Cô—yùšËº;ç®ý[ÿáЪÿœÿx`¥W18ßt¼§cßöΏÀðï.o8ƒvø¾/¹ô_ÅY‹Åb±X,‹Åb±X,‹Åb±X,‹Åb±X,‹Åb±X,‹Åb±X,‹Åb±X,–ÿ{(!e/Ñu¤–<IJ#ËÈZÂêÜsÄ•­d	yFIù{h“›QÒº€~Üè.ôÓF_D¶’sèIE)†}‚®2:%ëٝFg¤Œ¥Fç¨ßktý„Ñ]è—Œ¾ˆ|ƒßԐŒä³Ý=E¿ºjÝ¿1ê+¦9¿%Šºý{Šñ¿®¯ÏWí?Ÿ’üP‚ÊöžlÁߝæŠ~4âçÒ¢ÿ@âcd’Ob?›ó£Üˆ?Œ–ál±',úùlš÷’|¶PÈbþt÷¬ÔV×ÞÙÜ’©ë-f‡¶äÓbRè]Ý’ÄÙÁþkiQU¾©«\¸X%v£¢%ò£|‚CugzãÅ|'ýQ¾·ðAû#
$%d„äI–t“R$>©&UdÙ�­®îC]Jr(µ ¡—OîA]LÖ@«C{äüø‚*%	䞺g;Z³ªu·šO®ÔùF s¨‘åÐÛ7k&j–å¬Z=ÂSö6c†Q_Äœ)TcÔR<¥.G÷«õ
-ªVΐbå?SÎÔN:I3Ú2Ð{QŸÅ9¶`ÆTí«€ºÕh•»Ëbõ~„q‚91o„^×2ÃÇ5f¾—U¿Êÿj›JcýØôõ¾:ib|Ý­,½ÐgEh´Dù8ùÙ\ç’¹Ðó~'JkO±=S·¬h:ÍbCâ±ýlhÊ÷f^c£Hµlôä-·6ÕÔÝΆQ\Æúe½$`$dBn'!j{ˆª�dz›¼ß¶¤¶KMöe<ØN<ã9dÛNŒ‘ZÛARÀhãɆUÞÑÐ;¥é¹/zûTÍÞ)ºa
-Mߧëiµª­žª_îÕ-¦
$ •$¤k!WC®‘åÚ¹ðý¿­òþx)öþ2ë{—Á%Œ~û­Ø{î?
ßÞ
ÿü)|zÍ…Ö£¦/ï]º÷‘À{xOàó±—ǘ\ìå0æÐxàMÏŒ³ƒc±7†Šî$ötØÅ^„ò—ÂØ›ø"
|o[[ìµÕûÞÝwÅÞ](75ÆÞf”Am}ÉõMÞ«tä¡ÀûJðhx 
÷ûš}ti°$tz‚^³bNðiAG•*›ÓbFðQqX°VÑ%z•eáâàºpQà†4 á‘2Z[F/—Ñcµû¡º+V5º´Ë¥5.JŸº©iÆ¥.=ìÒÔ¥­.-wiI9¡3ä"™%ü(™ ¬ÅÖ:Kæ›&±ÐJ(:•%!XXÎè»Èf?Ê&ëb)ckesŒM3:Êh+£èÄOSù†ràÈ#¤=Ó|Š¿³µy²ä¾“ôÐäÊmòYÛÖ9éš$açŽí'(}²ãàOŠúæÉŠmÛ§ø±cõÍ“±Ô	ª;
-òWÄo0“™×ïWj!=#«2™ùVÙQ•©|’L†ÊgAõœ×Q¯úê²þ½ ',êed/ÙïÓ÷ÿK€�^£*±
-endstream
endobj
31 0 obj
<</Ascent 1056/CapHeight 711/Descent -271/Flags 34/FontBBox[-416 -271 987 1056]/FontFamily(Roboto Mono)/FontFile2 34 0 R/FontName/YRUVSW+RobotoMono-Italic/FontStretch/Normal/FontWeight 400/ItalicAngle 0/StemV 88/Type/FontDescriptor/XHeight 528>>
endobj
34 0 obj
<</Filter/FlateDecode/Length 6503/Length1 13987>>stream
-H‰”Up”Õ>CH	вÌzw—Jv! <ÝMx”¤Ý…Vv³IH"©R:¶øjJ­ÂX§L-Pìt:"ÞPµêtZ”§’�ò°Ù’ðR*åµÙž“"tt¦½3ßýï9÷ÜsÏwþ{Ï€4x|³æŽÈûèH{¾hN	‚áªPuÃ
-w+�N�Hò…Ÿ^ªnï›ÐcÌÿ®¢zQU´_Àä¡�©¯/Z¼¢bP¤÷p€Ìí¢Ë­,•ÝÌÎÈ�°^û‚JQôºÆ§e‰<¸²jéò¿_ñ†È3�Òÿ°xI8ô[\? §Cöh®
--¯¶¼›¦�FÕ‰½z"TU^Ò¸zŸÈâ[ª—<µ4^•ô@þs¾úÉòê1?/{ç%òV`c¾�ËzË(Yñ@×—BÁÝ­(žjéÅ”«W<ùHfâ±äÒ˜øN.¥¸a–èŒB‹NØ™™CÉ›ùíFRQÂѳAô”¼Úa%l„-ð6l‡]P-p:1û`Á\œ‹q®ÄU¸7¡Æ+'+¡�ývÓ^:MW™¹'§³“kx
¯åM¬ùCÞËø5²ŒF±1Ë(5–ËŒŒÆ1#j|eAK†%Ó†¶É¶çm_Ø®Ún<ð°JUý•M9T¶ÊU£T¡š ŠÔRµJ½©þ¤¶Ø-öLû�»ÃžmnÌAŽ$Gº£¯c ÃæÈqLwåYû®íìŒÇcñx"i]8„á&a¸vÀn¨‡V¸qÌÀ¾˜Cq$>ŠA¬L0܈ïÛt7Ã]Âð¸0„;Ÿ†/ó:Þ̵üïãƒÂŒl#טjøŒ°Qm,7^2êŒãF“qÍB–>6°M²=kÛhûÒöOa*Sݧ”ʆyj܆›…á[÷0\ÐÍ°Ï]˺ކȸ%.ç(Þ„Ùñ80.ç
-ÓÉC@øõpMp#Þ?Ν×:Ûp¬©êwz *v4öÇØ®X­ôoÆ6ÄÖÇ^oÓâSM‹X¹}ëöu€Ûï¶
-66ÈꞐñ4€s®æÍo4ïoÙ¼÷l4êˆÎŠ>õ6]ŽoêˆæE¹ñ†¼Ã‚e7V6þ0òjãœÆìÈê3Ž,‹<YY	FŠ"îÈ°†])h¾Þx¢¿ëÔNv³³Ý…àÝwKq1|KÃùÝ+¥ÿM·N˜¡äˆÄMÌ´nþ·ºôM~éLþÆ|?ÃX‡õxÁ*Ü‹§ñF°£Ø$÷ôgx›ñ¶`+üVãylÃvìÀxžƒçñ:ÞÀ›xoc^€±Sî&ÁK¸‡wÂ/pÔÀ/a
¤<E£áW”Or¶ÇÒ8*¤ñ4^†_ÓDšD“i
-=HòÂ+ð*Q1M¥i4fÀZXG~¹
? Çh!q?~Š‡ñ-§ôSz†¾Gߧù´�Þ‚-ToS=¤Cr×Þ¡t’@Ó):
µt†"°á/…w©‰ÎÂ{ÔïÃ_éµP+§6j§º�§KtþAa'|ŸH]Ú
{`/]}°ŸGÐ5¨£A=]§t“nÁA8‡)ƹÔ	ŸSŽÈ}E8ÊÇäôœ`¦Ûp’
¶p÷àd¹É)ÐÀ©Ü‹Ó¤ÞµÂyhãÞÐpÓá"\’x…3àîÃ}áK΄«ÜGrèäçûø~þD@Db+çñ d4ÐÂ'yÆLì‡ýq�çsT˜!áF>ÁÇ¥Ö|‡a7ð)t¡›óç<†Çò'¼‡ã>Íg¤âŽäݼópŽÆ|,À1<Ž¥šîãñ<[ù<ïçOq,ŽãÏø�âxœÀÇp"Nâ#|”'ò$žŒ“q
-Ÿã|=å&®ãz>ËÍèå‡x—ðL~˜áYX„ÅRÁq—ãTœÆ¼ˆÛ¸§s%wðøq,Ãr¾ÈpŒÏüÏgû5xÍ|ƒŒB©Aó…²ìŠ·¾xGçô®÷êk‹6
-ãíw¬Ú-»Å®[¾Ç®éoí"›v3vy§Á¥4Ìó”*ù�zÏ.ÑIsçûõh«V¨šy~MY¡“!Âag©Õn×Ðàum“jã
zÜ]Z+Üš\ªLé>mdÏß6S¼Åáâ9üv§ÝZãWÚçóÛõ”€Ué±æhl  j»ŒBez¨¨º%¥sÍù\Ór‡Ï¯$ˆšÒ)>P4ÊœK1Gæ¨ h
«Æœ@À©Áç/Üš]JüY!	ÈâõùµÅéÑIN„ÐtkÃ唸TY­¥Ô£Ì™®ÍÍ^Áâ°æavÑ{Uªßµ¹–,¡5ÛôYCs~g@f§ÌõË”Õ$Õ½³[[\º‡7g›<¢‰Ô$‰èô8%ÅNOHSi…Æ°ì¯-Ãܺ‡K™A¦zÃPªLzJ0`š‹A&»¶õHo±g˜ýN²{ºîM~J—Ì‘$ô¬ *®q†Ì‘ÈXÍlje• ÿ¥æ,g¨¨k‹ÔoY®Ë*°~MíîE½\	BÛRS¸Øo·:íav·NsÕë²P‘[÷v‰¡Rº—÷!s¹œž€N3¥9"¥‰äÖéâ&#‘%˾º·7¨j‚J÷–¤¹u†«äQ­QV¬ÓʝËݺ«d¶¿dn—Òj}fBß×UéÞyþÚôt¯ÆG§ç˜‡TŽ®§¶—Ùý›õj‹i#;Ã眹Ø&ØØ2Î`˜±16Ø\¾a;`BŒ;ÎÅH–\!—ÒÕfwu·»¥iµ©V©Ô¨RÚJ›>TÛqúPUÚ>4í[Ui¥>µo•ªmÕ§>Tmôÿǘ°	ٍVEÈÿwÎ|sþû?3µð£Q+d‚sfóex_ô¢ÚN‡·U±½roÚǝx’ûÓ°ûùT½ exY–!Z	?€§çʬ’2aÉ©¼¶[ŽKImeõ—J ~µ¾ž’:¯”Ê{DE»®Ø@˜,à›Yñhj™¢´BœQÚÔ2‡²I-ó(÷ªee³ZQÚÕ²å>µlDÙ¢–M(;TÉ«Ñ­SKMÑÁÖª­Vù
-6î[ál	lDé�Q�QÊ`#Ê6°¥lDéQºÁF”í`#JU•Âz©yTP[_’ŸRBO´ŠõæU5¢y “º ˆÓÒ2!ÏôÉ8ƾ¥äÑ|[é¡V­«³,ÐÆdÆ:ؽ=2Ï_ö«R¯no�x4ù¼è°•ã>±>ÒGöÈ°ÜWöÓFð¨üƒw¶
-{¦Ï£õª^[Ø£¿Œ
-E8ô¤„X’WJcóB(GWVÒrº=cÆ"ttÒFèïƒ)c…¢™ÊüŠW–¤ð
-œÕÿô²ä­œ¡ñp&°$­„ýÌ?d'Ù2×\ˆã4Â4•u¶œ‚îK<ÛJ%œC•aÏ¥9Yã3sp™%fì€K8ƒž½gL‚Á,§ ‡2hH_ t-pÞJäÊ´ã¡Á!ö”ðÜ©p"zäԍ€ßleÊ=Õ)ÀÀ'‰&¸6c ‡!4ƒú¶f„摤”œFe˜­°2t`3¢d*ï•ÂðlD‹77%´¥rÑ	«ÑíOßJ¢vªàÍÌÈXÆC›$ª©)áãùY«©VeÉ‹QKÁ`¼e/µ@F¶¶³Û·£Ÿgïȉ©ZŸ²ã¡qUëWV@1Xû<ÒâÕ¼@MlUX5ºX\2”ºš¤rÜ
˜á_¡Óÿ¯êCóq¾„e!Ûòí(lÚ˜Ä`TýO¡ÿy3�›~l¹œ—+Í	OwèC³Wë^<ø‚ýQ˜¹ÔbÖz©ZD£–„¸J)x”Uã4®b9j€‡Ô0g�L� «¨¾“ ïL"'	 ‡¯"ÁrL#'àrE‚<r“�p9ŠÈAp9N 'à$rœB‚rÌ 'à4rÌ"ÁrÌ«ÚÀV˜ÏàBtVG@¯éõ‹(,Tmp‹}:û¼Ž}AGH½¨já-ê%\èÔË:Bꢎº¤jC[Ô+¸Ð©Wu„Ôk:Bêuõ¡‰gÕ—§¸¢ç5®-ûõê3Åyn†oÝ·á^$æh½À1Ž„gį§ÆF¨"³rØû«Ÿn\“˜ßÌòAùÞ
-wÃD³ð[ÒFÚ£Nø®å)ãá<®H8n$Cxž*5·Y”zÁ¸Wq8Bð
-z™ÛUÇ†aÎÖÊê8up¯ÍXYsÇÉÜ Q´s½éK“~Ó£š#ï—ç|ïlALœZê݈³O¾ÃvuÏ,Š#Œ)‡/ÇéÜýåcý¯ÝκõÖ¢#öu=ù¿ì‹’d4.Q¡c`%¡Œ,Á qÌ3Ä0»ÍjQä‹`z’{|]JG›¥]2›jó³l×Ý^.d[™ÍºÉqÓ{ËCKÇÀ™=ÉþÁ¹Cþš‡5Ó߸_<v{¶Ë(ø2'{£J=oš~O›=vg¡OxÄÛûóý±‹¹ƒ¡5Z
-ßâºÙØL,XŒ;m‹Ÿè§'€GÙà‡Åð|.j³&ŽÌç|e±…Ó¾ãqeîÑ…èðÉèð¾쐥�d·^¦ÜѶZJx:&PÂQ=
®†3„±!6Þ°§¡¡¡^46+4`9ÙÉ
-P‡ÙÀ]zÜüxpupýF#·ÿwkÿ ¿xÇM?ûþÆÇ4·Ìýu­Ÿ}:€ñvƒ¦_ƒ¦:â*5Ê1=âp…ÑEg„„3 •Ñqˆ{©3›öˆX3
€:3•w1ÙLŸœ¥_ûËšvæÚÆ狳ں ­w²?þ'Ë&XjrüúOÖz™yòw~7Ÿ%^(²htÈPÉ1Ê8
-¥HDŠ³àžÒtÆ@Ay’Œûºz]C¾¡6‹³ÓiÄÚtõ„Dó8,lÏæ™E›Ái
†Bî°™fkF.}fäõB7ÏwOœ¹úFø÷µ¢½o²[y5é¯Y5åoþ`,÷ÝùÓ”‰Ö²¦ÒG}7/M«o¤u 52Ψš½r0ua²OÞM&‚û(µtÆ<4÷zÖM™ïÄ7n˜B—‚
·XqüO´NÍ%”¸§	óêÙÈñ9~’($B¿ÑlÙ|Ô\CE¢‚è ¼ÐdcϏÙõ]úÌn!£½7HPí¤H¡NÒ"•ÂÏ@°"-ÆÆí­þKy£:oÏKžg}Éól/yžxmп‘ŒN&_tfËKqñÜ—;²Pù‹Ö8=n·Óì2íŠyX°Y­¶P€Ó‡‚;œ	zm	¡€hiålPGf—K¯¯·MÎðä¹›Ó·}òGê¦ßýùBð\)·ÿl×Í©äÒt­%r§˜¾x8`
„WZü£=ÇÞõOï;?1ucÚ_Ãö'¾õÖ…¬ÊX"½üß?Ïÿt9ÆÑf_Òs9‘e¬cüBìT$ÎX÷äùå7ÛóS‡Û+¤é?ÓYƼ~û ÖÒqx|&<&&b#žh'x-Áá§3<¢7.+T…KnÀIÞÂÜv!‡ÙAƒÁP°•5ZDƒè¢M¬ù=Ú²öA{gã.½Kþ&wËî°¯kˆX;sïû7ý¥/Âhý¾ö&°~h×(LVþ0̬ñUÔGÇ*ù5ƒ^RÔGHº:BìQ›@y>’ѯ‘mW
-ÑZXÚ‰½ÑÙèÔçKµ‡esµ«ÒÚùÓÁâÑ½¦««WÅ]ÊD¸kz,foõWüàÚG|{)Yº“[Ÿd?LuPº×i[û?�¶þý2­ªˆâø™÷æ½¾.´Öbm´±„E V± õQ‹´b¡”­
ÝØ+¡à—ŠKÆÄ%Ñ€"‚‘T U‹DT¬Æ%¢Aq'"òAѸQ®ÿ3sn{½RZýÖ7ùõ̝;wæÌ9gÎL[ k%rOͶÁšˆé)E|°ëø)(Oå¶ÃÙ)š´«°–ìMG8a
üF«öåÑEÉ=’#8•UZ(ÒsB ÅqЄYû¡XSp}NEvvNÅ%w¾4ò–m»Îï7¥b.Q‰©/%&+µìÆÖ"=¢apáÐ^Ðw3ô}Dçá~ß+šC!7óaæ†ÑRSÓ‚‘sqÆqÎÏRÃI¡>jãžÖM+Oþ¹Y%Œ^üW³Ïˆ#fT胵ÎLù+%FÌ¿”{¦f³üpù‹ÓN4´~w(²ýâÿðU¤ªõc¢øš
¿¿wÈŒãù¿ÖM¶ÆÒ¢ÖBžnËÁÕº)Ðí×¢þ4؃×õ‹ôÚWËó]¨ów)àbÐ<–‚WA=x}PWù¨¯w‚Yx>òÝ䄼
-Ô€lP&€
-	¢VÓ§ô‚ÙÒo:&ýšh.x<Š±Aîi˜/Ü‚úŸà{ÐkÌ‚¬£Dçe käï‡ÈÜ7�î—oëÎÏÒýœßä›±Ý^°
-l÷‚0ú|y%æ¾ÄPo½QgÝoñà,0mXŸÓ"ö…m¯k·€9Ö¦šíÜj<X�ÛyTp¬]ÕW 폁çÀ`¾Ãáùï†äqF€<±Ó�“>¼®>²vØÉ9y=*ml¯ë�ÖDl×RÈ�˜)þ˜+vP`%Þïê5ð2l¿"¨sìµkV):¯uøô�GuÞ‰] }WZ{r­Ÿ=Ö÷Îې}·kPbmîü9ò$ä0MÞq\Á¼ò~°õŸDwŽ!ØŽnSåy˜Øå5‰½g´‰}g'd:Ø):�g;Ø*qÌÏïˆ
®�©Â&‰)¶ÿ8ˆ¾j³/h8(Â3üæ¬G}¼´Aç#;æ™á}[F‚§À9 ,’ñ/—µ‡ðí—òŒ8wöJß«¥õný ¿³¶ß²}q46åXp¾C[¶ûq¦ÔŶÈt¾õ‘ÙÃçIÜäÉ+ÀO	*,¡„@)ØB	'¿Àí™÷Ù‰ÁBa¬Ä[Tü±A|–¸c#¦Ì^'º,›?êÀ±e9¸VÆ
Šm¼»*™—ýÂû{¶€ûƒ= ±þ5~
j»w—Û÷œçL¾céá\Àûî8â6
-d`¾L›[Õƒà¼\ìËûûyHŽoÎ3؏
-9H
Ö&®ö„*ý÷è&m÷Á+ Éö¡{À›àfm÷êËb;äU‡sEƒø+L3´ÍUl?ÞœÇ_°º;Gõû&ÿÀ¼°³bŸ�‰}¥Cä
ç-²6±m|Às»9¾èÁ~©’¶I¢;û)KtàyyÏb\zãþ¨m>Ÿês{^)ÎÝ?€O¬¿ç±ã6ÿø\µ‚YÃtYkµYŸoûp&Ìœ|¦ìµçTG˜uúˆúpÏ,?s}ì[uŸSµ>nð!çÓ¿XõOøl2´cû¥Y×ÒÓÈìP¡9ÿ
-EÎ$ë0ä4Ò=ïÝs÷t’sï{¾pÎ(“wmºY¹ÚÈ=~ðÊst{®òK>[DÎð<ó¹p{¤ÄŽ‘ëÚêŒtÏÈÎä<‘¸Ï˜;Å~¹SȽ†ï~Ég<ŸéæŒç¼ò©…uà½Øf–û˜ïÃÝ—~î÷ÑtŠ±]ŠN1Sã!ûsûó„—I¼zey˜áÃÍ'§âa»7¿¸8CétXªt3Ý9’χ#žûl¡øÍinóß]_“>ìS>‹87
³ã™»ß½8ù¼Û,Ò}W!r˜ÌéÞ…Ý}Äû$OæWýÆHÿ\Ñ+SôÊÝjD¿яóïááºýî»Tb1,ïد÷nʲz™>nüú¥Ä³ùcm|ª·zòÈzñ}»-…<:»ºÜ+ëuï7ãu{Žb›®±¶0g÷z©ûsžì™¶\Å÷‚•–¶ïܱsenWºù½¹rœøR‰
ü’yJ·Å§™Ÿm¹ÌÞ1ø¾×Qnþ¯d—swGÒŸ›;Ê¥I÷‡ÎdWó¦_zò¦G÷ߝxðÊŸrì¯õøÄõ•+yÿybý_²øÿ¢ÁB’¹/7ã]3çbÊ¥á”	úSoçç#ÚOkœc¦§…¦~ªžºúëMµô“ê{ÆezËgí%¨PF·•'¥·Egt—îÒ]ºKwé.Ý¥óBŠ(xŒÖP:=@!
-P	UÐÍ8Ó¿H|œ‚ü–âi±‘èH|10uz†Ôèåpo§T(u…֍RP2}"õ Ú¿•º¦ÕSêaÔÊK'O™8uPi¬*V+Ž-Œ
)ª«¬W}¦ít
ÅhÝ
-íçÑšKu¸ï\Š™/ÁÝ'“Æàmíµ4OE´ª)µQh©…,mûj‰yš9c-Ãßô,GÛdÜ”&ÒT„zŒª@(ÁŒZG•mÆææÐR<Ub”3ýúÿî´9g>ÖæzØû»Þ.-kTjuùVµ#Bª^ÔHáüm4fèš.âz4¡Xˆô‹ôŒÓiGáœpŸiHÈߝVŸ¼'~O(
-¯Ç£%97ÆŽšbZ‚TÐØW­˜P¶5º¢¬1XSÐ؏ŸvFêÑՓʸK9~<öÈÈ€HzœNºh»rîÛªW5ðy¨¦ào�Ž¢ï©
-endstream
endobj
30 0 obj
<</Ascent 1064/CapHeight 711/Descent -271/Flags 34/FontBBox[-758 -271 1016 1064]/FontFamily(Roboto Mono)/FontFile2 35 0 R/FontName/MMXBGU+RobotoMono-BoldItalic/FontStretch/Normal/FontWeight 700/ItalicAngle 0/StemV 136/Type/FontDescriptor/XHeight 528>>
endobj
35 0 obj
<</Filter/FlateDecode/Length 6069/Length1 13295>>stream
-H‰”Up”Õ>CH	PYg¹»K&»^!›ð”ÄîB«»y"©¢@Z|5¥Va¦Î8í�EÛéx“ªÕ–hQž
-ä`³!HxD¨È#›íù7C§Î´wæûÿ{Î=÷Üóÿžó@¬ïÌ9ò·bË¢9%”T«ê—¹Ïà8€8oÉ‹‹U`[j/€«eýwåU*ÃýêÛ�â‡$¾½`á²rﶺ¿¤n°x+Ê‚¥ßþ1Åð@²ØçVˆ"á…žn‘‹D\Q¹xéƒïÑz‘ŸHþÃÂE%Á“×ëw<”(g4U—VY>LuUìÕ³ÁʲAW½	0\üQߪEÏ/ŽVÆ}c7׫ž+«õÂX9;g’È[€Í´,Ë;–a1¨óÍ¡œ ûh�Š¦€šoz1åªeÏ=â3‰/Ž~Å”©�×Í”ly³33‡’7óÝŒ¸Â˜£•™ô”¼Úa9¬‡M°¶ÁN8�Íp:0û`Á,œƒOá\Ž+p
n@m%+"?m¥]´‡NÓuFfîÉÉìäj^Íkxkþ”÷ð~>ÄG4c˜QdÌ4ŠEÆãUc¿qÌßXÐ’bIµ¡m¢íÛ׶ë¶[ƒU‰ª¿²)‡JWY*Gå©qªP-V+Ô»êOj“ÝbOµ°;ìéö‡íO:ÈçHvôutØ™Ž©Ž€£,mïÑh$%­“¡‡0Ü ·ÀvØupÚ Š)ØÓq(ÇÇ1€1†ëñax›îïb¸S†p—áËÂð
^˹†ÿÆ{ù 0#ÝÈ2&^£Ä¨2–¯ŒãF£qÃB–>6°M°­´­·]³ýK‚JU÷)¥Ò„a¶s—áFaøþ=çw1ìӍaiÃvaˆ|‰›£ßÈhÄôèv•{…I‚x! ˆ}z¸!¸íåŽq´©ê(é(€ÊÈÑÈ{‘‘y¾Yy'òšx›lZDzÈ|Hûö›�í¶6
-ÖÉîŸ
-ž•ù€s®¦KM¿oÚ×4¼iÏÙpØž~,<#ìi¼ÛØÎsÃ-¹x‡Kži¨høIè­†Ù
é¡UgþZz1´(´0†Ü¡Œú	ûi-¾ÝxlïVu‚“]ìlÝè^+XŒáÎë²X.Ïßvé„JŽH<Q¾`†à¨ Ypû?=Еÿæ—ÎtâÿÌmø%îÇX‡ñ¬À=xÏ`0ŒR§?dz؄ç°ÏÃ/`^À‹Ø‚­x	/ÃËð
-ÞÄ[xï`;FàUx
;¤6^Çݼ~‰{¡~«i8eS€_ÓHÊ•»=šÆP¥qðü†ÆÓšHù4‰
-ÈoÂ[THE4™¦ÐTšk`-ù¤~LOÒSÀ}øÆ+´”–ÑÏè%z‚~Dóh>¼›è�l¦::H‡¤Ö> t’êAÓ):
5t†BPK
ð
-ÇÔHgá#j‚á¯tŽšé<] ‹ÔB­t	þAWè*ü“.Ãø>—¾´vÃjƒ½°‡Ñ
8@ßBݤ[t›îÀA8‡)ÂYÔ_QŽH½"e‚cr{N0S;œdƒ-Ç=8^*9ê9‘{q’ô»óp.rohV¸ÄÉp®Hlãøšûp_¸Æ©pûñpî<�¢|ßÏð@D$¶r6?ˆŒZø$çðLÅ~ØðHΕ3„CÜÀ'ø¸ôš‡03¹žO¡Ý|˜¿âQ<š?çø0ãÓ|F:îpÞÅ»1spŽÄ\Åc8Oºé^Ëãø<_à}üŽÆ1ü%ïÇ<‹ãøŽÇ	|„òxžÀq"æó9nÆIXÀanä\Çg¹	=üOãé<ƒåÇx&b‘t°C\Êe8§p9/à‹Ü‚S¹‚[ùi~K±Œ/ó%\ÆŸáKÿóÝAÈüyÒ'æʲ+ÚbÌŠ¶vLíü_}ocÑF^´¥Ëjg´Å²Ûð~'ßcw­›7Óîšøk阳ˆl
.¥a®¯È¯ÔôO ÷¬é:nÎ<ŸaÕCýrU=ק)-øi<ÄCI‰³Øj·kðkð8k¥Ûxn.­ånM.Uªôv¯6ÒçÕÅOQIÑìù>»Ón­ö)íõúì:ßoUz´9í÷«šN£`©*ª.Ié,s=Ë´Üîõ)	¢:¨t‚׍2×ÌY®9Ë
X~¿ßª1ÓïwjðúÊü~·f—?FZP²x¼>mqè8g„ï×pkÃ唸Ti¥¸@™+‡›OmŠJ4gØEïQÕªZ|×dYÒ„Ö,_Àk
Îöûœ~YÍŸã“%«Iªëd·¶¸tOf­üDc©‰ÑYà”;‚šŠË5–ÈùÚ’áÖ=\Ê2ÑSò‰ÅÊô ó~Ó$P2ÞUÛ#<Eö»Éîéº7ù	^0SBÐÓª¨Ú4?D,S`5³©•U‚ü.JÍiÎ`aç‰?°]–]`ýžZ÷M½\1Bµ‰	\ä³[v†Ý­“\5DEº4XèÖ½]b¨”îåyÄÜ.g_'™Òl‘’Drëdq“K‰’”ȹº·' ªJ÷–¤¹uŠkúã¾£´Ð?X'•9—ºu×ôY¾és:•V»èScú¾®HöÌõÕ$'{4tr¦yIÿÍzÕƶu•ásν×vÒæËNì|´Éunl'ñµÛ|ÔNÛqâ8nâ4MÒv‹›~$éÇÚnëÇhhYÙ&Œ`B“@HAÙŸê:¥BüAiâÇB¢ÚŸVˆ²Äåy¯í4kS&¢¼~Ÿ{ÎsÏy?Ͻ¥;œÛJ?ø1¸™<S³9
-¼^FziÛN·†ÛJ¸©0O· öi$OÒ°?ÑO§ê)	ÌáeYC´’‹¯àÀ3såÐYŽ‰ÔþY£JVSÆe¹†zVç±ý­êjÎ*Ùððò|ÎnñKþ¦V„©¾9ü£NÏqÒNÄ™´KÏI¤ëõœLºAÏ)¤õœ…t“ž³’Þ¦çl¤·ë¹2Òº4øá€Ñi‚Ão‚—F³ÎŒ
-ÿg°±66cm6’vÃFÒ­°‘´I·ÁFÒØHÚIû`#évØHZ×Õ¨YjÛVÏ«Iäg>i¦í£S½u#à7è¤(â´ú”Lh}cÿ•R
-;×ÓÝƎΜÂëR³8†ÈÁ®‘yrº[Ww™öö€ÇSOn‚ÛtsgΟ™GöH\ëËuó:xÔÿaðæö¢°úÆ.=芌Ðÿ¢¢FJ˜Ó£Õ45/B9¶¼œÖÒèöYë8ÑÑ!Îëj±N'ÿ&Å(KúO,5U.c­þGÓj°°†!cM°Tcžú=1={S¨’ÚtSx¥Æì06œ¦šÉÖFÑ}ÉÇ[ižÎ¡Âa/’óÇ5CJ.Ç´H.4ÏÓôø=0	³6ŠjØa~A™»`½M6Ñ
-§ŒGì”òĪX‘<ò˜FàwªpÊ=Ú)PðIb(Þb´(B3`64ªŽjiÚŒ²5CF#ÊöÏÕ(ždqqP%[J!·xp5¶ñé[HÔf\ÌŒFe+Z,¥fžϏ»XJe\×Ô Ems4Ìy-pp}xjãpâÓìM9CºÑçßtÑaÝè÷/cc*Xû$i	AP“ëVŠ.—†R¢I
-ˍàÐÀþJ1ýÿª>2ŸÎ—¨†#dC¾ÝÙ¢)
-FÉÿQòß­PôcÝå4\®+4'žîèCGÐèE/î~ÊøÎ\^ë0vëF*CQK!®ê(e¥8MèTŽFp¾‚s`€Ø«¯psd
-À™&N
-`†8ö‡À~â8@œ!€gˆCàYâ˜%,q’�‰C`Ž8‡ÀaâŒ!£Ä!0OÄX$cÄ!pœ8NèFd=Ì'éˆ=g¢A Sf=á"‹Óº1°Î>C&ûyûõE݈®SÏÒ…I=g"¢ž7Q/èFlú]˜ÔÏ™ˆ¨MDÔ%ýf™,J/OÃ~Ãvڦ.—ž)¼ÝÙñ!ð>^á+™?Ñ^nåø.ãã_©YEŒE3^+b|ŽJVépÔØ-¶z?w8Ü’æppm‹ÐbÞûO>»¶ºç‹ù¿~=vfluM1Öþ"Zþ=ÅßW×~ ž[;œ?Dß	‚E~$7ÉSLgì[Ã>5{Ÿƒ>Þ­@gÍÁD;“¾ßøyØhµpë1Ø$Ï1YNgʸÅÂæl
-ÌK±‰¦„þtª+J¬x3éÙ„3`¬§+0€þ6»§ÓSnkð»½Þ°ÅâJá¸Òã
-‡‚ÂçµX•¸äjƇ©Åâ²zœ¡pØ×Z)¬–f!nÛ$>xmväÊ\·$uMúü+±ïWXj:â¾Ñ#•ùû–ƒW<}à­sýe™²²:ž—Ó¯Z¯M†¬rukWcWãÀ çé‹»wŸ	cѤ/îwq‘L‰ƒ¯ðqÑ}ô›‡ó;®Dìï‰xèÜÞ1ÒÛl®¦(6æ÷ÉWE?dßÉ
˜³œ[X!tsY©ç’Œµ$e¼ÉœàONd·©ŒbÃ9céS3n©“$1‡0	Ä·
ÇÁ`†cøZ6Qî	ø|‡×jkò;âŠËét…]R¥„ˆú¸pÆEØ°v[,Í’Ñtx½>/âyÂæÎ<ÿúä䁶+Õ‹×Þ=:³ø¬ûË™ÈâDïÖÊþ¯Nï>7½k»ÅÂk$a«õöw$OvÌÔ?9žôYEóÈò«/ìõIœæŸÜ={ãRLâ.}Èÿ“ȐîÁl_"|çô™K¯F[Ò©Á®.úzøïB݂ǿЏ¨žbLº«ü•±í,è„ÇÊœgà,ËÂ÷A³D.ÇÄD»§Õä/wKn«;ìv¸yo\ô„šE]m¥Ð,AÁÛDìßÞ¾zÝÇý/æïðsõþ~·Ú×ÙPß1µYý释%þqk_‡‹×zCî@A«èÏ$2íbÍ„ÝÂþŒºZæ¥,:¨cçÌŽM—:¶)áR¸,#s4Ç6Ìd¸t1—ÃS§™íl
…Ì*w;ŠeÄoO\?}äʨ³ì\þþY¥LêIžñ-ï¶<ðÖäQ!Æ_þÞ¾µ“â»;öô©œ÷w¯æåƒÍ7`ó›°ÙÎNfÌÛR‰e2G›¢ Í+©p•-ì(16'ì/D…‹ò‚õ4#óGÙDg[·”Û,ÌÎ튭ÖÏQ^•ÙÝcKÒ{½'zÆ{O…Þ?!ÿö궶™#§å)^U‘ÿ¨¢Š‹•µ%9²¢ïÚNö^ƒ½7å¼ýlK4pSù8~˜¹9âUSãl.?w…¹›k’G4ˆm<˵µßæÿÎ+øÐØ´¸ÿÉoäîcԝCK¶o¿}´*ú¶Åf¾rÿú^Mô¾|sîÁ½µ;6Õö&¡Î„9»l‹kw+;þà^ÞaSÍu6üIÈ+Dº |/´rò2¤cÿ‚D€¹™…üc
-dxr	r"Az!Èä�äÈ äMðAlÀW!‹äcH‡¼òðt-dRñBÚ‹ëWuºÈŸÙ‹ãcEÍ9!ý7 GŠö¾†µý4|a÷a×
-šýÂå¡BGŠ{Î…lÒ¡ùS­ƒ‡Çƒ‡††oìFÑ~ºï"ää<æïcÛyä$偺C/AÊÁ{½cÃÀ‚¾Œk`ƒþ!„üHákówwÿ‡ýª­²
-ãϹ÷Üy7ÝÄ’©¥9¥fmhS)æGcÎá’±©7]w6ÝÆüX»CW"Aɬa¥!iHF$^k0†å},(ÂĬˆ!R¢/ÍN¿çœç½÷åõΙTÝ{øí9ï{Î{Îsžç÷<ç™c¿©“øæWÈ�Ÿq<pÀÚ$g6`)æòþëÅî·:¿™_ ‡ÍÀw.ó•ø|”œyP
-ð¦ˆíïv¾WSÄÆ
î{j;ÎŽü„9Û€=°9ì¦~ÿŸGsÔ}ðJpNüë\yò
�vê	ÈiÎî¦WÎÁ¶Î„…Sí¢8ƒÚÀr€*e¬B8´8…qÏ.໐ñ{µ@#0`:€ˆ|_™£Àô_p\bòšæ9á
-t2Ç€Ë2þ9úß;Ðːg…·3ˆ!³Nø[Ðd<ïÞ=øŒcÝžVïÜÌ÷IÒã?�ß9?šßd-æt7§e¿%ΆV÷"ùvœpþ3߬ãàœ€Ïò…¬õ©vqÈöªq|¤½�|LwȾŸ‹„ÿlɲŸsKyW^vRÞ_{G(ïÒ.Êûã‚㖍­RáY‘Èq²ÇÇ|ÌùÌùÙœt6䘴߬“ý‘¯ˆc~¸v1~Ÿè\*kNvëÐb±+s¼@Æçj—ºMÀ7ŽæMà¸Ø<¢d¿ýŽV?ú‡˜íô☁;!øZM ‹B+Ž¡×€íÀmx朼Gü‰¸Q.î™×
-|P%èkíòd›ã=¥m®!¶ïãÀ'Úå⇁·µË³ð©á=žw|³9}ðò!±/ûúEírt7çõGvŸ÷E×
è÷:©á,ÐÇìÓ.°íˤÏg®þòúœ7§ÊØñï5O|× üB^µ1×í¸jó#ÖUÇ]ÎS½â+äQBÞR|fpDÁ§!F5úˆU-öäýJd²÷Û€ùÑÁê×ãöà|9lî/ €wg±"€~±Í`ðî(?âÈýtºþÙ3̾ZÚs-¿†¹ßÊbÑ#“lð=³n¹†)ºÇä™äj®	ØwœÓ9ßÞ%sRº9¹ÃJoí€4ïˆê3HŽ¯ý"ô=Ï%™;¯‹Ü–êiå
-ñÁõJ¾Ë:…¤ÓuÍèò]w§[?ò}þ’ëÀ±8l|Î`y�^\ÑÀ+ÖöP–aF…“2ìÌ~ÌðÁ¯—?&ðòI&t»3xùŃÙ)4#…””ëæžOè6gòÕ³Å⯆åwÁÚµGüØ'súEÖÊ|¾_åLõ®Îã¼këJo¬^ä9#s{–N玓áÅeŸ~E2?Ð+_tóø[+úq>X&ã^íËþ чÇ&Ëw£qñóX7'Åß >Ûÿ7嶨&çO¾í}ôµ//}àÓÙÓ…ï\®Ó¼úƒsÁÎQý²WÌÕf¶¦ŠeÈy3©\ÅuÁF‡ÔwÞÚa®;óu:_xµ'¹î«’®–\Úºí¬«×ØÎÖ–Ë¥Þ::xnþ·ä5s÷õÈ`n,—%½ÿ†’Á¼èý¯1”ôåMŸ€­lmÊ1Âœ©ÓµuÏ'â«””ú1Å
¯¾ä÷\ÿ:ð·¦ù¡`ž†)ŸF7QÄ3G©Ÿž4}æ"՚è‰ñSMô_ÿʯ³N7Õƒ6àµP‰´niû²-Û²-Û²-Û²mèFŠ(|‘öP!m¡…h15ÑFÜÍg†ïB€QÊ¥õVb"çÂÀö5ú㥟ƒ^9ÏÖ¹xZAK¥¯ðö ôCT@ç¥Æûߥ¯©\•I?ýÕuuñªše¥±ÄªDW¢.Ñ‘˜Z•hoYص²}MóŽÑ|JP'mÂIÖP­¦.*¢TFÓéôj0šÀûvjÅÓBê fš†Þ<¼i‡Œ¥¾Ú`ŸZ![±ÖcøÛ‚™uhqªÂ:˨ã	Ztu@0£	¬Õ‚Õ»h%zk°¯ÔFâi%V»ÑUþïï®x3kñÞcƒÿWÛG'cñ¤R;¨CQŠRsg’rªz©fæDM%ܯ̫S³£ÅÑÑÃtT^ÔSuNY΄ˆ}‘WuøæÍGrD*Á\¼)¨:Œµ+m³oÂT¼]m]?P¹5ž·T'‹ù©?º\ªÜÚ¼4ÎSñãµçFïŒÓ#Jú”yú€ÞžáóHKõß�hŽc8
-endstream
endobj
28 0 obj
<</BaseEncoding/WinAnsiEncoding/Differences[9/gid00164/gid00052/gid00002/gid00163/gid00041/gid00030/gid00036/gid00047/gid00045/gid00033/gid00029/gid00031/gid00039/gid00048/gid00042/gid00035/gid00001/gid00046/gid00032/gid00034/gid00028/gid00040/gid00010]/Type/Encoding>>
endobj
29 0 obj
<</Ascent 1035/CapHeight 700/CharSet(/gid00164/gid00052/gid00002/gid00163/gid00041/gid00030/gid00036/gid00047/gid00045/gid00033/gid00029/gid00031/gid00039/gid00048/gid00042/gid00035/gid00001/gid00046/gid00032/gid00034/gid00028/gid00040/gid00010)/Descent -262/Flags 32/FontBBox[-162 -262 1179 1035]/FontFamily(Acumin Variable Concept)/FontFile3 36 0 R/FontName/GDVRAG+AcuminVariableConcept/FontStretch/Normal/FontWeight 275/ItalicAngle 0/StemV 48/Type/FontDescriptor/XHeight 500>>
endobj
36 0 obj
<</Filter/FlateDecode/Length 3419/Subtype/Type1C>>stream
-H‰|VkP”ç>»áWÇ]À|jmq*Ër‰ÁÖI¡²&5]±¬€ ¬BÃeÝ],Ng¬¹8Auë­ØhA4
¨­Ø¦fYcC§i%¦Õ]´–L∩ÁeB:DÛqdOŸó±ÎôWÿ|—÷ýÞóžóœçyÞOCQZÒh4ó
-Öç~3¿ª©¾¶a]¥£¶rSmEcC•ÍîR?eiBÙSõãKÇ17êõ¯Ú£Cžé¡C3‚sgÚfR2‚P<Í dšO‹)“–Q>­¤Õ´ž*©–¶Òvz‰vÓÏè( n:O½š­š[j«M¦Ì¥9êÝôTÖäݔϞ|ÏÉœ¼g›"÷¥‘ñ§#÷§"ã‘ï³–EÞ¯‹¼çäFî‘}²#ëL‘ïr"q³ÏGòÊz¼.²¦IÉ2eæ(ùՍ›lÊšíN—­Þ©¬l¨jtØ•.[µQɯ«SŠk·Ô¸œJ±ÍislSUl•Z§b«uÕØJ¥â°m©Åz‡­Zq9*«mõ•Ž•F™ùŸ×Íÿg+KYÛP+ok\t*•
ÕˆÒ¨îRÕØÔàrÔÚœÆËšl·Û”\¥Ú¶™ÐÕ×”$[M¿ÒìдYÚ‘'Þzb8jôüèK1ïÅöÇÞŽ;¿&~8~tÊâ©Ê´–„ N§Ë4¹£B-_ZµLXcî¥êÇŸyx0úa0fü™ñƒÑÝåú‡òþè@¬:>^:Þ§Ž<”Ùñ`L}è]½<«_‡Ä&pxß’\¦âkƒÌ{­z¦lgSai“â*aª	63Å*˜6MqÌÇ´™1ÌãÆæwËš™ï»íÌ]˜ç+.skY0.ùhzS<4†!½Ô≱ĖhæžCÌw
¸Ü“ Ÿv¶0ÿ‘=sÊìeþ"ÑÚʤqw1?ðéR™Ï–{b™'0@³°é
C{˜¦›Çæ0½Ø[ÃôuŸIó$œmìHu3½åÛÉÚ™
-w
-óqSr>ŸÞÇëÅåcîG)c’úe·=nfHì¬@ó�r%wióïöìgާ÷G’_ŠI`z֐Ë¢•éraêZiÁ‚\¯5š©Þ‘†0d.bí÷
-ݹq(ÆÍü¤Œ'Vº$B›WôÅ0YòÕõX”\êgz¡À„PY>/Ó‘Â8¦o¸‡˜œÿ1¦å½ƒq­X2½9¼oIcZ((·wö1}‡€‘µ x‡_½ÖÁtÜ›d`:Š¹mãVæÍ#ýh0¦· ѲfÌmZbgÎ¬CĪ…iê¥ürÓz
jzVR˜ƒ	¾j41_Æ¥pøÏØzr¡Å§‹eÚÊà^îÄS;’âv”Á7¥gs)ò„FÍ^TL‚•š}X:˜%9«½Lèa°ãÔXL+ó`°H
Ú6Îæð+ÆÁØ…5;GÐÍãΠMêLBÀ�vº%ŝˆ×?™‹À™³þÌ~pˆŠÊQèÝ¶š2ÀŠ•ELk“LÀS
-8Á7ÓC“õÑ”@[*SÅ°pä%‚†_kPp½N¸RÓdÇ[Ð
>ÛŠ_Ѹ!€RË¥üµB–£®~¦ýHv!ú¶€U,âyA
-Ÿ…Àš¢‘ù¬­kÊÕOIö J?~ݾ¤övDqX+ÍP1†\D”¡% À“è²æ7Ó°lqÃèeÅiaÇp”oœû×0€Pjï „#ÛÆI†`3ð/J·B=DŸ÷%ý!&3tÂÿîìCu>ÝO™¡dÊ(۞ʚùIˆR/ù<¿r<�¼é ÔŒ|™ë„Ý҈󧊄\ÉvJ}J„\tß©ÑËà<åƒ(”iñ?`ÒR.r©ðJ.gÊò@Iè=Ñßõ`ó°�Iü…ÒË‚®,fOäiš¯*n'¡Ir¿#Ô áÛ?T{Çïoö
-o8|Ãô/®Tì@téZË1Ð’²-m ±å$ô2SØ?·v—%õOƒÑ�ÍaÙcB@œR–‡ÄWŸ°Çî‹À†ŸJUZyuyæŒG1(œ>‡žsG†Ö_„`çDÀˆÉŠ~…WHnüņ1-¦Óâµ|ÙUâ.Þ£Þ±M¹£j�M“²Õ§dp–’,i³As�BÉ2“&Dþ'¶ kY|Ð#æµJZÿ‘ÂQ€B‡Å(ÎËëÈпaƺ{PU¬xïHYÚ¾¨p’’<ñWUåwEq¯;®!ɶ{øô6zŽ³ª–{l�8_?*$7Ðk¥.c«•Ù+q0Ø]�8¯Âù÷â	ÝnJüE¬9öjo•åé9üù=éÉIø~ ¢
-ô–“¥;=‚:D~ÝrRàxb®21WC¬d:ÇY.ÅRs–L¤¨O­I§R#lù\r0ù#§4OÆî;PAù]Sg'†QàÎpwÍfíóæ10uÞˆ‡Ãªúk€Ï“Lâ^ÐAäç~$ì퐲@ä½f¼þVôñ~)$Ð’m 3mË@sÄ
-à"´ÎçO8£÷Ôú#°/èì‹MXÇšœœ“‡¦:þ«¢ß%Þ‚Àùš›pÞŠÇ÷@ùü™~ßßÎøSX³LàúåÆe>�¨ìD~ô}"$—õH’VeLGÍ�’æIBO#Jæþ”\ŸøÇ`Éw|º½rºw¦Þ$äÀ¼ù†®Iÿ |Ù4ÓU2
ý¼Ö$q	kãÕÌm(žß”ƒ¤UÈV#íÜ"ò*a@¸_žA%tL,k­pôÇb܇ÄlÚ¥¯brµb[ÉM‹ß+÷ ?lÅç™âÇäObŸDôHVWE‚ð÷ÂoîÁX·Às%ˆÚ¾‡>R½ôCÈD&¹Êi±¾É.tEU•“t”VDÜx–¯Ĭv/<‰T—‹ÄÖK¤B9^$‚r
-þº´Gåùs¨ô¢fóN,<$tI
-F\øDçå'g@HtSžþ.²öéк´&»Ús1±3#
-;P€S*Eö<¨Âú†<N•Mò¤QaËÔR0xµ�šÃrø”HsŸS›)&‘#†½I„ºÈX4O	ìzT9*ÇdakÒlœ!b„³D@©r¸|W°~NtmÀo»ïˆ·Çˆ#Sùîù3ürò¼X%âo¶ø¡Ýf�Ljlß¼-d÷	ÛæÉÞ°Z:ìÄÄGî!hµ´	PŒˆ“%Ê’Ï„í×ÍE0¾"²»÷éq¯xÓÄeÅÅè¿<—khSgÇOÚÔK¬ØÚhä¤b½0´kééö¡³K[ð²B]gº7Š©à‡¢n[HÕ–îC{„-MµTôCTÆ0Rñ
-&µdlƒ7ÅL&„¡˜!ãÝÿwâÖ~:á¼ç}ßçyþMÞ%ê½êß(S¨x?P’Ê§6j‰7�è¥0«�ð]BÂG-#*^ÇKãJÁ£„©Fõ§v? 1µ¤µÞÃåTŠ,Ì„U°C…;ØΗܩ‹c|F­®Œ«Výà¼1ô‚Íf®tŒ|1F+:£»[yì’t¬&¾º8^ °¶æ$¸_ v–<eáOzÉ\½¶—ÔCA¤%ÀV�Û5sE	™Ÿã­/ç=ûC'tì:\ÍMïÓéP¸Uµ´ÉøÒ6™Ÿy	rÿ ¯ÙLXÏÏ9?-ÿ%âý5¬#ëÄ2kµ÷W$¥oÁ|PwðÎçÄ©n<ÂyŽÑ¨:èëi±A ß8àŸPUùyÉ$™ü4ø=ýIŠ>„ZS@œU8²–S®†¤¼þ¯*¿Þ>ûì‘
-2…?xùÚz¶ž ÝÅ"¥‚ð"u3¼ý¹»4·§›ŒçäÒrUaöÀ§Ð°"±ùšÞôˆÊ^£A¹ý*¡šš»€ó6·öˆÖäñ6el;'Ñw^Sç[XÞýÃiã	ÇÚ¡‡ï&!BùzY´us�º¹Î:MNþ†áßý1èýODkðD¯(dùÀj5§Ý_pMªø£¹OlœÉ¬ÕÕ²†¡è9¹úW7;ÏÆû…Í>^› ݃§ˆêW |o^¦rGX7ç\Cß"U“iåÁ"SÌãHâ´HÊ+ô¼È%tȝ
-ÉZ⫍õ	J"gm²\ÊŒÕ	ßíe2§I”ìŽT—ÕÿLT<47ÀwGZÅŽõ¤†fúP=–€ðŸ¶È9‹)§¦çv”a¡)à3ž9éÿƒew³rð²Ð	•ižáê÷=¿üi›%h¶Hn#‹””§è‹aÖTùeŝ˜Ø
-Ú]#k¶sˆ-4õ
-Lé&¼Éiá	ï(7ží=ÕZØO!¯
-R«^¡ß\"^@2iúT0Óèôq(oCYñçO¢F:čxñû$ƒJ+˜q-}ÈÇr¡|ð͈äçüî`´’lçÆ^_²M¨Š1"eCyF$pœ©jWÜ=YŒ»÷4ÐZ]R+Sg¥;iŠ·•A÷¹Ô×ëØíŽwø c/n*ùбWœoÙtܱWNVõû·ŠØP‰qJ{ÂçÕr'®ïëýN™k·,™_?Ïî‹ïÞ`æÚ#c‘΃óìšÆѶã…ß+ÿ`�OèÍ
-endstream
endobj
16 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
13 0 obj
[12 0 R 11 0 R 10 0 R 9 0 R]
endobj
37 0 obj
<</CreationDate(D:20190909012612-07'00')/Creator(Adobe Illustrator CC 23.0 \(Windows\))/ModDate(D:20190909012612-07'00')/Producer(Adobe PDF library 15.00)/Title(LayoutSpec)>>
endobj
xref
-0 38
-0000000000 65535 f
-0000000016 00000 n
-0000000192 00000 n
-0000054694 00000 n
-0000000000 00000 f
-0000078655 00000 n
-0000078411 00000 n
-0000078919 00000 n
-0000079243 00000 n
-0000077664 00000 n
-0000077734 00000 n
-0000077805 00000 n
-0000077876 00000 n
-0000111366 00000 n
-0000054746 00000 n
-0000055147 00000 n
-0000111253 00000 n
-0000076022 00000 n
-0000077102 00000 n
-0000077150 00000 n
-0000078295 00000 n
-0000078326 00000 n
-0000078179 00000 n
-0000078210 00000 n
-0000078063 00000 n
-0000078094 00000 n
-0000077947 00000 n
-0000077978 00000 n
-0000106966 00000 n
-0000107252 00000 n
-0000100544 00000 n
-0000093694 00000 n
-0000079623 00000 n
-0000079898 00000 n
-0000093956 00000 n
-0000100812 00000 n
-0000107748 00000 n
-0000111411 00000 n
-trailer
-<</Size 38/Root 1 0 R/Info 37 0 R/ID[<97D202C4A94B874591B5BE50E1DF05AF><C5803DC1F035234DB619BA5F88CA5DE0>]>>
-startxref
-111602
-%%EOF
diff --git a/assignments/layout-img/LayoutSpec.png b/assignments/layout-img/LayoutSpec.png
deleted file mode 100644
index d35a62e29abba453847a525fc4eba2956e1d34d2..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/LayoutSpec.png and /dev/null differ
diff --git a/assignments/layout-img/rotations.png b/assignments/layout-img/rotations.png
deleted file mode 100644
index ffb63c5918e3a30b458bc244acdc88a3c7689782..0000000000000000000000000000000000000000
Binary files a/assignments/layout-img/rotations.png and /dev/null differ
diff --git a/assignments/layout-peer-review.md b/assignments/layout-peer-review.md
deleted file mode 100644
index ca6f59b669bd85d031274b45698200baae0c2854..0000000000000000000000000000000000000000
--- a/assignments/layout-peer-review.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: default
----
-
-* TOC
-{:toc}
-
-# Layout Peer Review
-
-- For peer review, you will be looking at the *Part 4* submissions for the layout assignment. In particular, you will be evaluating the extent to which a student faithfully reproduces their chosen application layout.
-
-- First, you should check the wireframe to see what layout the student was attempting to create. If you have the app, or have quick access to it, it's also good to download and run that app alongside the student submission for comparison.
-
-# Layout Criteria
-
-## External Criteria
-
-- Layout wireframe is present and filled out.
-
-- Wireframe is representative of both the chosen application, and the running submission.
-
-- Layout is responsive to orientation. If using the emulator, click the device rotation buttons to check this criteria.
-
-- Layout is able to scroll in some clear way.
-
-## Additional Feedback
-
-This is your chance to evaluate the success of the submission. Feel free to offer feedback wherever you think it is relevant -- this is your chance to help out your peers!
diff --git a/assignments/layout.md b/assignments/layout.md
deleted file mode 100644
index 24e014193fdc62143a83454f625ca6126fbfc82b..0000000000000000000000000000000000000000
--- a/assignments/layout.md
+++ /dev/null
@@ -1,423 +0,0 @@
----
-layout: assignment
-published: true
-
-title: Layout
-code: as2
-
-assigned: April 10th, 2020
-due:
- - <strong>Part1-2</strong> April 17th, 2020, 10:00pm
- - <strong>Part3-5</strong> <del>April 23rd</del> April 24, 2020, 10:00pm
- - <strong>Part3-5 Lock</strong> April 25th 2020, 10:00pm
-
-revised: 10:00 AM Thursday, April 23th, 2020
-
-objective: Use XML and programmatic constraints to replicate three layouts.
-
-android_goals:
-  - Create a generalizable, reusable layout for any number of images
-  - Understand Android layout GUI and XML
-  - Familiarize with Android programmatic layout API
-  - Understand Android constraints implementation
-  - Handle portrait and landscape orientation correctly
-  - Handle fixed- and variable-size container views
-  - Learn about Inflators
-hci_goals:
-  - Make use of interactor hierarchy
-  - Use constraints to create responsive layouts
-  - Make use of complex built-in layouts
-  - Implement reusable layouts
-  - Understand how scrolling works
-  - Understand how sizes influence layout
----
-
-* TOC
-{:toc}
-
-# GitGrade links
-
-**Classroom** [Summary](https://gitgrade.cs.washington.edu/student/summary/8723)
-
-<span class="note">Note:</span> this is a 2 part assignment. You will work in the same repo for both, but you must accept part 1-2, turn in part 1-2, then accept part 3-4, then turn in part 3-4
-
-**Part 1-2:** [Accept the Assignment](https://gitgrade.cs.washington.edu/student/assignment/119) / [Turn in the Assignment](https://gitgrade.cs.washington.edu/student/assignment/119/turnin)
-
-**Part 3-4:** [Accept the Assignment](https://gitgrade.cs.washington.edu/student/assignment/120) / [Turn in the Assignment](https://gitgrade.cs.washington.edu/student/assignment/120/turnin)
-
-# Assignment Description
-
-This is the assignment spec for Layout. Scroll down below [Part 5](#part-5-reflection) for some development strategies and tips curated from past students!
-
-On average, students spent about 10 - 12 hours on average on this assignment. It has been modified
-somewhat since then, but make sure you get started early, as this can quickly become one of the more
-time-consuming assignments of the quarter.  
-
-Also an important <span class="note">note</span> : Part 1-2 and Part 3-5 are NOT equivalent in difficulty. Part 1-2 should
-take significantly less time than Parts 3-5. Once you have completed part 1-2, turn it in and
-continue to work on the rest of the assignment. The checkpoint will help you at the end of your
-development cycle to ensure your code is working correctly.
-
-# Introduction to Parts 1 and 2
-
-For parts 1 and 2, you will be building the same layout twice. It must show at least five images,
-be scrollable, and look equally nice horizontally and vertically. Additionally, you must
-use constraints to achieve this, using the  `ConstraintLayout` we provide in `part1.xml`.
-`part1.xml` can be found in the `res/layout` directory in Android Studio once the `layout` project has been opened.
-
-The results should look like this:
-
-![Portrait screenshot for parts 1 and 2](layout-img/1_portrait.png){:width="25%"}
-![Landscape screenshot for parts 1 and 2](layout-img/1_landscape.png){:width="50%"}
-
-
-For part 1, you will use Android Studio's built-in layout editor to create the desired layout, using a combination of XML and the GUI.
-
-For part 2, you will create the same layout programatically, using Java code to construct view
-objects and add them to our activity. In this way you will demonstrate how to make a
-generalizable layout class that can be reused for an arbitrary number of images.
-
-The important part of the interactor hierarchy for parts 1 and 2 is shown below:
-
-<div class="mermaid greenlarge" >
-graph LR
-W(LinearLayout) --> Status[StatusBar]
-W --> R[RelativeLayout]
-R --> S[ScrollView]
-S --> C[ConstraintLayout]
-C --> I1[ImageView: borders: vMargin]
-C --> I2[ImageView: borders: vMargin]
-C --> I3[ImageView: borders: vMargin]
-C --> I4[ImageView: borders: vMargin]
-C --> I5[ImageView: borders: vMargin]
-R --> B[BottomNav]
-
-classDef greenlarge fill:#dbf0db,stroke:#333,stroke-width:2px,font-size:16px,padding:0px,height:50px,top:1px;
-classDef bluelarge fill:#99ccff,stroke:#333,stroke-width:4px,font-size:16px,padding:0px,height:50px,top:1px;
-
-class Status,W,S,R,B greenlarge
-class C,I1,I2,I3,I4,I5 bluelarge
-</div>{:font-size=14px}
-
-We can represent this same interactor hierarchy visually in an _Layout Wireframe_ shown below.
- Note that you will only be adding things inside the ConstraintLayout.
-
-![Reference image for parts 1 and 2 showing how each image is staked vertically with vMargin space on every side; below; above; and between images](layout-img/LayoutSpec.png){:width="40%"}
-
-You will only be configuring the ImageViews as they relate to ConstraintLayout (shown in blue).
- Also this is simplified from what you would see in the Layout Inspector
-
-And this video shows parts 1 and 2 in action:
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/gf5__gtVhY0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-
-You may find the following link helpful when working with constraint layouts:
-["Building a Responsive UI with Constraint Layout"](https://developer.android.com/training/constraint-layout) (pay particular attention to the "Set Size as a ratio" section).
-
-## Further details on Part 1
-
-**Tasks**:
-
-* Use the tools provided by Android Studio to build a layout that vertically stacks images.
-
-When it comes to layout, working directly with XML can be a pain, especially when there are several attributes to keep track of on each element. Luckily, Android Studio provides a visual editor that you can use to build your app layout.
-
-For `part1.xml`, you will accomplish the following:
-
-* Familiarize yourself with [how to reference images in res/drawable](https://developer.android.com/guide/topics/graphics/drawables).
-* Use the Visual and XML editor to construct a single, scrollable column of images.
-* You must place a `vMargin` gap between images and their container, as well as between consecutive images. You do not have to ensure that the bottom image has `vMargin` space between it and its parent's bottom. `vMargin` is defined in `res/values/dimens.xml`
-* Your layout must have enough images that you need to scroll (use `animal_0` through `animal_4`)
-* Each image must be scaled so it fits horizontally and is centered *while maintaining its aspect ratio*. This requires you to set some attributes specific to ImageViews (not inherited) which are mentioned in the [ImageView Documentation](https://developer.android.com/reference/android/widget/ImageView)
-* You must use constraints to ensure that an image is adjacent to the previous image (`Top_toBottomOf`) and that its left and right side are constrained to the parent container.
-
-_Related APIs_:
-* [ConstraintLayout](https://developer.android.com/training/constraint-layout)
-* [Linear Layouts](https://developer.android.com/guide/topics/ui/layout/linear)
-* [ImageView](https://developer.android.com/reference/android/widget/ImageView)
-* [ViewGroup.LayoutParams#MATCH_PARENT](https://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#MATCH_PARENT)
-* [ViewGroup.LayoutParams#WRAP_CONTENT](https://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#WRAP_CONTENT)
-
-## Further details on Part 2
-
-The `Part2View` starter code can be found in the `cse340.layout` directory in Android Studio.
-
-In `Part2View` we have set up the basic scaffolding necessary to complete the given layout. For this section you will be instantiating the view objects from Part 1 programmatically.
-
-**Tasks**:
-
-* Create the layout from `Part1View` without using an XML file that vertically stacks an
-arbitrary number of images.  That is, you must accomplish
-the layout requirements from Part 1 programmatically, creating Views in Java to accomplish your
-desired layout. Part 2, however, will allow for an arbitrary number of images, not just the ones specified in an XML file.
-
-It may be useful to view the interactor hierarchy using Layout Inspector when Part 1 is
-running to understand how to structure the views you are creating programatically.
-
-# Part 3
-
-<span class="note">Note:</span>  Remember to accept the as-layout-part-3-4 [assignment](https://gitgrade.cs.washington.edu/student/assignment/120) and [turn in the assignment](https://gitgrade.cs.washington.edu/student/assignment/120/turnin) when you are done.
-
-The `Part3View` starter code can be found in the `cse340.layout` directory in Android Studio. We will create a custom Layout in Part3 that can organize an arbitrary series of Views into a Pinterest-like layout. Pinterest is a great example of a high-profile app that can be built with relatively simple layout instructions. For instance, one could imagine breaking the layout into two large vertical columns, then assigning various elements to each one. You will also need to ensure the columns never differ by more than the height of one image.
-
-![Screenshot of pinterest layout](https://newsroom.pinterest.com/sites/default/files/inline-images/2014112502.jpg){:width="50%"}
-
-To determine which column a photo should go in, we will use "pinterest" ordering. You must track
-the height of the images in each column and add the next image to the shorter column (or the
-*left* column if equal). For 20sp we will accept one of two methods for determining the Pinterest order.
-
-- Using the intrinsic height of the `drawables` image to determine which column to make this determination.
-(Please see the explanation on our discussion board for why this is so.) The screen shots for the
-Pinterest order in portrait and landscape are shown below.
-
-![Screenshot of part 3](layout-img/3_portrait.png){:width="30%"} &nbsp;&nbsp; ![Screenshot of part 3 scrolled](layout-img/3_portrait_scrolled.png){:width="30%"}
-
-![Screenshot of part 3, landscape](layout-img/3_landscape.png){:width="45%"} &nbsp;
-![Screenshot of part 3, landscape, scrolled down](layout-img/3_landscape_scrolled.png){:width="45%"}
-
-- NOT using the height of the `drawables` directly, instead you will need to get the *displayed*
-(or measured) height of the image. To do this you need get the measured width of a column, then
-use that to measure the height of each image. It will help to take a look at
-[How Android Draws Views](https://developer.android.com/guide/topics/ui/how-android-draws)
-[View.Measure](https://developer.android.com/reference/android/view/View#measure(int,%20int)) and
-[MeasureSpec](https://developer.android.com/reference/android/view/View.MeasureSpec) for this version
-
-![Screenshot of part 3](layout-img/3_portrait_measured.png){:width="30%"} &nbsp;&nbsp; ![Screenshot of part 3 scrolled](layout-img/3_portrait_measured_bottom.png){:width="30%"}
-
-
-Note that two photos with different resolutions but the same aspect ratio (width to height ratio)
-will both affect the column height identically because they will be scaled to have the same size on-screen.
-
-
-Keep in mind that similar to Part 1 and Part 2, your Part 3 layout should be responsive to device orientation. When rotated your layout should maintain the proper positioning (vMargins, spacing, and aspect ratios should remain the same while images scale to fill the extra space.)
-
-
-Our Pinterest style layout will be achieved both by using Layout Inflation (using a LayoutInflater with a valid XML file).
-A [LayoutInflater](https://developer.android.com/reference/android/view/LayoutInflater.html)
-allows us to accept a valid XML file specifying part of an interactor hierarchy and convert it
-into a View object that can be added to the interactor hierarchy you are constructing.
-This can be seen in practice in the `R.id.action_part_1` case in MainActivity#onCreate(Bundle).
-The XML/visual editor makes it much easier to build our app layouts, so we can use that to create new
-layouts, then use an inflater to convert the XML into an object before programmatically
-appending it to our current app layout.
-
-The interactor hierarchy for Part 3 is shown below. The elements marked in light green must be
-created using inflation (and the `part3_grid.xml` file must do this). The elements shown in
-blue must be created programmatically. Note the switch to `LinearLayout` to hold the images.
-
-<div class="mermaid greenlarge" >
-graph LR
-C[ViewGroup:ConstraintLayout]
-C --> Column1[ViewGroup:LinearLayout]
-C --> Column2[ViewGroup:LinearLayout]
-Column1 --> V1[ImageView:Gumball]
-Column1 --> V2[ImageView:Fox]
-Column1 --> V3[...]
-Column2 --> V4[ImageView:Duckling]
-Column2 --> V5[...]
-
-classDef greenlarge fill:#dbf0db,stroke:#333,stroke-width:2px,font-size:12px,padding:0px,height:50px,top:1px;
-classDef bluelarge fill:#99ccff,stroke:#333,stroke-width:4px,font-size:12px,padding:0px,height:50px,top:1px;
-
-class C,Column1,Column2 greenlarge
-class V1,V2,V3,V4,V5 bluelarge
-</div>{:font-size=14px}
-
-
-**Tasks**:
-
-* Before getting started on this section, try constructing a [LayoutInflater](https://developer.android.com/reference/android/view/LayoutInflater.html) and passing in your `part1.xml` file.
-* Once you are comfortable with inflation, use inflation  to make use of the ConstraintLayout we have provided for you (`cse340.layout.R.layout.part3_grid`)
-* Programmatically create ImageViews based on the information passed in:
-  * Add each image to the bottom of one of the two columns.
-  * Which column an image is added to will depend on the current length of both columns (the image will be added to the bottom of the currently shorter column).
-  * Each image must be `vMargin` from the previous image vertically (or from the top of the column **if it is the first image in that column**).
-  * There must be a `vMargin` gap between the left image and the left side of the screen,
-  between the right image and the right side of the screen, and between the two columns. The
-  center of the `vMargin` gap between the two columns must be in the exact center of the screen.
-  All images must be horizontally scaled to to be wide enough to meet these margins exactly.
-  * The heights of the images must be scaled proportionally based on the constrained width.
-  * The bottom of the last image in the longer column must be flush with the bottom of that
-  column. If the other column is shorter, then of course it will show more margin.
-* Write code that evenly distributes ImageViews between a given set of columns based on the scaled height they will be on screen, not the dimensions from the drawable resource.
-* Note that all of this code must be in the contructor of the `Part3View` (or in a
-  private method called by the constructor.)
-
-*Related APIs:*
-[LayoutInflater](https://developer.android.com/reference/android/view/LayoutInflater.html)
-
-
-# Part 4
-
-The `Part4View` starter code can be found in the `cse340.layout` directory in Android Studio.
-
-For part 4, feel free to explore anything pertaining to layout that we have discussed over
-the last few weeks. You are not limited to only using the types of layout covered in class. Your task is to sketch (wireframe) and re-create an interface from another
-popular app. For instance: Twitter, Facebook, Instagram, etc. (not Pinterest!)
-
-Your layout must meet the following requirements:
-* Your layout must implement a scroll view in some fashion, allowing the user to scroll through
-content on your application.
-* Your layout must be responsive to device orientation. If the user rotates their device, then
-your application must adjust to fit the new orientation.
-* Your interface should be sufficiently similar to the one you're emulating. Don't leave out things like icons & text.
-
-**Tasks**:
-
-* Before you start, sketch the interface you've chosen to mock up as a Layout Wireframe *on a
-piece of paper or using a tablet pen*. This sketch will be turned in as part of your reflection
-in [Part 5](#part-5-reflection).
-* Also draw out the Interactor Hierarchy for the interface. Your Interactor Hierarchy may
-be done with a computer program.
-* Using XML and programatic means, create your version of this interface.
-* Make sure that you create a Part4.xml file and add/commit/push it to your GitLab repository
- (a similar process to using your own pictures.)
-
-
-# Part 5 (Reflection)
-
-For this part, you will submit your reflection on this assignment to Gradescope. Create a MS
-Word, Google or other type of document and copy the following questions (in italics below) into
-that document. Add your responses below each question. You can have
-more than one answer per page, but if you can, please try to avoid page breaks in the middle of
-a question. Insert page breaks between questions as needed.
-
-1. _Diagrams and images_
-  - _The Layout Wireframe you drew for Part 4._
-  - _The interactor hierarchy you drew for part 4. (Do not turn in a screen shot of the
-    layout inspector for this)._
-  - _A screen shot of your final interface and the the interface you are emulating, both in
-  portrait and landscape mode._
-2. _For every interface there may be multiple ways of laying it out, particularly if they are complicated.
-As you reflect on your design and implementation of part 4, think of another way you could
-wireframe the same interface using different ViewGroups/Layouts._
-3. _This class is part theory, part implementation. As such, lecture and section may not have
-provided you all of the information necessary to complete the layout program. How did you
-approach the independent learning required to complete this assignment? List at least one
-resource you used in your learning that would recommend to a friend taking this class in the
-future._
-4. _Why are responsive designs important, in user interfaces, software development and software engineering, and real life applications?_
-
-# Development Strategies
-
-* You may run into issues when rotating the device. Note, when rotating the emulated device or your personal Android device, that the layout must adjust accordingly. You do not need to readjust the layout of your images when rotating the device, as this must remain the same.
-
-![Rotation buttons on emulated android device](layout-img/rotations.png)
-<p style="text-align: center; color:#808080; font-style: italic; font-size: 10pt;">These buttons will allow you to rotate the emulated device clockwise/counter-clockwise.</p>
-
-* When dealing with the Android documentation: ask as many questions as necessary! The android documentation can be painful to read through, as there are many potential options to choose from. If you need any help parsing it, feel free to ask anyone on the course staff for advice. Additionally, we suggest that you read through the following resources as you develop your apps, to better understand the tools you are utilizing (these are referenced in their respective parts as well):
-  * [An explanation of the ImageView ScaleType attribute](https://thoughtbot.com/blog/android-imageview-scaletype-a-visual-guide) (Part 1)
-  * [Building a Responsive UI with Constraint Layout](https://developer.android.com/training/constraint-layout) (Part 3) Note the "Set Size as a ratio" section here
-  * [What's new in Constraint Layout 1.1.0](https://android.jlelse.eu/whats-new-in-constraint-layout-1-1-0-acfe30cfc7be) (Part 4)
-  * [Adjusting the view size](https://developer.android.com/training/constraint-layout#adjust-the-view-size)
-
-
-# Debugging tips and tricks
-
-* Recall that you can use the Layout Inspector to see where your views are placed in the parent.
-The Layout Inspector is can be found under the _Tools_ menu.
-* If your application stops running (the device displays an alert that says
-  "<application name> has stopped"), you likely have a serious runtime error. Make sure
-  to look at the _Run_ tab at the bottom of the screen. For more
-  information on runtime crashes, see
-  [Crashes](https://developer.android.com/topic/performance/vitals/crash).
-* Your application may crash while inflating if there is a problem with your .xml file.
-* Logging output is especially useful for testing the functionality of sections of code such as `Layout#MainActivity#OnCreate` and other methods. Much like `System.out.print` in Java, Andriod provides its own class for producing output: `Log`. We suggest that you use `Log.i` and create your own custom tag so that you can filter the output for the information you want. Below is an example of how to use the `Log.i` function.
-
-```java
-private static final String TAG = "Layout";
-
-Log.i(TAG, "Hello world!");
-```
-
-  To make full use of Logcat, make sure to configure the priority level (in this case, "Info") and use the correct tag (in this case, "Layout MainActivity"). It's also good to check that you have the correct device/emulator selected.
-
-<span class="note">Note:</span>  Remember to take your `Log.i` debugging calls out of your code before turning it in.
-
-_Related APIs_:
-[Android Log.\*](https://developer.android.com/reference/android/util/Log.html) | [Using Logcat](https://developer.android.com/studio/debug/am-logcat)
-
-
-
-# Turn in
-
-## Code Submission Instructions
-
-<span style="color:red;">We will test layout on emulators with different screen sizes. Please use constraint correctly. Don't just try to match pixels in our sample screenshots.</span>
-
-You will turn in the following files on GitGrade
-- [Part 1-2](https://gitgrade.cs.washington.edu/student/assignment/119/turnin).
-- Make sure you have accepted [Part3-4](https://gitgrade.cs.washington.edu/student/assignment/120) before turning that part in.
-- Continue to work in your same repo
-- [Part 3-4](https://gitgrade.cs.washington.edu/student/assignment/120/turnin).
-
-We are allowing you to turn in Part 1-2 early for a checkpoint to see how closely you match our
-pixel tests. You will get 1 point for turning in code that compiles and passes up to half of the
-tests. If you pass more than half the tests, we will award you 2 points.
-
-Make sure you only edited the following files for submission:
-
-```txt
-─ Part1.java
-- Part2View.java
-─ Part3View.java
-─ Part4View.java
-- res/drawable
-- res/layout/part1.xml
-- res/layout/part3_grid.xml
-- res/layout/part4.xml (optional, or other .xml files for part 4)
-- res/values/strings.xml
-```
-
-Do not edit any of the other files that we have given you, do not delete any of the images in the
- `res/drawable` folder, and do not delete any existing strings in `res/values/strings.xml`
- (you may add bitmaps and strings of course.)
-
-If you add your own images in [Part 4](#part-4), please make sure to add and commit them to
-your repository in the `res/drawable` directory before turning in your assignment.
-If your images are not there, your custom layout will not work for others and you will
-NOT get credit for the work you did.
-
-<span class="note">Note:</span>  Large images can be problematic both for running your app and for committing to your
-gitlab repository (there are size limit imposed on school resources). Please make sure to resize
-your high resolution images before using them in your creative application.
-
-## Reflection submission
-
-The reflection will be turned in to Gradescope.
-
-
-# Grading (40pts)
-
-The Layout assignment will be out of 40 points and will roughly (subject to small adjustments) be distributed as:
-
-Part 1-2 checkpoint (2pts)
-<span class="note">Note:</span>  this MUST be turned in on time to receive points. No late assignment
-for part 1-2 will be accepted.
-* Turned in and compiles: 1 pt
-* Passed >1/2 of tests: 1 pt
-
-Final checkpoint (38 pts)
-- Part 3-4 code (26 pts)
-  - Part 1 (6 pts)
-  - Part 2 (7 pts)
-  - Part 3 (9 pts)
-  - Part 4 (4 pts)
-- Reflection (12 pts)
-  - Layout Wireframe, Interactor Hierarchy, and screenshots of part 4 (3 pts total)
-  - Each of the 3 reflection questions is worth 3 points (9 pts total)
-
-
-
-
-
-## IDE Errors/Warnings you can ignore
-
-<span class="note">Note:</span>  DO NOT assume that because an error/warning can be ignored for this assignment, it can be ignored for all assignments. ALWAYS check the spec for each assignment before deciding what is OK to ignore.
-
-* `Button`
-  * Hardcoded Strings
-* `TextView`
-  * Hardcoded Strings
-* `ImageView`
-  * Missing `contentDescription`
diff --git a/assignments/menu-report.md b/assignments/menu-report.md
deleted file mode 100644
index c770fd20a687897ad37ed98e038f99827607e883..0000000000000000000000000000000000000000
--- a/assignments/menu-report.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-layout: default
----
-# Report on Menus Assignment
-
-*Comments about what should be in your report can be found in italics. **Please remove the comments
-and replace them with your own words**.*
-
-## Introduction
-*Write two sentences describing the purpose of the experiment. This
-can be the same text you use in your [consent form](consent) under
-`Introduction and Purpose of study (Beneficience)`*
-
-## Method
-
-**Menus:** *Mention that there are three types of menus, Pie, Linear
-and Custom. Then describe your custom menu and include
-an screenshots of your custom menu in both a selected and unselected
-state. Describe some of the design choices you made when you were
-conceiving your custom menu and how your final product match (or didn't)
-your original vision? Be sure to explain clearly how your custom menu
-works and how a user interacts with it?*
-
-**Tasks:** *Describe the 9 conditions of the study. Explain how many
-items were selected per menu, and how many times each item was
-repeated. Describe how many trials each participant completed. This
-should be at most one paragraph*
-
-**Setting:** *What device was used? Was it an emulator? Did they use a
-mouse or a finger? Where did the experiment take place?*
-
-**Participants:** *Describe your participants (without identifying
-them). How were they recruited? How many were there? Were
-they consented? You should also add
-some optional information such as: What was there average age? What
-genders were present? How experienced were they with android?*
-
-**Data Collected:** *What information was collected (time, errors,
-etc)*
-
-## Results
-
-*To analyze your data, you should copy the following [spreadsheet](https://docs.google.com/spreadsheets/d/1JqfKhHugIF-kebs_bVztCnkUe0CizXN8PU_Ar3kXtK4/edit?usp=sharing)
-and paste your data into the `Raw Data` subsheet, replacing the
-contents/data that we placed there. To use this spreadsheet look at
-the `Example Chart` sheet to see a chart of your data (you can click on
-the hamburger menu in the chart to download it as an image).  You can
-also create your own charts if you are
-comfortable working in a spreadsheet.*
-
-The results will be broken into two parts. The first will describe the
-overall data, including how many erroneous selections took place, and
-how fast the user was in each condition.
-
-## Speed Results
-
-*Describe your thoughts about overall speed in different
-conditions. Use at least one chart to illustrate what you say. Here is
- an example chart generated using our data, when you paste your data
-into the spreadsheet you'll see that it updates to reflect your data*
-
-![Picture of histogram chart showing relative performance of each condition](menus-img/time-chart.png)
-
-
-## Error Results
-
-*Describe what happened in terms of errors -- provide at least one chart showing
-what you learned about errors in different conditions*
-
-# Conclusions
-
-*Describe your conclusions. Do you think we should use pie menus more? normal menus more? or your custom menu?
-What can we conclude from your data?*
diff --git a/assignments/menus-img/atan2math.png b/assignments/menus-img/atan2math.png
deleted file mode 100644
index 56b796497409477f99dd0a84272a2e9998f45925..0000000000000000000000000000000000000000
Binary files a/assignments/menus-img/atan2math.png and /dev/null differ
diff --git a/assignments/menus-img/device-file-explorer.png b/assignments/menus-img/device-file-explorer.png
deleted file mode 100644
index a1910ffdebd8067dafe6aed3aa0dc74ddd16593a..0000000000000000000000000000000000000000
Binary files a/assignments/menus-img/device-file-explorer.png and /dev/null differ
diff --git a/assignments/menus-img/linear.png b/assignments/menus-img/linear.png
deleted file mode 100644
index 4b5b1fcd68a6d803cea91564521d2127a1018adf..0000000000000000000000000000000000000000
Binary files a/assignments/menus-img/linear.png and /dev/null differ
diff --git a/assignments/menus-img/math_a20.gif b/assignments/menus-img/math_a20.gif
deleted file mode 100644
index fc36674d716687db4f25e44f50affd813abe87a2..0000000000000000000000000000000000000000
Binary files a/assignments/menus-img/math_a20.gif and /dev/null differ
diff --git a/assignments/menus-img/menus-stats.png b/assignments/menus-img/menus-stats.png
deleted file mode 100644
index a150bde99badc764037bffb103e8fc281b64edff..0000000000000000000000000000000000000000
Binary files a/assignments/menus-img/menus-stats.png and /dev/null differ
diff --git a/assignments/menus-img/pie.png b/assignments/menus-img/pie.png
deleted file mode 100644
index 19bb3cea94cceca2d283eceafb0f580812c433f4..0000000000000000000000000000000000000000
Binary files a/assignments/menus-img/pie.png and /dev/null differ
diff --git a/assignments/menus-img/time-chart.png b/assignments/menus-img/time-chart.png
deleted file mode 100644
index 555aa23251015ac371dee7a373980d5e5abd7929..0000000000000000000000000000000000000000
Binary files a/assignments/menus-img/time-chart.png and /dev/null differ
diff --git a/assignments/menus.md b/assignments/menus.md
deleted file mode 100644
index e22f3fb93687af7070e681f2d15dca2a53808422..0000000000000000000000000000000000000000
--- a/assignments/menus.md
+++ /dev/null
@@ -1,682 +0,0 @@
----
-layout: assignment
-published: true
-
-title: Menus
-code: as5
-
-assigned: May 12th, 2020
-due:
-- Part 1-4 (programming part) <BR>
-  -  <strong>Due</strong> May 21th, 2020<BR>
-  -  <strong>Lock</strong> May 22th, 2020
-- Part 5-6 (analysis part)<BR>
-  -  <strong>Due</strong> May 25th, 2020<BR>
-  -  <strong>Lock</strong> May 27th, 2020
-revised: 9:00pm, Sunday, May 10th, 2020
-
-objective: Build and test custom interactors
-
-android_goals:
-  - Further practice using callbacks; `onDraw()`
-  - Further practice with translate
-  - Gain more experience working with callbacks.
-  - Further practice with state machines and event handling
-hci_goals:
-  - Record user study data
-  - Produce plausible experiment results (within expected ranges)
-  - Understand pie menus
-  - Design your own interactor
-  - Collect, parse, and interpret results collected from a study.
-
----
-
-* TOC
-{:toc}
-
-
-# GitGrade links
-
-[Accept the Assignment](https://gitgrade.cs.washington.edu/student/assignment/126) /
-[Turn-in the Assignment](https://gitgrade.cs.washington.edu/student/assignment/126/turnin) /
-[Review your Submissions](https://gitgrade.cs.washington.edu/student/summary/8723)
-
-
-# Overview of assignment
-
-This assignment has two main components.
-
-First you will be creating three menus -- a linear menu, a pie menu, and a custom menu that you
-design.  The programming re-uses many concepts from [ColorPicker](colorpicker.html), but will
-have more pieces to it. Please start early, and reach out if you find you are spending more than 10
-hours.
-
-After your application is turned in, you will test these menus in an experiment with others. The
-user study will include the following:
-- Write your consent form using our [template](consent). Print it out for participants you see in person, or
-be ready to email it to remote participants;
-- Recruit and consent at least 3 participants to test your app;
-- Send your app (APK) to your participants so they can run the tests;
-- Collect the data from participants who tested your app. If participants do the test on your device or
-emulator you will download the data yourself. If participants test your application remotely they will
-have to download and send you the data they collect for you (details for how to do this are in
-[Part 5](#part-5-conduct-and-write-up-user-study)
-- Import the data into the spreadsheet we provide;
-- Turn in a copy of this data (so we can create a very large data set);
-- Analyze the data and write the report.
-
-**Note:** If you are unable to finish parts 1-4, ~~you can borrow a phone with working code
-installed~~ we will send you an APK after the lock date to finish parts 5-6.
-
-
-## Video of completed assignment
-
-_Note the Toasts (pop up messages) are missing a space between the word "Selected" and the item
-that was selected. This has been fixed in the current version of the code, but the rest of
-the app works substantively the same._
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/4o_4TAsSe8E" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-
-# Part 1: Overview
-
-**Tasks**
-
-- Read this spec thoroughly
-- Read through the code of the classes listed below. Note any variables or methods you will be
-using or overriding from parent class.
-- Read and understand the experiment design.
-
-You will be implementing a class that can display a pie menu, a class
-that can display a linear menu, and a custom menu of your design, for
-use in an experiment comparing which is faster for the user to select
-menu items from. By *menu items* we mean the individual items in a
-menu, such as the number 1 in the sample video.
-
-
-## Overview of code structure
-
-**Files that you will be changing**
-* MainActivity.java
-  * Activity that displays the option to navigate between sessions. Also adds the corresponding menu view to the view hierarchy.
-* MenuExperimentView.java
-  * View that can displays and handle input for a menu. This is where you implement the state machine that will work for
-  all of your menus. This is the parent class of `NormalMenuView` and `PieMenuView`
-* PieMenuView.java
-  * View that implements pie menus. This knows how to draw a pie menu, and figure out where input is in it. It inherits from `MenuExperimentView`
-* NormalMenuView.java
-  * View that implements normal linear menus. Similar to `PieMenuView`
-* CustomMenuView.java
-  * View that implements normal linear menus. Similar to `PieMenuView`
-
-**Classes that have functions and fields you may need (your classes inherit from them)**
-* AbstractMenuExperimentView
-  * A lot of very handy helper methods (accessors and mutators) for the menus, as well as the Listener methods.
-  Most of the other methods in this class are abstract and overridden in the child classes.
-* AbstractMainActivity
-  * Methods to handle app creation, switching modes (from test to experiment), and starting experiments.
-* TrialListener
-  * Definition of a listener (callback) interface that is called when a trial is finished.
-
-The structure of this code is represented by the
-[Unified Modeling Language](https://en.wikipedia.org/wiki/Unified_Modeling_Language) (UML)
-diagram shown below.
-
-<div class="mermaid">
-classDiagram
-
-class MenuExperimentView {
-  onTouchEvent()
-  startSelection()
-  endSelection()
-  updateModel()
-  onDraw()
-}
-
-
-AbstractMenuExperimentView <|-- MenuExperimentView
-
-AbstractMainActivity <|-- MainActivity
-AbstractMainActivity <|-- TestActivity
-MenuExperimentView <|-- PieMenuView
-MenuExperimentView <|-- NormalMenuView
-MenuExperimentView <|-- CustomMenuView
-
-class TaskType {
-  LINEAR
-  RELATIVE
-  UNCLASS
-}
-
-class State {
-  START
-  SELECTING
-}
-
-class MenuType {
-  NORMAL
-  PIE
-  CUSTOM
-}
-</div>
-
-**Other files you may want to look at**
-* ExperimentSession.java
-  * Class that sets up all the conditions for the experiment and creates an iterator with all the trials.
-* ExperimentTrial.java
-  * Class that stores all the data for a single trial.
-* TestActivity.java
-  * Activity that app starts out in. Lets you test your menus before running the experiment
-
-
-
-## Overview of Experiment
-
-In this experiment we will have 9 conditions, each of which will include
-the number of trials (where totalTrials = `NUM_REPEATS * ITEM_MAX` trials).
-You can think of this as a three dimensional array
-
-|            | Menus       |             |             |
-|------------|-------------|-------------|-------------|
-| **Tasks**  | `PIE`       | `NORMAL`    | `CUSTOM`    |
-| `LINEAR`   | totalTrials | totalTrials | totalTrials |
-| `RELATIVE` | totalTrials | totalTrials | totalTrials |
-| `UNCLASS`  | totalTrials | totalTrials | totalTrials |
-
-<br>
-The three *menu types* (specified in an `Enum` in the code) are `PIE`
-(round), `NORMAL` (linear) and `CUSTOM` (your custom menu).
-
-The three *task types* (also an `Enum`) are `LINEAR` (menu items
-that have a natural order such as 1,2,4,8,16,32,64,128); `RELATIVE`
-(menu items that have a relationship to each other, such as
-Up/UpRight/Right/Down/etc...); and `UNCLASS` (menu items that
-have no relationship or ordering, such as Print/Cast/Bookmark/etc);
-
-The *trials* are specific combinations of menu item, task type,
-and menu type. So for example, one trial might involve showing the
-user a pie menu, with the numbers 1..128 in it, and asking them to
-select number 4. The participant can select any option, no matter what
-as soon as they complete a selection, the result is recorded and the
-next trial begins.
-
-For any given *session* (one user's worth of trials), each combination
-of menu type, task type, and menu item, will be repeated `NUM_REPEATS`
-times (`NUM_REPEATS` is specified in `ExperimentSession.java`). In
-addition, for any specific combination of menu type and task type, at
-most `ITEM_MAX` items (a total of `ITEM_MAX*NUM_REPEATS` trials) will
-be shown to the user. If you set both of these to 1 for testing, you
-can test all your conditions very quickly. Make sure to set them to
-the required values for user testing:
-`ITEM_MAX` must be at least 4 and `NUM_REPEATS` must be 3.
-
-After the code for this project is submitted, you will recruit at least 3
-family, friends, or other students and have them complete one session each. Thus, you
-will have a total of 3 (participant sessions) * 9 (conditions) *
-`ITEM_MAX * NUM_REPEATS`, or at least 324, data points when you have completed
-this assignment. You will analyze the data from this experiment in
-[Part 5](#part-5-conduct-and-write-up-user-study) of this project.
-
-
-We have implemented in `ExperimentSession` the code for you to generate
-all of the trials from a setup file called `menuContents.csv` found in
-the assets directory. Make sure that you understand the `createTrials()` method
-provided in `ExperimentSession.java` which sets up conditions for the
-whole experiment.  `ExperimentSession` is an iterator, so to run the
-trials for a given session you just use `session.next()` as long as
-`session.getNext()` is true.
-
-**Note:** that we give the user feedback two ways.
-- For updates that the user can ignore, throughout the code, we use something called a `Toast` - a widget
-that appears at the bottom of the screen and shows some announcement text. Toasts are temporarily
-displayed and then disappear. See [Toast](https://developer.android.com/guide/topics/ui/notifiers/toasts)
-and for an example of how it is used look in `AbstractMainActivity.java`
-- For critical experimental information (i.e. what to select in a trial), we give the user
-instructions by changing the contents of the `TextView` at the bottom of the screen (by changing
-the contents of `R.id.instructionTextView`). This is a permanent change that will be visible
-until they finish the trial, so a Toast is not an appropriate choice.
-
-
-
-# Part 2: Implement MenuExperimentView and MainActivity
-
-**Tasks**
-- Implement `onTouchEvent()` in `MenuExperimentView` including
-  - `startSelection()`
-  - `endSelection()`
-  - `updateModel()`
-  - `reset()`
-- Implement `onDraw()` in `MenuExperimentView`
-- Implement `showMenuForTrial()` in `MainActivity` (and set up and implement a `TrialListener`)
-
-For this part, you will be working in `MenuExperimentView.java` and `MainActivity.java`.
-This section will entail defining the functions which power your menu experiment.
-The `MenuExperimentView` class includes several methods that you will need to implement. You
-will implement the state machine logic in `onTouchEvent` (similar to what you've done in ColorPicker).
-
-One tricky thing about context menus -- they can appear anywhere in
-your user interface. To support this, we set things up so that the
-menu view is going to `MATCH_PARENT` width and height (i.e. its
-bounding box is the whole screen). However, the menu itself should
-show up right where the user presses down. To make this easier for your
-menus, you will translate the canvas so that they can draw themselves in
-a logical location given where the finger pressed in `onDraw()`. Then you
-will call `drawMenu()` with this translated canvas, which is what each
-specific menu implements to draw itself properly.
-
-**Handling Touch Events**
-
-You will handle touch input by implementing the `onTouchEvent` method.
-This is the event handler that is invoked when a touch occurs in this
-view. The state machine defined in `onTouchEvent` should work, without
-changes, for every menu you implement. The only menu-specific code is
-in `essentialGeometry()` (it finds the current index). Thus
-`onTouchEvent()` is implemented in the parent class,
-`MenuExperimentView` and *is not changed* in the child classes.
-
-`MenuExperimentView`'s implementation of onTouchEvent makes
-use of your menu's `essentialGeometry()` function to determine the
-relative position of the user's finger. Essential geometry will be
-passed the finger's position relative to the menu's `(0,0)`, i.e.
-where the user pressed. You must implement your linear menu
-so this is its top left corner, and your pie menu so that the user's finger is in
-the center of the pie.
-
-You **MUST NOT** perform any assignments within `essentialGeometry()`, as it violates the utility
-of that method. Instead, `essentialGeometry()` will return the index associated with the desired
-view, allowing the calling method to act on that value.
-
-You need to keep track of two main states: `START` and
-`SELECTING`. When in the `SELECTING` state you need to distinguish
-between the event type to determine if the user has selected an option
-or if they are still in the middle of making a choice.
-
-Relevant touch events include `ACTION_DOWN`, `ACTION_MOVE`, and
-`ACTION_UP`; think about how these touch events relate to the change
-and how the UI must respond to these events.
-
-More details about `essentialGeometry()`, specific to each menu, are in descriptions for those
-menus in [Part 3](#part-3-implement-pie-and-normal-menus).
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((Start))
-A -- "Press:startSelection()" --> I(Selecting)
-I -- "Release:endSelection()" --> E[End]
-I -- "Drag:updateModel()" --> I
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class S invisible
-class A start
-class E finish
-class I normal
-</div>
-
-Details for `startSelection()`, `endSelection()` and `updateModel()` can be found in
-`MenuExperimentView`. Note that there are no guards (boolean logic regarding the essential geometry)
-on these transitions -- any click inside the `MenuExperimentView` causes a menu to appear, and once
-a menu appears, dragging causes `updateModel()` to be called no matter where the finger is.
-Similarly, the menu must be removed when selection ends, and the trial recorded, no matter
-where the finger is. You do not need to check whether the user clicked on the
-correct menu item when you call `endTrial()`. This data will be recorded automatically
-by `ExperimentSession`.
-
-**Drawing your Menu**
-
-Your menu must **ONLY BE VISIBLE** when you are in the `SELECTING` state. You can check this in
-`onDraw()`. In addition, it needs to redraw whenever something important changes (like the selected
-item). Be sure to call `invalidate()` in the appropriate methods of the state machine to make this happen.
-
-For `onDraw()`, your will do some setup that will allow your
-subclasses to draw properly. First, you will need to check if you are
-in the proper state to draw (you must only draw when in the `SELECTING`
-state).
-
-Next, you really want to draw from the `(0,0)` location of the menu,
-rather than the `(0,0)` of the parent. But remember that your width and
-height are set using `MATCH_PARENT`. To fix this, we need to translate
-the coordinate system of the canvas so that `(0,0)` is at the
-`startPoint` for this interaction.
-
-Finally, since this is an abstract class, we need to call the *real*
-drawing method, which our children will implement. This is called
-`drawMenu()` and must be overridden by `PieMenuView`,
-`NormalMenuView`, and `CustomMenuView`.  Therefore, your `onDraw()` implementation in
-`MenuExperimentView.java` will be pretty short.
-
-**Implementing MainActivity**
-
-In `MainActivity` you will implement part of the method
-`showMenuForTrial(ExperimentTrial trial)`. Your main job is to
-register a callback with it that knows what to do when a trial is
-completed.
-
-`MainActivity` also needs to implement the code to respond to
-`onTrialCompleted()`, a method of the TrialListener interface. In
-particular, this code must always remove the current menu being
-shown. Then it must check if the session is over (remember the
-session is an iterator), and if not call `showMenuForTrial()` with the
-next trial. If the session is over, it must update text of
-`InstructionTextView` to say that the session is completed, and also display a
-`Toast` to the same effect. We have provided a method that you may use to announce
-this message (`AbstractMenuExperimentView#announce(String)`), or you may use the `Toast`
-class directly.
-
-**Note:** This means that until the next session is started, the system should not display
-any menus if the user clicks.
-
-**Related APIs**
-* [Toast](https://developer.android.com/reference/android/widget/Toast)
-
-# Part 3: Implement Pie and Normal Menus
-
-**Tasks**
-
-- `NormalMenuView`: Implement `essentialGeometry()` and `drawMenu()`
-- `PieMenuView`: Implement `essentialGeometry()` and `drawMenu()`
-
-Both `PieMenuView` and `NormalMenuView` extend `MenuExperimentView`. You
-will implement `essentialGeometry()` for each and determine what menu item the
-touch event maps to. You'll have to come up with the math logic to map
-from touch event to an item index.
-
-You will also implement `drawMenu()` which at a minimum draws the menus as shown in
-the screenshots. If you want to do something different, you may, as
-long as the size and position of each menu item does not change. For
-example, you can  override the paint properties defined in
-`MenuExperimentView`, position the text differently, or draw more
-decorations on the menus.
-
-Be sure to check the `AbstractMenuExperimentView` starter code for any additional
-values that you must use when creating your menus. Also make sure you are not "shadowing"
-variables (redefining variables already defined in super class).
-
-## NormalMenuView
-
-The Normal Menu will appear where the user touches the screen (as the top/left corner of the menu)
-and extend down and to the right.
-
-For the `NormalMenuView`, `essentialGeometry()` will return -1 if the
-pointer is outside the bounds of the menu in any direction or has
-moved less than `MIN_DIST` (inherited from
-`AbstractMenuExperimentView`) since interaction started. Otherwise
-it must return the "item number" (position in the list) corresponding to
-the menu item that the pointer is currently inside of.
-
-The width of each item in the normal menu is `CELL_WIDTH` and the height is
-`CELL_HEIGHT`.
-
-**Some additional hints for the normal menu**
-- The menu should display on the screen when the user first touches the screen.
-- The indication of the selected menu item should be drawn after entire menu has been drawn. 
-
-## PieMenuView
-
-The Pie Menu will appear centered where the user touches the screen.
-
-For the `PieMenuView`, `essentialGeometry()` will return -1 if the pointer
-has moved less than `MIN_DIST` since selection started, and
-otherwise it will return the  "item number" (position in the list) corresponding to
-the menu item currently being selected. In the case of the Pie menu, the item number is the
-menu item that a ray from the center of the menu to the pointer intersects, with the first
-item being at the top of the pie and increasing as you go clockwise around the circle.
-The pie menu has no maximum diameter, so anything
-outside of the radius `MIN_DIST` around the finger will return a selection.
-
-For PieMenuView, the given `RADIUS` corresponds to the outer radius. The inner radius
-is defined by `RADIUS - TEXT_SIZE * 2`.
-
-**Some additional hints for the pie menu**
-- The menu should display on the screen when the user first touches the screen.
-- The indication of the selected menu item should be drawn after entire menu has been drawn.
-- `drawArc()` will draw a pizza-pie shaped arc, so you can do things
-  like highlight a menu item with a single method call.
-- You will need a rotational offset to ensure the top menu item is at
-  the top of the pie (both when drawing and in essential geometry)
-  because angle is traditionally measured from cardinal east. You can
-  add this in radians before converting from angle to index.
-- Just as in ColorPicker, you should look at the `atan` or `atan2` function to help you calculate
-  your pie menu's `essentialGeometry()` function.
-  - Remember that `atan`/`atan2` return a value between 0..Math.PI or 0 .. -Math.PI. 0
-  being cardinal east and Math.PI or -Math.PI at cardinal west. Also remember that the `y`
-  direction is positive pointing down the canvas, not pointing up
-  like a traditional cartesian coordinate system. This may impact the
-  values returned from trigonometric functions.
-
-  ![:img clarification of atan2](menus-img/math_a20.gif) &nbsp; ![:img clarification of atan2](menus-img/atan2math.png)
-- Your pie menu text does not need to be centered -- as long as it
-  is contained within the outer ring of the pie menu, you are fine.
-
-
-**Related APIs**
-* [Canvas](https://developer.android.com/reference/android/graphics/Canvas): See documentation on `drawArc()` and `drawText()`.
-* [Path](https://developer.android.com/reference/android/graphics/Path): For adding text along a curve
-* [atan2](https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Math.html#atan2(double,double))
-
-
-# Part 4: Implement a Custom Menu
-
-Create a new menu! Working off of the provided `MenuExperimentView` interface, build your
-own third menu. This menu must be different from the Pie/Normal menus. You are encouraged to
-explore user interactions here, and you will receive credit as long as your code shows
-significant effort. Your menu does not have to be great here -- if you choose, you can
-aim to create the "worst menu ever" for this submission. Alternatively, you can aim to
-outcompete our provided menu views!
-
-Be sure to make use of the same abstractions (`essentialGeometry()` and a state machine)
-in this implementation.
-
-# Part 5: Conduct and Write Up User Study
-
-_(not due at the same time as the code portion)_
-
-**Tasks**
-- Conduct user study
-  - Run a trial on yourself
-  - Create a final consent form from [this sample](consent)
-  - Recruit 3 participants
-  - Consent the participants, including having them sign your consent form
-  - Send your APK to any participants who are testing your app remotely
-  - Have them complete a session with `ITEM_MAX` set to at least 4 and
-   `NUM_REPEATS` set to 3.
-  - Download the recorded data
-- Analyze recorded data
-- Write a report
-
-**Conduct User Study**
-
-Start by testing your own program as a participant so you know how long it takes to run a session
-(this information is needed for your consent form). This is also a good time to double check that
-your data is not lost when you download it.
-
-Make a copy of the [consent form](consent) form template and modify it in all of the places marked as
-such (in italics). The language used in your consent form is key, so ensure that it does not come
-off as forceful or coercive.
-
-
-**Recruit participants and have them sign your consent form**
-
-Recruit your 3 participants from family and friends who can safely use your
-app on your device or your emulator in person (co-present), or from the
-random group you have been assigned from class. Please see
-[this document](https://docs.google.com/document/d/11nsEWs3TubV5Zy0zOIGguqZJohkS34uizIrDv-bgnYs/edit)
-for your group members.
-
-Consenting your participants will be very similar whether they are co-present or remote. First, set up
-a time when can speak to your participant (in person, over the phone, or over a Zoom or other
-video conferencing call).
-
-- For a co-present tester: print out two copies of the consent form for each
-participant -- one for them and one for you. Hand them a copy of the consent form before describing the
-study.
-- For remote testers: send a copy of the consent form to the participant prior to your phone call
-or video meeting.
-
-Briefly explain what your user study is about, and ensure they understand
-their participation in the study is voluntary. Do not *coerce* anyone into participating in your
-study. Make sure they know they have a choice, and have read the consent form.
-
-Your participants must acknowledge their consent by "signing" via the Google form (linked
-at the bottom of the consent form template). This form should send you an anonymized copy of their
-consent in email, which you can save and turn in with the rest of your report and reflection.
-
-**Collect data**
-
-Once your participant has been consented, allow them to test the app.
-
-Our implementation uses the ExperimentSession object to create, manage, and record experiment data
-to a `.csv` file that is stored on the phone or emulator. If you are interested, check out the
-`recordResult` function `ExperimentSession.java` to understand how this is being stored.
-
-Testing can happen on either a phone or other native Android device or on an emulator. If on an
-emulator, the participant may use a mouse, trackpad or touch display to interact with the app.
-When collecting data, you should inform users that all interactions
-will begin with tapping on the center of the screen. This should help
-avoid cases where your menu is unusable due to the screen format.
-
-
-_Co-present Testing_
-
-- Use the hamburger menu to select `Clear Result CSV`
-before starting your study so any prior sample testing data does not contaminate your results.
-**Make sure that you do not clear the results between submissions for a co-present study!**
-This will erase your trial data.
-- Ensure the app is in Experiment mode and a new session has started.
-- You will likely want to point out what they are to select is written at the bottom of the screen.
-- If you are doing 3 co-present tests in a row, the app will move to the next session automatically and
-store all of the data sequentially in the `TestResults.csv` file saved to your device. However, this
-data will be erased if you switch back to test mode, so be sure to download any data before you do that.
-
-_Remote Testing_
-- Send your APK to the participant so they can load it onto their own device or into their own
-emulator (as we did with Doodle earlier this quarter). In your
-menu project in Android Studio, select the *Build -> Build Bundle(s)/APK(s) -> Build APK(s)* menu item.
-When the *Build APK(s)* message popup appears in the lower right hand corner, click the *locate* link
-to find the `app-debug.apk`.
-- Send the APK to your participant. Unfortunately you can't email your APK through UW's servers,
-instead we recommend you upload the APK to your Google Drive or One Drive and send your participant
-a link to download it for testing.
-- Have your participant use the hamburger menu to select `Clear Result CSV` before starting
-your study so any prior sample testing data does not contaminate your results, then run one
-experiment session.
-- Once the user study is complete, your participant will need to download their study data from their device
-and send it back to you for analysis.
-- Combine the three participants' data into one common .csv file.
-
-
-Once *all* participants are done and you have one `.csv` file with all of the data,
-it should have at least `ITEM_MAX * NUM_REPARTS * NUM_PARTICIPANTS` (324) data points.
-You will be turning in this file (through Canvas) as part of your final report.
-
-
-*Downloading user testing data*
-
-You can use the Android Studio
-[Device File Explorer](https://developer.android.com/studio/debug/device-file-explorer) to access the file.
-This allows you to directly access the files on your Android device (emulated or physical) through a
-GUI window. Detailed instructions on getting the data off your device can be found on
-[this page](../docs/android_files/).
-
-The data will likely be in `/storage/emulated/0/CSE340_Menus/TestResult.csv`
-or `/sdcard/CSE340_Menus/TestResult.csv`.
-
-Note that each user is given a participant ID when the session is running. These are randomly
-generated numbers from 0-9999. You may renumber these to identify your participants by the order
-in which they tested (1, 2, 3) when you retrieve the downloaded `.csv` file(s).
-
-**Write a Report**
-
-Complete the user study by writing up brief report. We have provided a
-[template](menu-report) for you to use here. Please reference this template as
-necessary, but the information in the report must be your own descriptions.
-
-Your report will require you to attach screen captures of your menu in both an unselected and
-selected state. You can capture a screenshot of the menu in action in one of two ways:
-- On a phone: Touch the screen to display a custom menu with one hand. With your other hand
- [capture a screenshot](https://support.google.com/android/answer/9075928?hl=en). How you do this
- may depend on the device. The resulting screenshot will be stored in the File Manger on your phone.
-- On the emulator: Touch the screen to display a custom menu with one hand. With your other hand
-press the control-S (for Windows) or command-s (for Mac). The resulting screenshot should be found
-on your desktop.
-
-# Part 6: Reflection
-
-Your reflection should be done as Microsoft Word, Google or other type of document.
-Copy the following questions (in italics below) into your refelction document and add
-your responses below each question. You can have more than one answer per page, but if
-you can, please try to avoid page breaks in the middle of
-a question. Insert page breaks between questions as needed.
-
-1. _Attach two screenshots of your custom menu, one where it is in a selected state and one where
-it is in an unselected state. These images may be the same as the ones you included in this report.
-Then re-read our Properties of People Design Tips for [Vision](../slides/wk02/people-vision.html#71)
-and [Motor](../slides/wk06/people-motor.html#65). Which of these design tips did you employ/not employ
-when creating your Custom menu? List at least one Visual design tip and one Motor design tip and be
-specific in describing what part(s) of your menu's operation utilized these tips._
-
-2. _Given the structure of our Pie/Normal menus, how would you create an accessible menu when
-working with the MenuExperimentView class? What could make ensuring the menu is accessible
-difficult? (Rephrasing that last question: "If you were trying to ensure that your
-menu is accessible, what aspects would be difficult?")_
-
-3. _As written, these menus can potentially appear all or partially off the phone screen.
-When would this case happen, how might that appear, and how could you account or prevent this
-from occurring? Would your solution work for all three types of menus?_
-
-# Submission Instructions
-
-You will change ONLY the following files. These will be submitted to GitGrade.
-
-Part 1-4:
-- MainActivity.java
-- MenuExperimentView.java
-- NormalMenuView.java
-- CustomMenuView.java
-- PieMenuView.java
-
-Part 5-6:
-
-Your reflection and report will be uploaded to Gradescope. This will include:
-
-- TestResult.csv
-- Sample consent form
-- Evidence of three "signed" consent forms (either three scanned forms with the "sun signature" or
-copies of the three auto reply emails you get from the google form consent acknowledgement.)
-- Report
-- Reflection
-
-Your participants must also fill out the on line (Google)
-[consent form](CSE 340 20sp Menus User Study Consent) acknowledging that they agree to
-be a participant and identifying you as a tester.
-
-You must also turn in your combined csv file so we can create one large data set.
-This .csv will be turned in through Canvas and *NOT* be put turned in with the rest of your report.
-
-## Grading Rubric
-
-This HW will be out of 68-70 points and will roughly (subject to small adjustments) be distributed as:
-
-Code portion (33-35 points)
-- State machine implementation works: (12 pts)
-- Normal menu draws correctly (3 pts)
-- Pie menu draws correctly (3 pts)
-- Normal & Pie menus correctly implement essential geometry (5 pts)
-- Custom menu works (2 pts)
-- Trials & callbacks handled correctly (4 pts)
-- onDraw translates correctly (1 pt)
-- Code quality (3 pts)
-
-Experiment Portion (35 points)
-- Reasonable CSV output: 1pt
-- Consent form: 2pt
-- Three participants consented via form: 1pt
-- Report:
-  - Introduction: 1pt
-  - Description of study process: 6 pts
-  - Demonstrate understanding of results: 5pts
-  - Makes appropriate/good use of charts: 4pts
-  - Draw appropriate conclusions about linear vs. pie menu vs custom menu: 5pts
-- Reflection (10pts)
diff --git a/assignments/sensing.md b/assignments/sensing.md
deleted file mode 100644
index 9673a2d86b42a00243dada6cf399df68bf36c9bd..0000000000000000000000000000000000000000
--- a/assignments/sensing.md
+++ /dev/null
@@ -1,300 +0,0 @@
----
-layout: assignment
-published: draft
-
-title: Sensing
-code: EX5
-
-assigned: <!-- Tuesday, May 28, 2019 -->
-due: <!-- 11:59 PM Friday, May 31, 2019 -->
-revised: <!-- 10:08 PM Thursday, May 30, 2019 -->
-
-objective: Access Android sensors as the preparation to build context aware application.
-
-android_goals:
-  - Learn Android Awareness APIs
-  - Load sensor data
-  - Understand how and when to use Snapshot or Fence
----
-
-- TOC
-{:toc}
-
-This is part 1 of a group assignment. You should get this working on
-your own, but then work as a group to make an app that uses sensed
-data. Every group will have one person with an android phone, or
-access to an android phone, and you should work together to make sure
-individual group members can all test their part 1 code using the
-group phone.
-
-Tasks:
-- Add snapshot support for the following sensors:
-  - Headphone
-  - Location
-  - User Activity
-- Use fence support to listen for changes to the following sensors:
-  - Location (detect whether in CSE)
-  - Activity (detect whether walking)
-- Create an app that responds to implicit data (i.e. reacts to a change in context)
-
-Context awareness capabilities enable mobile phones to sense their physical environment and adapt their behavior accordingly. You can practice how to load and react to data from different sensors in this exercise, as the preparation to build context aware app in the final assignment.
-
-According to Google, "[The Awareness API](https://developers.google.com/awareness/) unifies 7 location and context signals in a single API, enabling you to create powerful context-based features with minimal impact on system resources."
-
-It supports combining and working with 7 signals including time, location, places, beacons, headphones, activity and weather.
-
-There are two ways to get context from sensors: `Snapshot` and `Fence`
-- Snapshot will return the most recent (may not be realtime) information from sensor.
-- Fence will be triggered when the sensor data changes (based on the signal conditions you set). You may also combine multiple conditions to create a smarter fence.
-
-We already provide example code to get weather, using snapshot, and headphone state, using fence. Your job will be to add additional sensors
-
-# Preparing to run the app
-You will need to set some things up
-
-## 1) Get your API Key and put it in the app Manifest.xml
-
-Follow the ["Quick Guide"](https://developers.google.com/places/web-service/get-api-key)
-To use this guide, you will be asked at some point about whether you want to create a new app (the answer is yes, name it something like cse340-LaughingChipmunks, or whatever your repository name is, the names have to be unique).
-
-You'll be asked to set up a billing account. However, for the minor use in this class, it shouldn't cost you anything. If this is a problem at all (e.g. you don't have a credit card), please reach out privately on Ed.
-
-When the interface gives you your API key **copy it and don't lose it**. That is the only time you'll ever see it for security reasons, you'll have to create a new app if you lose it.
-
-When you have your API key, go to your android manifest and paste it in between the quotation marks labeled `YOUR_KEY_HERE`.
-
-```xml
-        <meta-data
-            android:name="com.google.android.awareness.API_KEY"
-            android:value="YOUR_KEY_HERE"/>
-        <meta-data
-            android:name="com.google.android.geo.API_KEY"
-            android:value="YOUR_KEY_HERE"/>
-```
-
-If you have a hard time with this, contact us on Piazza, and we will
-provide you with a key. However it should be used for this assignment
-only, not for future android programming, and not shared with anyone
-else.
-
-## 2) Prepare a virtual device that is based on Oreo (API v. 26)
-
-## 3) Run your app and update things
-
-1) Allow location permissions
-
-<!-- TODO: Why do these use px dimensions? They should use [:img alt, XX%] for better mobile support -->
-![Screenshot of enabling sensing](sensing/enable-sensing.png){:width="200px"}
-
-2) Click on 'User Activity Snapshot'. This will cause an error telling
-you that play needs to be enabled as shown here. If it goes away (it's
-a notification), just click the same button again.
-
-![Screenshot of enabling play request](sensing/enable-play.png){:width="200px"}
-
-3) When you click on the notification, it will take you to a sign in
-screen for play store. Sign in using your google account. Agree to the
-terms of service; you don't have to agree to back up to google drive
-though (just turn that off by moving the slider and then press agree)
-
-4) When it sends you back to your app, press on the square button at
-the bottom of the screen and switch back to google play services.
-
-![Screenshot of switching](sensing/switching.png){:width="200px"}
-
-Android will show a big 'Update' button or you can just wait and it will
-download and update, as shown here:
-
-![Screenshot of play updating](sensing/play-updating.png){:width="200px"}
-
-5) Switch back to your app again and press 'User Activity
-Snapshot'. Wait patiently. Rejoice when you see the following (or
-something similar)
-
-![Screenshot of activity results](sensing/activity.png){:width="200px"}
-
-## For advanced awareness things (optional)
-
-You'll need to enable one more API than the automated quick guide does for you. This is the *awareness api*. To enable it, search for it in the search bar as shown here:
-
-![Screenshot of awareness search](sensing/apisearch.png)
-
-Click on the search result, and select **Enable.** You'll then need to click on the **Create Credentials** button and create credentials. Again, you'll get an API string which you'll need to add to your manifest, in the other API KEY meta data (just below the geo one).
-
-
-## What the app looks liken
-
-Here are sample screenshots for sensor results:
-
-<span style="color: red;">Note: the weather screenshots display `&#x2103` where they should display °</span>
-
-![Screenshot of sensor list](sensing/1.png){:width="200px"}
-![Screenshot of headphone snapshot](sensing/2.png){:width="200px"}
-![Screenshot of location snapshot](sensing/3.png){:width="200px"}
-![Screenshot of weather snapshot](sensing/5.png){:width="200px"}
-![Screenshot of detected activity snapshot](sensing/6.png){:width="200px"}
-![Screenshot of headphone fence](sensing/7.png){:width="200px"}
-![Screenshot of location fence](sensing/8.png){:width="200px"}
-![Screenshot of detected activity fence](sensing/9.png){:width="200px"}
-
-Here is a [link to a video of it in
-use](https://youtu.be/oF0i2lL4EUE).
-
-<span style="color: red;">Note: the video does not exhibit the updated behavior of fences prepending text to the beginning of the existing text</span>
-
-## Simulating input if using an emulator
-Although we ask that the group member with the phone donate phone time
-for testing, you should start by testing your code with the emulator,
-and should be able to  reproduce this video.
-
-To test your app, first use the
-[simulation
-capabilities](https://developer.android.com/studio/run/emulator#extended)
-built into the emulator. You bring it up by clicking on the "..."
-shown in red in the bottom right of the below image. Note that this is
-buggy -- it doesn't always work, sometimes it is slow, and it doesn't
-always update when you want. According to the [Awareness Fence Troubleshooting
-page](https://developer.android.com/training/location/geofencing#Troubleshooting),
-
-*Alerts can be late. The geofence service doesn't continuously
-query for location, so expect some latency when receiving
-alerts. Usually the latency is less than 2 minutes, even less when the
-device has been moving. If Background Location Limits are in effect,
-the latency is about 2-3 minutes on average. If the device has been
-stationary for a significant period of time, the latency may increase
-(up to 6 minutes).*{:.quote}
-
-Location changes are generally only
-registered if you switch to maps in the emulator, and then back to
-your app. Otherwise you will get a timeout error for location, and
-weather (which depends upon location).
-
-Despite all this, the emulator is still useful because it can help you make sure your code
-doesn't crash.
-
-### Location Simulation
-![Screenshot of emulator with simulator running](sensing/simulator.png){:width="400px"}
-
-### Headphone Simulation
-![Screenshot of emulator with simulator running](sensing/headphone.png){:width="400px"}
-
-### Weather Simulation
-![Screenshot of emulator with simulator running](sensing/weather.png){:width="400px"}
-
-Using this you can in principal simulate location, either current location or a
-whole route. To simulate a route, you can upload gps traces to
-simulate motion over time. [Here](sensing/Test.gpx) is one that moves in and out of CSE. A good place to download sample traces is
-[OpenStreetMap's traces
-page](https://www.openstreetmap.org/traces/). If you want to double
-check the results of location, here are [instructions on how to find a
-place in google maps using
-lat/long](https://support.google.com/maps/answer/18539?co=GENIE.Platform%3DDesktop&hl=en)
-You can also create your own route by modifing the lat/long in a trace
-(or making your own from scratch using the [GPS exchange
-format](https://en.wikipedia.org/wiki/GPS_Exchange_Format) **HOWEVER**
-we were not able to get this working with the Sensing app and suspect
-a bug in the emulator.
-
-You can also simulate weather (find it in the 'Virtual sensors' part
-of the simulator). **HOWEVER** again this doesn't seem to be reflected
-in the sensing app, potentially due to a bug.
-
-You can simulate headphones in the 'Microphone' tab of the
-simulator. **GOOD NEWS** this should work both for testing your
-headphones snapshot and headphones fence.
-
-We have not found a way to simulate activity.
-
-# Files provided
-The files provided are
-
-```
-Snapshot:
-ActivitySnapshotListener.java
-
-Fence:
-ActivityFenceListener.java
-FenceBroadcastReceiver.java
-```
-
-The files you will implement are:
-
-```
-Snapshot:
-HeadphoneSnapshotListener.java
-LocationSnapshotListener.java
-WeatherSnapshotListener.java
-
-Fence:
-HeadphoneFenceListener.java
-LocationFenceListener.java
-
-MainActivity.java
-```
-
-### Snapshot implementation
-All SnapshotListeners should implement
-ContextActivity.SnapshotListener. They should
-respond to the input received via `onSnapshot(Response response)`,
-by drawing text on the screen in the update
-`TextView`.
-
-The `Response` object will contain the specific information to
-display.
-
-### Fence implementattion
-For fences to work, you will need to implement
-`setupFenceListeners()` in `MainActivity.java`. In addition, you will
-need to complete the implementation of the two `FenceListener`
-classes, `HeadphoneFenceListener.java` and `LocationFenceListener.java`
-
-All fences should inherit from `FenceBroadcastReceiver.java` and
-implement
-`FenceBroadcastReceiver.FenceActivityListener`. They will need to
-implement three methods that respond to fence updates:
-`during(FenceState state)`,
-`starting(FenceState state)` and `stopping(FenceState state)` by updating text on the screen in
-the update `TextView`.
-
-The information to display will depend on the fence state. You will
-have to interpret this based on your knowledge of what you did to set
-up the fence. For instance, the locations given for the location fence
-will result in `state = FenceState.TRUE` in when `duringFence()` is
-called while the user is inside of the CSE building.
-
-There are detailed comments in the code files you will implement that will direct you through the assignment.
-
-# Turn-in
-
-## Submission Instructions
-
-You will turn in the following files [here](https://gitgrade.cs.washington.edu/student/assignment/64/turnin):
-
-```
-- HeadphoneSnapshotListener.java
-- LocationSnapshotListener.java
-- WeatherSnapshotListener.java
-- HeadphoneFenceListener.java
-- LocationFenceListener.java
-- MainActivity.java
-```
-
-You may also change:
-```
-- strings.xml
-- activity_main.xml
-- Any class you create that did not previously exist
-```
-
-## Grading (5pts)
-
-- Get API Keys: 1pt
-- Snapshots all work:
- - Location: .5pt
- - Headphone: .5pt
- - Weather: .5pt
-- Fences all work:
- - Headphone .5pt
- - Location .5pt
-- MainActivity sets things up correctly: .5pt
-- Code Organization and Style: 1 pt
diff --git a/assignments/sensing/1.png b/assignments/sensing/1.png
deleted file mode 100644
index aa18e9e8127d10337b85787f4c3183c6e260749f..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/1.png and /dev/null differ
diff --git a/assignments/sensing/2.png b/assignments/sensing/2.png
deleted file mode 100644
index a856b5246a0993c1989a78ab3674615d17c9f52d..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/2.png and /dev/null differ
diff --git a/assignments/sensing/3.png b/assignments/sensing/3.png
deleted file mode 100644
index f60092155f8f517cff64f3ff0cfb0df7ff6f0504..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/3.png and /dev/null differ
diff --git a/assignments/sensing/5.png b/assignments/sensing/5.png
deleted file mode 100644
index 90cb3d48a591e2f3ea7ba579bfff1e613135efa6..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/5.png and /dev/null differ
diff --git a/assignments/sensing/6.png b/assignments/sensing/6.png
deleted file mode 100644
index 9ab549f2a54e145edc1c79e91b68afa59e543eb5..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/6.png and /dev/null differ
diff --git a/assignments/sensing/7.png b/assignments/sensing/7.png
deleted file mode 100644
index 010d628641b10befffdd380ad95f066051d32800..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/7.png and /dev/null differ
diff --git a/assignments/sensing/8.png b/assignments/sensing/8.png
deleted file mode 100644
index 86efe8c08321b408604e60b492a6f403159a5d3a..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/8.png and /dev/null differ
diff --git a/assignments/sensing/9.png b/assignments/sensing/9.png
deleted file mode 100644
index 3aaa5c17f5ab1b139f6828dafbd284e4c1c67342..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/9.png and /dev/null differ
diff --git a/assignments/sensing/Test.gpx b/assignments/sensing/Test.gpx
deleted file mode 100644
index f7b004877a0c5b8da71e0e55d7c8bb68dfeb2fc9..0000000000000000000000000000000000000000
--- a/assignments/sensing/Test.gpx
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<gpx version="1.1" creator="gpxgenerator.com">
-<wpt lat="47.65379706591215" lon="-122.30192147338511">
-    <ele>15.01</ele>
-    <time>2018-11-14T04:23:56Z</time>
-</wpt>
-<wpt lat="47.653464621123724" lon="-122.30413161361338">
-    <ele>32.43</ele>
-    <time>2018-11-14T04:24:24Z</time>
-</wpt>
-<wpt lat="47.653464621123724" lon="-122.30477534377695">
-    <ele>36.13</ele>
-    <time>2018-11-14T04:24:32Z</time>
-</wpt>
-<wpt lat="47.65352243776071" lon="-122.30546198928477">
-    <ele>36.91</ele>
-    <time>2018-11-14T04:24:40Z</time>
-</wpt>
-<wpt lat="47.6531610827294" lon="-122.30582676971079">
-    <ele>32.73</ele>
-    <time>2018-11-14T04:24:48Z</time>
-</wpt>
-<wpt lat="47.653377896048234" lon="-122.30627738082529">
-    <ele>36.88</ele>
-    <time>2018-11-14T04:24:54Z</time>
-</wpt>
-<wpt lat="47.65395606049759" lon="-122.30653487289072">
-    <ele>38.36</ele>
-    <time>2018-11-14T04:25:05Z</time>
-</wpt>
-<wpt lat="47.65469321088665" lon="-122.30735026443125">
-    <ele>39.41</ele>
-    <time>2018-11-14T04:25:22Z</time>
-</wpt>
-<wpt lat="47.654620941700756" lon="-122.30784379088999">
-    <ele>40.08</ele>
-    <time>2018-11-14T04:25:28Z</time>
-</wpt>
-<wpt lat="47.65453421854566" lon="-122.30876647079111">
-    <ele>42.10</ele>
-    <time>2018-11-14T04:25:39Z</time>
-</wpt>
-<wpt lat="47.65483774895839" lon="-122.30936728561045">
-    <ele>42.50</ele>
-    <time>2018-11-14T04:25:48Z</time>
-</wpt>
-<wpt lat="47.65584950425836" lon="-122.30971060836436">
-    <ele>47.10</ele>
-    <time>2018-11-14T04:26:07Z</time>
-</wpt>
-<wpt lat="47.65648486332888" lon="-122.31038331985474">
-    <ele>47.17</ele>
-    <time>2018-11-14T04:26:21Z</time>
-</wpt>
-</gpx>
\ No newline at end of file
diff --git a/assignments/sensing/activity.png b/assignments/sensing/activity.png
deleted file mode 100644
index ceb064ea369c2852230d480971aea80905b32561..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/activity.png and /dev/null differ
diff --git a/assignments/sensing/apisearch.png b/assignments/sensing/apisearch.png
deleted file mode 100644
index 5189183ebcd008ceefb3981814c528b76490fc70..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/apisearch.png and /dev/null differ
diff --git a/assignments/sensing/emulator.png b/assignments/sensing/emulator.png
deleted file mode 100644
index 4c13f382bc29aedb06572d3c6f4071787719a33a..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/emulator.png and /dev/null differ
diff --git a/assignments/sensing/enable-play.png b/assignments/sensing/enable-play.png
deleted file mode 100644
index a1fba336913b18a4e208b828c57c85d5f08e2966..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/enable-play.png and /dev/null differ
diff --git a/assignments/sensing/enable-sensing.png b/assignments/sensing/enable-sensing.png
deleted file mode 100644
index ab41fa31392e7b1ca74e9c2c1911d513f245ff68..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/enable-sensing.png and /dev/null differ
diff --git a/assignments/sensing/headphone.png b/assignments/sensing/headphone.png
deleted file mode 100644
index 0dcb029d150a4045a1ade3a280260a568521a75f..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/headphone.png and /dev/null differ
diff --git a/assignments/sensing/play-updating.png b/assignments/sensing/play-updating.png
deleted file mode 100644
index 82aea37305ecdbcddb0c26416ec6a5e742d5a166..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/play-updating.png and /dev/null differ
diff --git a/assignments/sensing/play.png b/assignments/sensing/play.png
deleted file mode 100644
index 0170d1cd14c5988a3b6bda438badd5c7a27d3314..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/play.png and /dev/null differ
diff --git a/assignments/sensing/simulator.png b/assignments/sensing/simulator.png
deleted file mode 100644
index 54a4caf41a187e65ea66aa2d09868f8f12eceeb4..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/simulator.png and /dev/null differ
diff --git a/assignments/sensing/switching.png b/assignments/sensing/switching.png
deleted file mode 100644
index 33ba754479e653b824d319dd4aa1f7888191aa69..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/switching.png and /dev/null differ
diff --git a/assignments/sensing/weather.png b/assignments/sensing/weather.png
deleted file mode 100644
index 636bfb397f68d178ff671cc5e24fc26e816cf5f2..0000000000000000000000000000000000000000
Binary files a/assignments/sensing/weather.png and /dev/null differ
diff --git a/assignments/undo-img/1stroke.png b/assignments/undo-img/1stroke.png
deleted file mode 100644
index 74f5c3b15d18628f20ebe94dbfd5653e06c563b6..0000000000000000000000000000000000000000
Binary files a/assignments/undo-img/1stroke.png and /dev/null differ
diff --git a/assignments/undo-img/blank.png b/assignments/undo-img/blank.png
deleted file mode 100644
index 3b6866045aa154932680bd93a76a35dc684da912..0000000000000000000000000000000000000000
Binary files a/assignments/undo-img/blank.png and /dev/null differ
diff --git a/assignments/undo-img/start-recording.png b/assignments/undo-img/start-recording.png
deleted file mode 100644
index 74071876de4b175e0924d17b137b47c4dcfe8a46..0000000000000000000000000000000000000000
Binary files a/assignments/undo-img/start-recording.png and /dev/null differ
diff --git a/assignments/undo-img/tab-of-options.png b/assignments/undo-img/tab-of-options.png
deleted file mode 100644
index 7ae27b1907727b38c63253e1fed5c6c7f7b37956..0000000000000000000000000000000000000000
Binary files a/assignments/undo-img/tab-of-options.png and /dev/null differ
diff --git a/assignments/undo-report.md b/assignments/undo-report.md
deleted file mode 100644
index 670d72aade8b9cac005c25b86b63b09d47507041..0000000000000000000000000000000000000000
--- a/assignments/undo-report.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-layout: default
----
-# Report on Undo Assignment
-
-*Comments about what should be in your report can be found in italics.
-**Please remove the comments and replace them with your own words**.*
-
-## Introduction
-*Write two sentences describing the Undo drawing app and its core features
-(drawing strokes with different thickness and color, undo and redo).*
-
-*Include a picture of your improvement*
-
-*Write a paragraph describing the additional features that you added to the app. Fully
-explain the improvement, justify why the improvement is based on the principles presented
-in class, and describe how accessibility was addressed (maybe include quoted code that addresses the
-accessibility issue).*
-
-## Report on Heuristic Evaluation of application
-
-*Describe the purpose of the experiment. What do you expect to learn from conducting a Heuristic Evaluation?*
-
-### Tasks
-*Describe the tasks that are being tested in your heuristic evaluation.
-This should summarize all of the steps that are being done for your video*.
-
-### Data
-*How many people provided feedback to you?*
-
-
-*Group like issues; Write up a summary as described in lecture*
-
-*Provide a table of issues and severity. You can group like issues, even though they may be labeled under different issues if it truly is the same thing.*
-
-| Priority | Issue | Good/Bad | Step | Heuristic(s) | Severity: F | B | P | Overall |
-|------|-------|----------|------|---------------|--------------|--------------|--------------|--------------------|
-| |       |          |      |               |              |              |              |                    |
-| |       |          |      |               |              |              |              |                    |
-| |       |          |      |               |              |              |              |                    |
-
-## Overview of what you learned
-
-*Highlight the biggest problem or problems with your interface*
diff --git a/assignments/undo.md b/assignments/undo.md
deleted file mode 100644
index 9cedfe4d340c7cf85a082802591dc278a5606787..0000000000000000000000000000000000000000
--- a/assignments/undo.md
+++ /dev/null
@@ -1,665 +0,0 @@
----
-layout: assignment
-published: true
-
-title: Undo
-code: as6
-
-assigned: May 22nd
-due:
-- Programming <br>
-  - <strong>Due</strong> June <del>1</del> 3, 2020, 10:00pm<br>
-  - <strong>Lock</strong> June 3, 2020, 10:00pm
-- Heuristic Evaluation <br>
-  - <strong>Due</strong> June 5, 2020, 10:00pm (no leeway)
-- Reflection <br>
-  - <strong>Due</strong> June 8, 2020, 10:00pm
-
-revised: 9:00pm, Wednesday, May 20th, 2020
-
-objective: Understand Undo Abstractions, practice Heuristic Evaluation
-
-android_goals:
-  - Be able to understand and modify an existing user interface
-  - Learn about floating action buttons
-  - Implement core data structure for Undo
-hci_goals:
-  - Modify and existing app in a consistent fashion
-  - Make your modifications accessible
-  - Make your modifications usable
-  - Use heuristic evaluation to assess an app
----
-
-* TOC
-{:toc}
-
-# GitGrade links
-
-[Accept the Assignment](https://gitgrade.cs.washington.edu/student/assignment/128) / [Turn-in the Assignment](https://gitgrade.cs.washington.edu/student/assignment/128/turnin) / [Review your Submissions](https://gitgrade.cs.washington.edu/student/summary/8723)
-
-# Overview of assignment
-
-- Handle undo/redo operations (required)
-- Add a new thickness (0) to your app (required)
-- Replace the color menu with a ColorPickerView (required)
-- Make sure the button you add is accessible (required)
-- Improve your app by adding a feature (not thickness, required)
-- Make sure your change is accessible (required)
-- Try to identify at least one usability problem and address it
-  (optional)
-- Provide Heuristic Evaluation feedback to others (required)
-- Reflect on the Heuristic Evaluation feedback you recieved from others in your report (required)
-- Think about how course concepts apply to Undo in your reflection (required)
-
-
-Demo of our solution:
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/ClIx2wacu8M" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-
-# Explanation of Codebase
-
-This is one of the more complex programs we are giving you in terms of
-code. Moreover the starter code is already has a couple of fully functional features that
-you will be modifying as part of this assignment.
-
-The initial interactor hierarchy at instantiation is shown below
-(shown at the side is a legend for the visibility status of different
-interactors). Hidden means on screen and drawn but hidden behind
-something else.
-
-The Floating Action Button (FAB) subtrees are the
-menus at the top of the screen (for undo and redo) and bottom (for
-color and thickness), made up of one or more floating
-action buttons. The `DrawingView` is the place where drawing takes
-place. Each new stroke is saved as a separate, new `StrokeView` added
-to the `DrawingView`.
-
-The FABs in this assignment refer to [Floating Action
-Buttons](https://developer.android.com/reference/com/google/android/material/floatingactionbutton/FloatingActionButton.html).
-
-<div class="mermaid">
-graph TD
-M[ReversibleDrawingActivity] --> D[DrawingView]
-M --> FUndo[FAB:Undo]
-M --> FRedo[FAB:Redo]
-M --> FColor[FAB:Color]
-M --> FThick[FAB:Thickness]
-FColor --> Red[Red]
-FColor --> Green[Green]
-FColor --> Blue[Blue]
-FThick --> Thin[Thin]
-FThick --> Med[Med]
-FThick --> Thick[Thick]
-
-Vis[Visible] --> In[Invisible]
-In --> Hid[Hidden]
-
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-
-class M,D,FColor,FThick,Vis start
-class Red,Green,Blue,Thin,Med,Thick,Hid normal
-
-</div>
-
-When the user draws on screen (by clicking and dragging inside the
-`DrawingView`, this adds a new `StrokeView` to the interface. Notice
-that the `Undo` button is now visible instead of invisible because there
-is an action to undo.
-
-<div class="mermaid">
-graph TD
-M[ReversibleDrawingActivity] --> D[DrawingView]
-D --> Stroke1[StrokeView]
-M --> FUndo[FAB:Undo]
-M --> FRedo[FAB:Redo]
-M --> FColor[FAB:Color]
-M --> FThick[FAB:Thickness]
-FColor --> Red[Red]
-FColor --> Green[Green]
-FColor --> Blue[Blue]
-FThick --> Thin[Thin]
-FThick --> Med[Med]
-FThick --> Thick[Thick]
-Vis[Visible] --> In[Invisible]
-In --> Hid[Hidden]
-
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-
-class M,D,Stroke1,FUndo,FColor,FThick,Vis start
-class Red,Green,Blue,Thin,Med,Thick,Hid normal
-
-</div>
-
-The sequence in the interface:
-
-<img src="undo-img/blank.png" alt="Empty drawing program window" height="400">
-<img src="undo-img/1stroke.png" alt="Drawing program window with one red stroke and undo button visible" height="400">
-
-You can play around with the interface to change color and
-thickness. Each new stroke you add adds another `StrokeView` to the interface.
-
-# Codebase Structure
-
-This is a complete codebase for a drawing program. It is designed to
-be as modular as possible and includes support for _Command Objects_ which
-encapsulate changes to the application model.
-
-## Actions
-
-Actions are Command Objects, which encapsulate changes to the
-application model. An `AbstractAction` has a single method, `doAction(view)` which,
-when called, will apply the action to the view (our provided implementation is incomplete)
-
-`AbstractReversibleAction` extends `AbstractAction` to add `undoAction(view)` which,
-when called, reverses the action.
-
-
-<div class="mermaid">
-classDiagram
-
-AbstractAction <|.. AbstractReversibleAction
-AbstractReversibleAction <|.. ChangeColorAction
-AbstractReversibleAction <|.. ChangeThicknessAction
-AbstractReversibleAction <|.. AbstractReversibleViewAction
-AbstractReversibleViewAction <|.. StrokeAction
-
-class AbstractAction {
-  doAction()
-}
-
-class AbstractReversibleAction {
-  +boolean done
-  +undoAction
-}
-
-class AbstractReversibleViewAction  {
-  +invalidate
-}
-
-
-</div>
-
-As with events, `AbstractActions` are part of an inheritance
-hierarchy. `AbstractReversibleAction` has three subclasses --
-`ChangeThicknessAction`, `ChangeColorAction` and `StrokeAction`.
-All of them modify properties of the `DrawingView`
-class. `ChangeThicknessAction` modifies the stroke width, `ChangeColorAction`
-will modify current color of the stroke, and the , and `StrokeAction.`represents
-the creation of a child view object that encapsulates a painted stroke (a `StrokeView`
-that is added to the `DrawingView`).
-
-## Application Code (`/app`)
-
-We've mentioned a `DrawingView` (which is the main canvas for the
-drawing application) and `StrokeView` (which encapsulates a specific
-stroke for the drawing application).
-
-<div class="mermaid">
-classDiagram
-
-AbstractDrawingActivity <|.. AbstractReversibleDrawingActivity
-AbstractReversibleDrawingActivity <|.. ReversibleDrawingActivity
-class AbstractDrawingActivity {
-  DrawingView: "Canvas the user draws on"
-  addMenu()
-  addCollapsableMenu()
-  doAction()
-}
-
-class AbstractReversibleDrawingActivity {
-  +AbstractStackHistory
-  +doAction()
-  +undo()
-  +redo()
-}
-
-class ReversibleDrawingActivity {
-  +onAction()
-  +onColorSelected()
-  +onThicknessSelected()
-}
-
-class StrokeView {
-   Path
-   onDraw()
-}
-</div>
-
-- `AbstractDrawingActivity` is an abstract class for an app that supports
-  drawing without support for Undo. If you changed the manifest to use
-  it (you would need to make it not abstract first), you would see
-  blank canvas that you can draw on with no thickness or color options.
-  *NOTE: if you do this experiment, remember to make it abstract again when you're done!*
-- `AbstractReversibleDrawingActivity` extends `AbstractDrawingActivity` and adds
-  support for undo to it, including both the undo/redo buttons and the
-  history. You can try changing the manifest to use this as well (not
-  abstract). *NOTE: if you do this experiment, remember to make it abstract again when you're done!*
-- `ReversibleDrawingActivity` inherits from
-  `AbstractReversibleDrawingActivity`. It adds support for thickness and color
-  to the undo/redo support in `AbstractReversibleDrawingActivity`. It also
-  adds menus to show them. You can make a drawing application without
-  support for history by changing `ReversibleDrawingActivity` to inherit from
-  `AbstractDrawingActivity` instead.
-- `DrawingView` is the canvas on which drawing takes place. Drawings
-  are made up of `StrokeView` classes which are added to the
-  `DrawingView`. This class also implements a PPS (shown below) which
-  responds to `onTouchEvent()` by creating `StrokeViews`.
-- `StrokeView` is a single stroke. A stroke has a `path` and `paint`
-  object which define it.
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((Start))
-A -- "Press:onDrawStart()" --> I(Drawing)
-I -- "Release:onDrawEnd()" --> E[End]
-I -- "Cancel:onDrawCancel()" --> E[End]
-I -- "Move:onDrawMove()" --> I
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class S invisible
-class A start
-class E finish
-class I normal
-
-</div>
-
-# Parts 1-5: Programming requirements
-
-There are five parts for the programming portion of this assignment:
-- Part 1: Implement `ChangeThicknessAction`
-- Part 2: Implement history
-- Part 3: Add a thickness 0 FAB to the thickness menu
-- Part 4: Integrate `ColorPickerView`
-- Part 5: Add a new feature to your app. Make sure it is accessible
-
-You can also (optionally) work on improving the usability
-
-## Part 1: Implement `ChangeThicknessAction`
-
-In order to familiarize yourself with Actions and reversible logic, implement
-`ChangeThicknessAction`. This will be very similar to `ChangeColorAction`, you should read and
- understand that code before implementing your `ChangeThicknessAction`.
-
-## Part 2: History
-
-`Actions` are the objects that are used in the history. An
-`AbstractHistory` simply allows an `AbstractReversibleAction` to be added and supports `undo()`
-and `redo()`. We subclass this with a stack-based history class called `StackHistory` to support
-`undo()` and `redo()`. You will implement the methods to support these features in this `StackHistory` class.
-
-A `StackHistory` has a `capacity` (a max number of actions that it can
-store), a `undoStack` (the history) and a `redoStack` (actions that
-have been undone and can be re-applied). It also supports specific capabilities you must implement (see comments in the code
-for specifically what to do):
-
-- `addAction()` adds an action to the history stack
-- `undo()` undo the top action in the history stack
-- `redo()` redo the top action in the redo stack.
-- `clear()` reset everything
-
-<div class="mermaid">
-classDiagram
-
-AbstractStackHistory <|.. StackHistory
-class AbstractStackHistory {
-  addAction(AbstractReversibleAction action)
-  undo()
-  redo()
-  canUndo()
-  canRedo()
-}
-
-class StackHistory {
-   +capacity: "Max stack size"
-}
-
-
-</div>
-
-__Related APIs__
-
-[Deque](https://developer.android.com/reference/java/util/Deque)
-
-### Undo/Redo behavior
-
-Here is a scenario where the user draws a stroke in the default
-color/thickness (1), changes the color (2), changes the thickness (3), and draws
-another stroke (4) in the original thickness and color, with various
-undos and redos mixed in.
-
-| Action               | Undo Stack | Redo Stack | Interface state |
-| -------------------- | ---------- | ---------- | --------------- |
-| drawstroke (1)       | 1          |            | 1               |
-| change color (2)     | 1,2        |            | 1,2             |
-| undo                 | 1          | 2          | 1               |
-| redo                 | 1, 2       |            | 1, 2            |
-| change thickness (3) | 1, 2, 3    |            | 1, 2, 3         |
-| undo                 | 1, 2       | 3          | 1, 2            |
-| undo                 | 1          | 3, 2       | 1               |
-| drawstroke (4)       | 1, 4       | CLEARED    | 1, 4            |
-| undo                 | 1          | 4          | 1               |
-
-## Requirement 3: Adding a thickness 0 FAB to the thickness menu
-
-There are two main things you will need to do to add one.
-
-First, you find the right place in `thickness_menu.xml` to
-modify. For example, this is the XML in that file for the thickest FAB
-Action Button:
-
-```XML
-<android.support.design.widget.FloatingActionButton
-        android:id="@+id/fab_thickness_30"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|center"
-        android:layout_marginBottom="@dimen/fab_label_margin"
-        android:alpha="0"
-        android:clickable="false"
-        android:contentDescription="@string/thickness_desc"
-        app:fabSize="mini"
-        app:srcCompat="@drawable/ic_thickness_30" />
-```
-
-You must use the `@string` notation for your `android:contentDescription`, meaning you'll
-need to add a string definition to `values/strings.xml`.
-
-Next, you will need to update `onThicknessSelected` to respond when
-your FAB is pressed. It must change the stroke width to 0.
-
-Finally, you will need to make sure that `ReversibleDrawingActivity` is updated to account
-for your new menu item, since all mentions of thickness are currently hard coded to assume there is no 0 thickness.
-
-## Part 4: Integrating color picker
-In addition to adding a thickness, we want to be able to draw strokes of _any_ color instead of
-being limited to 3. You may recall that we have already made a custom interactor that allows
-users to choose any color on the color spectrum in a previous assignment. It is time to wire up a
-`ColorPickerView` into this application! To do this, you'll need to:
-
-1. Copy over the `ColorPickerView.java` file from your color picker assignment. Put this file
-in the same directory as your `ReversibleDrawingActivity.java`
-file. Also be sure to change the package at the top from `cse340.colorpicker`
-to `cse340.undo.app` in your `ColorPickerView.java` file.
-
-2. Add your color picker to your layout. One way to do this is to add xml for your
-`ColorPickerView` to  `drawing_activity.xml`. Be sure it is neither visible
-nor focusable until the user clicks on the color FAB. Be sure to use the correct package name here too.
-
-3. Change the behavior of the color FAB so that, when clicked, it opens up the color picking
-interface instead of opening the collapsible color menu. For reference on how to do this,
-take a look at `ReversibleDrawingActivity.java#onCreate` (**hint:** make sure to take a look at
-what interfaces `ReversibleDrawingActivity.java` implements).
-
-4. Modify `onDraw()` to leave the center circle blank.
-
-When users have the color picker interactor open, they _must not_ be able to access any other
-FABs (undo, redo,  thickness change) so be sure to disable them when you show the color picker
-and visually indicate to the user that they are disabled. This behavior should be very similar
-to the what happens when you try to change the thickness using the collapsible menu. If a color
-change is undone or redone, the color picker must reflect the correct color. Once you set up
-all the listeners to respond correctly, your color picker interactor must allow users to pick
-any stroke color they want!
-
-Finally, you will need to modify `ColorPickerView` so that it only accepts input inside the thin color
-ring. We have provided an AbstractColorPickerView class for you with an
-updated EssentialGeometry enum whose values are now `WHEEL` and `OFFWHEEL` to indicate this change,
-so you will have to update `ColorPickerView#essentialGeometry(MotionEvent)` method to reflect
-this change.
-
-The behavior of the ColorPickerView is must also be modified slightly.
-
-- If the user brings up the interactor, then immediately presses inside the center of the ring
-(which was colored in the ColorPicker app but is blank now), or outside it, you must not leave the start state.
-- If the users brings up the interactor and presses (then moves) inside of the ring, the
-state will leave the the start state and will move to the inside state. The thumb will
-track in the same way it did for the ColorPicker as the user moves around the ring.
-- If the user releases ON the ring, the new color will be chosen and the ColorPicker will become
-invisible.
-- If the user releases when not on the ring you should exit the state machine
-AND not consume the input. To the user this will appear as though the color "snaps back" to the
-previous state (with an opaque thumb) but the color picker stays visible on the screen.
-
-The following PPS diagram describes this new behavior.
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((Start))
-A -- "Press:WHEEL-A" --> I((Inside))
-I -- "Release:WHEEL-B" --> E[End]
-I -- "Release:OFFWHEEL-E" --> E[End]
-I -- "Drag:WHEEL-C" --> I
-I -- "Drag:OFFWHEEL-D" --> I
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class S invisible
-class A start
-class E finish
-class I normal
-
-</div>
-
-where
-- A is updateModel();invalidate()
-- B is invokeColorChangeListeners();invalidate()
-- C is updateModel();invalidate()
-- D is doNothing() // although not really a method
-- E is resetColor();invalidate()
-
-To implement the new `ColorPickerView#resetColor()` method you will need to store the current color
-of the wheel before you change it using `updateModel()`. You can use this stored color to reset
-the wheel if the user releases when not in the ring.
-
-NOTE: You **do not need to use bundler** to change the starting color or to store your model for this assignment.
-
-_Related APIs_:
-[View#using-views](https://developer.android.com/reference/android/view/View#using-views)
-
-## Part 5: Improve the application
-
-Create an interesting way the user can interact with the application that **can be undone and redone**. This means that whatever interaction you
-add must have a custom undo and redo function (it might help to take a look at `AbstractReversibleAction#doAction` and `AbstractReversibleAction#undoAction(DrawingView)`).
-
-Whatever you choose to implement, make sure to describe your addition in your report.
-In addition, make sure that the action you add is accessible.
-
-Demo of a new feature: Clear Screen. Note that this solution does not use the ColorPicker, nor
-did it implement undo on this features (but you must do both).
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/NhUE7GgH-vc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-
-You will describe this addition and its accessibility in your report (see below).
-
-## Optional addition: Improving usability
-
-Try to identify at least one usability problem and address it
-  (optional). As with adding a feature, there are several options
-  here. Here are some examples of things _I_ think are usability issues. You
-  may not agree, if you choose to do this, you should focus on
-  something _you_ think is a usability issue.
-
-Whatever problems you address, please briefly describe the problems and solutions in your report.
-
-- As a color is selected and after the color is selected, the color FAB
-  should update its background to that color.
-- When a thickness is picked, the thickness FAB should update its icon
-  to indicate the thickness selected.
-- If the user begins drawing with the color or thickness FAB open (sub-icons present) the FAB immediately collapses
-- Some might find the menu items small and hard to select
-- No saving of state between invocations of the application. Could use
-  bundle to do this.
-
-
-# Part 6: Report
-
-In this portion you will be providing Heuristic Evaluation feedback and also reflecting on feedback that others have given you.
-
-## 6.1 Video
-To facilitate the online-only nature of this quarter, you will need to make a video of your final
-solution. To create a video, click on the ... at the bottom of the panel to the right of your
-emulator, then select "screen record" and "start recording" (see images below).
-
-<img src="undo-img/tab-of-options.png" alt="Empty drawing program window" height="400">
-<img src="undo-img/start-recording.png" alt="Drawing program window with one red stroke and undo button visible" height="400">
-
-In addition, you should follow these instructions to make sure that clicks are visible:
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/yYPZTnmP3Ws" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-
-
-Your video should have the following sequence which is to demonstrate undoing and redoing
-actions for changing thickness, color, and your new feature. Please DO NOT try to create a
-perfect version with no mistakes! You *will not* lose points for any usability
-issues or mistakes (unless your code isn't working, which will not be affected by
-this video). You *will* get much better feedback and learn more about
-Heuristic Evaluation if your video isn't perfect!
-
-- Step 1: draw something
-- Step 2: undo
-- Step 3: change the thickness
-- Step 4: draw something
-- Step 5: undo
-- Step 6: undo
-- Step 7: change color
-- Step 8: try to redo
-- Step 9: draw something
-- Step 10: use new feature
-- Step 11: draw something in the new feature (if you need to)
-- Step 12: undo drawing (if done)
-- Step 13: undo new feature
-- Step 14: draw something
-- Step 15: use new feature
-- Step 16: undo
-- Step 17: redo
-- Step 18: draw something
-
-Finish as you will (e.g. demonstrate optional usability improvement).
-
-## 6.2 Providing Heuristic Eval feedback
-
-You will be assigned four videos. For each one you should:
-
-- Watch the video
-- While watching, take notes on paper about issues you see.
-- Remember: Make two passes through video as discussed in class:
-   - Inspect flow
-   - Inspect each screen, one at a time against heuristics
-- Fill out the following [google form](https://docs.google.com/forms/d/e/1FAIpQLScDe9k5bOKFikyh4ai32ih1e8waMD4SMECAjZK3yRVl1u-eDQ/viewform)
-with the 3 most severe issues. This will include questions about:
-  - Who are you/ who are you evaluating
-  - Which task step (above)
-  - Which heuristics are violated (primary and secondary)
-  - What severity rating would you give it
-  - Take a picture (a frame of the video) and circle the issue
-  - Describe what happened
-
-You will submit 3 things for each assigned video. At least two should be bad issues, one can be good.
-
-## 6.3 Reflecting on Heuristic Eval feedback and other aspects of this assignment
-
-You will turn in a report describing the feedback you got from the Heuristic Evaluation and answering other questions about the assignment. We have provided a [template](undo-report).
-
-# Part 7: Reflection
-
-Your reflection should be done as Microsoft Word, Google or other type of document.
-Copy the following questions (in italics below) into your reflection document and add
-your responses below each question. You can have more than one answer per page, but if
-you can, please try to avoid page breaks in the middle of
-a question. Insert page breaks between questions as needed.
-
-1. _Review the Heuristics from [lecture](https://courses.cs.washington.edu/courses/cse340/20sp/slides/wk10/heuristic.html).
-Which of the heuristics fit mobile application design? Which of the heuristics are less relevant?
-What problems did the heuristics not capture?_
-
-2. _Relate the heuristics to the gulf of evaluation and the gulf of execution:_
-  * _Pick at least one heuristic that you believe captures a problem relating to the gulf of
-  evaluation. Explain why._
-  * _Pick at least one heuristic that you believe captures a problem relating to the gulf of
-  execution. Explain why._
-
-3. _How secure is the Undo app? What security issues could arise with this app?
-List the security principals presented in lecture and categorize
-them as (1) violated, (2) met, (3) not relevant in the Undo app. Defend your
-reasoning._
-
-4. _How would you add context-aware computing in your Undo drawing app? Pick one of the types of
-sensing-based apps (capture and access; adaptive services; novel interaction; behavioral imaging;
-data collection & response) and discuss how it could enhance the app. Describe a case where this
-new feature could be problematic and relate it to the Sensing lecture._
-
-5. _Think back to all of the assignments you have done, and the design principles we have learned from
-Properties of People I and II, Application Design, Accessibility, and Security, been used i
-n your assignments? List and define in your own words 5 Interaction Programming design
-tips from these lectures. Also give an example of which, if any, of the assignments did
-you see that concept used (you can do this even if it was not explicitly named in the learning
-objectives we gave). Please explain your answer_
-
-6. (1pt Extra Credit) Instructor note: Usually on an exam I like to have a fun, 1 pt, extra credit
-problem where student can draw something or write a poem. We're not having traditional exam, but I feel the
-tradition of the fun extra credit must go on. _In an number of sections this quarter the TAs
-created a [Kahoot!](https://kahoot.com/) to help students study for the examlets. (For those of you
-who could not make section, Kahoot! is an on line game that allows participants to answer
-timed, fun questions. ). You can earn your extra credit point by authoring a Kahoot! question
-(and answer(s)) that we could potentially use in our CSE 340 offering. This can be a serious or
-fun question, but school appropriate please!_
-
-
-# Turn-in
-
-## Submission Instructions
-
-You will turn in the following files via GitGrade. It will accept:
-
-- `history/StackHistory.java`
-- `app/ReversibleDrawingActivity.java`
-- `app/ColorPickerView.java`
-- `actions/ChangeThicknessAction.java`
-- Any additional classes you create in `cse340.undo` for your new action
-- `layout/*_menu.xml`
-- `layout/drawing_activity.xml`
-- `drawable/*`
-- `values/{colors,dimens,strings}.xml`
-
-
-You will turn in the following files via our [google form](https://docs.google.com/forms/d/e/1FAIpQLScAh5Zux4YMp2mZzYjurVhzdrFESL1MRHdHeMZP2cExOxL47w/viewform):
-- Your video
-
-You will turn in your reflection and report (separately) on Gradescope
-
-## Grading
-
-This HW will be out of 50 points and will roughly (subject to small adjustments) be distributed as:
-
-Implementation (20 pts)
-- Part 1: Implement ChangeThicknessAction (2pts)
-- Part 2: StackHistory (7pts)
-- Part 3: Adding thickness to FAB thickness menu (3pts)
-- Part 4: Integrating ColorPickerView (7pts). Includes correct interactive behavior,
-and correct interaction with the stack.
-- Code Organization, and Style: (1 pt)
-
-Heuristic Evaluation & Reflection (35 pts)
-- Part 5: Improvement (3 pts). Evaluated through video of application. Improvement
-is evident, significant and can be done, undone, then done again.
-- Part 6:
-  - Video order is correct (3pts)
-  - Heuristic Evaluation Form filled out (based on form) (3pts)
-  - Report (11pts) includes Introduction and detailed description of your improvement,
-  including a justification of your design based on principles and accessibility support,
-  Purpose, Task, Data, and Lessons learned
-- Part 7: Reflection (15 pts). Includes the following reflection questions:
-  - How well do the heuristics fit mobile application design? (3 pts)
-  - Relate the heuristics to the gulf of evaluation and the gulf of execution (3 pts)
-  - How secure is the Undo app? (3 pts)
-  - How would you use context-aware computing in your drawing app? (3 pts)
-  - How have Properties of People I and II been used in your assignments? (3 pts)
-  - End of class picture (1 pt extra credit)
diff --git a/diagrams/diagrams.pptx b/diagrams/diagrams.pptx
deleted file mode 100644
index 88318c778d4292cc07239815fa908eca17c15a14..0000000000000000000000000000000000000000
Binary files a/diagrams/diagrams.pptx and /dev/null differ
diff --git a/diagrams/diagrams/mvc.png b/diagrams/diagrams/mvc.png
deleted file mode 100644
index d8461c69af23ceebca4b045b0b1356db5049e4d2..0000000000000000000000000000000000000000
Binary files a/diagrams/diagrams/mvc.png and /dev/null differ
diff --git a/diagrams/layout.pptx b/diagrams/layout.pptx
deleted file mode 100644
index 2cfddb1d2ab829e0415ec3d43e843b49f90330d3..0000000000000000000000000000000000000000
Binary files a/diagrams/layout.pptx and /dev/null differ
diff --git a/docs/accessibility.md b/docs/accessibility.md
new file mode 100644
index 0000000000000000000000000000000000000000..f548dd2fe721cf35a06c474d58dc11af87048a17
--- /dev/null
+++ b/docs/accessibility.md
@@ -0,0 +1,82 @@
+---
+layout: default
+(old)warning: old
+title: Accessibility in this Class and Beyond
+description: Accessibility resources and expectations
+---
+
+* TOC
+{:toc}
+
+
+# Setting up Accommodations (for Students)
+If you have a temporary health condition or permanent disability
+   (either mental health, learning, or physical health related) that
+   impacts your academic experience, please let us know how we can
+   accommodate you. You are NOT obligated to disclose any of these
+   issues with the instructor, only specify if there’s any
+   accommodations required.
+   
+If there is something we can do to make your experience better, please
+    let us know. We have attempted to make all the course materials
+    accessible according to web standards but there are always things
+    we may not have thought of.
+  
+If you need any additional support, we are always happy to work with
+  you directly or through [Disability Resources for Students
+  (DRS)](http://depts.washington.edu/uwdrs/) to make sure that the
+  class meets your needs. If you need any adaptations for course
+  materials (large font, pacing, image description, closed
+  captioning), just let the instructor know.
+
+If you have not yet established services through [Disability Resources
+    for Students (DRS)](http://depts.washington.edu/uwdrs/), but have
+    a temporary health condition or permanent disability that requires
+    accommodations (conditions include but not limited to; mental
+    health, attention-related, learning, vision, hearing, physical or
+    health impacts), contact DRS directly at uwdrs@uw.edu to set up an
+    Access Plan. DRS facilitates the interactive process that
+    establishes reasonable accommodations. DRS offers a wide range of
+    services for students with disabilities, mental health concerns,
+    and chronic illness, that are individually designed and remove the
+    need to reveal sensitive medical information to the course staff,
+    but it is important to start the process as soon as possible to
+    avoid delays.
+
+# Mutual Commitment to Access in the Classroom
+We start every quarter by asking students and instructors to participate in a shared effort to ensure that the classroom is accessible to all of us. We commit to working together to try to meet these requests without judgement or required documentation (Documentation, and DRS approval is only required when an accommodation is available to some students but not others).
+
+This quarter's list of accommodations can be found on our poll everywhere summary in our [first class's accommodation discussion](slides/accessibility-activities.html#5). Some examples of things that participants have asked for in the past include
+- flex time on assignments
+- universal masking in the classroom
+- hybrid participation options (for sick family members; because of cold, flu or covid symptoms; managing a disability; or other important obligations)
+- live auto-generated captions
+- permission to stand up and stretch during lecture
+- slack access for easy discussion
+- ...
+
+# Making your Assignments Accessible (for Your Instructors)
+
+Please ensure that assignments you hand in are accessible to the best
+of your capabilities. We will offer guidance on this in class, but
+given that the process of making content accessible heavily depends on
+the tools you use to author the content, it is practically impossible
+for us to offer exhaustive guidance. Here are a few resources to get
+started, but please reach out to us when in doubt.
+
+  - [Accessible PDF author guide](http://www.sigaccess.org/welcome-to-sigaccess/resources/accessible-pdf-author-guide/)
+  - [General guidelines to make your presentations accessible](http://www.sigaccess.org/welcome-to-sigaccess/resources/accessible-presentation-guide/).
+  - [A paper on making your talk accessible](https://homes.cs.washington.edu/~ladner/MakingYourTalkAccessible.pdf).
+  - Instructions to enable closed captions while presenting using [Google Slides](https://support.google.com/docs/answer/9109474?hl=en) and [Microsoft Powerpoint](https://support.microsoft.com/en-us/office/present-with-real-time-automatic-captions-or-subtitles-in-powerpoint-68d20e49-aec3-456a-939d-34a79e8ddd5f)
+
+
+
+# Accessibility Resources that might be useful
+
+Some accessibility technologies that students have told us are helpful in the past include the following. Note that these products can cost money, and we are not necessarily endorsing them. In addition, sometimes it's more useful to know a *type* of product exists and search for the most recent example of said product -- in other words, some of these resources may be out dated :).
+
+- Text to speech software [Natural Reader](https://www.naturalreaders.com/)
+- Speech to text software: Freely available on macs; you can also purchase something such as [Dragon Dictate](https://dragon-supports.com/index.php)
+- Screen readers: We will show you some free options and teach about them in class. In addition, if you have a Windows machine, both [Jaws](https://www.freedomscientific.com/products/software/jaws/) and [NVDA](https://www.nvaccess.org/download/) (free) are available; on linux [Odilia](https://odilia.app/) is the newest option.
+- You'll hear about and see many other things in this class, please let us know if you find something you think we should add to this list! 
+
diff --git a/docs/android_files/AndroidStudio_Device_Manager_1.png b/docs/android_files/AndroidStudio_Device_Manager_1.png
deleted file mode 100644
index 102912e1b51be70337948e78dd1d94f89744241b..0000000000000000000000000000000000000000
Binary files a/docs/android_files/AndroidStudio_Device_Manager_1.png and /dev/null differ
diff --git a/docs/android_files/Device_Manager_File_Structure_2.png b/docs/android_files/Device_Manager_File_Structure_2.png
deleted file mode 100644
index 5c69e91aac44d2e3107b53ae7c29b96dc86acf69..0000000000000000000000000000000000000000
Binary files a/docs/android_files/Device_Manager_File_Structure_2.png and /dev/null differ
diff --git a/docs/android_files/Saving_CSV_3.png b/docs/android_files/Saving_CSV_3.png
deleted file mode 100644
index ca70ae3572e74b3299a9187a61cdca25cac716ce..0000000000000000000000000000000000000000
Binary files a/docs/android_files/Saving_CSV_3.png and /dev/null differ
diff --git a/docs/android_files/index.md b/docs/android_files/index.md
deleted file mode 100644
index 87ce28e47cb0c3c6a7a33e2a33fd6373bcfc2d25..0000000000000000000000000000000000000000
--- a/docs/android_files/index.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-layout: default
----
-
-* TOC
-{:toc}
-
-# Retreiving Data from an Android Device or Emulator
-
-1. When you open Android Studio to your as5-menus project, you will see a "Device File Explorer" tab in the lower right corner:
-
-    ![Arrow to Android Studio's Device File Explorer Tab, 30%](AndroidStudio_Device_Manager_1.png){:width="max-width"}
-
-2. When you click this tab (make sure your emulator is already running or physical device is plugged in) you will see the file structure of your emulator:
-
-    ![Highlighting TestResult.csv in Android Studio's Device File Explorer Tab](Device_Manager_File_Structure_2.png){:width="50%"}
-
-3. Once you have found TestResult.csv under `/storage/emulated/0/CSE340_Menus/TestResult.csv` or `/sdcard/CSE340_Menus/TestResult.csv` you can right-click to save it to your computer:
-
-    ![Right-Clicking for "Save As" on TestResult.csv](Saving_CSV_3.png){:width="max-width"}
-
-4. Now that you have the file saved to a location on your computer you can right-click to open it in Microsoft Excel or upload it to Google Sheets to process the data.
\ No newline at end of file
diff --git a/docs/covid/index.md b/docs/covid/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..345a1d3da13cc208b59322fc9303c00aaf89f235
--- /dev/null
+++ b/docs/covid/index.md
@@ -0,0 +1,78 @@
+---
+layout: default
+---
+* TOC
+{:toc}
+
+
+# COVID-19 Safety
+All policies below are designed to match guidance from the
+[University of Washington](https://www.washington.edu/coronavirus/spring2022/).
+It is possible for guidance to change as the pandemic evolves over the coming months, so we
+will update this page as rules/regulations change.
+
+
+# Masking
+Masking is currently optional, but ``strongly recommended indoors'' according to the [UW face covering policy](https://www.ehs.washington.edu/covid-19-prevention-and-response/face-covering-policy). 
+
+In this class, people in the room include those who are high risk with respect to COVID and people who live with vulnerable family members. To help support the needs of these individuals, masks will be available in the classroom as you enter, and if you would like to mask, you are welcome to make use of them. 
+
+When masking, UW's masking policy states 
+> University strongly recommends wearing a well-fitted, high-quality mask indoors (e.g., KN95, N95, KF94 and surgical masks) to reduce the potential for transmission. High-quality masks are available at no cost in several locations on each campus. University units can purchase high-quality facemasks from the Safe and Clean Storefront. 
+
+# Remote Access
+
+If you are sick or have potentially been exposed to COVID-19, **stay home**. We will not be
+assessing you on attendance, so you will not be penalized for missing class to keep our community safe.
+See more [here](https://www.washington.edu/coronavirus/faq/#health).
+
+Below, we briefly describe the accommodations for students having to miss class due to potential
+illness, with full information in the linked pages.
+
+- [Lectures](index.html#lectures): Course content will be posted as a set of readings/videos
+  that can be watch asynchronously. Recordings of the live class posted on course website, and all
+  materials posted online.
+- [Office Hours](index.html#course-support): We will host remote office hours.
+  Please contact the   course staff on the [discussion board]({{site.discussion}})
+  if none of the times/locations work for you.
+- [Asynchronous help]({{site.discussion}}) is available via the [Discussion Board]({{site.discussion}}),
+  post online to get asynchronous help from a member of the course staff.
+
+# Other questions you may have
+## Do you need to maintain social distancing?
+
+Vaccinations and masking provide strong protection against the spread of COVID. Currently, UW does
+not require social distancing in the classroom or office hours for students who are vaccinated and
+wearing a mask.
+
+Of course, some students might feel more comfortable keeping a little distance. If you would like
+to keep space between you and another student, please kindly ask them to leave a space between you
+and them if there is room available. Similarly, if someone asks you to maintain a space
+between them, please respect that request if possible.
+
+## What if you get sick?
+
+See [this FAQ](https://www.washington.edu/coronavirus/faq/) by UW on what you should do if you get
+sick. You should also check out the [Remote Access](#remote-access) options listed above!
+
+## What if you are potentially exposed to COVID-19?
+
+Follow the recommendations outlined in this
+[flowchart by EH&S](https://www.ehs.washington.edu/system/files/resources/COVID-19-public-health-flowchart.pdf).
+
+## What if Jen or your TA gets sick?
+
+The course staff is committed to keeping you safe, so we will not make you risk a potential exposure
+to COVID to attend class. If one of the course staff feels ill, we will move any in-person activities
+we are hosting to be purely online or have
+someone else on the course staff fill in for us while we are potentially contagious.
+
+Please make sure you check your email frequently for announcements from the
+[discussion board]({{site.discussion}}) and before you attend an in-person event to make sure it is
+still happening in-person. We will always try our best to give as advanced notice as possible for
+any changes from in-person to remote for a day.
+
+
+### Acknowledgment
+
+This site was copied and modified with permission from [CSE 163](https://courses.cs.washington.edu/courses/cse340/22wi/covid-safety.html) and [CSE 340](https://courses.cs.washington.edu/courses/cse163/22sp/covid_safety/). 
diff --git a/docs/zoom/index.md b/docs/zoom/index.md
index 63e2c84a48fb46c73d232dfe37c1f1efc3af86ba..939a88c88508ffe299c1949694dd08759946a697 100644
--- a/docs/zoom/index.md
+++ b/docs/zoom/index.md
@@ -1,4 +1,3 @@
-
 ---
 layout: default
 ---
@@ -7,11 +6,11 @@ layout: default
 {:toc}
 ### Acknowledgment
 
-This site was copied and modified with permission from CSE 163 see there version of the site [here.](https://courses.cs.washington.edu/courses/cse163/20sp/zoom.html#accessingazoomevent)
+This site was copied and modified with permission from CSE 163 and CSE 340. See their versions of the site [here](https://courses.cs.washington.edu/courses/cse163/20sp/zoom.html#accessingazoomevent) and [here](https://courses.cs.washington.edu/courses/cse340/21sp/docs/zoom/).
 
 # Accessing a Zoom Event
 
-There are two main ways to access a Zoom event for CSE 340 described in the sections below. Choose whichever you find most convenient! **To access recordings of the lecture sessions, you will need to use the Zoom in Canvas option.**
+There are two main ways to access a Zoom event for {{site.classnum}}, {{site.quarter}} described in the sections below. Choose whichever you find most convenient! **To access recordings of the lecture sessions, you will need to use the Zoom in Canvas option.**
 
 When joining the call, if this is for a lecture or quiz section, you will automatically be added to the call assuming that the member of the course staff leading that session has started the call. If this is for office hours, you will be added to a waiting room and a course staff member will help you when they are available!
 
@@ -23,7 +22,7 @@ For further instructions, see UW-IT's documentation:
 
 ## Zoom in Canvas
 
-Click on the Zoom link on the left side of our Canvas course (or this link [here](https://canvas.uw.edu/courses/1370612/external_tools/95443)). This brings up a list of all Zoom meetings for this course (you will see more meetings since there will also be ones for office hours and sections).
+Click on the Zoom link on the left side of our Canvas course (or this link [here]({{site.canvas}}/external_tools/95443)). This brings up a list of all Zoom meetings for this course (you will see more meetings since there will also be ones for office hours and sections). Note that these images are from a different course, they are for illustration only.
 
 ![List view of Zoom in Canvas, 50%](1_Highlight_Zoom_Tab.png)
 
@@ -33,7 +32,7 @@ Say you want to join lecture on Friday, April 3. You will click on the "Join" bu
 
 ## Canvas Calendar
 
-Access your Canvas calendar by clicking on the Calendar option in the left-most side bar (or accessing this link [here](https://canvas.uw.edu/calendar?include_contexts=course_1371959)). The image below shows you what the Canvas calendar looks like. **Make sure in the Calendars section on the right that you have CSE 340 selected, otherwise none of our events will show up.** Your calendar likely has more events (including sections and office hours for this course).
+Access your Canvas calendar by clicking on the Calendar option in the left-most side bar (or accessing this link [here](https://canvas.uw.edu/calendar?include_contexts=course_{{site.canvas_course}})). The image below shows you what the Canvas calendar looks like. **Make sure in the Calendars section on the right that you have {{site.course}} selected, otherwise none of our events will show up.** Your calendar likely has more events (including sections and office hours for this course).
 
 You can switch between Week/Month/Agenda on the top right if there are too many events in the month view. You can also use the controls at the top to switch days.
 
@@ -51,7 +50,7 @@ The course staff does not think the lecture recordings will be particularly usef
 
 ![Showing the Cloud Recordings tab of Zoom in Canvas, 50%](5_Cloud_Save_Highlighted.png)
 
-# CSE 340 Zoom Norms and Best Practices
+# {{site.course}} Zoom Norms and Best Practices
 
 - If you are new to Zoom, you can always start your own call to get familiar with the interface!
 
@@ -63,7 +62,7 @@ The course staff does not think the lecture recordings will be particularly usef
 
 - To the best of your ability, you should choose an appropriate space for joining into a Zoom call. A place where you can focus and won't be disturbed is ideal. If this is not feasible, try to use headphones to block out some noise around you and if possible use a headset with a microphone to avoid picking up as much noise around you as possible.
 
-    - Maybe see if you can coordinate with housemates to minimize noise and internet access during an important Zoom call to save bandwidth and reduce noise.
+    - Maybe see if you can coordinate with housemates to minimize noise and Internet access during an important Zoom call to save bandwidth and reduce noise.
 
 - While you are not talking or sharing during a meeting, you should have your audio muted. You should get into the practice of muting/unmuting yourself as appropriate to avoid audio-feedback (and to signal to others that you are trying to say something).
 
diff --git a/index.md b/index.md
index 3ebeed3791cc816498544c0dab563f21f53d0507..fba697f8c41ed6bf15d00736e9d70d60313a8a87 100755
--- a/index.md
+++ b/index.md
@@ -1,257 +1,104 @@
-
 ---
 layout: default
-warning: draft
 ---
 
-<h1> Welcome to Interaction Programming! </h1>
-Interactive technology is changing society. Some of today’s interfaces are used by a billion people at a time. Almost everything we create is created for people to use, through user interfaces. We will learn about interactive systems, including programming paradigms and design of event handling, layout, undo, accessibility and context awareness.
-
-For quick links to key things, check out the navigation bar above and the table of contents here:
-
-* TOC
-{:toc}
-
-# Class Times
-
-See [Canvas]({{site.canvas}}) for all zoom meeting links
-
-**Class Time:** M/W/F at 10:30am PDT \\
-**Lab Times:** 9:30am PDT (Section AA) and 10:30 am PDT (Section AB)
+<h1> Why take this class?</h1>
 
-# Course staff
+Highly recommend this course to be [mandatory in CS]... I will keep the lessons learned and try to apply them in my career wherever applicable. -- 2023 student.
+{: .quote}
 
-(More information on [Pronouns](https://www.mypronouns.org/))
+Even though I have a lot of experience with implementing accessibility in code and pushing for more accessible designs at work, I have learned a lot from this course [that I plan to take back into my workploce] -- 2023 student 
+{: .quote}
 
-## Instructor
+How can computing enable new solutions to accessibility, including both access to the world and access to computers? Similarly, how can a disability studies perspective guide us in developing empowering and relevant solutions to accessibility problems? This course explores both of those questions through a combination of discussions, reading, and building.
 
-![Jen Mankoff](assets/img/staff/mankoff.jpg){:width="80px"} | [Jennifer Mankoff]({{site.author.url}}) (she/her) <br>  Office Hours: TBD
+Access technology (AT) has the potential to increase autonomy, and improve millions of people’s ability to live independently. This potential is currently under-realized because the expertise needed to create the right AT is in short supply and the custom nature of AT makes it difficult to deliver inexpensively. Yet computers’ flexibility and exponentially increasing power have revolutionized and democratized access technologies. In addition, by studying access technology, we can gain valuable insights into the future of all user interface technology.
 
-## TAs
+In this course we will focus on a combination of practical skills such as how to assess accessibility of documents, websites and apps and how to do disability based UX; advanced skills such as how to address accessibility in visualization, AR/VR and AI/ML; and forward looking topics such as intersectional concerns, accessible healthcare, and accessibility in disaster response. The largest project in the class will be an open ended opportunity to explore access technology in more depth. We will also cover disability justice and advocacy. 
 
-:--: | :---------: | :-- | | :--: | :---------: | :--
-	**Section AA** | ![Taylor Gotfrid](assets/img/staff/gotfrid.jpg){:class="ta-picture"} | Taylor Gotfrid (she/her) | | **Section AB** | | David Chen (he/him)
-	**Infrastructure** |  ![Jeremy Zhang](assets/img/staff/zhang.jpg){:class="ta-picture"} | Jeremy  Zhang (he/him) | | | | 
+For quick links to key things, check out the navigation bar above and the table of contents here:
 
-(More information on [Pronouns](https://www.mypronouns.org/))
+* TOC
+{:toc}
+		
+# Introductory Video
 
-# Should I take this class?
+<iframe width="560" height="315" src="https://www.youtube.com/embed/1aFiJDHtRiY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
-Yes! Some of today’s interfaces are being used by a billion people at
-a time. Almost everything we create is created for people to use, and
-user interfaces are how people interact with anything else you do
-(whether it is a new machine learning algorithm or a database
-system). User interfaces are incredibly important, but they also
-represent a different programming paradigm than you may have learned
-before. This class will teach you
-
-- How to write an event-driven program which reacts to user input and
-  displays output. If you’ve never done this before, the abstractions
-  you will learn are standard in almost any user interface toolkit. Even
-  if you have, too often, without attention to structure, interfaces
-  become impenetrable spaghetti code.
-- How to think about the design of novel interaction techniques. As
-  devices diversify, so too do the ways in which people interact, from
-  voice based interfaces to augmented reality. By understanding the
-  principles of interaction technique design you can do a better job of
-  making interactions that users will want, which improves both the user
-  experience and the business value of what you create.
-- How to avoid common gotchas in the implementation of user
-  interfaces. We will teach you the proper way to create Accessible Interaces and
-  implement features like Undo. We will also touch on other design principles (no
-  modal dialogues; good use of color; inclusion of support for help and
-  so on) that work in any user interface!ß
-
-Taking a class is a big commitment, and you will work hard in this
-class. So we want to help you make sure this is the right class for
-you. Below is some information about prerequisites and expectations.
+# Class Times
 
-# Prereqs and expectations
+See [Canvas]({{site.canvas}}) for all zoom meeting links for classes and office hours.
 
-The only requirement for this class is that you have taken CS 142 and
-143 or an equivalent class, meaning you are comfortable programming in
-Java, and have some experience with data structures. However, if you
-are not comfortable working in an IDE environment, using version
-control, and picking up and working with someone else’s library code,
-you will likely need to plan for extra time with TAs, and possibly
-attend extra tutoring sessions, to keep up with the class.
-Taking CSE 391 just before or concurrently with 340 can help, but our staff
-can also assist where needed.
+**Class Time:** Tuesday 5:30-8:20PM (PDT)
+**Class Location:** Gates Center (CSE2) room G10 (map)
 
-The specific platform and language for this class are Java on Android
-phones (or simulators); using the IntelliJ IDE (Android Studio). While
-Google is switching over to Kotlin, there are good reasons to [start
-learning Android with Java first](https://dzone.com/articles/java-vs-kotlin-which-language-android-developer-sh).
 
-Note that this class is designed for CS majors, and other students who
-work regularly with information technology and are strong
-programmers. While we will consider applications from outside the
-major, financial and other restrictions may limit
-space for such students.
+# Mailing Lists
 
-# Course Learning Goals
+**Staff** mailing list: [Mail](mailto:{{site.staff_email}})
 
-The course learning goals focus on five topics: Drawing, Layout, Event Handling, Applications, and Communication.
+**Class** mailing list: [Ed]({{site.discussion}})
 
-### Drawing 
-How do I draw things on the screen? Do you know how to control what is shown to the user? 
+# Course Staff
 
-- Learn to use drawing abstractions such as [https://developer.android.com/reference/android/graphics/Canvas](Canvas) to programmatically draw on screen and use coordinate transformations to move and scale and  orient them. You should be able to place a [https://developer.android.com/reference/android/view/View](View) anywhere onscreen simply by specifying it's upper left x/y coordinates. 
+## Instructor
 
-- When creating a new component on screen, it is important to properly size it so it is just big enough to fit its content (text, image, etc). To do this, you will Learn to properly set up bounding boxes so Android knows where to place [https://developer.android.com/reference/android/view/View](View)s even during dynamic events such as resizing or animation. The bounding box should be the smallest possible that surrounds the contents
+![Jen Mankoff](assets/img/staff/mankoff.jpg){:width="80px"} | [Jennifer Mankoff]({{site.author.url}}) (she/her) <br>  Office Hours: 12:30-1:30 Fridays; 5:30-6:00 Mondays. See link on canvas.
 
-- Nice interactions often incorporate animation. You should be able to set up an animations using timing options such as slow in/slow out.
+## TA
 
-### Layout 
-How do I set up an interface so that it looks the way I want and reacts properly to changes in orientation and size? Do you know how to implement a layout, supporting reactivity and so on?
+![Kelly Mack](assets/img/staff/mack.jpg){:class="ta-picture"} | [Kelly Mack](https://kmack3.github.io/) (she/her)<br/> Office hours: Wednesdays 12:00-1:00; Wednesdays 5:30-6:30
 
--  Be able to visually represent an interface as an [https://developer.android.com/studio/debug/layout-inspector](Interactor Hierarchy) (and vice versa). Given a picture of an interface, can you draw an interactor hierarchy that has all of the necessary components to be properly rendered as that interface? Similarly, given an interactor hierarchy, can you tell what interface it would be rendered as?
--  Create reactive layouts that properly position things and handle dynamic events such as resizing or switching from portrait to landscape mode. 
-Also, given an interactor hierarchy, you should be able to point at which interface images it matches, or edit it to add or remove a visual element.
--  Design and implement your own a layout container that can properly lay out any number of child items, to a spec. For example, can you implement a two column scrolling layout, or the facebook newsfeed which dynamically shows things as you scroll? You will need to properly support dynamic addition and removal of child components, as well as properly reacting to changes in scale or orientation. 
+(More information on [Pronouns](https://www.mypronouns.org/))
 
-### Events
-Events++ (4 Items)
-How do I handle input from the user, both at the application level and within a specific interactor?  An advanced but important aspect of android programming is implementing your own interactors. This is strongly tied to event handling because they can only be interactive if you know how to deal with events.
+# Should I take this class?
 
--  The most basic and absolutely necessary form of event handling is application callbacks. This is how your application responds when someone presses a button or otherwise interacts, it is the minimum necessary to build a full interface. You should be able to build an application that can respond to callbacks from interactors such as buttons, or custom interactors and properly support separation of concerns between the application and interactors. All information should pass through the callback, and you should be able to update application state in response. You should understand how to use advanced Java programming concepts such as inner classes to support your work. 
--  If you want to go beyond the default library provided by Android, you need to know how to build an interactor yourself. This involves dealing with lower level events (such as click or keypress events). To do this properly, you need to build an extended finite state machine that knows what state the interactor is in and how to respond to different events depending upon its state. 
--  Be able to build non-rectangular interactors and other useful interaction techniques. You will learn to use your knowledge of the event handling/bubbling algorithm to properly build non-rectangular interactors, lenses, and other special case input handling. 
--  Support a class of interaction techninques by building variations on a single interactor that all make use of the same finite state machine controller for their essential behavior. For example, a selection task might be handled as a pie menu or a linear menu. You should be able to accomplish this simply by varying the implementation of essential geometry for your interactor, without needing to modify the state machine underlying your interactor.
+Yes! Everyone planning a career in interactive technology should understand access technology. Not only is it cutting edge and exciting, accessibility is a human rights issue and it is the law. Students of interactive technology should know how to build regular interfaces that are accessible as well as understanding the value of innovating new approaches to accessibility. Disability touches almost everyone either directly or indirectly at some point in life, temporarily or permanently. Let’s create a future we will also want to and be able to be part of.
 
-### Applications 
-Learn to  build an application that meets basic standards that requiry programmatic support for accessibility, security, and interactivity. 
+This class will teach you
 
-There are interaction programming concepts that need to be considered at the application level. These may not ever show up in a spec, but are still the responsibility of the implementer to consider. Some examples include making your interface secure; supporting undo; and making it accessible. Human behavior is another essential aspect of interface design you must consider. But how does it interact with interface programming? More specifically, this class will cover the following learning goals
+- How to make interfaces and interactions accessible.
+- How to make documents accessible and conduct inclusive presentations and meetings
+- What access technologies already exist. We will find examples, watch people talk about how they use them, and help with or shadow someone using AT (tentative).
+- How to make advanced technologies, such as AR/VR, Machine learning systems, and visualizations accessible
+- Opportunities to bring accessibility to applied settings such as healthcare, disaster response, and higher education. 
 
--  You should be able to implement a simple application from scratch. To meet expectations, this should be complete, meaning it includes an interactor hierarchy, event handling and a responsive layout.
-- Fix accessibility problems including adding proper labeling, focus, navigation and contrast. This requires an understanding of how to properly use alt text to describe items on the screen, how to optimize navigation, how to make sure that everything can be accessed by the accessibility tools, that contrast and scaling work properly, and so on and so forth.
-- Be able to assess potential security considerations with an app and fix them, based on android's best practices and information found on sites like PrivacyGrade.org
-- Properly implement Undo in any interface to help users recover from errors. This requires an understanding of how to capture and store information about changes to an interface over time; and memory management so too much history isn't stored.
+Taking a class is a big commitment, and you will work hard in this class. So we want to help you make sure this is the right class for you. Below is some information about prerequisites and expectations.
 
-### Communication about app concerns
+# Prereqs and expectations
 
-You are unlikely to be building an interface in a vacuum -- you will need to be able to read specs that are provided with you, identify potential problems, and advocate for new directions. These are communication tasks that are critical to success whether you are building interfaces or designing them. We will cover a sample of these in this class including:
+The only requirement for this class is that you are comfortable programming and picking up new languages and tools that you have not been exposed to before. You will have some control over this, however, basic web skills are likely to be useful. The primary programming project in this class is one you design yourself. 
 
-- You should be able to read, understand, and apply documentation and specs. 
-You should be able to use things you haven't see in the library before such as Canvas, Toasts and Floating Action Buttons; Bundler; Activities and the activity life cycle; and XML specifications including inflation. All of these are Android specific concepts that we will not teach in any detail, but will expect you to master. Some examples include Activities, Inflation, Bundles.
-- Ethics. Although this is a programming course, unexamined decisions can easily lead to major ethics violations. Thus, it is the job of every employeed/creator to search for possible concerns. You will learn examine an application and identify violations of ethics in the domains of behavior change, machine learning, inclusion/accessibility and/or security. This includes accessibility and security, but also other things such as unexamined biases, e.g. assumptions about skin color.
-- Accessibility and Security. Find and describe accessibility/security problems. Part of finding problems is being able to report on them. Such a report might go to someone else who will fix the problems.
-- One critical intersection is in the implementation of a study. You need to properly log behavior and analyze that behavior for a study to run. You should be able to properly consent participants, accurately describe the study process, and clearly describe the results of the study, using charts correctly to illustrate them and to draw  valid conclusions consistent with your data. Further, based on Fitts law, you should be able to predict which interactions will be slow. This can be helpful in finding small issues such as making an interactor that could have infinite width or height smaller.
+In addition, please familiarize yourself with the course [academic conduct]({{site.baseurl}}/academic-conduct.html) policy. We will grade on the assumption that you have read and understood it, and there will be penalties if you do not follow these policies. These will be determined on a case by case basis, but at a minimum:
+- If you plagiarize you will receive a 0 on participation for that assignment
+- If you plagiarize on any assignment, you will receive a non-competent on your disability justice competency
 
 # Course Structure
 
-Each week, there will be three hours of lecture material (Monday, Wednesday, Friday) and
-one TA-led lab (Thursday). In addition the TAs will host office hours, often in pairs.
-
-## Zoom
-
-All schedule sessions for this course are scheduled to run synchronously at your scheduled class time via Zoom.
-These Zoom class sessions will be recorded. The recording will capture the presenter’s audio,
-video and computer screen. Student audio and video will be recorded if they share their computer
-audio and video during the recorded session. The recordings will only be accessible to students
-enrolled in the course to review materials. These recordings will not be shared with or
-accessible to the public.
-
-The University and Zoom have FERPA-compliant agreements in place to protect the security and
-privacy of UW Zoom accounts. Students who do not wish to be recorded should:
+Many of the goals in this class center around learning by doing. This
+means that hands on time trying out everything from implementation to
+evaluation is critical to learning. Active learning has been [shown to
+increase student performance in STEM
+subjects](https://www.pnas.org/content/111/23/8410).
 
-Change their Zoom screen name to a school appropriate screen name that hides any personal
-identifying information such as their name or
-UW Net ID, and not share their computer audio or video during their Zoom sessions.
+Thus, class time will be used as much as possible for in **class
+exercises and surveys, as well as discussion and review. You will be
+graded on general participation in lecture** for understanding using a
+variety of technologies. We also highly encourage questions in
+lecture. Often many students share the same question and those
+questions can help the instructor gauge student understanding.
 
+Preparation outside of class and participation in class are both very
+important and will improve your class experience. Preparation may
+include online discussion, pre-class readings and videos, and post-lecture reflections in addition to homework. Participation in class will include discussion, question asking, and active engagement in learning exercises.
 
-## Lectures
+## Accessibility
 
-Lectures are designed to introduce new material throughout the quarter, motivate key theories and
-concepts, as well as demonstrate Interface Programming primarily using the Android Studio development
-environment.
-
-The goals in this class center around learning by doing. This
-means that hands on time trying out everything from implementation to
-evaluation is critical to learning. Active learning  has been [shown to increase student performance
-in STEM subjects](https://www.pnas.org/content/111/23/8410).
-
-Thus, class time will be used as much as possible for in **class exercises and surveys, as well as
-discussion and review. You will be graded on general participation in lecture** for understanding
-using a variety of technologies. We also highly encourage questions in lecture. Often many students
-share the same question and those questions can help the instructor gauge student understanding.
-
-### Lecture Readings
-
-Preparation outside of class and participation in class are both very important and will improve
-your class experience. The **pre-lecture readings and activities are designed to support your studying
-and learning**, particularly as we discuss both theoretical and practical aspects of interface
-Programming. We will use interactive techniques during class to check for your understanding on these
-materials. Stay on top of the course materials and bring your questions to class!
-
-### Assessments
-
-**There will not be quizzes, or a midterm or final exam this quarter**. Instead, your knowledge will
-be assessed via your code and detailed reflections related to those coding projects. In the final
-reflection you will expect you to synthesize all of the course material.
-
-There will be "practice" quizzes each week that will allow you to check for your own understanding on
-the material in the course. You will be graded up to 2 points for each practice quiz that is completed.
-This work will be part of your participation grade for the course.
-
-
-### Lecture examlets and final reflection
-
-There will not be a midterm or final exam this quarter. Instead, there will be 4 quizzes held
-during the last 15-30 minutes of Friday lecture every other week, beginning the third week. The final
-project will incorporate a deeper reflection that covers all course material.
-
-### Remote Lecture Guidelines and Expectations
-Students are expected to adhere to the below expectations for remote lectures. These guidelines are
-intended to help lecture go more smoothly, facilitate questions and group activities, and foster a
-sense of community within the class.
-
-- You are **not required to have your video turned on during lecture** except during group activities in breakout rooms
-- Please keep your **mic muted unless you’re asking a question**
-- To ask a question, you may use the raise hand feature in zoom, or type “hand”. The instructor or moderator will call on you to unmute yourself and ask your question.
-  - You may also post questions in the chat, but you may be asked to unmute your mic and ask your question aloud.
-- There will be individual and group based activities which you are expected to participate in (please
-  contact the instructor if you not able to participate in the lectures synchronously due to your
-  current living situation).
-- It may be helpful for some students to see the instructor speaking even when the instructor
-  is sharing their screen.
-  - This can be achieved by right clicking the instructor’s video and choosing “pin” video.
-  - Then, under “view options” you can choose the side-by-side option which will enlarge the instructor video
-
-## Lab
-
-On Thursdays, you will participate in a weekly lab, held at either 9:30 or 10:30 am PDT. These
-labs will be similar those you may have had in other classes - we will spend the 50 minutes answering
-questions, going over common errors in homework solutions, discussing sample problems in
-more detail than we can in lecture, and completing exercise worksheets with TAs available to help.
-
-## Remote Lab Guidelines and Expectations
-Students are expected to adhere to the below expectations for remote labs. These guidelines are
-intended to help lab go more smoothly, facilitate questions and group activities, and
-foster a sense of community within the class.
-
-- If possible you should have your video on at all times during lab. This is not to monitor you, but to help
-  create a sense of community in the classroom.
-- Please keep your mic muted unless you’re asking a question
-- To ask a question, please raise your hand using the Zoom reactions or type “hand” in the chat. A TA will
-  call on you and then you can unmute your mic and ask your question
-- You may also post questions in the chat, but you will be asked to unmute your mic and ask your question aloud
-- There will be **individual and group based activities which you are expected to participate in**. Please
-  contact the instructor if you are unable to participate in these activities synchronously due to your
-  remote living situation.
-
-# Workload
-
-This is a **four credit class, meaning you should expect 8 hours of homework outside of class a week**. We
-hope make the workload as predictable as possible. Assignments will have a fixed and an open ended piece,
-and some will require a structured peer review. They
-will typically involve either a single (one-week) part or be split into two parts, with each about a week
-long. After you turn in an assignment you will also work on a short practice quiz on the most relevant
-material taught in the assignment.
+Please see our [Accessibility Policy](docs/accessibility.html)
 
 # Class Coordination
 
+
 We want you to succeed in this class, and an important way that you do that is by **asking questions and discussing course issues with your peers and teaching staff**. Some ways to do that include:
 
 - We have a class discussion board on [Ed]({{site.discussion}}), where you can
@@ -264,35 +111,23 @@ We want you to succeed in this class, and an important way that you do that is b
 - We hold office hours (see above).
 - If none of those times work for you, you can also discuss matters with us privately on the
   [Ed]({{site.discussion}}) discussion board. Using Ed notifies the whole course staff at once and is usually faster than email.
-- If none of these work for you you can send an email asking to set up an appointment.
+- If none of these work for you you can send an [email](mailto:{{site.staff_email}}) asking to set up an appointment.
 
 # Class Expectations
 
 The class is a shared learning environment and it is important it is a welcoming environment for everyone, from all backgrounds. As instructors, we know that students in this class may need materials to be accessible by screen reader, or may need extra time on exams. You may observe religious holidays that overlap class times, or have work, childcare or appointments that have to be prioritized at specific times. As students we also ask you to remember that each person brings different priorities and experiences to class. We should all strive to treat everyone in the class with respect and understanding.
 
+
 The Allen School seeks to create a more diverse, inclusive, and
 equitable environment for our community and our field (see the [Allen
 School’s Inclusiveness
 Statement](https://www.cs.washington.edu/diversity)). Specific things
 we will do to promote welcoming class environment include:
 
-- **Accessibility**: If you have a temporary health condition or permanent disability (either mental health
+- **Accessibility**: If you have a temporary health condition or permanent disability (either mental health, learning,
    or physical health related) that impacts your academic experience, please let us know how we can
-   accomodate you. You are NOT obligated to disclose any of these issues with the instrutor, only specify
-   if there’s any accommodations required.
-  - If there is something we can do to make your experience better, please let us know. We have attempted
-    to make all the course materials accessible according to web standards but there are always things we
-    may not have thought of.
-  - If you need any additional support, we are always happy to work with you directly or through 
-  [Disability Resources for Students (DRS)](http://depts.washington.edu/uwdrs/)  to make
-    sure that the class meets your needs. If you need any adaptations for course materials (large font,
-    pacing, image description, closed captioning), just let the instructor know.
-  - You may also want to contact
-    [Disability Resources for Students (DRS)](http://depts.washington.edu/uwdrs/) at uwdrs@uw.edu if you
-    have not already. DRS offers a wide range of services for students with
-    disabilities, that are individually designed and remove the need to reveal sensitive medical
-    information to the course staff, but it is important to start the process as soon as possible to avoid
-    delays.
+   accommodate you. You are NOT obligated to disclose any of these issues with the instructor, only specify
+   if there’s any accommodations required. For more on accessibility in this class and how we accommodate you (and each other), please see our [Accessibility Policy](docs/accessibility.html)
 - **Wellness**: It is very important to us that you take care of your mental health throughout the course.
   Everyone on the course staff is available to chat, and you can always attend office hours for a
   non-academic conversation if necessary. Beyond the course staff, the University of Washington provides
@@ -310,7 +145,7 @@ we will do to promote welcoming class environment include:
   form on UW's site.
 - **Inclusivity**: Our goal is to make this classroom a welcoming environment for all. We are working toward
   using a broad base of examples in our course material. Please let us know if you see an opportunity to
-  improve our course materiale to be more representative of our student population. Additionally, if you
+  improve our course material to be more representative of our student population. Additionally, if you
   experience interactions with anyone that are excluding or otherwise uncomfortable, please reach out
   to the course staff so that we can address the situation.  Should you feel uncomfortable bringing up an
   issue with a staff member directly, there are a number of
@@ -318,186 +153,115 @@ we will do to promote welcoming class environment include:
   including the [Anonymous Feedback](https://feedback.cs.washington.edu/) form, but understand we can not
   respond to you directly if you use the latter. Responses, if possible, will be broadcast to the class as
   a whole or systematic changes to the class when necessary.
-- **Sexual Harrassment**: University policy prohibits all forms of sexual harassment.
+- **Sexual Harassment**: University policy prohibits all forms of sexual harassment.
   - If you feel you have been a victim of sexual harassment or if you feel you have been discriminated against, you may speak with your instructor, teaching assistant, the chair of the department
   - You can also file a complaint with the UW Ombudsman's Office for Sexual Harassment. Their office is located at 339 HUB, (206)543-6028. There is a second office, the University Complaint Investigation and Resolution Office, who also investigate complaints. The UCIRO is located at 22 Gerberding Hall.
 - **Working Together**: We will encourage students in this class working together, as long as you only turn
   in code that you implemented.
 
+# Participation 
+This is an in person class. As much as possible, we ask that you
+  attend in person. That said, we know that many individual concerns
+  may make this a barrier. We will do our best to support remote
+  participation when there is a need for this due to a family
+  obligation, disability, or other concern. If you participate
+  remotely, you may be expected to engage in additional work before,
+  after, or during lecture to ensure that you have the most similar
+  experience possible to students who are in person. Please contact
+  the instructor for instructions each week you are remote). For those
+  cases, class sessions **will be recorded** when possible (guest
+  lecturers may refuse this). Recordings will only be accessible to
+  students enrolled in the course to review materials. 
+
+The University and Zoom have FERPA-compliant agreements in place to
+protect the security and privacy of UW Zoom accounts. Students who
+connect by Zoom but do not wish to be recorded should:
+- Change their Zoom screen name to a school appropriate screen name
+that hides any personal identifying information such as their name or
+UW Net ID
+- Not share their computer audio or video during their Zoom sessions  (please notify us first!).
+
 # Grading
 
+While grading is a necessary part of what we do at UW, I want to focus
+this class on learning. The following policies are meant to encourage
+that. **There will not be quizzes, or a midterm or final exam this
+quarter**. Instead, your knowledge will be assessed via a combination
+of peer feedback, course staff feedback, and your own reflections. In
+addition, course staff will be looking for and marking down when you
+achieve competency with basic requirements such as presenting
+accessibly and turning in accessible documents.
+
+## Grading Approach
+We’ll be using competency based grading for most elements of this
+class. We have a set of core learning goals in this class. For each of
+them, you may be "competent" or "excellent". If you excel at them all,
+and participate in the class, you get an 4.0. Various combinations of
+"competent" "excellent" and "not competent" result in other grades.
+
+Many of these competencies are assessed repeatedly. I don't care if
+you get them wrong at first, as long as you eventually learn them.
+
+Some are assessed less frequently. For those, you have the opportunity
+to request a regrade if you feel you've improved on them.
+
+## Grading Breakdown (tentative)
 Grades will be assigned approximately as follows:
 
-- 40%: Assignments - Code
-- 40%: Assignments - Reflections
-- 20%: Effort, participation and altruism (EPA)
+### 80%: Competency in key skills. 
+
+The competencies needed for this course are listed on the [assignments
+page](assignments/index.html), and can all be found in canvas as well.
+There are three categories of skills: (1) Accessible Media and
+Documents (2) Accessibility Compliance and (3) Disability Awareness
+and Justice. Accessible videos is a "bonus" meaning it can add a
+competency, but won't count against you if you don't do it.
+
+Your grade in each skill category is calculated based on the table below. Your final competency grade is the average of these three categories. You can view your progress on each competency in Canvas. Open up the category to see individual competencies; and click on the competency to see details on whether you are "competent" or "excellent". Further comments on each competency can be found in the grading on the individual assignments where it is assessed.
+![Learning Mastery](assets/img/learningmastery.png){:class="page-picture"}
+
 
-## EPA (Effort, participation and altruism)
+| Outcome Category | Score     |    | 4 (A) | 3.8 (A-) | 3.4 (B+) | 2.8 (B-) | 2.1 (C) | 1.1 (D) | 0 (E) |
+|------------------|-----------|----|-------|----------|----------|----------|---------|---------|-------|
+| Media/Docs       | !Comp     | <= |       |          |          | 1        | 2       | 3       | 4     |
+| (All = 4 )       | Excellent | >= | 4/4   | 3/4      | 2/4      | 1/4      |         |         |       |
+| Compliance       | !Comp     | <= |       |          |          | 1        | 2       | 3       | 4     |
+| (All = 4)        | Excellent | >= | 4/4   | 3/4      | 2/4      | 1/4      |         |         |       |
+| Awareness /      | !Comp     | <= |       |          |          | 1        | 2       |         | 3     |
+| Justice (All=4)  | Excellent | >= | 4/4   | 3/4      | 2/4      | 1/4      |         |         |       |
 
-You can earn "points" for each of the following:
+Note that if even 1 skill in a category is below competence (**!Comp**), the highest possible grade is 2.8 for all skill groups). 
 
-- **Effort:** Attending office hours, lectures, and sections. Keeping up with the discussion board.
-  Demonstrating a good effort on practice quizzes.
-- **Participation:** Asking questions in lecture and on the discussion board, voting on peer instruction
-  questions, interacting with TAs and other students.
-- **Altruism:** Helping others in lecture, during office hours, and on the discussion board.
+Assuming that you are at least competent in all skills, your grade is based on how many skills are excellent versus competent. You have to be excellent in all 4 skills to get a 4.0; at least 3 to get a 3.8; and at least 2 to get a 3.4. 
 
-EPA scores are kept internal to the staff (i.e. not disclosed to students).
+### 10%: Assignment Completion
+Assignment completion is 10% of your grade. This is listed as the "participation" competency for each assignment in canvas. The weight of each assignment is simply the number of weeks long it is, so a longer assignment would contribute more to your assignment completion grade than a shorter one.
 
-## Late Days
+### 10%: Effort
+Your effort grade will reflect your participation in the class across multiple dimensions. Some of these we will track, others you will track. We will consider
+- Whether you participated in discussions and exercises in class (self reported)
+- Whether you participated in discussions outside of class (based on your submissions)
 
-You have **3 free late days which will automatically be applied until they run out**, following which
-each late day will incur a 10% penalty on the assignment that was due. Each homework will **allow up to 2
-late days, after which turn-ins will be given a zero**.
+- Your grade will be calculated as a percentage of the maximum effort. For example, if you fully complete all homework assignments and participated in 80% of reading questions, we would calculate this as (100%+80%)/2=90 points. 
+
+Extra credit on this can also be earned by engaging in other ways, such as helping another student or suggesting improvements to an assignment tor class materials (self reported)
 
 ## Regrade Policy
 
 Reflecting on feedback is one of the most valuable ways you can learn from your mistakes,
 and we encourage you to do so. If you have a question about a grade you received or if you
-feel the grade you received is incorrect, please **email an instructor for an appointment to
+feel the grade you received is incorrect, please **[email an instructor](mailto:{{site.staff_email}}) for an appointment to
 discuss the assignment and your grade in detail**.
 
 It is also possible for the graders to make mistakes. If that happens we certainly would like to
 correct the error. Please note the following:
-
-When you request a regrade, we may look at the entire assessment, homework or reflection. Therefore,
-it is possible for your grade to go either up or down through this process.
-
-- Coding Assignments: Regrade requests for homework assignments must be
-**submitted within one week of when the grade was returned to you**. You must do two things in
-order to request a regrade of a homework (failure to do these two things may result in the
-  regrade not happening):
-  - Reply to the code review comment that is prompting your request of the regrade. You can find
-  your code review comments in your GitLab repository for that assignment.
-  - Send a private message on [Ed]({{site.discussion}}) to the instructors that you are requesting a
-  regrade.
-  - Include a link to the repository in your message and a written summary describing
-  why your work should be reexamined.
-
-- Written Assignments: We will use Gradescope to written assignments exams and manage regrade requests.
-  - Via Gradescope, you should submit any requests separately for each problem with an
-explanation of why you want this problem regraded.
-  - The time limit for such regrade requests will be detailed in the email you receive from Gradescope.
-
-# Academic Conduct
-
-Academic integrity is an important value that we adhere to in this class. For more details on how this will be implemented in this class, please see the [Academic Conduct](academic-conduct.html) page, but in summary:
-- Instructors are expected to respect student privacy, and treat students fairly.
-- You are expected to be honest and forthcoming in your communications.
-- Your work should be appropriate for a school environment.
-- You **may not** copy your code directly from  another student or any other source on the internet.
-- You will be asked, in each reflection, to acknowledge any help you received from another person or
-  internet resource. Additionally it is always good practice to also cite your sources with a comment in
-  your code as well.
-  - Students are expected not to share code/solutions with the broader public, and not to plagiarize or
-  cheat, as described in the [Allen school conduct guidelines](https://www.cs.washington.edu/academics/misconduct).
-
-
-# Other relevant classes to know about
-
-There are a number of classes on campus that teach related concepts
-which you may wish to consider in addition to this one. As of Spring 2020,
-here are the ones we are aware of:
-
-- CSE 154: Web Programming: [Sp 21](https://courses.cs.washington.edu/courses/cse154/21sp/)
-  This course covers languages, tools, and techniques for developing interactive and dynamic web
-  pages. Topics include page styling, design, and layout; client and server side scripting;
-  web security; and interacting with data sources such as databases.
-- [HCDE 310: Interactive Systems Design &
-  Technology](https://www.smunson.com/teaching/hcde310/a17/) This course is a
-  project based course that teaches how to prototype applications on the
-  web using Python that solve human problems or enable new
-  activities. Includes information about APIs and how people interact with them. It
-  differs from CSE 340 in its choice of platform. Additionally, it
-  doesn’t cover the theory of UI programming, nor issues such as
-  accessibility, undo, and so on.
-- [INFO 343: Client side web
-  development](https://info340.github.io/) This is a
-  programming course, and there will be significant overlap between the
-  courses, as INFO 343 also touches on event based programming, output,
-  and accessibility. [CSE 154: Web
-  Programming](https://courses.cs.washington.edu/courses/cse154/21sp/)
-  also covers some related material. However, both are about programming on the web using
-  JavaScript instead of on Android, using Java. In addition, CSE 340
-  covers more of the theory of UI programming and design, similar to
-  HCID 520.
-- [CSE 440: Introduction to
-  HCI](http://courses.cs.washington.edu/courses/cse440/); [441: Advanced HCI](http://courses.cs.washington.edu/courses/cse441/) This is an advanced series of courses for undergraduate
-  seniors. The focus of 440 is less on programming and more broadly on
-  methods for designing, prototyping, and evaluating user interfaces to
-  computing applications, while 441 is an open ended capstone
-  course. These are excellent follow on courses to 340, for a student
-  who wants to go deeper into how to make usable, enjoyable effective
-  interfaces, and how to solve interesting problems with HCI. Related is
-  [CSE 510](http://courses.cs.washington.edu/courses/csep510/), the HCI
-  course for the professional masters program.
-- HCID 520: User Interface Software +
-  Technology ([Wi 17](http://uwdata.github.io/hcid520/17wi/), [Wi 16](http://faculty.washington.edu/ajko/hcid520/) [Wi 19](https://canvas.uw.edu/courses/1256337))
-  This course
-  teaches about user interfaces, including what they are, how they are
-  built, and some inventions in user interface software and
-  technology. There are many similarities between these classes. However HCID 520
-  is only open to [MHCI+D students](https://mhcid.washington.edu/) Masters students.
-- [HCID 521: Prototyping](https://canvas.uw.edu/courses/1128377/assignments/syllabus)
-  This class is for the [MHCI+D students](https://mhcid.washington.edu/)
-  only and focuses on prototyping techniques, not implementation. It
-  covers everything from paper prototyping to physical interfaces to 3D
-  printing.
+- Because this class is competency based, you don't necessarily need a regrade, you just need to show that you have learned this competency in this OR a future assignment. Most competencies show up in more than one place
+- When you request a regrade, we may look at the entire assessment, homework or reflection. Therefore,
+it is possible for to lose a competency as well as gain one in this process.
 
 # Indigenous Land Acknowledgement
 
- The University of Washington acknowledges that we are on sacred land of the first peoples of Seattle, the Coast Salish people, past and present. We honor, with gratitude, the land which touches the shared
- waters of all tribes and bands within the Suquamish, Tulalip and Muckleshoot nations.
-
-
-# Other relevant classes to know about
-
-There are a number of classes on campus that teach related concepts
-which you may wish to consider in addition to this one. As of Spring 2020,
-here are the ones we are aware of:
-
-- CSE 154: Web Programming: [Sp 20](https://courses.cs.washington.edu/courses/cse154/20sp/)
-  This course covers languages, tools, and techniques for developing interactive and dynamic web
-  pages. Topics include page styling, design, and layout; client and server side scripting;
-  web security; and interacting with data sources such as databases.
-- [HCDE 310: Interactive Systems Design &
-  Technology](https://www.smunson.com/teaching/hcde310/a17/) This course is a
-  project based course that teaches how to prototype applications on the
-  web using Python that solve human problems or enable new
-  activities. Includes information about APIs and how people interact with them. It
-  differs from CSE 340 in its choice of platform. Additionally, it
-  doesn’t cover the theory of UI programming, nor issues such as
-  accessibility, undo, and so on.
-- [INFO 343: Client side web
-  development](https://canvas.uw.edu/courses/1118282) This is a
-  programming course, and there will be significant overlap between the
-  courses, as INFO 343 also touches on event based programming, output,
-  and accessibility. [CSE 154: Web
-  Programming](https://courses.cs.washington.edu/courses/cse154/20sp/)
-  also covers some related
-  material. However, both are about programming on the web using
-  JavaScript instead of on Android, using Java. In addition, CSE 340
-  covers more of the theory of UI programming and design, similar to
-  HCID 520.
-- [CSE 440: Introduction to
-  HCI](http://courses.cs.washington.edu/courses/cse440/); [441: Advanced HCI](http://courses.cs.washington.edu/courses/cse441/) This is an advanced series of courses for undergraduate
-  seniors. The focus of 440 is less on programming and more broadly on
-  methods for designing, prototyping, and evaluating user interfaces to
-  computing applications, while 441 is an open ended capstone
-  course. These are excellent follow on courses to 340, for a student
-  who wants to go deeper into how to make usable, enjoyable effective
-  interfaces, and how to solve interesting problems with HCI. Related is
-  [CSE 510](http://courses.cs.washington.edu/courses/csep510/), the HCI
-  course for the professional masters program.
-- HCID 520: User Interface Software +
-  Technology ([Wi 17](http://uwdata.github.io/hcid520/17wi/), [Wi 16](http://faculty.washington.edu/ajko/hcid520/) [Wi 19](https://canvas.uw.edu/courses/1256337))
-  This course
-  teaches about user interfaces, including what they are, how they are
-  built, and some inventions in user interface software and
-  technology. There are many similarities between these classes. However HCID 520
-  is only open to [MHCI+D students](https://mhcid.washington.edu/) Masters students.
-- [HCID 521: Prototyping](https://canvas.uw.edu/courses/1128377/assignments/syllabus)
-  This class is for the [MHCI+D students](https://mhcid.washington.edu/)
-  only and focuses on prototyping techniques, not implementation. It
-  covers everything from paper prototyping to physical interfaces to 3D
-  printing.
+The University of Washington acknowledges the Coast Salish peoples of this land, the land which touches the shared waters of all tribes and bands within the Suquamish, Tulalip and Muckleshoot nations. 
+
+
+
diff --git a/schedule.md b/schedule.md
index b7d88ac67a301a817be522a5d4aeefdbf402c2a9..f48579db74b91930881b603d3218ff97c009f4e2 100644
--- a/schedule.md
+++ b/schedule.md
@@ -1,500 +1,43 @@
-
 ---
 layout: default
+title: Schedule
+description: Class schedule and links to lectures, readings and assignments
 warning: draft
 ---
 
 * TOC
 {:toc}
 
-<!-- ********* Week 1 ********* -->
-
-{: .week}
-# Week 1: What's in an Interface
-
-{: .lecture} Monday 3/30: Why take this course? What is HCI?
-: **Learning Goals** Relevance of class to all of CS
-: **Readings**
-- Watch the video and read section 4.1 [The CS Field Guide to Human Computer Interaction Introduction](https://csfieldguide.org.nz/en/chapters/human-computer-interaction/)
-- Take the class [survey](https://catalyst.uw.edu/webq/survey/bricker/387508)
-
-: **Slides** {% include slide.html title="Introduction to course" loc="wk01/intro.html" %}
-
-{: .lecture} Wednesday 4/1: What is a toolkit?
-: **Learning Goals**  Toolkit User Types; Basic structure of a user interfaces; How this looks in Android; Introduction of Doodle Assignment
-: **Readings**
-
-- [Widget Toolkit](https://en.wikipedia.org/wiki/Widget_toolkit)
-- Watch Engelbart, Cronkite and other videos from {% include slide.html title="Introduction to course" loc="wk01/intro.html" %}
-
-**Slides** {% include slide.html title="Interface Toolkits" loc="wk01/toolkits.html" %}
-
-**Assigned** AS1 [Doodle]({{site.baseurl}}/assignments)
-
-
-{: .lab} Thursday, 4/2: Setting Up Doodle
-: **Learning Goals** Android project structure; Our development environment (Git/GitGrade), Doode
-
-**Preparation for Lab**
-
-* Android Basics:
-  * Download [Android Studio](https://developer.android.com/studio) and [install it](https://developer.android.com/studio/install)
-  * Select the Tools->SDK Manager and make sure you have Android 7.0 or 7.1.1 (Nougat) installed. This is the version of the Android SDK we will use for this class.
-  * Follow [this tutorial](https://developer.android.com/training/basics/firstapp) to create an Android Application.
-  * Continue with the tutorial to also
-  [run your app](https://developer.android.com/training/basics/firstapp/running-app)
-  either on an emulator or on an Android Device.
-
-* Git Setup: [macOS](https://courses.cs.washington.edu/courses/cse154/19au/resources/assets/atomgit/macosx/), [win](https://courses.cs.washington.edu/courses/cse154/19au/resources/assets/atomgit/windows/) (ignore pieces about Atom as we use Android Studio)
-  * Make sure you have git setup on your computer, follow above instructions
-  * If you have never used git before read through [this]({{site.baseurl}}/docs/git.html)
-  and [this (Android Studio ≈ Intellij)](https://courses.cs.washington.edu/courses/cse331/20sp/tools/version-control.html)
-  * Ensure that you can clone from CSE GitLab, (we recommend cloning via SSH
-    but you'll need to [generate a key](https://docs.gitlab.com/ee/ssh/))
-* Supporting Material [Java Refresher]({{site.baseurl}}/docs/java.html); [Git]({{site.baseurl}}/docs/git.html); [331's
-Git resource](https://courses.cs.washington.edu/courses/cse331/20sp/tools/version-control.html)
-* [Java refresher code]({{site.baseurl}}/docs/JavaRefresher.zip)
-* [Java Refresher slides]({{site.baseurl}}/docs/javaRefresher_slides.pdf)
-
-**Day Of**
-
-* **Slides** {% include slide.html title="Getting Started With Android" loc="l01/hello.html" %}
-* **Slides** {% include slide.html title="GitGrade" loc="l01/gitgrade.html" %}
-* **Slides** {% include slide.html title="Doodle" loc="l01/doodle.html" %}
-
-
-{: .lecture} Friday, 4/3: Drawing on the Screen
-: **Learning Goals** How does Android support drawing on the screen; Drawing abstractions; clipping and other transformations
-: **Readings**
-
-* [Using Android Resources](https://www.tutorialspoint.com/android/android_resources.htm)
-* Look at the following Android Documentation
-  * [ImageView](https://developer.android.com/reference/android/widget/ImageView)
-  * [Drawables](https://developer.android.com/guide/topics/graphics/drawables)
-  * [Canvas](https://developer.android.com/reference/android/graphics/Canvas)
-* [Drawing on the Canvas](https://android.jlelse.eu/android-canvas-for-drawing-and-custom-views-e1a3e90d468b)
-* What is a Bounding Box?
-  * Description [Minimum bounding box](https://en.wikipedia.org/wiki/Minimum_bounding_box)
-  * Exercise: [Bounding box in coordinate geometry](https://www.mathopenref.com/coordbounds.html)
-* A beginners guide to implement Android Animations — [Part 1](https://medium.com/@shubham08gupta/a-beginners-guide-to-implement-android-animations-part-1-2-part-series-b5fce1fc85) (2 part series)
-
-**Slides** {% include slide.html title="Drawing Components & Animation" loc="wk01/drawing.html" %}
-
-
-<!-- ********* Week 2 ********* -->
-
-{: .week}
-# Week 2: Output to Me
-
-{: .lecture} Monday, 4/6:  Drawing Interfaces; Animation
-: **Learning Goals** Role of interactor in drawing on the screen, how to use animation to move interactors
-: **Readings and Watchings**
-
-- There is a lot in there and it is a bit of a preview for Friday, but make sure you watch from 6:00-7:00 [Measure Layout Draw](https://youtu.be/4NNmMO8Aykw?t=368) -
-- Transformations in Android (video coming soon)
-- [Introduction to Animation](https://developer.android.com/training/animation/overview)
-- [Property Animation Overview](https://developer.android.com/guide/topics/graphics/prop-animation)
-
-**Slides**: {% include slide.html title="Drawing the interface" loc="wk02/interface-drawing.html" %}
-
-{: .lecture} Wednesday, 4/8: Properties of People I: Visual Perception
-: **Learning Goals** Design implications of people's visual capabilities
-
-**Readings and Watching**
-- [5 Visual-Design Principles in UX](https://www.nngroup.com/articles/principles-visual-design/)
-- [Visual Design Basics](https://www.usability.gov/what-and-why/visual-design.html)
-- [Gestalt Principles](https://www.interaction-design.org/literature/article/the-law-of-similarity-gestalt-principles-1)
-- Theresa-Marie Rhyne - SIGGRAPH University [Applying Color Theory to Digital Media and Visualization"](https://www.youtube.com/watch?v=KJv1N8akoUs) - at least the first 11 minutes or so
-
-**Slides** {% include slide.html title="Properties of People I: Vision" loc="wk02/people-vision.html" %}
-
-{: .lab} Thursday, 4/9: Debugging, Peer Evaluation, Doodle Help
-: **Learning Goals** Support for Creative Work on Doodle; Discussion of and practice evaluating (toy example)
-: **Slides** {% include slide.html title="Debugging, Peer Evaluation and Animation" loc="l02/animation.html" %}
-**Resources**:
- - [Animation Demo (movie)](slides/l02/img/animationDemo.mov)
- - [AnimationDemo.zip](slides/l02/animationPractice.zip)
-
-**Due** (10pm) AS1 [Doodle]({{site.baseurl}}/assignments) code
-
-{: .lecture} Friday 4/10: Introduction to Layout
-: **Learning Goals** Relating layout to the interactor hierarchy
-: **Readings**
-
-- [Layouts (Overview)](https://developer.android.com/guide/topics/ui/declaring-layout)
-- [Building a Responsive UI](https://developer.android.com/training/constraint-layout)
-- [Android - UI Layouts](https://www.tutorialspoint.com/android/android_user_interface_layouts.htm)
-
-**Worksheet** [Layout 1](https://docs.google.com/document/d/1hhFPJBZATrAgWb0pD7S2VZtA6aE2wGKM4wFDISk56sA/edit?usp=sharing)
-: **Slides** {% include slide.html title="Layout" loc="wk02/layout.html" %}
-
-**Assigned**  AS2 [Layout]({{site.baseurl}}/assignments)
-: **Assigned** Quiz 1 (due Sunday): Canvas Practice quiz containing sample questions covering key concepts from Doodle, Properties of People I: Vision, and readings
-
-
-<!-- ********* Week 3 ********* -->
-
-{: .week}
-# Week 3: Present to Me
-{: .lecture} Sunday, 4/12: Peer Evaluation
-: **Assigned** AS1 [Doodle]({{site.baseurl}}/assignments) peer reviews released (look for emails)
-: **Due** Quiz 1
-
-{: .lecture} Monday, 4/13:  Layout II - more layout details
-: **Learning Goal** How is layout accomplished? What is the difference between using XML vs creating
-Views and adding them to the parent?
-
-: **Readings and Watchings**
-- [Android ImageView ScaleType: a Visual Guide](https://thoughtbot.com/blog/android-imageview-scaletype-a-visual-guide)
-- See readings from 4/10
-
-
-: **Slides** {% include slide.html title="More on Layout in Android" loc="wk03/layout-ii.html" %}
-
-{: .lecture} Tuesday, 4/14
-
-: **Due** Peer evaluation of [Doodle]({{site.baseurl}}/assignments)
-
-{: .lecture} Wednesday, 4/15:   Layout: Implementation and Theory
-: **Learning Goals** Under the hood: How is layout accomplished?
-
-: **Readings and Watchings**
-
-- Watch or re-watch: [Measure Layout Draw](https://youtu.be/4NNmMO8Aykw?t=368)
-- Read one of
-  - [How Android Draws Views](https://developer.android.com/guide/topics/ui/how-android-draws)
-  - [Measure… Layout… Draw!](https://medium.com/@britt.barak/measure-layout-draw-483c6a4d2fab)
-  - Deeper details: [https://cheesecakelabs.com/blog/understanding-android-views-dimensions-set/](https://cheesecakelabs.com/blog/understanding-android-views-dimensions-set/)
-
-**Slides** {% include slide.html title="Layout in Android" loc="wk03/layout-algorithm.html" %}
-
-**Due** [Doodle]({{site.baseurl}}/assignments) Reflection
-
-{: .lab} Thursday, 4/16: Support on Layout
-: **Learning Goals** Work through constraint based layout
-
-: **Slides** {% include slide.html title="Layout" loc="l03/layout.html" %}
-
-{: .lecture} Friday, 4/17: AMA, Examlet 1
-: **Examlet 1** Assess your knowledge on Android development and drawing on the canvas
-
-**Slides** {% include slide.html title="AMA, Examlet" loc="wk03/examlet.html" %}
-
-**Due** AS2 [Layout]({{site.baseurl}}/assignments) part 1-2 (for pixel tests)
-
-<!-- ********* Week 4 ********* -->
-
-{: .week}
-# Week 4: Include Everyone
-{: .lecture} Monday, 4/20:  Accessibility
-: **Learning Goals** Learn about the history of accessibility, why it is important, and what problems exist
-: **Readings**
-- [Android Accessibility Overview](https://developer.android.com/guide/topics/ui/accessibility/)
-- [Android Accessibility Guides](https://developer.android.com/guide/topics/ui/accessibility/apps)
-- [Proper Alt Text Writing](https://webaim.org/techniques/alttext/)
-- [Material Design: Assistive Technology](https://material.io/design/usability/accessibility.html#assistive-technology)
-
-: **Slides** {% include slide.html title="Accessibility" loc="wk03/accessibility-and-inclusive-design.pdf" %}
-
-{: .lecture} Wednesday, 4/22: Guest Lecture (Venkatesh Potluri & Anne Ross): Android Accessibility
-: **Learning Goals** Learn about how to make Android apps accessible
-: **Readings** See Monday
-: **Slides**
-  - {% include slide.html title="Accessibility in Practice" loc="wk04/accessibility.html" %}
-  - [340AccessibiltyScanner](340AccessibiltyScanner.pdf)
-
-**Assigned**: AS3 [Accessibility]({{site.baseurl}}/assignments)
-
-
-{: .lab} Thursday, 4/23: Finish Layout & Start Accessibility
-: **Learning Goals** Use the Accessibility Checker
-
-: **Slides**  {% include slide.html title="Layout and Accessibility" loc="l04/accessibility.html" %}
-
-{: .lecture} Friday, 4/24: Event Handling I: Where Events Come from
-: **Learning Goals** Basics of event handling including event types and listeners (callbacks)
-: **Readings**
-- [Comparators](https://tech.willhaben.at/sorting-objects-working-with-java-comparator-5302ab38c21f)
-- [UI Events in Android](https://developer.android.com/guide/topics/ui/ui-events)
-- [Model-View-Controller](https://medium.com/upday-devs/android-architecture-patterns-part-1-model-view-controller-3baecef5f2b6)
-
-**Slides** {% include slide.html title="Event Handling I: Callbacks, Model View Controller, and Events" loc="wk04/events.html" %}
-**Supplemental Files** [person.zip]({{site.baseurl}}/slides/wk04/person.zip)
-
-**Assigned** Quiz 2 (due Sunday): Sample questions covering key concepts from layout
-
-**Due** AS2 [Layout]({{site.baseurl}}/assignments) part 3-5 (code + reflection)
-
-
-<!-- ********* Week 5 ********* -->
-
-{: .week}
-# Week 5: React to me
-{: .lecture} Sunday 4/26:
-: **Due** Quiz 2
-
-{: .lecture} Monday 4/27: Event Handling II: Where Events Go
-: **Learning Goals** How events are dispatched to interactors, importance of interactor hierarchy
-: **Readings**
-- [UI Events](https://developer.android.com/guide/topics/ui/ui-events)
-- [4 Ways To Implement OnClickListener On Android](https://medium.com/@CodyEngel/4-ways-to-implement-onclicklistener-on-android-9b956cbd2928)
-
-
-: **Slides** {% include slide.html title="Event Handling II: Delivery of Events in the Interactor Hierarchy" loc="wk05/event-delivery.html" %}
-**Supplemental Files** [Counter.zip]({{site.baseurl}}/slides/wk05/Counter.zip)
-
-{: .lecture} Wednesday, 4/29: Event Handling III: How Interactors use Events
-: **Learning Goals** Learn how to handle input; How to properly implement a finite state machine in an interactor; Implementation Strategies for Interactors to Handle Events
-: **Readings and Prework**
-- [Custom View Components](https://developer.android.com/guide/topics/ui/custom-components)
-- Download [Counter.zip]({{site.baseurl}}/slides/wk05/Counter.zip) and read through it.
-- Informational only: [Original PPS paper](https://dl.acm.org/doi/abs/10.1145/97243.97252)
-
-: **Slides** {% include slide.html title="Essential Behavior and the use of finite state machines to implement it" loc="wk05/pps-geom.html" %}
-
-{: .lab} Thursday, 4/30: Implementing Interactors
-: **Learning Goals** Get comfortable with finite state machines' implementation in interactors
-
-: **Slides**  {% include slide.html title="State Machines" loc="l05/state.html" %}
-
-**Due**: AS3 [Accessibility]({{site.baseurl}}/assignments)
-
-{: .lecture} Friday, 5/1: Examlet 2, Event Handling IV: Essential Geometry
-: **Learning Goals** ColorPicker intro, Create a non-rectangular interactor, Essential Geometry and Essential Behavior
-: **Reading**
-
-- [Custom View Components](https://developer.android.com/guide/topics/ui/custom-components)
-
-<!-- - **Slides** {% include slide.html title="Review Slides Touching on Key Concepts from Prior Weeks" loc="wk05/review.html" %} -->
-**Slides** {% include slide.html title="Summary of Toolkit Architecture" loc="wk05/whole-toolkit.html" %}
-
-**Examlet 2** Assess your knowledge on layout theory and practice in Android
-
-**Assigned** AS4 [Color Picker]({{site.baseurl}}/assignments)
-
-
-<!-- ********* Week 6 ********* -->
-
-{: .week}
-# Week 6: Beyond Touch: The Larger World
-
-{: .lecture} Monday, 5/4: Context Awareness - Jen Mankoff, Guest Lecture
-: **Learning Goals** Assumptions about phone use and examples of context aware applications
-: **Readings**:
-- [Calm Tech, Then and Now](http://www.johnseelybrown.com/calmtech.pdf)
-- [The Coming Age of Calm Technology](https://pdfs.semanticscholar.org/ed7f/cec667281ab1f4ca4ac10239582cb4345e0a.pdf?_ga=2.248923214.838018675.1588119518-1260861436.1586456410)
-
-: **Slides** {% include slide.html title="The Sensing Phone" loc="wk06/context.html" %}
-
-{: .lecture} Wednesday, 5/6: Physical Computing
-: **Learning Goals** Learn a little about 3D Printing and extending phones for sensing
-: **Readings and Watchings**
-- Lisa Harouni Ted Talk: [A Primer on 3D Printing](https://www.ted.com/talks/lisa_harouni_a_primer_on_3d_printing)
-- [Powder Printing](https://www.youtube.com/watch?v=kBHsfNDsbCs&feature=youtu.be&t=29s)
-- [Liquid Printing](https://www.popsci.com/new-liquid-based-3d-printer-takes-minutes-not-hours/)
-
-: **Slides** {% include slide.html title="Physical Computing" loc="wk06/3dprinting.html" %}
-
-{: .lab} Thursday, 5/7: Bundling + Color Picker help
-: **Learning Goals** What're bundles? What do they do? Let's find out!
-
-: **Slides**  {% include slide.html title="How to use Bundle" loc="l06/bundling.html" %}
-
-{: .lecture} Friday, 5/8: Properties of People II: Motor Behavior
-: **Learning Goals** Learn the theory driving good interactor design; Motor behavior basics and
- implications for design including Fitts' law and Guiard's theory of bimanual input
-: **Readings**
-- [Fitts' Law](https://en.wikipedia.org/wiki/Fitts%27s_law)
-- [Video](https://www.youtube.com/watch?v=kly2QA1bFc8)
-
-: **Slides** {% include slide.html title="Properties of People II: Motor Control" loc="wk06/people-motor.html" %}
-
-**Assigned** Quiz 3 (due Wednesday 5/13): Sample questions covering key concepts from accessibility and color picker assignments
-
-
-<!-- ********* Week 7 ********* -->
-
-{: .week}
-# Week 7: Design Principles
-
-{: .lecture} Monday, 5/11:Predicting and Evaluating Interactor Efficiency
-: **Learning Goals** Apply design tips we've discussed to comparing the efficiency of different variations on interactors; Learn about wide variety of solutions for selection; Learn about Qualitative and Quantitative ways of testing theories
-
-: **Slides** {% include slide.html title="Predicting and Evaluating Interactor Efficiency" loc="wk07/menus.html" %}
-
-**Assigned** AS5 [Menus]({{site.baseurl}}/assignments)
-
-**Due** AS4 [Color Picker]({{site.baseurl}}/assignments) code and reflection
-
-{: .lecture} Wednesday, 5/13: Application Design Principals
-: **Learning Goals** Mental models, gulf of execution, gulf of evaluation
-**Readings**:
-- [Mental Models](https://www.nngroup.com/articles/mental-models/)
-- [The Two UX Gulfs: Evaluation and Execution](https://www.nngroup.com/articles/two-ux-gulfs-evaluation-execution/) (also a short article [here](https://www.educative.io/edpresso/gulf-of-execution-and-gulf-of-evaluation))
-- [The Seven Stages of Action](https://www.guerillagirl.de/2017/03/18/seven-stages-of-action-don-norman/).
-At least watch these two videos
-  - [The Seven Stages of actions](https://youtu.be/n4fCHYbRcKw&feature=emb_logo)
-  - [It's not you. Bad Doors are everywhere](https://www.youtube.com/watch?v=yY96hTb8WgI&feature=emb_logo)
-
-: **Slides** {% include slide.html title="Application Design Principals" loc="wk07/interaction.html" %}
-
-**Due** Quiz 3
-
-{: .lab} Thursday, 5/14: Designing Menus
-: **Learning Goals** Help with Menus Assignment; Revisiting key concepts
-
-: **Slides**  {% include slide.html title="Getting started with Menus" loc="l07/menus-lab.html" %}
-
-{: .lecture} Friday, 5/15: Examlet 3, Reasoning from Data
-: **Learning Goals** Principals of and Problems with Behavior Change
-**Readings**
-- [Dopamine, Smartphones & You: A battle for your time](http://sitn.hms.harvard.edu/flash/2018/dopamine-smartphones-battle-time/)
-- [Science Of Persuasion](https://www.youtube.com/watch?v=cFdCzN7RYbw) (Optional)
-
-: **Slides** {% include slide.html title="Behavior Change with Mobile Devices" loc="wk07/behavior-change.html" %}
-
-**Examlet 3** Assess your knowledge on key concepts from accessibility and color picker
-
-
-
-<!-- ********* Week 8 ********* -->
-
-{: .week}
-# Week 8: Understand Me
-
-{: .lecture} Monday, 5/18:  Studying People
-: **Learning Goals** Understand concepts in data pipeline in an applied fashion including what is
-our hypothesis, how this translates into study design and method, considerations when interacting
-with users, data collection cleaning and analysis, some statistical methods, and how we draw conclusions
-**Readings**
-- [Some Social Scientist Are Tired of Asking for Permission](https://www.nytimes.com/2017/05/22/science/social-science-research-institutional-review-boards-common-rule.html)
-
-: **Slides** {% include slide.html title="Quantitative Study Design/Running" loc="wk08/studies.html" %}
-
-
-
-{: .lecture} Wednesday, 5/20: Using data to influence people
-: **Learning Goals** Data analysis and how charts and statistics can be used and misused
-
-: **Slides** {% include slide.html title="Analyzing Data" loc="wk08/studies2.html" %}
-
-**Assigned** AS5 [Menus]({{site.baseurl}}/assignments) part 5-6
-
-{: .lab} Thursday, 5/21: Sample Menu Data Analysis
-: **Learning Goals** Evaluating Human Subjects Experiments
-
-: **Slides** {% include slide.html title="Menus Data Analysis" loc="l08/menus-data.html" %}
-
-**Due** AS5 [Menus]({{site.baseurl}}/assignments) part 1-4
-
-
-{: .lecture} Friday, 5/22: Undo
-: **Learning Goals** Theory and implementation of Undo
-
-: **Slides** {% include slide.html title="Undo" loc="wk08/undoSlides.html" %}
-
-**Assigned** AS6 [Undo]({{site.baseurl}}/assignments)
-: **Assigned** Quiz 4 (due <del>Sunday</del>Monday): Covering important concepts from interactor implementation, accessibility and Fitts' Law
-
-<!-- ********* Week 9 ********* -->
-
-{: .week}
-# Week 9: Undo Me
-
-{: .lecture} Monday, 5/25
-: **Due** Quiz 4
-
-{: .holiday} Monday, 5/25: Memorial Day
-: **Due** AS5 [Menus]({{site.baseurl}}/assignments) part 5-6
-
-{: .lecture} Wednesday, 5/27:  Interaction Programming in Web Development
-: **Learning Goals** See how Web Development follows many of the same Interaction Programming principles we've been learning all quarter!
-**Readings**
-- [Spot the Heron Case Study](https://gitlab.cs.washington.edu/cse340-20sp-students/cse340-spottheheron)
-- [What is HTML?](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started)
-- [What is CSS?](https://developer.mozilla.org/en-US/docs/Learn/CSS/First_steps/How_CSS_works)
-- [Intro to Javascript](https://javascript.info/intro)
-- [Difference between JS and Java](https://stackoverflow.com/questions/245062/whats-the-difference-between-javascript-and-java)
-
-: **Slides** {% include slide.html title="Interaction Programming in Web Development" loc="wk09/web" %}
-
-
-{: .lab} Thursday, 5/28: Work on Undo
-: **Slides** {% include slide.html title="Getting started with Undo" loc="l09/undo-lab.html" %}
-
-{: .lecture .tbd} Friday, 5/29: Examlet 4, Machine Learning
-: **Learning Goals** Using Machine Learning in Interactive Systems
-**Readings and Watchings**
-- [The Risk of Machine-Learning Bias (and How to Prevent It)](https://sloanreview.mit.edu/article/the-risk-of-machine-learning-bias-and-how-to-prevent-it/)
-- [The Basics of Machine Learning](https://sloanreview.mit.edu/article/the-risk-of-machine-learning-bias-and-how-to-prevent-it/)
-
-: **Slides** {% include slide.html title="Mobile Machine Learning" loc="wk09/ml.html" %}
-
-**Examlet 4** (Due by 10pm) Assess your knowledge on key concepts menus, application design principles, and properties of people II.
-
-
-<!-- ********* Week 10 ********* -->
+{: .module} # Module 1: Week 1 
+: 
 
 {: .week}
-# Week 10: Assess Me
-
-{: .lecture} Monday, 6/1: Interaction Programming in Flutter
-: **Learning Goals** See how Flutter follows many of the same Interaction Programming principles we've been learning all quarter!
-**Readings**
-- [What is Flutter?](https://flutter.dev/docs/resources/technical-overview) up to "try it"
-- Optional additional: the “aggressive composability” [Inside Flutter](https://flutter.dev/docs/resources/inside-flutter)
-
-**Slides** [Interaction Programming in Flutter](https://docs.google.com/presentation/d/18Ma_vUkgWPBHFQ9KWoC3jrcDZhp3f9lzmVYQcl7zHOM/preview?slide=id.p)
+# Week 1: Topic
 
+{% details Learning Goals %} 
+list of learning goals
+{% enddetails %}
 
-{: .lecture} Wednesday, 6/3:  Heuristic Evaluation
-: **Learning Goals** Learn about a quick way to get feedback on the quality of your application,
-particularly good for focused tasks on screens.
-**Readings**:
-- [Usability Heuristics](https://csfieldguide.org.nz/en/chapters/human-computer-interaction/usability-heuristics/)
+{% details Class Plan %} 
 
-**Slides** {% include slide.html title="Heuristic Evaluation" loc="wk10/heuristic" %}
-
-**Due** [Undo]({{site.baseurl}}/assignments)
-
-{: .lab} Thursday, 6/4:  Heuristic Eval of Undo App
-: **Learning Goals** Execute a Heuristic Eval (start in Lab)
-
-:  **Slides** {% include slide.html title="Heuristic Evaluation" loc="l10/lab-heuristic.html" %}
-
-**Due** (16-Mar): Heuristic Eval Reflection
-
-{: .lecture} Friday 6/5:Guest Lecture: Implementing Secure & Private Mobile Apps
-: **Learning Goals** Implementing Secure & Private Mobile Apps
-**Readings**
-- [Android Security Tips](https://developer.android.com/training/articles/security-tips)
-- [Cryptography](https://developer.android.com/guide/topics/security/cryptography)
-
-
-: **Slides** {% include slide.html title="Secure Android Application Development" loc="wk09/cse340-guestlecture-june5.pdf" %}
-**Assigned** Quiz 6 (due Sunday): Sample questions covering key concepts from undo and heuristic evaluation
-
-<!-- ********* Finals Week ********* -->
-
-{: .week}
-# Week 11: Final-ly
+{: .topic} [timing] [name]
+: **Slides** {% include slide.html title="Introduction to course" loc="introduction.html" %}
 
-{: .exam} 6/8: Final Reflection Due (in lieu of Final Exam)
+{: .break}  [timing] Break
+: Break / Food 
 
-: **Due** [Undo]({{site.baseurl}}/assignments/undo) final reflection
-: **Due** Quiz 6
 
-<!-- Things cut from the course that could be added back: -->
+{: .activity} Skill Goal: [describe goal]
+: **In class Exercise** [describe exercise
+: **Small Group Discussion** How would you implement this in your workplace? ([post]({{site.discussion}}/TBD))
 
-<!-- {: .lecture} TBD Augmented Reality -->
-<!-- : **Slides** {% include slide.html title="Augmented Reality on the phone" loc="wk08/ar.html" %} -->
-<!-- some key things you need to do to implement Sensing, discussion of the context awareness assignment -->
+{% enddetails %}
 
-<!-- Deeper introduction to Animation -->
 
-<!-- Advanced Layout Concepts -->
-<!-- : **Learning Goals** Using tabs, lenses, and so on); How to make use of the Android Layout Libraries Effectively -->
-<!-- : {: .tbd} **Slides**: Advanced Layout -->
+{% details Preparation for next week  %}
+{: .homework} [link to homework]
+{: .homework} Readings for next week 
+- **Required: Reading** 
+   - details
+{% enddetails %}
 
-<!-- : **Learning Goals** Using machine learning to reason from mobile data -->
-<!-- : **Slides** {% include slide.html title="Machine learning on mobile devices" loc="wk10/ml.html" %} -->
diff --git a/script/deployslidepdf b/script/deployslidepdf
new file mode 100755
index 0000000000000000000000000000000000000000..6209db498e1799409cda6b2a0ac1e0fabd8293d6
--- /dev/null
+++ b/script/deployslidepdf
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+set -e
+
+shopt -s globstar
+
+apt-get update
+apt-get install -y \
+    ca-certificates \
+    fonts-liberation \
+    libappindicator3-1 \
+    libasound2 \
+    libatk-bridge2.0-0 \
+    libatk1.0-0 \
+    libc6 \
+    libcairo2 \
+    libcups2 \
+    libdbus-1-3 \
+    libexpat1 \
+    libfontconfig1 \
+    libgbm1 \
+    libgcc1 \
+    libglib2.0-0 \
+    libgtk-3-0 \
+    libnspr4 \
+    libnss3 \
+    libpango-1.0-0 \
+    libpangocairo-1.0-0 \
+    libstdc++6 \
+    libx11-6 \
+    libx11-xcb1 \
+    libxcb1 \
+    libxcomposite1 \
+    libxcursor1 \
+    libxdamage1 \
+    libxext6 \
+    libxfixes3 \
+    libxi6 \
+    libxrandr2 \
+    libxrender1 \
+    libxss1 \
+    libxtst6 \
+    lsb-release \
+    wget \
+    xdg-utils
+
+npm install decktape
+
+bundle exec jekyll build --config _config_production.yml -d remarkpdf -b "$(pwd)/remarkpdf"
+
+cd remarkpdf
+
+for html in slides/**/*.html; do
+    if [[ "$html" == *"unused"* ]]; then
+        continue
+    fi
+    set +e
+    $(npm bin)/decktape remark --chrome-arg=--disable-web-security --chrome-arg=--no-sandbox "$html" "../public/$html.pdf"
+    set -e
+done
+
+cd ../
diff --git a/slides/wk01/img/intro/nisha.png b/slides/img/intro/arun.png
similarity index 100%
rename from slides/wk01/img/intro/nisha.png
rename to slides/img/intro/arun.png
diff --git a/slides/wk01/img/intro/kavi.png b/slides/img/intro/kavi.png
similarity index 100%
rename from slides/wk01/img/intro/kavi.png
rename to slides/img/intro/kavi.png
diff --git a/slides/wk01/img/intro/mankoff.jpg b/slides/img/intro/mankoff.jpg
similarity index 100%
rename from slides/wk01/img/intro/mankoff.jpg
rename to slides/img/intro/mankoff.jpg
diff --git a/slides/img/people.png b/slides/img/people.png
new file mode 100644
index 0000000000000000000000000000000000000000..17b8aee2bcff499992843c5bbe1ecae36952ea00
Binary files /dev/null and b/slides/img/people.png differ
diff --git a/slides/introduction.html b/slides/introduction.html
new file mode 100644
index 0000000000000000000000000000000000000000..cd35ae30cba26ecb09ec7bc95d0a46b77d49a51d
--- /dev/null
+++ b/slides/introduction.html
@@ -0,0 +1,173 @@
+---
+layout: presentation
+title: Syllabus --Week 1--
+description: Introductory slides about class structure
+class: middle, center, inverse
+---
+background-image: url(img/people.png)
+
+.left-column50[
+# Future of Access Technologies: Syllabus
+
+{{site.classnum}}, {{site.quarter}}
+]
+
+---
+# Course learning goals:
+
+.right-column[
+## Access Basics
+How do we build accessible systems and interfaces?
+- Week 1: Ways of thinking about and designing for accessibility
+- Week 2: How we assess whether technology is accessible
+- Week 3: Accessible needfinding and evaluation
+]
+---
+# Course learning goals:
+
+.left-column[
+## Access Basics]
+.right-column[
+## Second Wave Accessibility
+How do we account for access in all of today's technologies?
+- Multi person systems
+- Mobile systems
+- Data Equity: Visualization and Machine Learning
+- Making Accessibility: Fabrication and IOT 
+- AR/VR 
+- ...
+]
+
+---
+
+# Course learning goals:
+
+.left-column[
+## Access Basics
+## Second Wave Access
+]
+
+## Third Wave Accessibility
+How does technology impact access in all the spaces where disabled people are present?
+
+- Intersectionality with Race, Gender & other identities
+- Sustainability
+- Housing, Unhoused, and Incarcerated 
+- Healthcare technology & reproductive justice
+- Higher Education
+- ...
+
+---
+# Where to find what
+
+The class is on the [web]({{site.baseurl}}/index),
+  but we have used iframes to connect this to
+  [Canvas]({{site.canvas}}). We try to interlink
+  everything as much as possible.
+
+- Class discussions and all contact with instructors should happen
+either in office hours or through a [class discussion board]({{site.discussion}}) or [staff mailing list]({{site.staff_email}})
+- You can also request appointments for further help
+
+---
+#  Syllabus: Summary of expectations and values (1/2)
+
+- **Sharing**: Yes, but don't copy
+- **Accessibility**: This course is designed to be accessible
+- **Inclusivity**: An important value in this class, and in HCI!
+- **Language**: I am Jen, or Dr. Mankoff
+- **Respect**: This class is a compact between us based on respect
+
+---
+#  Syllabus: Summary of expectations and values (2/2)
+
+- **Healthy Environment**: Your health/mental health are important and we have tried to
+structure the class to support you (e.g. up to 5  late days without questions asked).
+If you need larger accommodations for any reason, consider working with
+[DRS](https://depts.washington.edu/uwdrs/) as well as us. 
+
+--
+
+- **Academic Integrity**: A course value and requirement See our [Academic Conduct]({{site.baseurl}}/academic-conduct) page for more details
+
+---
+# More on Academic Integrity
+
+Don't plagiarize. If you use someone else's text, quote them and reference them. 
+
+In addition to being expected based on UW policy, this is a form of [*Citational Justice*](nature.com/articles/d41586-022-00793-1)
+ and thus an important xepression of disability justice values in our class. Therefore
+- If you plagiarize you will receive a 0 on participation for that assignment
+- If you plagiarize on any assignment, you will receive a non-competent on your disability justice competency 
+
+---
+# Is this class hybrid?
+
+**No**, it is intended to be attended, in person, by everyone in the class
+
+**Yes**, because:
+- It is possible to be full remote *with permission of the instructor*
+- It is expected you will be remote in any particular week for the following reasons:
+   - If you have cold or flu symptoms or suspect you have COVID
+   - If you have caregiving obligations 
+   - If you have mental health concerns or any accessibility needs that are best met by being remote
+   
+---
+# How do I participate remotely?
+
+1. You watch the whole video for the class you are remote for. This does *not* have to be done live
+2. You contribute an Ed post to every small group discussion linked to in the [class schedule]({{site.baseurl}}/schedule)
+3. You fill out the remote participation survey portion of the [class participation survey](https://forms.gle/qcjc5fSNSAVeE5pK9)
+
+---
+# Competency Based Grading
+
+We have a set of core learning goals in this class. If you learn them all, you get an A. Competencies make up 80% of your grade.
+
+--
+
+Assignment completion is also required. This is 10% of your grade. You have up to four late days for assignment completion, and this only looks at whether you did everything, not how well you did it.
+
+--
+Finally, Effort is 10% of your grade. This includes 
+- Participation in discussion and exercises (self reported)
+- Participation in discussion outside of class (based on submissions to Ed)
+
+---
+# More detail on competencies
+
+This approach was selected because it prioritizes *accessibility* and *justice* and *flexibility* for students.
+
+You can find all of the competencies under "[Outcomes](https://canvas.uw.edu/courses/1619674/outcomes)" on canvas
+
+They fall into three categories
+- Accessibility Compliance (e.g. accessibility checking)
+- Accessible Media and Documents (e.g. writing alt text, presenting accessibly)
+- Disability Awareness and Justice (How you pick problems and do disability centered design)
+
+???
+
+This is the first time I'm grading this way, so we may make adjustments based on how it goes. Feedback welcome.
+---
+# How Competencies Translate to Grades
+On any competency, you may be rated as below competent, competent or excellent
+
+In each category (accessibility compliance; accessible media and documents; and disability awareness and justice) your grade is calculated based on how many "excellent" and "competent" scores you have
+ - all execellents in all categories is a 4.0; 
+ - 1 excellent in all categories is a 3.2. 
+ - 1  not competent in any competency in a category is 3.2
+ - More not competents drops your grade further
+ 
+After each category is graded, these grades are averaged.
+
+---
+#  Programming Expectations
+
+- Programming is  only required the final project, which you define
+- As such, there are no specific language or platform requirements
+- Small programming exercises may also happen in class  using languages such as JavaScript and python. Contact the instructors if you have any concerns about this.
+
+---
+# Field Trip
+
+## [Assignments]({{site.baseurl}}/assignments)
diff --git a/slides/l01/doodle.html b/slides/l01/doodle.html
deleted file mode 100644
index f6897cd621f3f475706e17c1daa9afb168725947..0000000000000000000000000000000000000000
--- a/slides/l01/doodle.html
+++ /dev/null
@@ -1,309 +0,0 @@
----
-layout: presentation
-title: Introduction to Doodle Assignment
-description: Introduction to Doodle Assignment
-class: middle, center, inverse
----
-# CSE 340 Lab 1: Doodle (Spring 2020)
-
-## Introduction to Doodle
-
-.title-slide-logo[
-![:img Android Logo](img/android-logo.png)
-]
----
-
-.left-column[
-## **Library** (and Inheritance Hierarchy)
-<br>
-<br>
-<br>
-<div class="mermaid">
-    graph LR
-    Activity[Activity]
-    Activity -->|...| Doodler[Doodler]
-    Doodler --> Part1[Part1]
-    Part1 --> Part1Activity[Part1Activity]
-    Part1 --> Part2Activity[Part2Activity]
-
-    classDef yellow font-size:19px,text-align:center
-    classDef green font-size:19px,text-align:center
-
-    class Part1,Part1Activity,Part2Activity yellow
-    class Activity,Doodler green
-</div>
-]
-
-.right-column[
-## Android Classes we are using in Doodle and how they relate
-
-- Doodler (which you don't edit) *extends* [Activity](https://developer.android.com/reference/android/app/Activity)
-- Part1 *extends* Doodler. It implements *helper methods* for Part1Activity and
-Part2Activity.
-- Part1Activity and Part2Activity both extend Part1
-]
----
-layout:none
-
-.title[Running Sample Code]
-.body[
-When you accept the assignment on GitGrade, a repository containing the starter code is generated for you on CSE
-GitLab. You **MUST** work within this assignment, as it will be turned in via GitGrade when it is due.
-
-Please clone and use the repository and commit and push your work regularly.
-Not only will doing so protect your code, but it will also allow course staff
-to look at your code and it will allow you to easily pull any changes we make
-to the assignment source.You can find instructions on setting up and maintaining
-a forked repository [here](https://help.github.com/en/articles/working-with-forks).
-]
----
-## Cloning Doodle
-
-.left-column[
-You can find your unique repo by the notification email or by going to [GitLab](https://gitlab.cs.washington.edu) or via
-the [GitGrade](https://gitgrade.cs.washington.edu) interface.
-]
-
-.right-column[
-![:img Android Studio splash screen, 30%](img/doodle-clone-1.png)
-![:img Android Studio clone dialog, 30%](img/doodle-clone-2.png)
-]
-
----
-.title[Open project in Android Studio]
-.body[
-- Run configurations should be automatically imported from Gradle
-- If not, `build` should trigger an import
-- Run with â–º
-- Connect an android device by USB or create a new virtual device
-- If by USB, debugging must be enabled on the device
-]
----
-.title[Implementing `addImage`]
-.body[
-```java
-private ImageView addImage(FrameLayout doodleView, String imageName, Float x, Float y, int size);
-```
-
-### Params:
-- `doodleView`: Canvas in which to render the image.
-- `imageName`: Filename of image to draw in `res/drawable`.
-]
---
-.body[
-- `x`: Horizontal distance from top-left corner of canvas to top-left of image.
-- `y`: Veritcal distance from top-left corner of canvas to top-left of image.
-- `size`: Width and height of rendered image, in pixels.
-]
-
----
-.title[Implementing `addImage`]
-.body[
-### Returns:
-- An `ImageView` which has been added to the canvas.
-]
-
----
-.title[Implementing `addImage`]
---
-.body[
-Break down into component steps, look up documentation, and implement
-
-1) Create `ImageView`
-]
---
-.body[
-2) Add new view to canvas
-]
---
-.body[
-3) Position and set view size
-]
---
-.body[
-4) Set view contents
-]
----
-.title[Implementing `addImage`]
-.body[
-```java
-private ImageView addImage(FrameLayout doodleView, String imageName, Float x, Float y, int size) {
-// Create ImageView and add it to doodleView.
-ImageView image = new ImageView(this);
-// Add image to doodleView
-// Set image size and position
-// Set image contents using filename
-return image;
-}
-```
-]
----
-.title[Implementing `addImage`]
-.body[
-```java
-private ImageView addImage(FrameLayout doodleView, String imageName, Float x, Float y, int size) {
-// Create ImageView and add it to doodleView.
-ImageView image = new ImageView(this);
-// Add image to doodleView
-doodleView.addView(image);
-
-// Set image size and position
-
-// Set image contents using filename
-return image;
-}
-```
-]
----
-.title[Implementing `addImage`]
-.body[
-```java
-private ImageView addImage(FrameLayout doodleView, String imageName, Float x, Float y, int size) {
-// Create ImageView and add it to doodleView.
-ImageView image = new ImageView(this);
-// Add image to doodleView
-doodleView.addView(image);
-
-// Set image size
-image.getLayoutParams().height = size;
-image.getLayoutParams().width = size;
-
-// Set image position ?
-
-// Set image contents using filename
-return image;
-}
-```
-]
-
----
-.title[Breakout Room Discussion]
-.body[
-
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/d8jYLjVJq9Lp6MlCMl0XZ?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
-
-]
-
-<!--
-.title[Implementing `addImage`]
-.body[
-```java
-private ImageView addImage(FrameLayout doodleView, String imageName, Float x, Float y, int size) {
-// Create ImageView and add it to doodleView.
-ImageView image = new ImageView(this);
-doodleView.addView(image);
-
-image.getLayoutParams().height = size;
-image.getLayoutParams().width = size;
-image.setX(x);
-image.setY(y);
-
-// Set image contents using filename
-return image;
-}
-```
-]
--->
-
----
-.title[Implementing `addImage`]
-.body[
-```java
-private ImageView addImage(FrameLayout doodleView, String imageName, Float x, Float y, int size) {
-// Create ImageView and add it to doodleView.
-ImageView image = new ImageView(this);
-// Add image to doodleView
-doodleView.addView(image);
-
-// Set image size
-image.getLayoutParams().height = size;
-image.getLayoutParams().width = size;
-
-// Set image position ?
-
-// Set image contents using filename
-int resID = getResources().getIdentifier(imageName, "drawable", getPackage());
-image.setImageResource(resID);
-return image;
-}
-```
-]
-
----
-.title[Android Debugging Tips]
-.body[
-
-Resource: [https://developer.android.com/studio/debug](https://developer.android.com/studio/debug)
-
-]
-
-<!---
-## `ValueAnimator`
-
-- Keeps track of the animation's timing (how long its been running and current value of property)
-
-- Contains a `TimeInterpolator` that defines the type of interpolation for the value over time
-
-- Contains a `TypeEvaluator` that figures out how to calculate values for the property being animated
-
-```java
-ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f);
-animation.setDuration(1000);
-// Starts the animation
-animation.start();
-// TODO: need to listen for updates to get the returned value
-```
--->
-<!--
-.title[How do we use pacing functions for this?]
-.body[
-![:img Picture of a curve transforming motion over time to create a pacing
-effect, 40%](img/pacing.png)
-
-- Time normalized with respect to animation interval (0...1)
-- Normalized time is transformed by pacing function (0…1)
-- Paced value is then fed to curve function to get final value
-
-] -->
-<!--
-.title[XML shown in class]
-.body[
-```xml
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <objectAnimator android:propertyName="x" android:valueTo="100" />
-</set>
-```
-]
--->
-<!--
-```java
-package com.example.myapplication;
-//imports...
-
-public class MainActivity extends AppCompatActivity {
-@Override
-protected void onCreate(Bundle savedInstanceState) {
-super.onCreate(savedInstanceState);
-ImageView view = new ImageView(this);
-setContentView(view);
-
-Bitmap bitmap = Bitmap.createBitmap(100,100, Bitmap.Config.ARGB_8888);
-view.setImageBitmap(bitmap);
-Canvas c = new Canvas(bitmap);
-Paint p = new Paint();
-c.drawCircle(10,10,5,p);
-
-ObjectAnimator anim = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f);
-anim.setDuration(2000);
-anim.start();
-
-Animator anim2 = (Animator) AnimatorInflater.loadAnimator(this,
-R.animator.sample);
-anim2.setTarget(view);
-anim2.setDuration(2000);
-anim2.start();
-}
-}
-```
--->
\ No newline at end of file
diff --git a/slides/l01/gitgrade.html b/slides/l01/gitgrade.html
deleted file mode 100644
index a6c9f64a35133b1599bedcf121e5a557f53b2b55..0000000000000000000000000000000000000000
--- a/slides/l01/gitgrade.html
+++ /dev/null
@@ -1,48 +0,0 @@
----
-layout: presentation
-title: Lab 1 GitGrade Slides
-description: Introduction to GitGrade and accepting the first assignment
-class: middle, center, inverse
----
-
-# CSE 340 Lab 1: GitGrade (Spring 2020)
-
-## Introduction to course infastructure
-![:img GitGrade Logo, 20%](img/gitgrade_square.png)
-
----
-## What is GitGrade?
-
-GitGrade is the software we use to manage and grade programming assignments.
-
-## Why is it relevant to you?
-
-Because you will use GitGrade to `accept` the assignment, in order to generate a GitLab repository with starter code.
-
-You will also `turn-in` the assignment using GitGrade by registering a commit as your submission.
-
----
-## What are we doing with it today?
-
-We're going to `accept` the first assignment (`as1-doodle`) and clone the generated repository.
-
-Start by navigating to
-[https://gitgrade.cs.washington.edu/student/assignment/116](https://gitgrade.cs.washington.edu/student/assignment/116).
-This link is available on the course website, on the `Doodle` assignment page.
-
-You will need to login with your CSE GitLab credentials.
----
-## Accepting the assignment
-
-Accept the assignment, and navigate to the generated GitLab repository of the name
-`cse340-20wi-students/as1-doodle-NETID`
-
-![:img screenshot of GitLab accept assignmet page with a large button labeled "Accept Assignment",
-90%](img/accept-screencap.png)
-
----
-## Turning in the assignment
-- Through GitGrade, link on the Doodle page on the course website (accept link + `/turnin`)
-- Recommended to visit the turnin page ahead of time to read the **nuances and details**
-- Late Day Policy: 3 late days, no partial usage. Applied whenever something is turned in late until you run out.
-- If something is late, and you have no late days: `score -= (10% * unexcused days late)`
\ No newline at end of file
diff --git a/slides/l01/hello.html b/slides/l01/hello.html
deleted file mode 100644
index 46a2d2e3d1c0c31bf37ff6dc7127ebf1a703e268..0000000000000000000000000000000000000000
--- a/slides/l01/hello.html
+++ /dev/null
@@ -1,216 +0,0 @@
----
-layout: presentation
-title: Lab 1 Slides
-description: Lab project--Hello World--
-class: middle, center, inverse
----
-
-# CSE 340 Lab 1 (Spring 2020)
-## Week 1: Getting Started With Android Development
-
-.title-slide-logo[
-![Android Logo](img/android-logo.png)
-]
-
----
-
-## Course Objectives
-- Practical applications for learnings in lecture
-
-
-- Understand design considerations when making mobile apps
-
-
-- Design and implement basic Android applications
-
-
-- Debugging in Java and for Android
-
----
-
-## Lab 1 Objectives
-
-- Introduce the building blocks of Android applications
-
-
-<!-- - Obtain the course repository -->
-
-
-- Explore an Android project folder
-
-
-- Getting the first part of the Doodle started
-
-
-- Show some basic Android debugging techniques
-
----
-## Android Applications
-
-__Components__
-
-- Activity
-- Service
-- Broadcast Receiver
-- Content Providers
-
-__Intents__
-
-- Launch components (and provide them with data)
-- Not limited to components of the same app
-- Meaning: your components can be started by intents from other applications
-
-
----
-## Activity
-[`android.app.Activity`](https://developer.android.com/reference/android/app/Activity)
-
-- Represents a single interface
-
-- Example: Activities for Gmail App
-- Inbox, Message Compose, Spam Folder, etc.
-
-- Activities can be started by other applications, if desired
-- E.g., sharing a photo by email starts Gmail's Message Compose activity
-
----
-## Activity
-
-.center[
-![:img Activity Lifecycle, 40%](img/activity_lifecycle.png)
-]
-
----
-## Service
-[`android.app.Service`](https://developer.android.com/reference/android/app/Service)
-
-
-- Entry point for background processes
-
-
-- Example: Spotify's player activity uses a service to play music
-- Could be done by activity alone
-
-- Use of a service allows music to continue when player activity is no longer in the foreground
-
-- Services may be killed and restarted as required by the OS
-- A persistent service such as music playback may use a persistent notification to prevent this
-
----
-## Broadcast Receivers
-[`android.content.BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver.html)
-
-
-- Entry point for events outside of regular userflow
-
-
-- Example: Alarms
-- Application schedules callback with OS in 10 minutes
-
-- In the meantime, the application can be killed
-
-- 10 minutes later, the OS broadcasts the callback event to the app
-
-- App begins playing sound; vibrating
-
----
-## Content Providers
-[`android.content.ContentProvider`](https://developer.android.com/reference/android/content/ContentProvider)
-
-
-- Persistent storage of data
-
-
-- Supports multiple backends, depending on app permissions
-- Local filesystem, web, SQLite DB, etc.
-
-- Can permit access to other applications
-- Contacts can be read and written to by other apps, depending on permissions
-
-<!---
-## Obtaining the Course repository
-
-- After [accepting the assignment](https://courses.cs.washington.edu/courses/cse340/20sp/slides/l01/gitgrade.html#1), go to Gitlab
-
-- If you do not have SSH set up with Gitlab, just download the zip for now
-
-- Later: ['Set up an SSH key with
-Gitlab'](https://gitlab.cs.washington.edu/help/ssh/README#generating-a-new-ssh-key-pair)
-
-- Once you have SSH set up, clone the repository -- will show after section -->
-
----
-## Android Project Structure
-
-.center[
-![:img Android Project Structure, 30%](img/android_project_structure.png)
-]
-
----
-
-## Android Project Structure
-
-`app/src/main/AndroidManifest.xml`
-
-- Describes application at a high level for both compilation and running
-- Includes app package, components, permissions, and hardware features
-
-
-
-`app/src/main/java/com.example.myapp/MainActivity.java`
-
-- The main activity activated when application launches
-
-
-
-`app/build.gradle`
-
-- Android build tool configuration file
-- Includes target and min SDK versions and dependencies
-
-
-`app/src/main/res/layout/activity_main.xml`
-
-- Declares the views and layout of the main activity
-
----
-## Android Project Structure
-
-`drawable-<density>/`
-
-  - Images at various pixel densities to accommodate various display resolutions
-  - Keep filenames consistent between folders
-
-
-`layout/`
-
-  - Layout XML description files for application activities
-
-
-`mipmap/`
-
-  - Launcher icons for your application at various sizes and shapes
-
-
-`values/`
-
-  - A good place to store constants
-  - Density-independent pixel values (sizes)
-  - Color
-  - Good for string localization as well
-  - Storing strings here makes it much easier to add additional languages in the future!
-
----
-
-  ## Resources
-
-  - Vogella Tutorials -
-  - Android Animation - http://www.vogella.com/tutorials/AndroidAnimation/article.html
-
-  - Android Developer
-  - View Animation - https://developer.android.com/guide/topics/graphics/view-animation.html
-  - Property Animation - https://developer.android.com/guide/topics/graphics/prop-animation.html
-
-  - Relevant supplemental material is provided on the course website
-  - Listed in the schedule
-  - This week's supplemental material reviews Java, covers Android animation
\ No newline at end of file
diff --git a/slides/l01/img/accept-screencap.png b/slides/l01/img/accept-screencap.png
deleted file mode 100644
index d4c9bd30025ebc9f8cde44d3caacb229b3934d7e..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/accept-screencap.png and /dev/null differ
diff --git a/slides/l01/img/activity_lifecycle.png b/slides/l01/img/activity_lifecycle.png
deleted file mode 100644
index ab0921a717d184442c96c1b8863018d46920a67c..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/activity_lifecycle.png and /dev/null differ
diff --git a/slides/l01/img/android-logo.png b/slides/l01/img/android-logo.png
deleted file mode 100755
index cebec75001ab25dc397065f193797d5ebd0cb38d..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/android-logo.png and /dev/null differ
diff --git a/slides/l01/img/android-versions-oct2018.png b/slides/l01/img/android-versions-oct2018.png
deleted file mode 100644
index 0317a23481dd904945e70c60790755ac28b2ae69..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/android-versions-oct2018.png and /dev/null differ
diff --git a/slides/l01/img/android_project_structure.png b/slides/l01/img/android_project_structure.png
deleted file mode 100644
index 60efcf057b7240f6c29e09b5e09edcad52b64174..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/android_project_structure.png and /dev/null differ
diff --git a/slides/l01/img/doodle-clone-1.png b/slides/l01/img/doodle-clone-1.png
deleted file mode 100644
index ab06ba85fc07a7ff070816ce3d8cdae25163eac5..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/doodle-clone-1.png and /dev/null differ
diff --git a/slides/l01/img/doodle-clone-2.png b/slides/l01/img/doodle-clone-2.png
deleted file mode 100644
index 1fc9275e26732ebb178c482500cfb16d21d1eac6..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/doodle-clone-2.png and /dev/null differ
diff --git a/slides/l01/img/gitgrade_square.png b/slides/l01/img/gitgrade_square.png
deleted file mode 100644
index 300617b81c276855f685524efb55670492c4ac7a..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/gitgrade_square.png and /dev/null differ
diff --git a/slides/l01/img/instagram-example.png b/slides/l01/img/instagram-example.png
deleted file mode 100755
index 0094d142321dde64b7a627634d2e619e8cca0e1f..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/instagram-example.png and /dev/null differ
diff --git a/slides/l01/img/mvp-design-pattern.png b/slides/l01/img/mvp-design-pattern.png
deleted file mode 100755
index 9dd87a7f4c12553e619856dd300b307ae9e7b449..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/mvp-design-pattern.png and /dev/null differ
diff --git a/slides/l01/img/pacing.png b/slides/l01/img/pacing.png
deleted file mode 100644
index 3997cf6fd6aeee192b83ddd549982c9fb8c857a2..0000000000000000000000000000000000000000
Binary files a/slides/l01/img/pacing.png and /dev/null differ
diff --git a/slides/l01/notes-sp19.txt b/slides/l01/notes-sp19.txt
deleted file mode 100644
index 978318b631574c4e5e832b3e276016df849eb000..0000000000000000000000000000000000000000
--- a/slides/l01/notes-sp19.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-Introduction - 2 minutes
-   - Welcome to CSE 340
-   - Over the duration of this course, you will be applying your learnings from
-   lecture in a very practical way
-      - This means
-         - not only understanding what to consider when building mobile apps
-         - but also designing and implementing your own Android apps
-   - With that goal in mind, we will use our time in lab today to start exploring
-   Android app development
-      - I will introduce you to the building blocks of Android applications
-      - After obtaining the course repository
-         - we will explore the android project folder
-         - I will show some basic Android debugging techniques
-
-
-
-
-Android Application Components - 7 minutes
-- Applications are comprised of a variety of components.
-   - These components are activities, services, broadcast receivers, and content providers
-
-- Components are activated with objects called intents
-   - These intents provide the components with data. 
-   - Intents are not limited to components of the same application,
-   so your components can actually be activated by intents from other applications.
-      - Personal example: for an internship I was kicking off a workflow
-      on an Amazon Echo where we would play a series of audio pieces, record them,
-      and then analyze them. For that, I defined the intent in the Android manifest,
-      and then supplied the intent over a command line with arguments like which audio
-      files to play, how long to record for, etc.
-
-- Activities represent single screens with a user interface
-   - Gmail has different activities for composing your message, looking at your inbox,
-   accessing your settings, etc.
-   - <Walk through example workflow>
-      - This diagram is a toolkit architecture.
-
-- Services are components that perform operations in the background that don't provide
-a user interface.
-   - For example, Spotify's player activity is where you select what music to play,
-   but its player service is what actually places the music. This is why you can
-   navigate your phone freely when you use Spotify.
-   - In my project, the Intent kicked off a service that would fetch audio from the cloud,
-   play it, and calibrate it. There was no user interface because the device was an Amazon Echo.
-   - Of course, it's the OS's prerogative to impact the life of a service instance. 
-
-- Broadcast Receivers are entry points for events outside of the regular user workflow.
-   - Registers system or application events using the publish-subscribe model.
-   - When an interesting event happens, a broadcast is sent.
-   - Individual apps can register to receive specific broadcasts.
-   - For example, an alarm app can register a callback with the OS for x time. Then,
-   when the time comes, the OS sends a broadcast to the alarm app to wake it up, and the
-   alarm starts ringing.
-   - Think of it as a messaging system between apps outside of the user workflow.
-
-- Content Providers are the interfaces for managing persistent data.
-   - For example you could have a Content Provider manage writing data to the local filesystem
-   or the cloud.
-   - You can manage other applications' interactions with your data.
-      - For example, the messenger app interacts with a content provider to look at your
-      contacts list on your phone if you give it permission. 
-
-
-
-
-
-Obtaining the Course Repository - Give them 5 minutes to obtain and peruse
-the repository
-
-- Make it private
-
-
-
-
-
-Ask two people if they noticed any files that stood out in particular
-and why those files stood out - 3 minutes
-
-
-
-
-
-
-Move through important files together - 5 minutes
-
-- The Android Manifest describes the application at a high level.
-   - Identifies the name of the application package
-   - Describes all the components of the app.
-   - Lists any permissions the application would need, as well
-   as any hardware or software the app depends on to compile and run
-      - For example, if the app needs permission to write to the disk,
-      that information would be here
-      - Notice that the Part1Activity activity is described here as accepting
-      intent for the Main action with category Launcher. This means that this
-      activity is the main activity that is activated when launching the app.
-
-- The MainActivity java file sets the behavior of the main acitivity of the
-application. For us, the Main activity is Part1Activity.java
-   - Here in Doodler we see the OnCreate method, which is run whenever an Activity
-   is launched.
-      - Our OnCreate calls other methods, like addText, addLine, and addImage, that you
-      will implement.
-
-- The build.gradle file configures the build for the application
-   - Describes the minimum SDK versions and technical dependencies the project will depend on.
-
-- The resources folder contains additional files and static content that the code will use.
-   - Things like images, static data files, and even activity layouts and global
-   constants can be described here.
-      - One interesting thing about Android development is that depending on your needs
-      you can implement functionality either in your code files or in your resources folder.
-
-- The activity_main.xml file declares the views and the layout of the main activity.
-   - Layouts in Android are in XML. 
-      - If you've ever done HTML development, this should
-      be familiar to you. 
-      - Components in your view are structured like a tree, where each
-      component is described relative its parent.
-         - In Doodle, we see that right now our outermost container is ConstraintLayout,
-         and inside that is a FrameLayout whose height and width are set to match the parent.
-
-- The drawable folders contain the images for the application.
-   - The different folders are for accomodating various display resolutions.
-
-- The layout folder holds the XML files describing the layouts of the different
-activities in the program.
-   - In our application, there's only the main activity's xml layout, but additional
-   layouts can go here as well.
-
-- The mipmap folders contain the launcher icons for the application for a variety
-of screen sizes and shapes.
-
-- The values folder is a good place to store global static constant values
-   - e.g. strings
-
-
-- Go over debugging - 5 minutes
-   - Breakpoints, the android studio debugger
-   - Logging
-
-
-- 22 minutes - work on Doodle
-   - Working on Doodle addImage
-
-Discussion in general:
-   - Learning a toolkit is hard - need to explore
\ No newline at end of file
diff --git a/slides/l01/notes-wi20.txt b/slides/l01/notes-wi20.txt
deleted file mode 100644
index 22ebd968d757c5f51f95d5bd51ae5d5ea02304d4..0000000000000000000000000000000000000000
--- a/slides/l01/notes-wi20.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-TODO:
- - update assignment accept link in gitgrade slides
- - add assignment accept and turn-in links to assignment page
-
-Issues:
- - not sure how doable the addImage without handholding the entire thing / showing them the code
-
- total structured time: 37min
- total unstructured time: 23min
-
-Introduction - 10 minutes
-   - Welcome to CSE 340
-   - Introduce ourselves!
-   - notes on how section works, teachers changing
-
-   - Talk about nametags, hand out nametags
-   - Plug Java Refresher Lab 5.30 @ CSE1 403
-
-   - Over the duration of this course, you will be applying your learnings from
-   lecture in a very practical way
-      - This means
-         - not only understanding what to consider when building mobile apps
-         - but also designing and implementing Android apps
-   - With that goal in mind, we will use our time in lab today to start exploring
-   Android app development
-      - We'll accept the first assignment, Doodle
-      - Clone the repository to our local devices
-      - Explore the structure and pieces of an Android project
-      - Complete the first part of the assignment
-
-Android apps happen on phones, if you want to get a phone instead here are our recommendations
-(Sophie, 7min)
-
-GitLab Intro (using the GitLab deck) - 10min
-
-Intro to Doodle
-    - open the assignment spec and walk through it quickly: 5min
-    - open the repo in Android Studio and talk through important files: 5min
-        - activities
-        - layouts
-    - talk through the addImage line: 5min
-    - let students work on Doodle for remaining time
-
-
-
diff --git a/slides/l02/animation.html b/slides/l02/animation.html
deleted file mode 100644
index 3141f5ddcce3009b19e38047aba60d1bfb885afb..0000000000000000000000000000000000000000
--- a/slides/l02/animation.html
+++ /dev/null
@@ -1,157 +0,0 @@
----
-layout: presentation
-title: Lab 2 Slides
-description: Lab project--Doodle--
----
-
-# CSE 340 Lab 2 (Spring 2020)
-## Week 2: Get Help with Doodle
-
-.title-slide-logo[
-  ![Android Logo](img/android-logo.png)
-]
-
----
-
-# Doodle Timeline
-
-- Doodle Due: Thursday, April 9 @ 10:00pm (**Today!**)
-
-- Lock: Saturday, April 11 @ 10:00pm (If you are using late days)
-
-- Peer Eval: Sunday, April 12 - Tuesday, April 14 @ 10:00pm
-
-- Reflection: Wednesday, April 15 @ 10:00pm
-
----
-
-# Lab 2 Objectives
-
-- Go through peer evaluation and reflection
-
-
-- How to debug in Android
-
-
-- Android Animation
-
----
-
-# Lab 2 After Implementation
-
-- Peer evaluation - fill the survey that we send out
-
-- The best ones will show off in class
-
-
-- Part 3: Turn in reflection on Gradescope after peer evaluation
-
----
-# Peer Evaluation
-- Why?
-  - Chance to externalize your work
-  - Get user feedback (the user experience is after all the point of HCI)
-
-- What to expect  
-  - Your grade won't be determined by peer evaluating alone
-  - You get credit for **doing** the peer evaluation
-  - Questions about spec requirements -- no room for interpretation
-  - Questions that prompt about subjective feedback
-    - Provide constructive feedback
-  - Anonymous to your peers (but not to the teaching staff)
-
-- Your feedback on the exercise! (be honest)
-
----
-
-# Peer Evaluation Practice
-
-- Download the apk file: https://tinyurl.com/wdgjkcu
-
-- Google form: https://tinyurl.com/DoodleTestEval (Please use your UW Net ID)
-
----
-
-# Peer Evaluation Instructions
-
-.right-column-staff[
-- You will be assigned to peer grade 3 assignments via email
-- If you have an Android phone
-  - Click on the download link to install the app on your phone
-- If you don't have a phone
-  - Download the APK files
-  - Open the APK file in Android Studio and run the app in the emulator
-- Fill out the google form for each APK file
-]
-
-.left-column-staff[
-<img src="./img/wizard.png" alt="screenshot of Android Studio Wizard" width="40%" height="50%"/>
-]
----
-
-# Android Debugging
-
-- Select a device to debug your app on
-- Set breakpoints in your Java, Kotlin, and C/C++ code
-- Examine variables and evaluate expressions at runtime
-
-
-- How to use Debugger: https://developer.android.com/studio/debug#java
-- Helpful tool (Logcat): https://developer.android.com/studio/debug/am-logcat#java
-
-
----
-# Animation on Android
-
-- _Property Animation_ - preferred method; more flexible
-
-- _View Animation_ - simple setup; the old way (but you have to deal with xml...)
-
-- _Drawable Animation_ - load `Drawable` resources and display them one frame after the other (it is like a gif)
-
-
----
-# Property Animation
-
-- Define an animate that changes on object's _property_ (a field in an object) over _a length of time_
-
-## `ValueAnimator`
-
-- Keeps track of the animation's timing (how long its been running and current value of property)
-
-```java
-ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f);
-animation.setDuration(1000);
-// Starts the animation
-animation.start();
-// TODO: need to listen for updates to get the returned value
-```
-
----
-
-# `ObjectAnimator` (the one you need in this assignment)
-
-- Rather than listening for a value, we can simply directly animate a property on an object
-
-- **However**: the property that you are animating must have a setter function (in camel case) in the form of set<propertyName>() for this to work (_setDuration()_)
-
-```java
-ObjectAnimator anim = ObjectAnimator.ofFloat(textView, "alpha", 0f, 1f);
-anim.setDuration(1000);
-anim.start();
-```
-
----
-
-# Resources
-
-- Vogella Tutorials - http://www.vogella.com/tutorials/AndroidAnimation/article.html
-
-- Android Developer
-  - View Animation - https://developer.android.com/guide/topics/graphics/view-animation.html
-  - Property Animation - https://developer.android.com/guide/topics/graphics/prop-animation.html
-
-- Relevant supplemental material is provided on the course website
-  - Listed in the Doodle assignment
-  - Don't stress out :) this isn't required
-
diff --git a/slides/l02/animationPractice.zip b/slides/l02/animationPractice.zip
deleted file mode 100644
index f61898caee6a923d2664759343babc271aa24ce7..0000000000000000000000000000000000000000
Binary files a/slides/l02/animationPractice.zip and /dev/null differ
diff --git a/slides/l02/img/activity_lifecycle.png b/slides/l02/img/activity_lifecycle.png
deleted file mode 100755
index 879f51f6e8fafe75d267984680ef63f85b118dc5..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/activity_lifecycle.png and /dev/null differ
diff --git a/slides/l02/img/android-logo.png b/slides/l02/img/android-logo.png
deleted file mode 100755
index cebec75001ab25dc397065f193797d5ebd0cb38d..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/android-logo.png and /dev/null differ
diff --git a/slides/l02/img/animation/android-animate.gif b/slides/l02/img/animation/android-animate.gif
deleted file mode 100755
index 0fb1d08fd616979b31c4390966e7c2e3410b2c4f..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/animation/android-animate.gif and /dev/null differ
diff --git a/slides/l02/img/animation/animation-linear.png b/slides/l02/img/animation/animation-linear.png
deleted file mode 100755
index 08bd9fc3dc2ce5d151294b1d2b695a490f2e5f00..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/animation/animation-linear.png and /dev/null differ
diff --git a/slides/l02/img/animation/valueanimator.png b/slides/l02/img/animation/valueanimator.png
deleted file mode 100755
index 6cc2a13bbfca142b090c3fec00ddf410ca82eeb5..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/animation/valueanimator.png and /dev/null differ
diff --git a/slides/l02/img/animationDemo.mov b/slides/l02/img/animationDemo.mov
deleted file mode 100644
index a6869d9aea9806463e59f8fd6266d3b48a8819f7..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/animationDemo.mov and /dev/null differ
diff --git a/slides/l02/img/animationPractice.zip b/slides/l02/img/animationPractice.zip
deleted file mode 100644
index f61898caee6a923d2664759343babc271aa24ce7..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/animationPractice.zip and /dev/null differ
diff --git a/slides/l02/img/anydo-example.png b/slides/l02/img/anydo-example.png
deleted file mode 100755
index ad9958b541d2a3cce7890b7f8156ebf84bb7cfd0..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/anydo-example.png and /dev/null differ
diff --git a/slides/l02/img/first-android-project-structure.png b/slides/l02/img/first-android-project-structure.png
deleted file mode 100755
index 8a63e70e71075cbd6963baa58fc9eb4e52bbe1ea..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/first-android-project-structure.png and /dev/null differ
diff --git a/slides/l02/img/instagram-example.png b/slides/l02/img/instagram-example.png
deleted file mode 100755
index 0094d142321dde64b7a627634d2e619e8cca0e1f..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/instagram-example.png and /dev/null differ
diff --git a/slides/l02/img/wizard.png b/slides/l02/img/wizard.png
deleted file mode 100644
index 8ecaad5256c117e6ab7c93b93e5b61818a57950f..0000000000000000000000000000000000000000
Binary files a/slides/l02/img/wizard.png and /dev/null differ
diff --git a/slides/l03/img/LayoutSpec.png b/slides/l03/img/LayoutSpec.png
deleted file mode 100644
index d35a62e29abba453847a525fc4eba2956e1d34d2..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/LayoutSpec.png and /dev/null differ
diff --git a/slides/l03/img/android-linear.png b/slides/l03/img/android-linear.png
deleted file mode 100644
index 6b252da67203bb2e57a21a65c2b442d1e7e14a9d..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/android-linear.png and /dev/null differ
diff --git a/slides/l03/img/constraint-editor.png b/slides/l03/img/constraint-editor.png
deleted file mode 100644
index cb898264dbb375ea8f1fe36aa38180cf76f5ceee..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/constraint-editor.png and /dev/null differ
diff --git a/slides/l03/img/design-view.png b/slides/l03/img/design-view.png
deleted file mode 100644
index 76f63830d1dbd0e0388c6ce7f57bd2b3d7618db9..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/design-view.png and /dev/null differ
diff --git a/slides/l03/img/exam-q-sol.png b/slides/l03/img/exam-q-sol.png
deleted file mode 100644
index 047f349edee6bc6236c21e774ef2d7febef9ff0e..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/exam-q-sol.png and /dev/null differ
diff --git a/slides/l03/img/interactor-hierarchy.png b/slides/l03/img/interactor-hierarchy.png
deleted file mode 100644
index bd0a91b5f82c8810b45ea4c661fe9fda6e68e311..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/interactor-hierarchy.png and /dev/null differ
diff --git a/slides/l03/img/pinterest-android.png b/slides/l03/img/pinterest-android.png
deleted file mode 100644
index b07ff8eb6c83c79e5b44007a16da7d1b47c88536..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/pinterest-android.png and /dev/null differ
diff --git a/slides/l03/img/watch3.png b/slides/l03/img/watch3.png
deleted file mode 100644
index ce7134c4b0c57883931335e40fef086a366e7294..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/watch3.png and /dev/null differ
diff --git a/slides/l03/img/xmlvsjava.png b/slides/l03/img/xmlvsjava.png
deleted file mode 100644
index 62b80b16d6c1c2cb1779fc42a1928e42e1aa7aaa..0000000000000000000000000000000000000000
Binary files a/slides/l03/img/xmlvsjava.png and /dev/null differ
diff --git a/slides/l03/layout.html b/slides/l03/layout.html
deleted file mode 100644
index 0b49a4fe99589f60d698eaea59b0257965b83584..0000000000000000000000000000000000000000
--- a/slides/l03/layout.html
+++ /dev/null
@@ -1,278 +0,0 @@
----
-layout: presentation
-title: Lab 3 Slides
-description: Lab project--Layout--
----
-
-# CSE 340 Lab 3 (Spring 2020)
-## Week 3: Layout
-
-.title-slide-logo[
-  ![Android Logo](img/android-linear.png)
-]
-
----
-
-# Layout Timeline
-
-- Layout part 1-2 due: Tomorrow @ 10:00pm (No late days allowed)
-
-- Layout part 3-4 and Reflection due:  Next Thursday, April 23 @ 10:00pm
-  - Lock: Saturday, April 25 @ 10:00pm (If you are using late days)
-
-
-<!-- # Reflection?
-
-- What did you learn from doing Part4?
-
-- Was there anything that was surprisingly easy or hard?
-
-- Include your diagram of the interactor hierarchy and the corresponding interface. -->
-
----
-
-# Instruction for turning in Layout part 3-4
-
-- **(Important!)** You will have to accept the Layout Part 3-4 at Gitgrade before you turn in
-
-- Track your acceptance/ submission of all assignments: https://gitgrade.cs.washington.edu/student/summary/8723
-
-- Work in the same repo as Part 1-2
-
----
-# Section 3 Objectives
-
-- User Interfaces on Android
-  - ConstraintLayout
-  - Interactor Hierarchy
-
-- `LayoutInflater`
-  - XML vs. Programmatic (Java)
-
-- Previous exam problem of Layout
-  - Worksheet: https://tinyurl.com/cse340lab3
-
-
----
-# User Interfaces on Android
-.left-column-half[
-- Views
-  - Base class for __all__ UI elements
-  - Interactors (e.g buttons, labels, image views, etc)
-- ViewGroups
-  - Encapsulates one or more views (e.g. Android Components, **Layouts**)
-  - Can define specific **layout** properties
-- Layout
-  - Defines the structure for the user interface (UI) of your app
-  - View and ViewGroup objects live within Layouts
-  - We will use the word *Components* to include both layout components and interactors (Views) since you don't generally "interact" with layouts
-]
-
-.right-column-half[
-<div class="mermaid">
-graph TD
-W(ViewGroup) --> V[ViewGroup]
-W --> V1[View]
-W --> V2[View]
-V --> V3[View]
-V --> V4[View]
-V --> V5[View]
-
-classDef blue font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-
-class W,V darkblue
-class V1,V2,V3,V4,V5 blue
-</div>]
-
----
-# Layout in Android
-Where we left off: "Many layout and other attributes for components. You should explore!"
-
-![:img Picture of the whole android layout interface showing the possible components that can be added; the component tree (interactor hierarchy; and the attributes for the Save Button; which is selected, 90%](img/design-view.png)
-
----
-# Layout Types in Android
-
-- [FrameLayout](https://developer.android.com/reference/android/component/FrameLayout.html) - good for position views on
-top of each other, or encapsulating a bunch of views. Used in [Doodle](/assignments/doodle).
-
-- [__LinearLayout__](https://developer.android.com/reference/android/component/LinearLayout.html) - places views one after
-the other in order according to the orientation (Horizontal or Vertical). Used in [Layout](/assignments/layout).
-
-- [__RelativeLayout__](https://developer.android.com/reference/android/widget/RelativeLayout) - Positions of the children
-are desribed in relation to one another
-
-- [__TableLayout__](https://developer.android.com/reference/android/component/TableLayout.html) - Rows and columns style
-way of declaring a layout
-
-- [GridLayout](https://developer.android.com/reference/android/component/GridLayout.html) - Uses
-an [*adapter*](https://developer.android.com/reference/android/interactor/Adapter.html) that provides items to display in
-a grid
-
-- [ConstraintLayout](https://developer.android.com/reference/android/component/ConstraintLayout.html) Let's you use constraints to specify how things should lay out. Used in [Layout](/assignments/layout).
-
-
-- More on https://developer.android.com/guide/topics/ui/declaring-layout.html
-
-<!--
-
-
-# What is LayoutInflater? -->
-
----
-# Constraint Layout
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two
-buttons (save and discard) and the constraints highlighted,70%](img/constraint-editor.png)
-]
-.right-column-half[
-- ConstraintLayout is a ViewGroup that allows you to position widgets in a flexible way
-- Useful for building responsive interfaces in Android.
-- You can see little lines connecting the `textView` to its container and it's sibling (the `linearLayout`).
-  - This specifies how it's attached (can change type by clicking on right)
-  - If you were to change the interface (e.g. a different sized screen), it would stay attached and keep filling the space
-  - All ends up in XML you can explore too
-]
-
-
----
-# What are  Constraints?
-.left-column[
-![:img A simple layout on an android watch with a textview and two
-buttons (save and discard) and the constraints highlighted,110%](img/watch3.png)]
-.right-column[
-
-- Very general
-- Can reproduce most other things
-- Can operate on multiple axes
-- Can enhance other layout options
-
-]
-
----
-
-# Worksheet: Interactor Hierarchy
-
-What would be the Component Tree for the Layout Part 1-2 program?
-
-.left-column-half[
-  ![:img diagram of the interactor hierarchy shown on the next slide in graphic form, 50%](img/LayoutSpec.png)
-]
-
-
---
-.right-column-half[
-<div class="mermaid" style="font-size: small;">
-graph TD
-LL(LinearLayout) --> S[StatusBar]
-LL --> RL[RelativeLayout]
-RL --> SV[ScrollView]
-RL --> BN[BottomNav]
-SV --> CL[ConstraintLayout]
-CL --> V2[ImageView]
-CL --> V3[...]
-CL --> V4[ImageView]
-
-
-class LL,RL,SV,CL darkblue
-class S,SV,BN,V2,V3,V4 blue
-</div>
-]
-
----
-
-# LayoutInflater
-
-- Accepts a valid XML file and converts it into a `View` object or interactor hierarchy.
-
-- In Part 3 you will code part of it in an XML file and the rest programmatically (Java).
-
-- Why? (Discuss about pros and cons of constructing layout with XML and programmatically)
-
----
-
-# XML vs. Programmatic (Java)
-
-.left-column-half[
-- XML is easier setting up the Layouts
-
-- XML shows the Layouts directly
-
-- XML can be inflated many times
-]
-
-.right-column-half[
-![XML vs Programmatic Java](img/xmlvsjava.png)
-]
----
-
-# XML vs. Programmatic (Java)
-
-- Programmatic is easier adding items to the Layouts
-
-- Programmatic can use loops
-
-- Sample solution of adding items into Layout in Part 1 (XML) has 55 lines
-
-- Sample solution of adding items into Layout in Part 2 (Java) has 17 lines
-
-
----
-
-# How do we use the LayoutInflater?
-
-1. Setting up the LayoutInflater
-```java
-// Obtains the LayoutInflater from the given context
-LayoutInflater.from(Context context)
-```
-
-2. Inflate
-```java
-// Inflate a new view hierarchy from the specified XML resource
-inflate(int resource, ViewGroup root)
-```
-
----
-# Worksheet: Quick Exercise
-
-Construct a LayoutInflater and pass in the `part1.xml` file.
-
----
-
-# Quick Exercise Solution
-
-```java
-public Part1View(Context context, List<String> imageNames, int vMargin) {
-// Obtain the inflater from the context
-LayoutInflater inflater = LayoutInflater.from(context);
-
-// Inflate R.layout.part1 
-View newView = inflater.inflate(R.layout.part1, null); // newView is at the root of the inflated tree
-
-// Add it to this view
-this.addView(newView);
-}
-```
-
----
-
-# Previous Exam Question
-
----
-
-# Solution
-
-**What is the basic idea you have for how to fix it?**
-
-> Constrain the top of the scroll to the bottom of the text view.
-
-**Which view would you need to modify (provide the value you would set `android:id` to)?**
-
-> `@+id/scrollView`
-
-**What one line of XML would you add? Pseudocode ok here, you don't have to use exact names.**
-
-> `app:layout_constraintTop_toBottomOf="@id/textView"`
diff --git a/slides/l04/accessibility.html b/slides/l04/accessibility.html
deleted file mode 100644
index 9f6f39b0cbf4891b646bcc8ad8bca50d2f2f780d..0000000000000000000000000000000000000000
--- a/slides/l04/accessibility.html
+++ /dev/null
@@ -1,110 +0,0 @@
----
-layout: presentation
-title: Lab 04 Slides
-description: Layout and Accessibility
-class: middle, center, inverse
----
-# CSE 340 Lab 4 (Spring 2020)
-
-## Week 4: Accessibility
-
-.title-slide-logo[
-  ![Accessibility Logo](img/cover.jpg)
-]
-
----
-
-# Assignment Timeline
-
-- Layout part 3-4 and Reflection due: ~~Today, April 23~~ Tomorrow, April 24 @ 10:00pm
-  - Lock: Saturday, April 25 @ 10:00pm (If you are using late days)
-
-- No peer evaluation for this assignment
-
-- Accessibility assignment out: Yesterday, April 22 - due: Next Thursday, April 30
-
-<!--
-
-# Reflection
-
-- Include a screen shot of the interface you are emulating in your reflection
-
-- Include a screenshot of the result of your implementation in your reflection
-
-- Also include your diagram of the interactor hierarchy and the corresponding interface.
-
-- Tell us: What did you learn from doing Part 4?
-
-- Tell us: Was there anything that was surprisingly easy or hard? -->
-
----
-# Section 4 Objectives
-
-- Get ready for Accessibity Assignment
-- What is Alt Text?
-- Accesibity in designing technology
-- Discussion: What does inclusion mean to you?
-
-
----
-
-# Get ready for Accessibity Assignment
-
-- Install Accessibility Scanner on Emulator (through Google Play)
-  - https://play.google.com/store/apps/details?id=com.google.android.apps.accessibility.auditor&hl=en_US
-
----
-
-# Alt Text
-
-- What is alt text, and why is it important?
-
-- Adding Accessibility Features to Apps for Blind and Visually-Impaired Users: https://youtu.be/1by5J7c5Vz4
-- Introduction to Alternative Text: https://webaim.org/techniques/alttext/#intro
-
----
-
-.title-slide-logo[
-  ![Exmaple photo of Purple flowers with a fuzzy center surrounded by green leaves](img/flower.png)
-]
-
----
-
-## Bad alt text:
-
-- This picture of flowers was taken at the Chihuly Glass Gardens
-
-## Better alt text:
-
-- Purple flowers with a fuzzy center surrounded by green leaves
-
----
-
-# Who can alt text help? 
-
-- Not only visually impaired individuals!
-
----
-
-# Are the captions we used in the lectures enough? 
-
-- Why?
-
----
-
-.left-column-half[
-# ASL Gloves
-
-- Why are technologies like this harmful?
-
-- You could build bias into technology if you are not careful
-
-]
-
-.right-column-half[
-![:img These “SignAloud” gloves developed by UW sophomores Navid Azodi and Thomas Pryor translate American Sign Language into speech and text, 90%](img/asl_gloves.png)
-]
-
----
-
-# What does inclusion mean to you?
diff --git a/slides/l04/agenda.txt b/slides/l04/agenda.txt
deleted file mode 100644
index 76f136a1a969625bd527f42c7144e567dc3b5c16..0000000000000000000000000000000000000000
--- a/slides/l04/agenda.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-- reminder for layout assignment
-- timeline
-- layout reflection (10 mins)
-
-- alt text  (10 mins)
-- what is alt text, and why is it important?
-- who can screen reader help?
-
-- brain storm: other than alt text, what we can do for other disabilities? for example, deaf   (5-10 mins)
--- caption: help non-native speakers
--- captions in this class - not enough. why?
-- please do not call us "hearing impaired" (brifly explain my identity. since they call blind "visual impaired")
-- disabilities varies (i am deaf, and i dont represent blind people, i dont represent the D community)
-
-- some mindsets i have noticed in HCI:   (10 mins)
--- asl glove (why does it hurt the community?)
--- how to be an "ally" (please, dont say its my job to fight. Fight with me if you consider yourself an ally)
-
-- what does "inclusion" mean?   (10 mins)
--- it mean view us as who we are
-- technology shows a mindset. And the mindset is the core. Thus, you are not only learning the technology in this class. We want you to learn the mindset as well.
-- you could build bias in technology if you are not careful
-- accessibility is always an inherent feature, not a nice addition, it should not be something you implement the last
-
-
-- ask prob questions and encourage students
-- divide groups
\ No newline at end of file
diff --git a/slides/l04/img/asl_gloves.png b/slides/l04/img/asl_gloves.png
deleted file mode 100644
index 15e1c51fe2af35f02817cf2df4afe182189eff1a..0000000000000000000000000000000000000000
Binary files a/slides/l04/img/asl_gloves.png and /dev/null differ
diff --git a/slides/l04/img/cover.jpg b/slides/l04/img/cover.jpg
deleted file mode 100644
index 0ab996615cbaba6c49d6ee41e20e0c02689a4d67..0000000000000000000000000000000000000000
Binary files a/slides/l04/img/cover.jpg and /dev/null differ
diff --git a/slides/l04/img/flower.png b/slides/l04/img/flower.png
deleted file mode 100644
index acd6bc12862d864b1bedcb114d79627d59de644d..0000000000000000000000000000000000000000
Binary files a/slides/l04/img/flower.png and /dev/null differ
diff --git a/slides/l05/img/eventDiagram.png b/slides/l05/img/eventDiagram.png
deleted file mode 100644
index 6a73ac5e20901d48a503f43375824925b58cb921..0000000000000000000000000000000000000000
Binary files a/slides/l05/img/eventDiagram.png and /dev/null differ
diff --git a/slides/l05/img/layout.png b/slides/l05/img/layout.png
deleted file mode 100644
index b6ff09630cff8240594e1550a96aa75bbd25f707..0000000000000000000000000000000000000000
Binary files a/slides/l05/img/layout.png and /dev/null differ
diff --git a/slides/l05/img/smq.png b/slides/l05/img/smq.png
deleted file mode 100644
index 66c0e1367260f1845bf068fe07aa5f6d5dbd959e..0000000000000000000000000000000000000000
Binary files a/slides/l05/img/smq.png and /dev/null differ
diff --git a/slides/l05/img/smrecap.png b/slides/l05/img/smrecap.png
deleted file mode 100644
index 9757ee308e1388fb9e687fa08d4c6d0df195c247..0000000000000000000000000000000000000000
Binary files a/slides/l05/img/smrecap.png and /dev/null differ
diff --git a/slides/l05/img/statemachine.png b/slides/l05/img/statemachine.png
deleted file mode 100644
index 2d0038d95b01e30c67f13a3f5daf3f7cd9d9239c..0000000000000000000000000000000000000000
Binary files a/slides/l05/img/statemachine.png and /dev/null differ
diff --git a/slides/l05/state.html b/slides/l05/state.html
deleted file mode 100644
index 41717d5e47c53952a73bc56303f92ebe1a5b5421..0000000000000000000000000000000000000000
--- a/slides/l05/state.html
+++ /dev/null
@@ -1,105 +0,0 @@
----
-layout: presentation
-title: Lab 5 Slides
-description: State Machine
-class: middle, center, inverse
----
-
-# CSE 340 Lab 5 (Spring 2020)
-## Week 5: State Machine
-
-.title-slide-logo[
-  ![State Machine Logo](img/statemachine.png)
-]
-
----
-# Timeline
-- Accessibility assignment due: Today, April 30 @ 10:00pm
-  - Lock: Saturday, May 2 @ 10:00pm (if you are using late days)
-
----
-# Section 5 Objectives
-
-- Understanding State Machine
-- Practice with PPS and State Machine
-  - Worksheet: https://tinyurl.com/340section5
-- Questions
-
----
-# State Machine 
-
-- State Machines are used to respond to incoming events and allows for us to store state between events.
-- Start state - indicated with incoming arrow
-- End state - indicated with double-layered shape
-- Transition States - indicated with single-layered shape
-- Event Arrows - indicated with an arrow between states, represent different actions taken up states.
-
-![:img State Machine Diagram Recap, 50%](img/smrecap.png)
-
----
-# Propositional Production System (PPS)
-
-- State machine is just the start, stop and interim states with arrows with nothing on them.
-- State machine with:
-  - ? (Boolean gates)
-  - action calls 
-  - extra conditions required to fire
-  on the arrows is called PPS.
-
-  ![:img State Machine Diagram Question, 50%](img/smq.png)
-
----
-# State Machine Practice
-Discussion: What is the behavior of this State Machine/PPS?
-
-![:img State Machine Diagram Question, 60%](img/smq.png)
-
----
-# Worksheet: State Machine Practice
-- Link: https://tinyurl.com/340section5
-
----
-# Worksheet Solutions
-
-Problem 1:
-
-1. updateThumbPosition()
-2. updateVolume()
-3. INSIDE
-4. EssentialGeometry.BAR
-5. updateThumbPosition()
-6. updateVolume()
-7. State.START
-8. updateThumbAlpha()
-
-
-Read more: [How to turn the PPS into code](https://courses.cs.washington.edu/courses/cse340/20sp/docs/pps)
-
-
----
-# Worksheet Solutions
-Problem 2:
-
-
-<div class="mermaid" style="font-size: 14pt">
-  graph TD
-  S((.)) --> A((Start))
-  A -- "DOWN:insideBar? updateButtonPosition(); 
-  updateButtonAlpha(); invokeScrollAction();
-  invalidate();" --> I((PRESSED))
-  A -- "DOWN:insideButton? updateButtonAlpha(); 
-  invokeScrollAction(); invalidate();" --> I((PRESSED))
-  I -- "UP:updateButtonAlpha(); invalidate();" --> E[End]
-  I -- "MOVE:updateButtonPosition(); invokeScrollAction(); invalidate();" --> I
-  
-  classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-  classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-  classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-  classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-  
-  class S invisible
-  class A start
-  class E finish
-  class I normal
-  
-  </div>
diff --git a/slides/l06/android-logo.png b/slides/l06/android-logo.png
deleted file mode 100644
index cebec75001ab25dc397065f193797d5ebd0cb38d..0000000000000000000000000000000000000000
Binary files a/slides/l06/android-logo.png and /dev/null differ
diff --git a/slides/l06/bundling.html b/slides/l06/bundling.html
deleted file mode 100644
index 02c58fd4310c4c0f0110991b2c6541cd19a927f6..0000000000000000000000000000000000000000
--- a/slides/l06/bundling.html
+++ /dev/null
@@ -1,122 +0,0 @@
----
-layout: presentation
-title: Lab 6 Slides
-description: Bundling
-class: middle, center, inverse
----
-
-# CSE 340 Lab 6 (Spring 2020)
-## Week 6: Bundles? Bundles!
-
-.title-slide-logo[
-  ![Android Logo](android-logo.png)
-]
-
----
-# Timeline
-- Color Picker and Reflection due: Next Monday, May 11 @ 10:00pm
-  - Lock: Wednesday, May 13 @ 10:00pm (if you are using late days)
-
-- Practice quiz for Accessibility and Color Picker will be out: this Friday, May 8
-  - Due: Next Wednesday, May 13 @ 10:00pm
-
-- **Reminder:** Please fill out this [form](https://docs.google.com/forms/d/e/1FAIpQLSdQrpZx-gexgDcKEF1SRp4egObimDP9qqVwLD56w0V2sYJDpw/viewform) by tomorrow night, so we can plan for our next assignment - Menus.
----
-# Section 6 Objectives
-
-- Solicit some anonymous feedback and questions
-- Bundles
-  - What're they?
-  - Why they're important
-  - How we use them (for the assignment and otherwise)
-- Questions and work time on Color Picker
-
----
-
-# Feedback
-
-Form link: https://forms.gle/A7BBRGQGvF6J1aJ1A
-- Any questions you have about assignment/ examlet
-- Any feedback you have on section
-  - What can we do better? What is going well? 
-  - We want this to be a good use of time for you.
-
----
-
-# Bundles: So you got lots of apps..
-
-And they all want to use _tons_ of memory, but they don't **need** that memory all the time.
-
-  - Android: You get no/minimal memory when you're not actively being used.
-  - Apps: But then how do we remember stuff when we are being used if we can't save it in memory
-  - Android: Use this `bundle`
-
-_(In truth the app could write/read its state to disk whenever it is being closed/opened but that is time consuming and would delay the OS launching new things)_
-
----
-
-# What is a Bundle?
-
-- First what happens when the user closes the application? Does it die?
-  - No!
-
-- Where does it go then?
-  - Think about it as **hibernation**
-  - All of it's memory is cleared, so all of your variables are _GONE_ 😲.
-  - **But** Android lets you save some variables to a `bundle` right before your memory is cleared, and gives you your `bundle` back when you get the memory space back.
-
-- What's in the bundle? 
-  - You decide, entirely up to the application developer (you).
-
-_(Your bundle is destroyed if the user force quits the app through multitasking, or if the phone is turned off. There is also a max size of the bundle and likely not something you will run into)_
-
----
-
-# Bundles & Code
-
-- Bundle management is occuring at the `activity` layer, not to be confused with any individual `view`.
-
-- When the user closes the app, right before it closes and its memory is cleared, Android invokes `onSaveInstanceState(Bundle outState)` on the activity, providing a reference to the activity for the app to save values into.
-
-- Then when the user opens the app again, Android invokes `onRestoreInstanceState(Bundle savedInstanceState)` returning the same bundle from earlier.
-
-- You can think of the `bundle` as a `Map<String, Object>` that only supports certain types of objects (they must be `Serializable` which includes all primitives and `String`)
-
-_(Read more [here](https://developer.android.com/topic/libraries/architecture/saving-states))_
-
----
-
-# Bundles: Code Example
-
-```java
-public abstract class MainActivity extends AppCompatActivity {
-
-  @Override
-  public void onSaveInstanceState(Bundle outState) {
-      super.onSaveInstanceState(outState);
-
-      outState.putString("OUR_KEY", "bundles? bundles!!!");
-  }
-
-  @Override
-  protected void onRestoreInstanceState(Bundle savedInstanceState) {
-      super.onRestoreInstanceState(savedInstanceState);
-      
-      String whatWeSaved = savedInstanceState.getString("OUR_KEY");
-      // whatWeSaved would contain "bundles? bundles!!!"
-  }
-}
-```
----
-# Discussion: Using Bundles in Color Picker 
-Not in this assignment but you could store the state of the Color Picker view directly into the bundle instead of storing the state of the application. 
-- Think about the model of the application
-- Think about the model of the color picker view/interactor
-- Is it better to store the state of the application or the view? 
-
----
-
-# Work time on Color Picker
-
-- Color-Angle conversion [hints](https://docs.google.com/document/d/1p97w2eoDe8hhmhDgE9fgkO5emimfKPy-eqGvzyaeUUQ/edit?usp=sharing)
-
diff --git a/slides/l07/img/callbacks2.png b/slides/l07/img/callbacks2.png
deleted file mode 100644
index 37eeff1f958d4f711faf7ce2af0ceb9736121957..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/callbacks2.png and /dev/null differ
diff --git a/slides/l07/img/callbacks3.png b/slides/l07/img/callbacks3.png
deleted file mode 100644
index c7c5e1de7d5c73ca13b8e95df99735ce5aeec7fa..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/callbacks3.png and /dev/null differ
diff --git a/slides/l07/img/listener.png b/slides/l07/img/listener.png
deleted file mode 100644
index 30ad3eea628489302baae48acddf0b7c59ecbbab..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/listener.png and /dev/null differ
diff --git a/slides/l07/img/menus.png b/slides/l07/img/menus.png
deleted file mode 100644
index ae04e3b7be46c18e69c93a2b1eaa5a584d406f4f..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/menus.png and /dev/null differ
diff --git a/slides/l07/img/menussm.png b/slides/l07/img/menussm.png
deleted file mode 100644
index 0baadcf1c31e35a4e89954c65ad3b42262832d21..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/menussm.png and /dev/null differ
diff --git a/slides/l07/img/smrecap.png b/slides/l07/img/smrecap.png
deleted file mode 100644
index 9757ee308e1388fb9e687fa08d4c6d0df195c247..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/smrecap.png and /dev/null differ
diff --git a/slides/l07/img/tips.png b/slides/l07/img/tips.png
deleted file mode 100644
index 6a7406ab1d2f992e5352885127fb7aa5ebe23ee3..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/tips.png and /dev/null differ
diff --git a/slides/l07/img/translate.png b/slides/l07/img/translate.png
deleted file mode 100644
index 37fa3326c7b96cefe9e0d17c89c4fb45bf122030..0000000000000000000000000000000000000000
Binary files a/slides/l07/img/translate.png and /dev/null differ
diff --git a/slides/l07/menus-lab.html b/slides/l07/menus-lab.html
deleted file mode 100644
index 38438b5de4eafab0484bd7a515f23675c356cf69..0000000000000000000000000000000000000000
--- a/slides/l07/menus-lab.html
+++ /dev/null
@@ -1,166 +0,0 @@
----
-layout: presentation
-title: Lab 7 Slides
-description: Menus
-class: middle, center, inverse
----
-
-# CSE 340 Lab 7 (Spring 2020)
-## Week 7: Getting started with Menus
-
-
-
-.title-slide-logo[
-  ![:img Menu Types, 50%](img/menus.png)
-]
-
----
-
-# Menus Timeline
-
-- Programming part (Part 1-4) due: Next Wednesday, May 20 @ 10:00pm
-  - Lock: Friday, May 22 @ 10:00pm (if you are using late days)
-
-- Analysis part (Part 5-6: Report and Reflection) out: Wednesday, May 20
-  - Due: Monday, May 25 @ 10:00pm
-
-- **Examlet 3 is tomorrow!** Friday, May 15
-
----
-
-# Section 7 Objectives
-
-- Thank you for filling out the mid-quarter section feedback form!
-- Review key concepts for Menus assignment
-  - Translate
-  - Callbacks
-  - State machine ([Lab 5](https://courses.cs.washington.edu/courses/cse340/20sp/slides/l05/state.html#1))
-- Examlet review with Kahoot 
-- Work time on Menus assignment
-- Questions
-
----
-
-# Translate
-
-- Move origin (and everything else) in x and y
-![:img a large moon and a large moon moved to the right a few pixels, 15%](img/translate.png)
-   
-    ```java
-    translate(float dx, float dy)
-    ```
-- How do we use _translate_ in Menus?
----
-
-# Callbacks
-
-Callbacks handle application response to events
-  - Update Application Model
-    
-    ![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface and a do_action() call
-happening below the line in response to a button_pressed(), 45%](img/callbacks2.png)
-
-
----
-
-# Callbacks
-
-Callbacks handle application response to events
-  - Best implemented using custom listeners:
-    - Let you execute code when your view's model has changed
-    - No other way to know that has happened
-    
-    ![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface with do_action() replaced
-with an actionListener, 45%](img/callbacks3.png)
-
----
-# Example in ColorPicker
-
-We setup the Custom View side for you
-
-```java
-    // Currently registered ColorListener instance or null.
-    // A set of listener in Color picker vs. One listener in Menus
-    private List<ColorChangeListener> mColorChangeListeners;
-
-    // Class which defines a listener to be called when a new color is selected.
-    public interface ColorChangeListener {
-        void onColorSelected(@ColorInt int color);
-    }
-
-    // Registers a new listener
-    public final void addColorChangeListener(@NonNull ColorChangeListener colorChangeListener) {
-        mColorChangeListeners.add(colorChangeListener);
-    }
-```
----
-# Example in ColorPicker
-
-You implemented this
-.left-column-half[
-`// TODO: Register callback to update {color,label} View when color changed.`
-
-- What method do we call to register the callback?  
-  - `addColorChangeListener()`
-
-- What do we usually do in a callback? 
-  - update application (`MainActivity`) model
-]
-.right-column-half[
-![:img listener relationship diagram in color picker, 100%](img/listener.png)
-]
-
----
-# Custom Listener in Menus
-
-You need to do this yourself in Menus
-
-```java
-// TODO: register a new listener with the menu so that the application knows when a selection is made
-
-// TODO: implement the listener. When the user completes a trial, the menu listener should store
-// the results of the trial, and setup for the next trial
-```
-
-
----
-# Android Studio Tips
-
-- [Keyboard shortcuts](https://developer.android.com/studio/intro/keyboard-shortcuts)
-- Structure tab
-
-![:img android structure tab, 50%](img/tips.png)
-
-
-
----
-# Work time on Menus
-
-
-
-<div class="mermaid">
-  classDiagram
-  
-  class MenuExperimentView {
-    onTouchEvent()
-    startSelection()
-    endSelection()
-    updateModel()
-    onDraw()
-  }
-  
-  
-  AbstractMenuExperimentView <|-- MenuExperimentView
-  
-  AbstractMainActivity <|-- MainActivity
-  AbstractMainActivity <|-- TestActivity
-  MenuExperimentView <|-- PieMenuView
-  MenuExperimentView <|-- NormalMenuView
-  MenuExperimentView <|-- CustomMenuView
-  
-  
-  </div>
-
-
diff --git a/slides/l08/.gitkeep b/slides/l08/.gitkeep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/slides/l08/menus-data.html b/slides/l08/menus-data.html
deleted file mode 100644
index 9fa2d81cd917c4b84a7b7e9d9ea498d77fd6a1dd..0000000000000000000000000000000000000000
--- a/slides/l08/menus-data.html
+++ /dev/null
@@ -1,78 +0,0 @@
----
-layout: presentation
-title: Lab 8 Slides
-description: Menus Data Analysis
-class: middle, center, inverse
----
-
-# CSE 340 Lab 8 (Spring 2020)
-## Week 8: Menus Data Analysis
-
-
-.title-slide-logo[
-  ![:img Data Analysis, 40%](menus_data.png)
-]
-
----
-
-# Menus Timeline
-
-- Programming part (Part 1-4) due: ~~yesterday~~ Today, Thursday, May 21 @ 10:00pm
-  - Lock: Friday, May 22 @ 10:00pm (if you are using late days)
-
-- Analysis part (Part 5-6: Report and Reflection) due: Monday, May 25 @ 10:00pm
-    - Lock: Wednesday, May 27 @ 10:00pm (if you are using late days)
----
-
-# Section 8 Objectives
-
-- Data analysis
-  - In-class demo
-- Remote testing
-- Menus help & questions
-
----
-
-# Data Analysis
-
-In-class demo
-
-- Getting Menus data from an Android device or Emulator ([instructions here](https://courses.cs.washington.edu/courses/cse340/20sp/docs/android_files/))
-
-- Working with data: [sample spreadsheet](https://docs.google.com/spreadsheets/d/1JqfKhHugIF-kebs_bVztCnkUe0CizXN8PU_Ar3kXtK4/edit#gid=1104722579)
-
-
----
-
-# Remote Testing
-
-1. Still looking for participants? Find your group members [here](https://docs.google.com/document/d/11nsEWs3TubV5Zy0zOIGguqZJohkS34uizIrDv-bgnYs/edit)
-  - You can ask us/the course staff too 😊
-2. Create an APK:  
-  - In your menu project in Android Studio, select the *Build -> Build Bundle(s)/APK(s) -> Build APK(s)*.
-  - When the *Build APK(s)* message popup appears in the lower right hand corner, click the *locate* link to find the `app-debug.apk`.
-3. Send a copy of the consent form (Word/Google Doc) to the participant
-4. Set up your phone call or video meeting
-  - Briefly explain the study
-  - Have the participant "sign" [this Google form](https://bit.ly/20sp-Menus-Consent) as written consent
-
----
-
-# Remote Testing (cont.)
-5\. Send your APK - Have the participant test your menus:
-- **Highly recommend** to create a shared Google folder/drive with your participant where:
-  - you upload your APK
-  - your participant can later upload their .csv data file 
-
-**Notes**:
-- Participants please make sure to `Clear Result CSV` prior testing and complete a full session
-- Developer please make sure you have 108 data points from each participant
-
-Read more: [Menus Spec](https://courses.cs.washington.edu/courses/cse340/20sp/assignments/menus#part-5-conduct-and-write-up-user-study)
-
-
----
-
-# Questions
-
-
diff --git a/slides/l08/menus_data.png b/slides/l08/menus_data.png
deleted file mode 100644
index e94e349ff2398ebc099de80f1ae9072e0fcd6395..0000000000000000000000000000000000000000
Binary files a/slides/l08/menus_data.png and /dev/null differ
diff --git a/slides/l09/img/abridged_undo_view_tree.png b/slides/l09/img/abridged_undo_view_tree.png
deleted file mode 100644
index deafa50f428c05705f4edb5c7ae21fc34edab58b..0000000000000000000000000000000000000000
Binary files a/slides/l09/img/abridged_undo_view_tree.png and /dev/null differ
diff --git a/slides/l09/img/draw-app.jpg b/slides/l09/img/draw-app.jpg
deleted file mode 100644
index 6cc42303aa32f5f7533bb42a2159ced7a96b27f9..0000000000000000000000000000000000000000
Binary files a/slides/l09/img/draw-app.jpg and /dev/null differ
diff --git a/slides/l09/outline.md b/slides/l09/outline.md
deleted file mode 100644
index cb33e127f340aa299b9a3cb1af3a067cab482d69..0000000000000000000000000000000000000000
--- a/slides/l09/outline.md
+++ /dev/null
@@ -1,13 +0,0 @@
-### lab outline
-
-- Intro
-  - Hi I'm Adam!
-  - Welcome to color picker
-  - you got emails for GitLab repos for assignment 3, clone them as we'll be working with them today
-- Visually introduce color picker (3min)
-- Talk through stub/spec (7min)
-  - Reminder of api references
-  - Radian math quick refresh
-- Convert unconstrained xy coords to a color (10min)
-- Work in small groups over examples of possible interaction flows, ask about potential outputs (2 + 5)
-- work on state machine implementation (23min)
diff --git a/slides/l09/undo-lab.html b/slides/l09/undo-lab.html
deleted file mode 100644
index d6cd5e3e832707f52d2d610e5ab07ac79ec5febd..0000000000000000000000000000000000000000
--- a/slides/l09/undo-lab.html
+++ /dev/null
@@ -1,250 +0,0 @@
----
-layout: presentation
-title: Lab 9 Slides
-description: Getting Started With Undo
-class: middle, center, inverse
----
-# CSE 340 Lab 9 (Spring 2020)
-## Week 9: Getting started with Undo
-
-.title-slide-logo[
-  ![:img Drawing App, 40%](img/draw-app.jpg)
-]
-
----
-# Undo Timeline
-
-- Programming part due: Next Monday, June 1 @ 10:00pm
-  - Lock: Wednesday, June 3 @ 10:00pm (if you are using late days)
-
-- Heuristic Evaluation due: Friday, June 5 @ 10:00pm
-- Reflection due: Monday, June 8 @ 10:00pm
-
-- **Examlet 4 is tomorrow!** Friday, May 29
-
----
-# Section 9 Objectives
-
-- Understanding Undo assignment
-- Examlet review with Kahoot
-- Work time/ Questions on Undo assignment
-
----
-# The Undo feature
-
-- Incredibly useful interaction technique
-
-- Reverts the application to an older state
-
-  - Mistakes can easily be undone
-
-  - *"Ugh...that was definitely not right, but manually erasing all this work is going to take forever"*
----
-# The Redo feature
-
-- Inverse to the Undo feature
-- "Undoes" an undo
-
-  - Work previously undone is reapplied
-
-  - *"Huh, maybe I made the right decision after all..."*
----
-# Codebase: Application
-.left-column60[
-- `ReversibleDrawingActivity`, class contains the entire interactor hierarchy
-  - Floating Action Buttons (FAB), buttons that allow for actions supported by AbstractReversibleDrawingActivity
-  - References DrawingView in AbstractDrawingActivity 
-
-- `AbstractReversibleDrawingActivity`, abstract class that extends AbstractDrawingActivity
-  - adds support for undo/redo
-  - includes buttons for undo/redo
-  - `doAction()`, `undo()`, `redo()`]
-
-.right-column30[
-<div class="mermaid">
-classDiagram
-
-AbstractDrawingActivity <|.. AbstractReversibleDrawingActivity
-AbstractReversibleDrawingActivity <|.. ReversibleDrawingActivity
-class AbstractDrawingActivity {
-  DrawingView: "Canvas the user draws on"
-  addMenu()
-  addCollapsableMenu()
-  doAction()
-}
-
-class AbstractReversibleDrawingActivity {
-  +AbstractStackHistory
-  +doAction()
-  +undo()
-  +redo()
-}
-
-class ReversibleDrawingActivity {
-  +onAction()
-  +onColorSelected()
-  +onThicknessSelected()
-}
-</div>]
-
----
-# Codebase: Application
-
-.left-column60[
-- `AbstractDrawingActivity` - abstract class for app that supports drawing without history
-
-  - Wrapper around a `DrawingView`
-
-  - `doAction()`
-
-  - Contains methods for adding menus and changing visibility]
-
-  .right-column30[
-  <div class="mermaid">
-  classDiagram
-  
-  AbstractDrawingActivity <|.. AbstractReversibleDrawingActivity
-  AbstractReversibleDrawingActivity <|.. ReversibleDrawingActivity
-  class AbstractDrawingActivity {
-    DrawingView: "Canvas the user draws on"
-    addMenu()
-    addCollapsableMenu()
-    doAction()
-  }
-  
-  class AbstractReversibleDrawingActivity {
-    +AbstractStackHistory
-    +doAction()
-    +undo()
-    +redo()
-  }
-  
-  class ReversibleDrawingActivity {
-    +onAction()
-    +onColorSelected()
-    +onThicknessSelected()
-  }
-  </div>]
----
-# Codebase: DrawingView
-.left-column-half[- `AbstractDrawingActivity` is a wrapper around a `DrawingView`
-  - Sets behavior for how strokes are drawn 
-
-- DrawingView, a drawing canvas that handles strokes
-  - Strokes are just `StrokeView`'s in the `DrawingView`
-  - `onTouchEvent()` implements a PPS that describes lifetime of a stroke being created]
-
-.right-column40[
-<div class="mermaid">
-  classDiagram
-  
-  class AbstractDrawingActivity {
-    DrawingView: "Canvas the user draws on"
-    addMenu()
-    addCollapsableMenu()
-    doAction()
-  }
-
-  class StrokeView {
-     Path
-     onDraw()
-  }
-  </div>
-]
----
-
-# Codebase: Actions
-.left-column-staff[
-- `AbstractAction` abstract class defines basic behavior any Action should have
-- `AbstractReversibleAction` abstract class defines interface for actions that can be undone
-- `doAction()` chain: `AbstractReversibleDrawingActivity.doAction()` âž¡`AbstractDrawingActivity.doAction()` âž¡`AbstractAction.doAction()`
-- `AbstractReversibleDrawingActivity`'s `undo()` and `redo()` call methods on `AbstractReversibleAction` to undo/redo]
-
-.right-column55[
-<div class="mermaid">
-  classDiagram
-  
-  AbstractAction <|.. AbstractReversibleAction
-  AbstractReversibleAction <|.. ChangeColorAction
-  AbstractReversibleAction <|.. ChangeThicknessAction
-  AbstractReversibleAction <|.. AbstractReversibleViewAction
-  AbstractReversibleViewAction <|.. StrokeAction
-  
-  class AbstractAction {
-    doAction()
-  }
-  class AbstractReversibleAction {
-    +boolean done
-    +undoAction
-  }
-  class AbstractReversibleViewAction  {
-    +invalidate
-  }
-  </div>
-]
-
----
-
-# Codebase: Actions
-.left-column-staff[
-- Actions:
-  - `ChangeColorAction`
-  - `ChangeThicknessAction`, implement for homework
-  - `StrokeAction`
-  - And more, create your own action!]
-
-.right-column55[
-<div class="mermaid">
-  classDiagram
-  
-  AbstractAction <|.. AbstractReversibleAction
-  AbstractReversibleAction <|.. ChangeColorAction
-  AbstractReversibleAction <|.. ChangeThicknessAction
-  AbstractReversibleAction <|.. AbstractReversibleViewAction
-  AbstractReversibleViewAction <|.. StrokeAction
-  
-  class AbstractAction {
-    doAction()
-  }
-  class AbstractReversibleAction {
-    +boolean done
-    +undoAction
-  }
-  class AbstractReversibleViewAction  {
-    +invalidate
-  }
-  </div>
-]
-
----
-
-# Codebase: History
-
-.left-column60[The `AbstractReversibleDrawingActivity` uses an StackHistory interface to manage the undo/redo history
-  - You will implement the concrete `StackHistory` which implements `AbstractStackHistory`  
-  - Think: What data structures are used? Why does this make sense?
-    - What happens to the redo history if you take a new action after undoing a couple times?
-    - What happens to the undo history if you redo an action?
-    - What happens to the redo history if you undo an action?]
-
-.right-column30[
-<div class="mermaid">
-  classDiagram
-  
-  AbstractStackHistory <|.. StackHistory
-  class AbstractStackHistory {
-    addAction(AbstractReversibleAction action)
-    undo()
-    redo()
-    canUndo()
-    canRedo()
-  }
-  
-  class StackHistory {
-     +capacity: "Max stack size"
-  }
-  
-  
-  </div>
-]
-
diff --git a/slides/l09/undo_exam_question.pdf b/slides/l09/undo_exam_question.pdf
deleted file mode 100644
index c739bea3b80736a3f299a8fe2818586cea2d853a..0000000000000000000000000000000000000000
Binary files a/slides/l09/undo_exam_question.pdf and /dev/null differ
diff --git a/slides/l09/undo_lab_notes.txt b/slides/l09/undo_lab_notes.txt
deleted file mode 100644
index 2f0debf2ecaf43158114a00571e79969f9313cc7..0000000000000000000000000000000000000000
--- a/slides/l09/undo_lab_notes.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-Today we will spend lecture exploring and building an understanding of the
-Undo assignment.
-
-The Undo feature is an incredibly useful interaction technique. It allows the user
-to revert the application to an older state, enabling mistakes to be easily undone.
-
-The Redo feature is also very useful, and is the inverse to the Undo feature.
-It "undoes" an undo. Work previously undone is reapplied.
-
-[DEMO]
-Let's begin by looking at the app in action. There are two different
-menus - one for changing the thickness of the drawn stroke and the other
-for changing the color of the drawn stroke. Changing the thickness, changing
-the color, or changing the stroke are the three types of actions the user can
-take, and the user can undo or redo any of these actions using buttons that
-only appear when they're relevant. Undo only appears when there is an action to
-undo, and redo only appears when there is an action to redo.
-
-[CODEBASE EXPLORATION]
-
-[ACTIVITY FILES]
-Let's dive into the codebase.
-
-The MainActivity in this app is a concrete implementation of the ReversibleDrawingActivity
-and in turn DrawingActivity abstract classes. Important methods include `onColorSelected()`
-and `onThicknessSelected()`
-
-DrawingActivity is an abstract class for an app that supports drawing without support for Undo or Redo.
-An important method to read is doAction().
-
-The ReversibleDrawingActivity extends DrawingActivity and adds support for undo/redo to it, 
-including both the undo/redo buttons and the history. Important methods to read
-include doAction(), undo(), and redo().
-
-The MainActivity class inherits from ReversibleDrawingActivity. It adds support for thickness
-and color to the undo/redo support in ReversibleDrawingActivity. It also adds menus to show 
-the thickness/color options. Important methods to read include onColorSelected() and onThicknessSelected().
-
-[DRAWING VIEW]
-The DrawingActivity is a wrapper around a DrawingView. The DrawingView sets the 
-behavior for how strokes are drawn. Strokes are just StrokeView objects drawn against
-the DrawingView. The onTouchEvent() should look 
-familiar. It implements a PPS that describes the lifetime of a stroke being created.
-
-There's a useful diagram that visualizes the code's structure. You should also look
-at the layout files. Chances are you'll want to update them to add new features. 
-
-[ACTIONS]
-
-We're building a drawing app. Whenever the user interacts with the app, he/she
-is taking some sort of Action. The Action abstract class defines the basic behavior
-any Action should have. The DrawingActivity's doAction() calls the doAction() implementation
- in Action's subclasses. 
-
-There's another abstract class called ReversibleAction that extends Action. This represents an action
-that is reversible. The ReversibleAction abstract class extends the Action abstract class 
-and adds an undoAction() method to undo the particular Action. 
-All three of the actions we've defined in the app are reversible. If for your extra feature you define a 
-new action, it may extend ReversibleAction, or it may just extend Action - it's up to you.
-
-The three actions we've defined are ChangeColorAction, ChangeThicknessAction, and StrokeAction.
-The ChangeColorAction, when applied, stores the DrawingView's Paint's old color and sets a new color.
-When undone, it sets the color on the DrawingView's paint to its previous color. 
-The ChangeThicknessAction does something similar, except it alters the thickness of the
-DrawingView's paint. The StrokeAction creates a StrokeView that represents the View of the
-stroke drawn and adds it to the DrawingView.
-
-[HISTORY]
-
-Your first goal with this assignment is to implement StackHistory. StackHistory extends the
-AbstractHistory abstract class. It is the fundamental data structure that will allow your
-users to undo and/or redo actions on the app, and it is used in the ReversibleDrawingActivity.
-
-[ADDITIONAL RESPONSIBILITIES]
-Your second goal with this assignment is to add a new FAB that adds a thickness 0 stroke.
-
-Your third goal with this assignment is to add an additional feature to the app. The simplest
-thing to do is to add a new FAB to one of the existing menus, like a FAB that allows you to draw 
-in a new color. If you want to challenge yourself, you could allow users to use your ColorPicker wheel
-to select a color or allow a user to change a stroke location.
-
-That was a lot. I'm actually going to help you out and show you how to add one of the
-additional features, but before I get to that - any questions?
-
-[ADDING COLOR FAB]
-
-I'm going to show you how to add a Color FAB. This is one of your options for additional
-features. It's also very similar to adding the Thickness 0 FAB.
-
-The first thing I'm going to do is go to color_menu.xml, because I know this
-is the layout file that contains all the color FABs. I'm just going to copy
-and paste one of the other color FABs. Then I'm going to update it's id, contentDescription,
-and backgroundTint attributes. 
-
-To be consistent with the style here, I'm going to define the string for the contentDescription
-in the strings.xml file.
-
-Next I'm going to look at MainActivity because I know that's the class that adds
-the color and thickness buttons. I noticed that the other color buttons are stored 
-in COLOR_MENU_ITEMS array. I add my grey FAB to the array. addCollapsableMenu adds
-the button and sets its on click listener automatically, so you don't have to worry 
-about it showing up correctly on your app or registering a listener. All you have to
-do now is go to onColorSelected, which is the listener function for the color buttons.
-I add my own case for the grey fab, do a ChangeColorAction, and I'm done.
\ No newline at end of file
diff --git a/slides/l10/10-heuristic-1.png b/slides/l10/10-heuristic-1.png
deleted file mode 100644
index fb0ccf3ae0d1ab2153ac19709c2ed58797225d7d..0000000000000000000000000000000000000000
Binary files a/slides/l10/10-heuristic-1.png and /dev/null differ
diff --git a/slides/l10/10-heuristic-2.png b/slides/l10/10-heuristic-2.png
deleted file mode 100644
index fe13cfe4b255e278e7089fad3912a3e59a2f41ad..0000000000000000000000000000000000000000
Binary files a/slides/l10/10-heuristic-2.png and /dev/null differ
diff --git a/slides/l10/10-heuristic.png b/slides/l10/10-heuristic.png
deleted file mode 100644
index 30d63b8b69588d725642697ec7196b52e6befd71..0000000000000000000000000000000000000000
Binary files a/slides/l10/10-heuristic.png and /dev/null differ
diff --git a/slides/l10/lab-heuristic.html b/slides/l10/lab-heuristic.html
deleted file mode 100644
index 90f246e614d237015e11a5008e69baee68d55f49..0000000000000000000000000000000000000000
--- a/slides/l10/lab-heuristic.html
+++ /dev/null
@@ -1,73 +0,0 @@
----
-layout: presentation
-title: Lab 10 Slides
-description: Getting started with Heuristic Evaluation
-class: middle, center, inverse
----
-# CSE 340 Lab 10 (Spring 2020)
-## Week 10: Heuristic Evaluation
-
-.title-slide-logo[
-  ![:img 10 Heuristic Evaluation Principles, 45%](10-heuristic.png)
-]
----
-
-# Undo Timeline
-
-- Heuristic Evaluation due: Friday, June 5 @ 10:00pm
-
-- Report and Reflection due: Monday, June 8 @ 10:00pm
-
----
-
-# Section 10 Objectives
-
-- Heuristic Evaluation instruction
-
-- CSE 340 Farawell Kahoot
-
-- Questions/Feedback
-
-
----
-
-## Heuristic Evaluation
-
-- You should have received an email with the [survey link](https://docs.google.com/forms/d/e/1FAIpQLScDe9k5bOKFikyh4ai32ih1e8waMD4SMECAjZK3yRVl1u-eDQ/viewform) and videos
-
-- We will complete a heuristic evaluation on one submission in section today
-    - You must complete the remaining 3 evaluations by the due date
-
-- What should you do?
-
-    - Two passes through the interface: one to inspect flow, another to inspect each screen against heuristics
-    - For each video, submit 3 things: At least two should be bad issues, one can be good.
-    - Write a Usability Action Report ([template](https://courses.cs.washington.edu/courses/cse340/20sp/assignments/undo-report) provided)
----
-
-![:img 10 Heuristic Evaluation Principles, 60%](10-heuristic-1.png)
-
-- **H1. Visibility of system status** -- Are users informed about what is going on in the app?
-
-- **H2: Match between the system and the real world** -- Does the app use concepts, language, and conventions that would be familiar to users?
-
-- **H3: User control and freedom** -- Does it allow users to do what they want to?
-
-- **H4: Consistency and standards** -- Does the app use the same conventions in all its components? Is it consistent with other apps on the same platform?
-
-- **H5: Error prevention** -- Is the app defensive? Does it have a design that protects users from making mistakes?
-
----
-
-![:img 10 Heuristic Evaluation Principles, 60%](10-heuristic-2.png)
-
-
-- **H6: Recognition rather than recall** -- Are the objects/actions/options of the app easily accessible to newcomers, or do they require memory?
-
-- **H7: Flexibility and efficiency of use** -- Can users customize the app to their needs?
-
-- **H8: Aesthetic and minimalist design** -- Is the app cluttered? Does it contain only relevant components?
-
-- **H9: Help users recognize, diagnose, and recover from errors** -- When users run into any problem, will it be easy for them to fix it?
-
-- **H10: Help and documentation** -- Is help easy to find and navigate? Is the information given even helpful?
diff --git a/slides/proto-deck.html b/slides/proto-deck.html
new file mode 100644
index 0000000000000000000000000000000000000000..678da34d20b4b1e8510e7b8e5f465f3eb315f415
--- /dev/null
+++ b/slides/proto-deck.html
@@ -0,0 +1,32 @@
+---
+layout: presentation
+title: FOOBAR  --Week N--
+description: Accessibility
+class: middle, center, inverse
+---
+background-image: url(img/people.png)
+
+.left-column50[
+# Welcome to the Future of Access Technologies
+
+Week N, FOOBAR
+
+{{site.classnum}}, {{site.quarter}}
+]
+---
+name: normal
+layout: true
+class:
+
+---
+# Important Reminder
+
+## This is an important reminder
+## Make sure zoom is running and recording!!!
+## Make sure captioning is turned on
+
+---
+[//]: # (Outline Slide)
+# Learning Goals for today
+
+
diff --git a/slides/unused/3dmodeling.html b/slides/unused/3dmodeling.html
deleted file mode 100644
index 0bb6b2e4aa3487f77eedff6336861cd55b3306c1..0000000000000000000000000000000000000000
--- a/slides/unused/3dmodeling.html
+++ /dev/null
@@ -1,149 +0,0 @@
----
-layout: presentation
-title: Basic Intro to 3D modeling
-description: Description of how to create a 3D model in OpenSCAD
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse-
----
-# Physical Computing
-
-Jennifer Mankoff
-
-CSE 340 Winter 2020
----
-layout:false
-
-[//]: # (Outline Slide)
-.title[Today's goals]
-.body[
-- Introduce OpenSCAD
-- Talk about elements of 3D modeling
-]
-
----
-.title[OpenSCAD: A language for 3D modeling]
-.body[
-[Beginner's
-tutorial](http://edutechwiki.unige.ch/en/OpenScad_beginners_tutorial)
-
-Comments and variables similar to what you are used to
-
-```
-//Name Tag - Customizable
-Name = "Jen Mankoff";
-Length = 90 ;
-c = 20;
-```
-]
----
-.title[OpenSCAD concepts: solids]
-.body[
-Primitive Solids such as `cube([2,3,4]);` make up your designs
-
-Also `sphere` `cylinder` `polyhedron` 
-]
----
-.title[OpenSCAD concepts: transformations]
-.body[
-Same as 2D transformations
-
-- `rotate([x,y,z]) [solid]`
-- `translate([x,y,z]) [solid]`
-- `mirror([x,y,z]) [solid]`
-- ...
-]
----
-.title[OpenSCAD concepts: CSG modeling]
-.body[
-- Union: `union() { [transformations/solids/etc] }` combines children
-- Difference: `difference() {}` subtracts everything from first child
-- Hull: `hull() {}` combines all the children within a convex hull 
-
-]
-
----
-.title[OpenSCAD concepts: 2G geometry + linear extrusion]
-.body[
-- `linear_extrude (height=XX)` and then define a polygon to extrude,
-  e.g., `polygon(points=[[0,0],[100,0],[0,100],[15,15],[65,15],[15,65]], paths=[[0,1,2],[3,4,5]]);`
-
-makes what? 
-]
---
-.body[
-![:img Picture of a triangle extruded to a depth of 16,30%](img/modeling/extruded-polygon.png)
-
-]
----
-.title[Other things to extrude]
-.body[
-
-- Can import a DXF file and extrude, just put this after `linear_extrude`: `import (file = "file.dxf");`
-
-- text: 
-
-```
-content = "Text rocks";
-font = "Liberation Sans";
-
-translate ([-30,0,0]) {
-   linear_extrude(height = 3) {
-       text(content, font = font, size = 10);
-     }
- }
-```
-]
----
-.title[Other features]
-.body[
-[Cheat sheet](http://www.openscad.org/cheatsheet/index.html)
-
-- `%` shows something transparently so you can find out what would
-  happen
-- `$fn` sets resolution (can speed things up by making this low during design)
-- Can create functions (`module name() {}` )
-- Can use for loops 
-- Can use [other peoples' libraries](https://github.com/mtu-most/most-scad-libraries)
-]
----
-.title[Let's try it]
-.body[
-- Open OpenSCAD
-- Before you begin modeling, go to View>>Show Axes. This will make it
-  easier to see where the parts of your model are being placed.
-- Click and drag to change viewing angle
-- Right click and drag to move origin
-
-
-]
----
-.title[sample program]
-.body[
-
-```
-//Name Tag
-Name = "Jen Mankoff";
-Length = 90 ;
-c = 20;
-
-linear_extrude(height = 5)
-translate([0, 5, 0])
-text(Name);
-
-difference(){
-    hull(){
-        cylinder(h=2,d=40);
-        translate([Length,0,0])
-        cylinder(h=2,d=40);
-    }
-    translate([Length,0,0])
-    cylinder(h=2,d=14);
-
-}
-```
-]
----
-# End of Deck
diff --git a/slides/unused/activity-events.html b/slides/unused/activity-events.html
deleted file mode 100644
index 81970bc95a0da05dd108ee195b871a3edbc6a69e..0000000000000000000000000000000000000000
--- a/slides/unused/activity-events.html
+++ /dev/null
@@ -1,40 +0,0 @@
----
-layout: presentation
-title: Background on how Activities Generate Events
-description: Activity state changes generate events. Here's how
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-template: inverse
-
-# Interaction Programming Lab (Spring 2019)
-## Activity State Change Event Handling
----
-layout: false
----
-
-## Activity.red[*]
-
-- Application component providing a screen for users to interact
-
---
-
-- Typically fills whole the screen (though it doesn't have to)
-
---
-<br><br>
-![:img Android Calculator App, 20%](img/android-calculator-example.png)
-![:img Android Contacts App, 20%](img/android-contacts-example.png)
-![:img Android Search App, 20%](img/android-search-example.png)
-<br>
-
---
-
-<br>
-.footnote[
- More on Activites: https://developer.android.com/guide/components/activities.html
-
-]
diff --git a/slides/unused/ar.html b/slides/unused/ar.html
deleted file mode 100644
index fe53f80ac6cfd3916a6d8d2fa0e9009bdd7eac09..0000000000000000000000000000000000000000
--- a/slides/unused/ar.html
+++ /dev/null
@@ -1,214 +0,0 @@
----
-layout: presentation
-title: Augmented Reality and your Phone
-description: Discussion of the future of mobile AR
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Augmented Reality and your Phone
-
-Jennifer Mankoff
-
-CSE 340 Spring 2019 
-Slides credit: Chauncey Frend, Indiana University
-.footnote[[Frend, Chauncey. ”Augmented Reality & the UITS Advanced Visualization Lab." 30 Sep 2016/28 Feb 2017. Digital Arts & Humanities Workshop Series. Scholars' Commons, Wells Library, Indiana University, Bloomington.](http://hdl.handle.net/2022/21293)
-]
-
----
-layout: false
-
-.title[What is Augmented Reality?]
-
-.body[
-![:img Continuum, 100%](img/ar/arvr.png)
-]
-.footnote[
-Milgram, Paul, et al. "Augmented reality: A class of displays on the reality-virtuality continuum." Photonics for industrial applications. International Society for Optics and Photonics, 1995.
-[Photo
-Source](http://smartideasblog.trekk.com/augmented-or-virtual-how-do-you-like-your-reality)
-]
----
-.left-column[
-##        What is AR?
-
-A combination of 
-- a real scene viewed by a user and 
-- a virtual scene generated by a computer that augments the scene with
-  additional information.
-  ]
-.right-column[
-![:img eg, 60%](img/ar/areg.png)
-
-]
-???
-Differences to VR?
-Augmented Reality
-- System augments the real world scene
-- User maintains a sense of presence in real world
-- Needs a mechanism to combine virtual and real worlds
-- Hard to register real and virtual
-
----
-.left-column50[
-## Brief History
-
-- 1901 Lyman Frank Baum  author of “The Master Key” imagines a kind of AR.
-- 1968 Ivan Sutherland invents first head-mounted display “Sword-of-Damocles” at University of Utah.
-- 1999 ARToolkit was created by Hirokazu Kato at HITLab
-- 2010 Vuforia for AR Mobile Apps was released by Qualcomm.
-- 2013 Google announces Google Glass.
-- 2015 Microsoft announces the HoloLens.
-- 2016 Niantic released Pokémon Go.
-]
-.right-column50[
-![:img History, 100%](img/ar/arhistory.png)
-]
----
-.title[AR Coloring Book]
-.body[
-![:youtube AR Coloring Book Video, SWzurBQ81CM]
-0:00-0:30
-]
-
----
-.title[AR Climbing Wall]
-.body[
-![:youtube AR Climbing Wall, rjWcE25s7kQ]
-0:00-0:33
-]
-
----
-.title[AR 3D Assembly]
-.body[
-![:youtube AR 3D Assembly, CONY3q3OdPA]
-
-0:00-0:33
-
-[Similar example in medical domain](https://www.youtube.com/watch?v=MS3h9_KPoBY&feature=youtu.be)
-]
-
----
-.title[AR in Retail]
-.body[
-![:img Ikea, 100%](img/ar/ikea.png)
-]
-
----
-.title[AR in Tourism]
-.body[
-![:img Disney, 100%](img/ar/disney.png)
-]
-
----
-.title[Human/robot Interaction]
-.body[
-
-![:youtube HRI, mSCrviBGTeQ]
-
-Time: 2:15
-
-]
----
-.left-column[
-## Building AR experiences]
-.right-column[
-ASSETS
-
-Display
-
-Interface
-]
----
-.left-column[
-## Building AR experiences: ASSETS]
-.right-column[
-Sources?
- - 3D Scanning
- - Photogrammetry
- - 3D Authoring
- - 3D Repositories
-  - e.g. Smithsonian X 3D https://3d.si.edu/browser
-  - e.g. Thingiverse
-]
-???
-Other media? 
----
-.left-column[
-## Building AR experiences: Display Hardware]
-.right-column[
-
-![:img Hololens, 50%](img/ar/hololens.png)
-![:img Phone, 25%](img/ar/mobile.png)
-
-Requirements?
-]
-???
-Camera
-Display
-...
-
----
-.left-column[
-## Building AR experiences: Interface]
-.right-column[
-![:youtube Pokemon Go, vgfZbgwrbx8]
-
-- 4:00-7:20 
-
-
-]
-.footnote[https://www.geekwire.com/2018/pokemon-go-evolved-remain-popular-initial-craze-cooled/]
-???
-Discussion of interface needs
----
-.left-column[
-## Combining real and virtual
- 
-Registering assets with the scene
-
-Tracking objects
-]
-.right-column[
-![:img registration, 50%](img/ar/objectplace.png)
-]
-???
-1st picture - real world
-
-2nd picture - real world with virtual objects and inter-reflections and virtual 
-	shading
----
-.title[Difficult!]
-.body[
-
-Requires objects to behave in physically plausible manners when manipulated
-- Occlusion
-- Collision detection
-- Shadows
-
-AR systems sensitive to visual errors - virtual object may not be stationary in the
-	real scene or it may be in the wrong place.
-
-Time delays lead to augmented image lagging behind motions in the real scene.
-
-]
-???
-Failures in registration due to:
-Noise
-Position and pose of camera with respect to the real scene
-Image distortions
-Time delays
-In calculating the camera position
-
-
-
----
-.title[Some tools]
-.body[
-- Unity (Basic package)
-- [Vuforia (AR
-  Plugin)](https://medium.com/quick-code/top-tutorials-to-learn-vuforia-to-develop-ar-applications-274eedc2b18f)
-  
-]
diff --git a/slides/unused/ar/areg.png b/slides/unused/ar/areg.png
deleted file mode 100644
index 70b9195a640946c8b4ec22aaf79ae5f431f8c933..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/areg.png and /dev/null differ
diff --git a/slides/unused/ar/arhistory.png b/slides/unused/ar/arhistory.png
deleted file mode 100644
index 550d9f858b52ecbf1502d503e69f632d16297950..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/arhistory.png and /dev/null differ
diff --git a/slides/unused/ar/arvr.png b/slides/unused/ar/arvr.png
deleted file mode 100644
index de518a47a6de4fb5c7f0b03fda00b08e118cc95a..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/arvr.png and /dev/null differ
diff --git a/slides/unused/ar/disney.png b/slides/unused/ar/disney.png
deleted file mode 100644
index 5e648a272f580502a65d94ccf9767fbae62a2f3f..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/disney.png and /dev/null differ
diff --git a/slides/unused/ar/hololens.png b/slides/unused/ar/hololens.png
deleted file mode 100644
index bbb80f5d644bf7208c14aeacb047b7a7487dfaf8..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/hololens.png and /dev/null differ
diff --git a/slides/unused/ar/ikea.png b/slides/unused/ar/ikea.png
deleted file mode 100644
index 581b9ca6b395866451e7515eeb86ed0a6d5ce560..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/ikea.png and /dev/null differ
diff --git a/slides/unused/ar/mobile.png b/slides/unused/ar/mobile.png
deleted file mode 100644
index bde11ccf0af95bc7ea20eb3d16b2a239f7445a77..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/mobile.png and /dev/null differ
diff --git a/slides/unused/ar/objectplace.png b/slides/unused/ar/objectplace.png
deleted file mode 100644
index 4f5dbe56678158c3c657ed14c73a772c1daf4a56..0000000000000000000000000000000000000000
Binary files a/slides/unused/ar/objectplace.png and /dev/null differ
diff --git a/slides/unused/cartoon2.png b/slides/unused/cartoon2.png
deleted file mode 100644
index 44d9f443c8702ee6e65fec7b12378c8c9545ce27..0000000000000000000000000000000000000000
Binary files a/slides/unused/cartoon2.png and /dev/null differ
diff --git a/slides/unused/dev-demo.html b/slides/unused/dev-demo.html
deleted file mode 100644
index ff90862930ac559bd82463d2db65cafa80252eb2..0000000000000000000000000000000000000000
--- a/slides/unused/dev-demo.html
+++ /dev/null
@@ -1,121 +0,0 @@
----
-layout: presentation
-title: Hello World Slides--Week 1, Lab-- 
-description: Lab project--Hello World--
-class: middle, center, inverse
----
-
-# SSUI Mobile Lab (Spring 2020)
-## Week 1: Development Environment Setup
-
-.title-slide-logo[
-  ![:img Android Logo, 100%](img/android-logo.png)
-]
-
----
-
-# Overview
-- ## Android Studio Installation
-
-- ## Android SDK Installation
-
-- ## Exercise: Hello World
----
-
-layout: false
-## Development Environment Setup
-
---
-
-- Download + Install
-
-  - __Android Studio__:  
-    https://developer.android.com/studio/index.html
---
-
-  - __Genymotion Android Emulator__ *(Optional)* :   https://www.genymotion.com/thank-you-freemium/
---
-
-- Android Set-up
---
-  - Open Android Studio
-
----
-
-template: inverse
-## Android Studio Walk-through
-
----
-
-### Starting Android an Android Project
-![:img Select `Start a new Android Studio Project`, 70%](img/lab-00-hello-01.png)
-
----
-
-### Project Configuration
-
-![:img Project Configuration, 70%](img/lab-00-hello-02.png)
-
----
-
-### Targeting Android Devices
-
-![:img Targeting Android Devices, 70%](img/lab-00-hello-03.png)
-
----
-
-### Adding an Activity
-
-![:img Adding an Activity, 70%](img/lab-00-hello-04.png)
----  
-
-### Customizing the Activity
-
-![:img Customizing the Activity, 70%](img/lab-00-hello-05.png)
-
----
-
-### Viewing your Activity's Code
-
-  ![:img Viewing your Activity's Code, 70%](img/lab-00-hello-06.png)
-
----
-
-### Running your Application
-  ![:img Running your Application, 70%](img/lab-00-hello-07.png)
-
-
----
-### Selecting a Deployment Target
-  ![:img Selecting a Deployment Target, 70%](img/lab-00-hello-08.png)
-
----
-### Configuring a Virtual Device (Install Marshmallow)
-  ![:img Install Marshmallow, 70%](img/lab-00-hello-09.png)
-
-
----
-### Let the Installer Run (Grab some Coffee)
-  ![:img Let the Installer Run - Grab some Coffee, 70%](img/lab-00-hello-10.png)
-
-
----
-### Configuring a Virtual Device - Select a Phone
-  ![:img Configuring a Virtual Device - Select a Phone, 70%](img/lab-00-hello-11.png)
-
-
----
-### Configuring a Virtual Device - Naming your Device
-  ![:img Configuring a Virtual Device - Naming your Device, 70%](img/lab-00-hello-12.png)
-
-
----
-
-### Selecting a Deployment Target
-  ![:img Selecting a Deployment Target, 70%](img/lab-00-hello-13.png)
-
-
----
-### Start your Application!
-  ![:img Start your Application, 70%](img/lab-00-hello-14.png)
-
diff --git a/slides/unused/final-exam-review.html b/slides/unused/final-exam-review.html
deleted file mode 100644
index c1f6509f21a203f963c7763427d3cf8b3ea77bd0..0000000000000000000000000000000000000000
--- a/slides/unused/final-exam-review.html
+++ /dev/null
@@ -1,113 +0,0 @@
----
-# Example long answer question
-
-##Which is better and which laws explain it?
-
-| #A | #B | 
-|--|--|
-|![:img Picture of the Graffiti gesture recognition alphabet from the Palm Pilot, 50%](img/whole/Grafitti.png)|.right-column50[![:img Picture of the Edgewrite gesture recognition alphabet, 100%](img/whole/Edgewrite.png)]|
-
---
-- Fitts Law ( distance and sized;  expert errorless behavor)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (expert behavior)
-- Gestalt Psychology (will they see it at all?)
-- **Errors (will they be reduced)**
-
----
-.left-column-half[
-# Fitts Law
-
-![:img Picture of graph of fitts law data collected when I did the
-experiment. Y axis is time and x is index of difficulty. It's fairly
-noisy because fitts law is designed to measure multiple
-people. However it does fit a line., 80%](img/whole/timeoverid.png)
-
-Fitts' law only applies to *error-free, expert* behavior
-]
-.right-column-half[
-.jax[$$MT = a + b*log_2({Dist \over Size} + 1)$$
-]
-
-where
-- *MT* is movement time
-- *ID/MT* is the *Throughput* of a device in bits/second
-- *a* and *b* are empirically derived constants 
-- ID is the *Index of Difficulty* (ID, in bits) of a movement
-.jax[$$log_2({Dist \over Size} + 1)$$]
-
-
-]
-???
-This is just a line
-
-Fitts’ law tells us about difficulty for pointing and selection tasks
-- Time to move the hand depends only on relative precision required
-- MT increases as __distance__ from target increases
-- MT decreases as __size__ of target increases
-- Diagram this
-
-Fitts' law only applies to expert behavior
-
----
-.title[Design tips derived from motor principals]
-.body[
-Design Tip #1: Make small targets larger
-
-Design Tip #2: Put commonly used things close together
-
-Design Tip #3: Make use of Edges: They are Infinite
-
-Design Tip #4: Use pie menus instead of context menus for expert tasks
-
-Design Tip #5: Use snapping to minimize distance<br> when likely
-targets are known
-
-Design Tip #6: Separate Motor Size from Visible Size
-
-]
----
-.title[Use of two handed input]
-.body[
-
-2 Handed input principles
-- Non preferred leads
-- Sets frame of reference
-- Preferred does fine movement
-]
---
-.title[Lenses]
-.body[
-Use: Display hidden, context-specific interaction
-
-Implementation
-]
----
-.title[Study design]
-.body[
-Know your terms (participant, session, trial, condition)
-
-Know the important information about ethics
-- Beneficence -->
- - Value of research higher than risks
- - Do no harm
-- Respect for Persons -->
- - Fully informed of intent and purpose
- - Informed consent
- - May opt out at any time, for any reason
-- Justice
- - equitable, representative selection of participants
-]
-
----
-.title[Study Analysis]
-.body[
-
-Basic statistics: Max, Min, Mean, Mode
-
-Bar chart: Compares conditions (means)
-
-Histogram: Shows number of results in each part of a range (distribution)
-
-Correlation != Causation
-]
diff --git a/slides/unused/img/Edgewrite2.png b/slides/unused/img/Edgewrite2.png
deleted file mode 100644
index d667210ad2a378b2158d5ed08c97edb01efec834..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/Edgewrite2.png and /dev/null differ
diff --git a/slides/unused/img/Grafitti2.png b/slides/unused/img/Grafitti2.png
deleted file mode 100644
index af6a460e7db587130d59a195b06160ceadbbef9d..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/Grafitti2.png and /dev/null differ
diff --git a/slides/unused/img/akkarh.jpg b/slides/unused/img/akkarh.jpg
deleted file mode 100644
index 9ea23e5b7e5f4cc5603d8323973622dceb5b3033..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/akkarh.jpg and /dev/null differ
diff --git a/slides/unused/img/amber.png b/slides/unused/img/amber.png
deleted file mode 100644
index dc1ee2f038baeef5c20a0ccc3d8a1c0f8dd94774..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/amber.png and /dev/null differ
diff --git a/slides/unused/img/android-calculator-example.png b/slides/unused/img/android-calculator-example.png
deleted file mode 100755
index f5921e2da2941d95e3d6eafc39fade76ec14c266..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/android-calculator-example.png and /dev/null differ
diff --git a/slides/unused/img/android-contacts-example.png b/slides/unused/img/android-contacts-example.png
deleted file mode 100755
index 86239c1cdfab7abde795a4d01567cede0dd7accd..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/android-contacts-example.png and /dev/null differ
diff --git a/slides/unused/img/android-logo.png b/slides/unused/img/android-logo.png
deleted file mode 100755
index cebec75001ab25dc397065f193797d5ebd0cb38d..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/android-logo.png and /dev/null differ
diff --git a/slides/unused/img/android-search-example.png b/slides/unused/img/android-search-example.png
deleted file mode 100755
index ba5e27882923910ebee1e758760360e943c670d8..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/android-search-example.png and /dev/null differ
diff --git a/slides/unused/img/animation.png b/slides/unused/img/animation.png
deleted file mode 100644
index ab4004c764f33b6a9e74806206a1262f835a17c2..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/animation.png and /dev/null differ
diff --git a/slides/unused/img/area.png b/slides/unused/img/area.png
deleted file mode 100644
index 09a62b05a8402bccfb0d2dd1d6d5e3fae53f00ff..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/area.png and /dev/null differ
diff --git a/slides/unused/img/ascent.png b/slides/unused/img/ascent.png
deleted file mode 100644
index bd3570da5f06b32335df6fe44627c6ed7b8b62e8..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/ascent.png and /dev/null differ
diff --git a/slides/unused/img/background-paper.png b/slides/unused/img/background-paper.png
deleted file mode 100644
index fab891a842afc9228f4eaa8098b56252c11a3398..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/background-paper.png and /dev/null differ
diff --git a/slides/unused/img/bad-defaults.gif b/slides/unused/img/bad-defaults.gif
deleted file mode 100644
index e2a3c38c8184eb2a8468f6609171355e7da5dee4..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/bad-defaults.gif and /dev/null differ
diff --git a/slides/unused/img/buttons.png b/slides/unused/img/buttons.png
deleted file mode 100644
index 26675f540854d26ee061fb0f9f81a46d9766ca14..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/buttons.png and /dev/null differ
diff --git a/slides/unused/img/cartoon.png b/slides/unused/img/cartoon.png
deleted file mode 100644
index 5f76a447e8897a2b5a527df6f715c18dce15ed38..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/cartoon.png and /dev/null differ
diff --git a/slides/unused/img/colordodge-both.png b/slides/unused/img/colordodge-both.png
deleted file mode 100644
index fa80aafc9aa29f8f656020a8aa2bf175de96c88c..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/colordodge-both.png and /dev/null differ
diff --git a/slides/unused/img/colordodge-diagram.png b/slides/unused/img/colordodge-diagram.png
deleted file mode 100644
index ec409e17117c3e56ec8aa2826d5bafea6e3c87b7..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/colordodge-diagram.png and /dev/null differ
diff --git a/slides/unused/img/colormeter-highlights.png b/slides/unused/img/colormeter-highlights.png
deleted file mode 100644
index 4bf4ad68b9d61b7fcebf9dcc9c675fc456983e75..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/colormeter-highlights.png and /dev/null differ
diff --git a/slides/unused/img/combined2.png b/slides/unused/img/combined2.png
deleted file mode 100644
index c40330a24baefe21cc51e412404416ab7b0d9fe2..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/combined2.png and /dev/null differ
diff --git a/slides/unused/img/dest.png b/slides/unused/img/dest.png
deleted file mode 100644
index 89def8fa8bacee63b6568bdd908fafd714555d04..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/dest.png and /dev/null differ
diff --git a/slides/unused/img/destatop-diagram.png b/slides/unused/img/destatop-diagram.png
deleted file mode 100644
index 8de5e7f261e925749c8c0870569e32fddc64ae74..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/destatop-diagram.png and /dev/null differ
diff --git a/slides/unused/img/destatop.png b/slides/unused/img/destatop.png
deleted file mode 100644
index a2db0db76f516e56ff70d3a7bf8aa6c60b2884b0..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/destatop.png and /dev/null differ
diff --git a/slides/unused/img/diagram.png b/slides/unused/img/diagram.png
deleted file mode 100644
index 5437f18cc73929e005672147a1da65fa821abff5..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/diagram.png and /dev/null differ
diff --git a/slides/unused/img/diaz.png b/slides/unused/img/diaz.png
deleted file mode 100644
index 59c95dc4ecde1bc5b966fd09364892eb27a14418..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/diaz.png and /dev/null differ
diff --git a/slides/unused/img/download-projects.png b/slides/unused/img/download-projects.png
deleted file mode 100644
index 2c14bd2aafc9317983c230fd4af3ef1279707b0e..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/download-projects.png and /dev/null differ
diff --git a/slides/unused/img/drawing-interface.png b/slides/unused/img/drawing-interface.png
deleted file mode 100644
index 25ca6afba81ee996baa56de1ef507751b13cf107..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/drawing-interface.png and /dev/null differ
diff --git a/slides/unused/img/echeverra.png b/slides/unused/img/echeverra.png
deleted file mode 100644
index cd9317cfb4c036141df5d4299a7262863ffe7c9e..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/echeverra.png and /dev/null differ
diff --git a/slides/unused/img/ex1.png b/slides/unused/img/ex1.png
deleted file mode 100644
index 2900bc8d9e002acb4ef7d670c5036468a723fe74..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/ex1.png and /dev/null differ
diff --git a/slides/unused/img/ex2.png b/slides/unused/img/ex2.png
deleted file mode 100644
index 2b5f42516128abe09cb980dc36fc55c84fcba7bd..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/ex2.png and /dev/null differ
diff --git a/slides/unused/img/expanded.png b/slides/unused/img/expanded.png
deleted file mode 100644
index 4907f94f175c3c32c81aabd86688ca1157c5b013..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/expanded.png and /dev/null differ
diff --git a/slides/unused/img/georgia-1.png b/slides/unused/img/georgia-1.png
deleted file mode 100644
index 56e7e858a0a813f8a34fd16feab46ba3f4ee072e..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/georgia-1.png and /dev/null differ
diff --git a/slides/unused/img/georgia-2.png b/slides/unused/img/georgia-2.png
deleted file mode 100644
index a373894d49636bf80f364e46d11bf32209670719..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/georgia-2.png and /dev/null differ
diff --git a/slides/unused/img/gmail-snapping.gif b/slides/unused/img/gmail-snapping.gif
deleted file mode 100644
index 66a17084941a6d03ad02d2dfa7b62446ec755b1d..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/gmail-snapping.gif and /dev/null differ
diff --git a/slides/unused/img/goodviz.png b/slides/unused/img/goodviz.png
deleted file mode 100644
index b42f09a9f43ddc6d05dcd1c0e3e287da291c78a3..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/goodviz.png and /dev/null differ
diff --git a/slides/unused/img/hello-01.png b/slides/unused/img/hello-01.png
deleted file mode 100644
index 6c057df55e13c28a81228aa2fae3d0edf5cac700..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-01.png and /dev/null differ
diff --git a/slides/unused/img/hello-02.png b/slides/unused/img/hello-02.png
deleted file mode 100644
index b86dea59e9823022af4b81bef09fdfba55b89074..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-02.png and /dev/null differ
diff --git a/slides/unused/img/hello-03.png b/slides/unused/img/hello-03.png
deleted file mode 100644
index abe5ea1efe366c816202d3cefd4b0d6acacdbc2f..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-03.png and /dev/null differ
diff --git a/slides/unused/img/hello-04.png b/slides/unused/img/hello-04.png
deleted file mode 100644
index 6f97bb0cba2987998e50f8636db525c7079cb9e2..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-04.png and /dev/null differ
diff --git a/slides/unused/img/hello-06.png b/slides/unused/img/hello-06.png
deleted file mode 100644
index 170e81c7f423939618e0f2aa03125e3fad7c64c2..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-06.png and /dev/null differ
diff --git a/slides/unused/img/hello-07.png b/slides/unused/img/hello-07.png
deleted file mode 100644
index cb177cec3a40e92916564d2c41aad6be4f458238..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-07.png and /dev/null differ
diff --git a/slides/unused/img/hello-08.png b/slides/unused/img/hello-08.png
deleted file mode 100644
index 335d752558aef8183444ccdb34c9f59de9781895..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-08.png and /dev/null differ
diff --git a/slides/unused/img/hello-09.png b/slides/unused/img/hello-09.png
deleted file mode 100644
index 9c8722d48a4c63fe23597091479a5b6b441d3614..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-09.png and /dev/null differ
diff --git a/slides/unused/img/hello-10.png b/slides/unused/img/hello-10.png
deleted file mode 100644
index 880f6e86a28a16eede427735bc4a3b120a923bcd..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-10.png and /dev/null differ
diff --git a/slides/unused/img/hello-11.png b/slides/unused/img/hello-11.png
deleted file mode 100644
index cbb3f57b2bb8a8370f2add7d9bad0930ffb88b44..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-11.png and /dev/null differ
diff --git a/slides/unused/img/hello-12.png b/slides/unused/img/hello-12.png
deleted file mode 100644
index ba1580140041d190f4f459230234b9006f892d26..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-12.png and /dev/null differ
diff --git a/slides/unused/img/hello-13.png b/slides/unused/img/hello-13.png
deleted file mode 100644
index 93e377d4922b592f763057a4eb21019884b3016f..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-13.png and /dev/null differ
diff --git a/slides/unused/img/hello-14.png b/slides/unused/img/hello-14.png
deleted file mode 100644
index bf0f8d9f48d01391031e8ac57ebcc16ceffdd0e5..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/hello-14.png and /dev/null differ
diff --git a/slides/unused/img/history.png b/slides/unused/img/history.png
deleted file mode 100644
index 137e7e1cf9c1d15a26db157570135dcec876de84..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/history.png and /dev/null differ
diff --git a/slides/unused/img/input-example.gif b/slides/unused/img/input-example.gif
deleted file mode 100755
index 6aaadb863a3f3f120edd35cd05b6e507dfab7bbb..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/input-example.gif and /dev/null differ
diff --git a/slides/unused/img/linear.png b/slides/unused/img/linear.png
deleted file mode 100644
index 4b5b1fcd68a6d803cea91564521d2127a1018adf..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/linear.png and /dev/null differ
diff --git a/slides/unused/img/lorem-content.png b/slides/unused/img/lorem-content.png
deleted file mode 100644
index 6182fca44d5142386b8c5ad8546821e642cc96c4..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/lorem-content.png and /dev/null differ
diff --git a/slides/unused/img/meanchart.png b/slides/unused/img/meanchart.png
deleted file mode 100644
index 1a1d40eef2f2772506de97382338e6209ff904e7..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/meanchart.png and /dev/null differ
diff --git a/slides/unused/img/menu2.png b/slides/unused/img/menu2.png
deleted file mode 100644
index 355420f9062a0e8a0820a8910d1f563bb2df9703..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/menu2.png and /dev/null differ
diff --git a/slides/unused/img/messenger-bubble.gif b/slides/unused/img/messenger-bubble.gif
deleted file mode 100755
index 77defd497891e79a775a6ca3593cf33e02d2c890..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/messenger-bubble.gif and /dev/null differ
diff --git a/slides/unused/img/midterm/histogram.png b/slides/unused/img/midterm/histogram.png
deleted file mode 100644
index fc38781aa5657281643b358b01f25f7839f11df2..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/midterm/histogram.png and /dev/null differ
diff --git a/slides/unused/img/midterm/qs.png b/slides/unused/img/midterm/qs.png
deleted file mode 100644
index 90f6c7b5fb6d60cd832473aa12388b79cd0b32c0..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/midterm/qs.png and /dev/null differ
diff --git a/slides/unused/img/minimalist-app.png b/slides/unused/img/minimalist-app.png
deleted file mode 100644
index eb7b7a7cb0f47ff93eedf376ba0b4eb9c61ffe19..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/minimalist-app.png and /dev/null differ
diff --git a/slides/unused/img/modeling/extruded-polygon.png b/slides/unused/img/modeling/extruded-polygon.png
deleted file mode 100644
index 4e4502d0aa41d80333e032d005348aa05c7750d4..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/modeling/extruded-polygon.png and /dev/null differ
diff --git a/slides/unused/img/mvc.png b/slides/unused/img/mvc.png
deleted file mode 100644
index 15f6beea7a9cb9b94b00200db17b6ef4b9366307..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/mvc.png and /dev/null differ
diff --git a/slides/unused/img/p21-rettig.pdf b/slides/unused/img/p21-rettig.pdf
deleted file mode 100644
index 4b519982b782ecb9367304c831de8190db6dc27d..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/p21-rettig.pdf and /dev/null differ
diff --git a/slides/unused/img/p21-rettig.png b/slides/unused/img/p21-rettig.png
deleted file mode 100644
index cb5bc0b0c021dd5cd656314a8aa1071cf552511b..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/p21-rettig.png and /dev/null differ
diff --git a/slides/unused/img/palplates.png b/slides/unused/img/palplates.png
deleted file mode 100644
index ceb494c18ba7e5fdf03a9408d85c21269a2539e1..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/palplates.png and /dev/null differ
diff --git a/slides/unused/img/paper-prototype-example.jpg b/slides/unused/img/paper-prototype-example.jpg
deleted file mode 100755
index 804f888d1cc5f29981d291864c0b72e1df11751d..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/paper-prototype-example.jpg and /dev/null differ
diff --git a/slides/unused/img/paper.png b/slides/unused/img/paper.png
deleted file mode 100644
index a9ddd75d2abb12320c8b63a578985f5ddc42e0dc..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/paper.png and /dev/null differ
diff --git a/slides/unused/img/pie.png b/slides/unused/img/pie.png
deleted file mode 100644
index 19bb3cea94cceca2d283eceafb0f580812c433f4..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/pie.png and /dev/null differ
diff --git a/slides/unused/img/q2.png b/slides/unused/img/q2.png
deleted file mode 100644
index 1c7d316f8ea6be349057428ec713c53be8a36987..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/q2.png and /dev/null differ
diff --git a/slides/unused/img/red.png b/slides/unused/img/red.png
deleted file mode 100644
index 7dbe46c9c00ca3be4021c908e057dcd2738fdad5..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/red.png and /dev/null differ
diff --git a/slides/unused/img/redsat.png b/slides/unused/img/redsat.png
deleted file mode 100644
index e7d2519666e7434e6cd0558fde9b4ed18ef29bf1..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/redsat.png and /dev/null differ
diff --git a/slides/unused/img/redval.png b/slides/unused/img/redval.png
deleted file mode 100644
index 307cac41cdd5c32453b8eb984b193c5fdf42d8c3..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/redval.png and /dev/null differ
diff --git a/slides/unused/img/reference.png b/slides/unused/img/reference.png
deleted file mode 100644
index 378521989824e2f5e14c0c0964f88143e1c3e679..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/reference.png and /dev/null differ
diff --git a/slides/unused/img/reverse.png b/slides/unused/img/reverse.png
deleted file mode 100644
index b802283dba1c4ce186b23e2f2e81501dd126bb97..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/reverse.png and /dev/null differ
diff --git a/slides/unused/img/scrollbar-p2.png b/slides/unused/img/scrollbar-p2.png
deleted file mode 100644
index d77624497279e1529dd5b4c9e3440e657592f643..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/scrollbar-p2.png and /dev/null differ
diff --git a/slides/unused/img/scrollbar-p3.png b/slides/unused/img/scrollbar-p3.png
deleted file mode 100644
index aee4764b651e30f17952d8b6fcbe7b131a773dbb..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/scrollbar-p3.png and /dev/null differ
diff --git a/slides/unused/img/select-colors.png b/slides/unused/img/select-colors.png
deleted file mode 100644
index fe0aaec670e8e9070320f328b2ce1e343274689b..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/select-colors.png and /dev/null differ
diff --git a/slides/unused/img/select-shapes.png b/slides/unused/img/select-shapes.png
deleted file mode 100644
index 14c3341a45c65f2962d5995880ccb96e4960a187..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/select-shapes.png and /dev/null differ
diff --git a/slides/unused/img/sensing/aware-study.png b/slides/unused/img/sensing/aware-study.png
deleted file mode 100644
index f2f4fa24d33e4340774d383feeb610bcf9d03655..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/sensing/aware-study.png and /dev/null differ
diff --git a/slides/unused/img/sensing/aware_overview1.png b/slides/unused/img/sensing/aware_overview1.png
deleted file mode 100644
index e8c605485445b1d5d1cd0a38771b71814b976fd9..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/sensing/aware_overview1.png and /dev/null differ
diff --git a/slides/unused/img/sketch-styled.png b/slides/unused/img/sketch-styled.png
deleted file mode 100644
index b7280859cec521e6ae8bc5981904f00f187310d6..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/sketch-styled.png and /dev/null differ
diff --git a/slides/unused/img/snapping.gif b/slides/unused/img/snapping.gif
deleted file mode 100644
index e716fad939bd04ed7868a3376239cb412ceed2eb..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/snapping.gif and /dev/null differ
diff --git a/slides/unused/img/source.png b/slides/unused/img/source.png
deleted file mode 100644
index 05d2d1e4836a77cfd3b37501f0e364130790b5f9..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/source.png and /dev/null differ
diff --git a/slides/unused/img/spectrum.png b/slides/unused/img/spectrum.png
deleted file mode 100644
index c89c3b4fec26db2544598bf4e552fb843483b816..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/spectrum.png and /dev/null differ
diff --git a/slides/unused/img/static-interactive.png b/slides/unused/img/static-interactive.png
deleted file mode 100644
index 8080782000520e0199b0d574ad08ad3dc8d921fc..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/static-interactive.png and /dev/null differ
diff --git a/slides/unused/img/timeoverid.png b/slides/unused/img/timeoverid.png
deleted file mode 100644
index a633d97047b1974ec59e5811c2c768ebac148502..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/timeoverid.png and /dev/null differ
diff --git a/slides/unused/img/trueblue.png b/slides/unused/img/trueblue.png
deleted file mode 100644
index b318d002f47f0a680bfb96d6b867f48f6c572dd6..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/trueblue.png and /dev/null differ
diff --git a/slides/unused/img/visual-eg.png b/slides/unused/img/visual-eg.png
deleted file mode 100644
index 08029b57adb2d300013caf369af485ca7a3b5480..0000000000000000000000000000000000000000
Binary files a/slides/unused/img/visual-eg.png and /dev/null differ
diff --git a/slides/unused/l04-state.html b/slides/unused/l04-state.html
deleted file mode 100644
index 71a506b109bed2994b449d1bd5ff89866aae1b83..0000000000000000000000000000000000000000
--- a/slides/unused/l04-state.html
+++ /dev/null
@@ -1,376 +0,0 @@
----
-layout: presentation
-title: Lab 04 Saving State in Android --Week 4, Thursday--
-description: Introduction to state management in Android
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-template: inverse
-
-# Interactivity Lab (Fall 2018)
-## Week 3: State
-
-Instructor: TBD
-_{email}_
-
-Slides online: xxxTODO url
-
----
-layout: false
-
-# Goals for Today
-
----
-layout: false
-
-# Goals for Today
-
-- Understanding more about __Activities__
-- Learn about __State and Data Persistence__
----
-template: inverse
-
-# Saving State
----
-layout: false
-
-.left-column[## Activity Lifecycle]
-.right-column[![:img Android activity lifecycle, 50%](img/activity_lifecycle.png)]
-
-
----
-
-.left-column[## When to save state? (1/3)]
-.right-column[![:img Android activity state diagram, 50%](img/android-activity-states-01.png)]
-
-
----
-
-.left-column[## When to save state? (2/3)]
-.right-column[![:img Android activity state diagram -- process killed, 50%](img/android-activity-states-02.png)]
-
----
-
-.left-column[# When to save state? (3/3)]
-.right-column[
-- Activity `A` spawns Activity `B`
-  - E.g. Typing a Facebook post, then you select 'Add a Location'
-]
---
-.right-column[
-- Android kills `A` to reclaim resources while the user is interacting with `B`
-]
---
-.right-column[
-- User finishes with `B`, returns to `A` but the post is gone!
-]
----
-
-# Maintaining Activity State
-
-- We can fix it by saving the state in a `Bundle` before Android closes the `Activity`
-
-- We then restore the state when we return to the `Activity` later
-
----
-
-# Bundle it up
-
-- `Bundle`: A hash map (dictionary) of String keys to Primitive, Parcelable, Serializable values
-
---
-
-- Used to:
-  (1) Save/restore state
-  (2) Transfer data between different `Activity` in an app
-
---
-
-- Primitive are `int`, `float`, `boolean`, `double` (the usual suspects)
-
---
-
-- Custom objects that implement the `Serializable` or `Parcelable` interfaces
-  - You will need to make any custom classes that you want to save into a `Bundle` implement the `Parcelable` interface
-
----
-
-# Parcelable vs. Serializable
-
-- Both are for the same purpose of saving but `Serializable` makes implementations much easier...
-
---
-
-- **EXCEPT, .red[you should almost always use `Parcelable`]**
-
-
---
-
-- Why?
-  - `Serializable` uses introspection ==> more memory, and CPU cycles
-  - `Parcelable` **is optimized for mobile devices**
-
----
-## Implementing `Parcelable` (1/3)
-
--- You are required to implement the following methods for the `Parcelable` interface:
-
-```java
-public class MyPersonModel implements Parcelable {
-    private int mAge;
-
-    // Required for the interface
-    public int describeContents() {
-        return 0;
-    }
-
-    // Required for the interface
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeInt(mAge);
-    }
-    // Continued on next slide...
-```
-
----
-
-## Implementing `Parcelable` (2/3)
-
-```java
-
-    // Required for the interface
-    // CREATOR is an object that can remark
-    public static final Parcelable.Creator<MyPersonModel> CREATOR
-            = new Parcelable.Creator<MyPersonModel>() {
-        public MyPersonModel createFromParcel(Parcel in) {
-            return new MyPersonModel(in);
-        }
-
-        public MyPersonModel[] newArray(int size) {
-            return new MyPersonModel[size];
-        }
-    };
-
-    // Required for the interface
-    // Private constructor for Android to use with your CREATOR
-    private MyPersonModel(Parcel in) {
-        mAge = in.readInt();
-    }
-}
-```
----
-
-## Implementing `Parcelable` (3/3)
-- **Note**: .red[the order of the values when writing and reading them matters!]
-
-  - When you write to the parcel using `write*()` methods in `writeToParcel`,
-
-  - The write order __MUST BE__ the same as when you read them in the private constructor
-
-- For more details on implementation:
-  https://developer.android.com/reference/android/os/Parcelable.html
-
----
-
-# Saving in the Bundle
-
-- Methods for _saving_ items out of a Bundle
-
-  - Ints: `putInt(String key, int value)`
-
-  - Floats: `putFloat(String key, float value)`
-
-  - Characters: `putChar(String key, char value)`
-
-  - Strings: `putString(String key, String value)`
-
-  - Serializable Objects: `putSerializable(String key, Serializable value)`
-
-  - Parcelable Objects: `putParcelable(String key, Parcelable value)`
-
-  - _Others in the documentation (e.g. Arrays, Bytes, etc).._
-    https://developer.android.com/reference/android/os/Bundle.html
-
----
-# Retrieving from the Bundle
-
-- Methods for getting items out of a Bundle
-
-  - Ints: `getInt(String key)`
-
-  - Floats: `getFloat(String key)`
-
-  - Characters: `getChar(String key)`
-
-  - Strings: `getString(String key)`
-
-  - Serializable Objects: `getSerializable(String key)`
-
-  - Parcelable Objects: `getParcelable(String key)`
-
-  - _Others in the documentation_ (e.g. Arrays, Bytes, etc)..
-    https://developer.android.com/reference/android/os/Bundle.html
----
-## Saving Activity State (1/3)
-- Android provides the `onSaveInstanceState(Bundle savedInstanceState)` callback method for you to save the state of an `Activity`
-
-```java
-private static final USERNAME_KEY = "USER_NAME_KEY";
-private static final FIB_SUM_KEY = "FIB_SUM_KEY";
-
-private int mFibSumValue; // Set to 10295 by our user
-private String mUsername; // Set to "Michael" by our user
-
-@Override
-public void onSaveInstanceState(Bundle outState) {
-    // Always call super - your super classes could be saving state for you!
-    super.onSaveInstanceState(outState);
-
-    // Now
-    outState.putInt(FIB_SUM_KEY, mFibSumValue);
-    outState.putString(USERNAME_KEY, mUsername);
-}
-```
----
-
-## Restoring Activity State (1/4)
-
-- We saved, and now our user goes off to some other app
-
---
-
-- Android kills our `Activity`
-
---
-
-- Now how do we get the _saved_ state back?
-
----
-## Restoring Activity State (2/4)
-
--  Two ways:
-  - `onCreate(Bundle savedInstanceState)`
-  - `onRestoreInstanceState(Bundle savedInstanceState)`
-
----
-## Restoring Activity State (3/4)
-
-- Using `onCreate(Bundle savedInstanceState)`...
-
-```java
-private static final USERNAME_KEY = "USER_NAME_KEY";
-private static final FIB_SUM_KEY = "FIB_SUM_KEY";
-
-private int mFibSumValue = 0;
-private String mUsername = null;
-
-@Override
-protected void onCreate(Bundle savedInstanceState) {
-  super.onCreate(savedInstanceState);
-  setContentView(R.layout.activity_main);
-
-  mMainTextView = (TextView) findViewById(R.id.text_main_title);
-  mSumTextView = (TextView) findViewById(R.id.text_sum);
-  // Check if there was a previously saved state to restore to the user
-  // A non-null bundle means there was a state that was saved previously
-  // A bundle is just a Key-Value pairing - its a hash map :)
-  if (savedInstanceState != null) {
-    // There was a previous state - time to restore
-    mFibSumValue = savedInstanceState.getInt(FIB_SUM_KEY);
-    mUsername = savedInstanceState.getString(USERNAME_KEY);
-  }
-  updateMainText();
-  updateFibSumText();
-}
-```
-
----
-
-## Restoring Activity State (4/4)
-
-- Using `onRestoreInstanceState(Bundle savedInstanceState)`
-
-```java
-private static final USERNAME_KEY = "USER_NAME_KEY";
-private static final FIB_SUM_KEY = "FIB_SUM_KEY";
-private int mFibSumValue = 0;
-
-@Override
-protected void onRestoreInstanceState(Bundle savedInstanceState) {
-  super.onRestoreInstanceState(savedInstanceState);
-  // Check if there was a previously saved state to restore to the user
-  if (savedInstanceState != null) {
-    // There was a previous state - time to restore
-    mFibSumValue = savedInstanceState.getInt(FIB_SUM_KEY);
-    mUsername = savedInstanceState.getString(USERNAME_KEY);
-  }
-  updateMainText();
-  updateFibSumText();
-}
-```
-
----
-
-### Restoring in `onCreate` vs. `onRestoreInstanceState`
-- `onRestoreInstanceState`
-  - Guarantees you will never have a non-null `Bundle` when called
-  - Lets subclasses override the behavior of restoring the state
-
-- `onCreate`
-  - Lets you focus on doing all of your initialization in one place
-
-- You decide what works best for you :)
-
-- http://stackoverflow.com/questions/36408776/using-oncreate-vs-onrestoreinstancestate
-
----
-
-## Exercise: Parcelable and Activity State
-
-- Pair up!
-
-- Download the base code here:
-
-- This app lets a user enter a name, age, and favorite food
-
-- It stores this info in a `PersonModel`
-
-- When the app is killed, this information needs to remain edited
-
-- Implement the `Parcelable` interface for the PersonModel
-
-- Then use the Activity's relevant state change callbacks to `PersonModel` when the phone rotates
-
----
-### Some Notes about `onSaveInstanceState()`
-- .red[Only use to save and restore session variables and the state of the UI]
-
---
-
-  - Android won't always trigger the method
-
---
-
-  - It is called when the `Activity` is closed and _expected_ to be restored soon
-
---
-
-- If your app crashes, or is closed, **the values in the bundle will disappear!**
-
---
-
-- If you use custom views, you can implement their version of `onSaveInstanceState`:
-
-  Android will call `onSaveInstanceState()` every view in the layout
-
----
-# Project Work: Add Save State
-
-
----
-# End of Slides
-    
----
-
diff --git a/slides/unused/lofi.html b/slides/unused/lofi.html
deleted file mode 100644
index 67ae041a22de92c24ff14b2931efc4a1ceba3334..0000000000000000000000000000000000000000
--- a/slides/unused/lofi.html
+++ /dev/null
@@ -1,138 +0,0 @@
----
-layout: presentation
-title: Layout --Week 2, Monday-- 
-description: Description of Layout
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Advanced Interaction Design
-
-Jennifer Mankoff
-CSE 340 Spring 2019 
----
-layout:false
-
-background-image: url(img/paper.png)
-[//]: # (Outline Slide)
-# Today's goals
-- Problems with lo-fi prototypes
-- Understand user testing
-- Ethical considerations in testing
-- Collection and use of evidence
----
-.left-column[## Problems with low-fi prototypes?]
-.right-column[
-![:img paper prototype, 20%](img/paper.png)
-]
-???
--“Computer” inherently buggy
--Can’t get accurate time measurement
--Hard to implement some functionality: pulldowns, feedback, drag, viz …
--Won’t look like final product: sometimes hard to recognize components
--End-users can’t use by themselves: not in context of user’s work environment
--Couldn’t measure realistic I/O
--Lack of interactive feedback: e.g. button highlights
--“Computer” has to keep track of a lot of paper
--Users wouldn’t criticize UI
--Doesn’t map well to what will actual fit on the screen 
--Couldn’t hold in your hand – different ergonomics from target device
--Some things could not be simulated (highlighting)
--Writing on paper not the same as writing on target device / Hard to draw well (-recognition of elements)
--Appearance unrealistic
--Dynamic components hard to simulate (pop-ups)
--Couldn’t give proper affordance that something wasn’t selectable
--Some items had to be static!
--Dragging hard to simulate
----
-.left-column[## High Fi testing]
-.right-column[
-Must test & observe ideas with customers
-
- - Want to compare and contrast
- - Want to get more realistic reactions
-
-Paper mock-ups don’t go far enough
- - How would you show a drag operation?
- - Not realistic of how interface will be used
-
-Approaches
- - Can fake it -- good for early
- - Can implement it
-]
----
-.left-column[## Review: Testing Goals
-![:img Cartoon of user test, 100%](img/cartoon.png)
-]
-.right-column[
-Choose your focus
-
-Task design:
-- Appropriate scope
-- Predictable outcomes
-- Elicits action
-]
----
-.left-column[##Kinds of data we can collect?]
-???
-Discuss
---
-.right-column[
-Video, Descriptions of behaviors, Notes
-Can transcribe and analyze individual users
-Can look for patterns across users
-]
----
-.left-column[##Goal of data collection?]
-???
-Discuss
---
-.right-column[
-What went well?
-What went badly?
-What matters (severe, common)?
-]
----
-.left-column[##Qualitative data collection]
-.right-column[
-Identify Critical Incidents (can be good or bad)
-
-Critical Incidents are Situations that: 
-- Provoke silence 
-- Provoke puzzlement 
-- Provoke user comments 
-
-Capture using Critical Incident reports
-
-]
----
-.left-column[#Critical Incident Report]
-.right-column[
-Name: System doesn’t treat “1” and “one” interchangeably
-Severity:   High/Medium/Low + Good/Bad
-Frequency:  (expected within system)
-Category: 
-The user accomplishes a goal, but in a suboptimal way OR
-The user expresses some negative affect or says something is a problem.
-Evidence: Report FACTS!
-What the user (s) said: “My destination is One Market Street” “This is not right, I don't think this is what I want to do.” (on “Multiple Search Results” page).
-
-What the user (s) did: After receiving the “no exact match” error message, the user hits the Back button to return to the trip planner and enters “1” instead of “One.”
-
-What the system did: The system presented the user with a “Multiple Search Results” page, with the error message “We found some locations similar to your destination entry, but no exact match.”  After the user returns to the trip planner and enters “1,” the system returns a bus route.
-]
----
-.left-column[#Quantitative data]
-
----
-layout: false
-
-.left-column[##Other Menus]
-.right-column[
-Kurtenbach:
-![:youtube Illustration of advantages of marking menus,dtH9GdFSQaw]
-]
-
----
diff --git a/slides/unused/menus2.html b/slides/unused/menus2.html
deleted file mode 100644
index 9c519a5bc5029b15097455969c849045d3d3348f..0000000000000000000000000000000000000000
--- a/slides/unused/menus2.html
+++ /dev/null
@@ -1,585 +0,0 @@
----
-layout: presentation
-title: Predicting and Evaluating Interactor Efficacy
-description: Discussion of Theory and Collection of User Data for assessing Interactor Efficacy
-class: middle, center, inverse
----
-layout:false
-
-# Why is selection (and testing) important .red[*]
-.left-column50[
-
-![:img Image showing a false alarm in hawaii that led everyone to
-think there wsa a nuclear event, 100%](img/alert1.jpg)
-]
-.right-column50[
-![:img Image showing the screen that led to this error, 100%](img/alert.jpg)
-]
-
-.footnote[.red[*] [Washington Post Article](https://www.washingtonpost.com/news/morning-mix/wp/2018/01/16/that-was-no-wrong-button-in-hawaii-take-a-look/?utm_term=.1848969db923)
-]
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Predicting and Evaluating Interaction Efficacy
-
-Jennifer Mankoff
-CSE 340 Spring 2019 
----
-layout: false
-
-[//]: # (Outline Slide)
-# Today's Learning goals
-- Introduce key coding concepts for Menus Assignment
-- **Using Properties of People To Predict Design Outcomes**
----
-.title[Comments on Feedback]
-.body[
-Thanks for the feedback on the class!
-- Quizzes show. Assignments are taking a long time. We will try to post information
-about expected time, please reach out for help if you go beyond that
-
-- Start early (some people are starting ColorPicker today), so you can ask us for help with time to spare!
-
-]
-???
-Feedback from Monday 
----
-.title[Menus Assignment]
-.body[
-Will compare pie menus to linear menus
-
-Demo
-]
-
----
-.left-column50[
-## Interface  Structure
-
-<div class="mermaid">
-graph LR
-FrameLayout --> ActionBar[ActionBar]
-ActionBar --> TextView[TextView:Pie/Menu]
-ActionBar --> Hamburger[Hamburger:Next Session/ClearCSV]
-FrameLayout --> MainLayout[MainLayout]
-MainLayout --> MenuExperimentView[MenuExperimentView]
-MainLayout --> InstructionText[InstructionTextView]
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class FrameLayout,ActionBar,MainLayout,TextView,Hamburger,MenuExperimentView,InstructionText normal
-</div>
-]
-
-.right-column50[
-## Inheritance Structure
-
-<div class="mermaid">
-graph LR
-MenuExperimentView[MenuExperimentView] --> PieMenuView[PieMenuView]
-MenuExperimentView --> NormalMenuView[NormalMenuView]
-</div>
-
-]
- 
----
-.title[PPS for assignment]
-.body[
-Implemented in MenuExperimentView
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((Start))
-A -- "Press?drawMenu;startTrial;startPoint=p" --> I((Inside))
-I -- "Release:endTrial;reset();onOptionSelected(trial)" --> E[End]
-I -- "Drag:currentIndex=menuItem" --> I
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class S invisible
-class A start
-class E finish
-class I normal
-</div>
-
-
-Works in both Menus!
-]
-
----
-.title[Enums]
-.body[
-
-Group of named constants
-
-- Used for PPS in colorPicker (PPS States; Essential Geometry)
-
-- Used for PPS in Menu assignment *and* for experimental conditions
-
-- Easy to inspect if you want to (we do this in ExperimentSession)
-
-[Documentation](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)
-]
-
----
-.title[Custom Listeners]
-.body[
-- Used in ColorPicker and Menus. You'll use them lots
-- Why create custom listeners?
-]
---
-.body[
- - Let you execute code when your view's model has changed
- - No other way to know that has happened
-
-]
-
----
-.title[How to implement]
-.body[
-
-Custom View needs
-- To define the custom interface 
-- To keep track of listeners
-]
---
-.body[
-Anything using the view needs
-- To implement the interface (specifically, the method that will be called)
-- To register itself as a listener
-]
----
-.title[Example Custom View -- ColorPicker: We setup the Custom View side for you]
-.body[
-```java
-    /** Currently registered ColorListener instance or null. */
-    protected ColorListener mColorListener;
-
-    /**
-     * Class which defines a listener to be called when a new color is selected.
-     */
-    public interface ColorListener {
-        void onColorSelected(@ColorInt int color);
-    }
-
-    /**
-     * Registers a new listener for the color of this ColorPicker, or replaces
-     * any existing listener.
-     *
-     * @param colorListener New listener or null.
-     */
-    public final void setColorListener(@Nullable ColorListener colorListener) {
-        mColorListener = colorListener;
-    }
-```
-]
----
-.title[You need to do this yourself in Menus]
-
-.body[
-
-```java
- /**
-     * You need to create a listener interface so the application
-     * can be notified when a selection is made. This will trigger
-     * the move to the next trial.
-     */
-    protected MenuExperimentViewSolution.MenuListener menuListener;
-```
-]
----
-.title[Example Custom Listener -- ColorPicker: You need to implement
-this]
-
-.body[
-`// TODO: Register callback to update {color,label} View when color changed.`
-
-What method do we call to register the callback?  setColorListener
-
-What method is called when?
-
-What do we usually do in a callback? update application state
-]
-???
- Draw a time based diagram 
----
-.title[Listener in Menus]
-.body[
-`setMenuListener` needs to be implemented, should
-
-- record the result of that trial
-- Update the experiment to show the next menu (or nothing if the
-session is over)
-- Update the instructions to the user
-]
----
-.title[OnDraw changes to Canvas]
-.body[
-Views `MATCH_PARENT`
-
-Makes drawing tricky
-
-Translate (like a parent view does for kids)
-
-]
----
-layout: false
-
-[//]: # (Outline Slide)
-# Today's Learning goals
-- Introduce key coding concepts for Menus Assignment
-- **Using Properties of People To Predict Design Outcomes**
----
-.title[Fitts Law]
-.body[
-Quiz Results to discuss
-]
-
----
-.title[Other laws we might use to make predictions about what will go better]
-.body[
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
-]
- ---
-#Which is better and which laws explain it?
-.left-column50[
-#A Pie Menu
-![:img Pie Menu, 80%](img/pie.jpg)
-]
-.right-column50[
-#B Pull down Menu
-![:img Traditional Menu inside a web browser, 80%](img/menu.png)
-]
-???
-
-What analysis methods can we use to predict?
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
-
----
-# Which is better and which law explains it?
-.left-column50[
-#A Pie Menu
-![:img Pie Menu, 80%](img/pie.jpg)
-]
-.right-column50[
-#B Marking Menu
-![:youtube Video assigned before class, 8c58bN6ajJ4?t=30]
-]
-???
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - **Does someone have to 'check' something? More than once?**
- - **Do they have to move? More than once**
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
----
-.title[Which is better and which laws explain it?]
-
-.body[
-A: Tapping B: Crossing
-![:youtube Video of using crossing for selection, kp2Zl4ONuik]
-]
-
-???
-
-- **Fitts Law (compare distance and size; check for infinite size)**
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
-
----
-#Which is better and which laws explain it?
-.left-column50[
-#A
-![:img Picture of the Graffiti gesture recognition alphabet from the Palm Pilot, 100%](img/Grafitti.png)
-]
-.right-column50[
-#B
-![:img Picture of the Edgewrite gesture recognition alphabet, 50%](img/Edgewrite.png)
-
-]
-???
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- **Errors (will they be reduced)**
-
----
-#Which is better and which laws explain it?
-
-.left-column50[
-#A
-![:img Picture of old facebook security page with icons and text mixed
-up,100%](img/facebook.png)
-]
-.right-column50[
-#B
-
-![:img Picture of March 2019 facebook security page with icons and
-text clearly aligned, 100%](img/facebook2.png)
-]
-???
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- **Gestalt Psychology (group?)**
-- **Errors (will they be reduced)**
----
-# How do we actually **prove** such theories?
-
---
-# Collect Data!
----
-
-.left-column[##Kinds of data we can collect?]
-???
-Discuss
---
-.right-column[
-- Video
-- Timing/Errors
-- Descriptions of behaviors
-- Notes
-- Can transcribe and analyze interviews with users
-- Can look for patterns across users
-]
----
-.left-column[##Qualitative data collection to test theory]
-.right-column[
-Identify Critical Incidents (can be good or bad)
-
-Critical Incidents are Situations that: 
-- Provoke silence 
-- Provoke puzzlement 
-- Provoke user comments 
-
-Capture using Critical Incident reports
-
-]
----
-.left-column[##Quantitative data collection to test theories]
-.right-column[
-Identify Hypothesis
-
-Hypothesis is 
-- Relevant
-- Testable
-
-Capture data that proves or disproves hypothesis
-
-]
----
-# How do we prove our theories? Hypothesis
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis((Hypothesis))
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-</div>
-
-
----
-# How do we prove our theories? Method
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis((Hypothesis))
-Hypothesis -- "Study Design" --> Method((Method))
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-class Method normal
-</div>
-
-
----
-# How do we prove our theories? Data
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis((Hypothesis))
-Hypothesis -- "Study Design" --> Method((Method))
-Method -- "Run Study" --> Data((Data))
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-class Method,Data normal
-</div>
----
-# How do we prove our theories? Analysis
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis((Hypothesis))
-Hypothesis -- "Study Design" --> Method((Method))
-Method -- "Run Study" --> Data((Data))
-Data -- "Clean and Prep" --> Analysis((Analysis))
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-class Method,Data,Analysis normal
-</div>
-
----
-# How do we prove our theories? Conclusions
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis((Hypothesis))
-Hypothesis -- "Study Design" --> Method((Method))
-Method -- "Run Study" --> Data((Data))
-Data -- "Clean and Prep" --> Analysis((Analysis))
-Analysis --> Conclusions((Conclusions))
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis,Conclusions start
-class Method,Data,Analysis normal
-</div>
-
-.left-column50[
-#A
-![:img Picture of the Graffiti gesture recognition alphabet from the Palm Pilot, 100%](img/Grafitti.png)
-]
-.right-column50[
-#B
-![:img Picture of the Edgewrite gesture recognition alphabet, 50%](img/Edgewrite.png)
-
-]
-
-???
-Hypothesis: Errors (will they be reduced)
-Method:?? 
-Data:??
-Analysis??
-Conclusions??
-
----
-# How do we prove our theories? Conclusions
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis((Hypothesis))
-Hypothesis -- "Study Design" --> Method((Method))
-Method -- "Run Study" --> Data((Data))
-Data -- "Clean and Prep" --> Analysis((Analysis))
-Analysis --> Conclusions((Conclusions))
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis,Conclusions start
-class Method,Data,Analysis normal
-</div>
-
-.left-column50[
-#A Pie Menu
-![:img Pie Menu, 80%](img/pie.jpg)
-]
-.right-column50[
-#B Pull down Menu
-![:img Traditional Menu inside a web browser, 80%](img/menu.png)
-]
-???
-
-Hypothesis: Errors will be reduced; 
-Hypothesis: Motion will be faster due to low level motor things 
-Hypothesis: fewer cognitive checks needed
-Method:?? 
-Data:??
-Analysis??
-Conclusions??
diff --git a/slides/unused/midterm.html b/slides/unused/midterm.html
deleted file mode 100644
index 23b1bc0a437338e6db71f3130ed4aeda9394370c..0000000000000000000000000000000000000000
--- a/slides/unused/midterm.html
+++ /dev/null
@@ -1,85 +0,0 @@
----
-layout: presentation
-title: Midterm Recap
-description: Discussion of some Midterm Questions
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Midterm Recap
-
-Jennifer Mankoff
-
-CSE 340 Spring 2019 
----
-layout: false
-
-.title[Midterm Histogram]
-.body[
-
-![:img Histogram of Midterm Grades, 100%](img/midterm/histogram.png)
-]
----
-
-.title[Question Breakdown]
-.body[
-
-<div class="mermaid">![:img Question Breakdown, 90%](img/midterm/qs.png)
-</div>]
----
-
-.title[Sampling of questions]
-.body[
-Your boss has read up on Fitts’ law, and wants to put all the controls
-at the bottom of the screen so they have infinite width and are easier
-to click on. However, your colleague argues that they should be in a
-pie menu which should pop up wherever the user presses instead. 
-
-- D and W in each case
-- Which is better?
-- Time savings for eyes free (HARD!)
-]
-???
-
----
-.title[Given an interface draw an interactor hierarchy]
-.body[
-What defines an interactor hierarchy?
-
-]
-
-???
-has a root
-only has views in it
-is a tree
---
-.body[
-What is damaged? Everything under the damaged region
-]
----
-.title[Callbacks]
-.body[
-
-You have registered your app to listen for OffRoute callbacks (when the driver’s vehicle deviates from the route, onOffRoute() will be called). Correctly label each method call, based on what object (Application or View) calls it, and where you would put the code to implement it. 
-
- |                         | Called by application or view? | Implemented in application or view? |
- |-------------------------|--------------------------------|-------------------------------------|
- | onOffRoute()            |                                |                                     |
- | setOnOffRouteListiner() |                                |                                     |
-
-]
-
-???
-view -- app
-app -- view
----
-.title[Draw a PPS]
-.body[
-Let's do it for a button
-]
----
-
-
-
diff --git a/slides/unused/paper.html b/slides/unused/paper.html
deleted file mode 100644
index 9a66d11245cfe4ed14ee353afeb9999ec1c6aadb..0000000000000000000000000000000000000000
--- a/slides/unused/paper.html
+++ /dev/null
@@ -1,479 +0,0 @@
----
-layout: presentation
-title: Layout --Week 2, Monday-- 
-description: Description of Layout
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# XXX need to cut back on these slides significantly to focus on exercise...
----
-layout:false
-
-# Marc Rettig’s Problems with Hi-Fi Prototypes
-
-Can you list some?
-???
-Hi-Fi prototypes take too long to build and change
-
-Reviewers and testers tend to comment on detailed, low-level issues rather than big picture
-
-Developers resist change
-
-A prototype in software can set expectations that are hard to change
-
-A single bug in a hi-fi prototype can bring a test to a complete halt
-
----
-template:inverse
-
-# Quiz
----
-# Paper Prototyping
-
-![:img Paper Prototyping, 20%](img/paper-prototype-example.jpg)
-
-Jennifer Mankoff
-CSE 340 Spring 2019
-
----
-# Example of Paper Prototyping
-
-![:youtube Paper Prototyping of video game,9wQkLthhHKA]
-
----
-layout:false
-
-.left-column[
-![:img Rettig Paper, 100%](img/p21-rettig.png)
-Marc Retting: Prototyping for Tiny Fingers. CACM 1994]
-
-.right-column[Paper prototyping is potentially a breakthrough idea for
-organizations that have never tried it, since it allows you to
-.red[demonstrate the behavior of an interface very early] in
-development, and .red[test designs with real users]...]
---
-.right-column[
-It is .red[fast], it .red[brings results early] in development (when it is
-relatively cheap to make changes), and allows a team to
-.red[try far more ideas] than they could with high-fidelity
-prototypes. Lo-fi prototyping 
-helps you apply Fudd's first law of creativity: 'To get a good idea,
-get lots of ideas.'
-]
-
----
-background-image: url(img/background-paper.png)
-
-.left-column[## What is Paper Prototyping?]
---
-
-.right-column[
-Fast and cheap way to create and test user interfaces]
-
---
-
-.right-column[
-It's equivalent to storyboarding in the film industry
-]
-
---
-
-.right-column[
-Focuses on function, less on form
-]
---
-
-.right-column[
-All you need: pen, paper (and possibly scissors/tape)
-]
-
----
-.left-column[Paper Prototypes
-
-![:img hand pointing at drawing interface, 100%](img/drawing-interface.png)
-]
-.right-column[
-Show what an interface … 
-- looks like (sort of)
-- flows like (from screen to screen)
-- interacts like (for some things)
-
-Should be… 
-- Fast to build
-- Lo-fi or hi-fi
-
-Support … 
-- Iteration
-- Ideation
-- User testing
-]
----
-.left-column[Paper Prototypes
-![:img hand pointing at drawing interface, 100%](img/drawing-interface.png)
-]
-.right-column[
-Can uncover what a user ...
-- fill in
-<br>
-<br>
-<br>
-Cannot uncover ...
-- fill in
-]
-???
-
-can uncover:
-- Notices
-- Prefers
-- Finds Accessible
-- Knows
-cannot uncover:
-Interaction
-Load Times
-Context aware (hard)
----
-## Today's learning goals
-
-Why paper prototypes?
-
-How to make paper prototypes 
-
-Hands-on experience rapidly making a paper prototype
-
-Understand what paper prototyping is and isn’t good for
-
-Begin to understand the role of study design in prototyping
-
----
-template:inverse
-
-# More Examples
----
-layout:false
-
-.left-column[## Example Prototype Dimensions
-
-There are other spectrums, but <br> these three are <br> very important
-]
-.middle-column[
-## &nbsp;&nbsp;Faster &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;  &nbsp;  &nbsp;  Slower.red[*]
-![:img skteched vs styled, 70%](img/sketch-styled.png)
-
-The visual look of your prototype is its most salient dimension. If not properly selected, it can sidetrack prototype reviews. Go hi-fi too soon and users will focus on aesthetics like color and font choice, which is not appropriate in early stages.
-]
- .small[.red[*]Source: [Smashing Magazine](http://www.smashingmagazine.com/2010/06/16/design-better-faster-with-rapid-prototyping/)]
----
-.left-column[##Visual Dimension
-
-Prototyping the Nintendo Wii UI .red[*]]
-
-.right-column[
-![:img A wii prototype, 70%](img/visual-eg.png)
-
-When a prototype looks like an early design, your users will be more comfortable providing candid—and often more critical—feedback  
-
-]
-
-.small.red[[Source: Gamustra](http://www.gamasutra.com/view/news/181321/Sometimes_paper_is_your_best_prototyping_tool__even_if_youre_Nintendo.php#.UK95NofAd8G)]
-
-???
-http://www.gamasutra.com/view/news/181321/Sometimes_paper_is_your_best_prototyping_tool__even_if_youre_Nintendo.php#.UK95NofAd8G
-
-'Oh, it's made out of cardboard! (laughs)'- Nintendo president Satoru
-Iwata marvels atthe simplicity of an early prototype of the Wii U's
-tablet controller (pictured above).Nintendo is banking on its
-Miiverse -- a sort of mini-Facebook with a layer of console game --
-	 -- makeup -- to draw players to its new Wii U console. It was
-a new concept, running on a new type of game hardware with the
-tablet-like GamePad.
-
-Nintendo contracted fellow Kyoto social media
-company Hatena Co. Ltd. to do a lot of the Miiverse design work. The
-Wii U's tablet-infused GamePad hadn't been finalized yet, but Hatena
-UI designer Kazuyuki Motoyama felt that he needed to know how the
-Miiverse would feel in his hands, so the company developed the basic
-feel of it with this simple cardboard prototype.
-
-'We wouldn't know how it felt unless we could actually hold it, but
-since we didn't have one, the only thing to do was make one,' Motoyama
-explains. 'In the middle of the night, I cut pieces of cardboard and
-glued them together.'
-
-Ithink there's a game development lesson here. You can prototype just
-about anything with the tools available to you, on just about any
-budget. Whether it's paper or an HTML website or even a free copy of
-UDK or Unity, you shouldn't let available technology hold you back
-from trying new ideas.
-
-If paper prototyping is good enough for a feature embedded in millions of Nintendo-made consoles, it's probably good enough for you too. 
-
----
-.left-column[## Example Prototype Dimensions
-
-There are other spectrums, but these three are very important
-]
-.middle-column[
-## &nbsp;&nbsp;Faster  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;  &nbsp;  &nbsp;  Slower.red[*]
-![:img skteched vs styled, 70%](img/sketch-styled.png)
-
-![:img static vs interactive, 70%](img/static-interactive.png)
-
-
-Does the prototype reveal how the solution will work (static) or does
-it appear to be fully functional and respond to user input
-(interactive)?   
-
-]
-
-.small[.red[*][Source: Smashing Magazine](http://www.smashingmagazine.com/2010/06/16/design-better-faster-with-rapid-prototyping/)]
-
----
-.left-column[##Functional Dimension
-
-Prototyping the Nintendo Wii UI .red[*]]
-
-.right-column[
-![:img A wii prototype, 70%](img/visual-eg.png)
-
-Here the screen is made of paper. The controller is made of
-cardboard. But the design is interactive: The user clicks on a
-button and the facilitator updates the resulting paper interface
-
-]
-
-.small[.red[*][Source: Gamustra](http://www.gamasutra.com/view/news/181321/Sometimes_paper_is_your_best_prototyping_tool__even_if_youre_Nintendo.php#.UK95NofAd8G)]
----
-
-
-.left-column[## Example Prototype Dimensions
-
-There are other spectrums, but these three are very important
-]
-.middle-column[
-## &nbsp;&nbsp;Faster &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;  &nbsp;  &nbsp;  Slower.red[*]
-![:img skteched vs styled, 70%](img/sketch-styled.png)
-
-![:img static vs interactive, 70%](img/static-interactive.png)
-
-![:img lorum ipsum vs real content, 70% ](img/lorem-content.png)
-
-
-Displaying content? Early on, just squiggly lines, then maybe dummy
-text (though this can distract—be careful), then actual content.]
-]
----
-.left-column[##'Point of need' Computing .red[*]]
-.right-column[
-![:img Picture of a wall mounted paper interface, 70% ](img/palplates.png)
-
-
-.red[*]
-Supporting knowledge workers beyond the desktop with
-PALPlates. Mankoff, Jennifer, and  Bill Schilit. CHI 1997.
-]
----
-# Prototyping Concerns
-.left-column[## Choosing your focus]
-.right-column[
-![:img Prototyping Cartoon, 70%](img/cartoon.png)
-]
----
-# Prototyping Concerns
-.left-column[
-### Task Design
-- Appropriate scope
-- Predictable outcomes
-- Elicits action
-]
---
-.middle-column[
-### Prototype Design
-
-Each card represents one sub-screen/task element
-- Use a photocopier to make many version
-- Use post-its and notecards for different regions of the screen
-
-Simple is great
-]
----
-# Prototyping Concerns
-.left-column[## Choosing your focus
-
-### Task Design
-- Appropriate scope
-- Predictable outcomes
-- Elicits action
-]
-.middle-column[
-### Prototype Design
-
-Each card represents one sub-screen/task element
-- Use a photocopier to make many version
-- Use post-its and notecards for different regions of the screen
-
-Simple is great
-]
-.right-column[
-### Roles
-- Real users
-- An observer or video camera
-- A human computer
-]
-
-???
-Computer should be mostly silent
-
-Accurate
-
-Wait for users to act
-
----
-template:inverse
-
-#Importance of Testing .red[Multiple] Prototypes
-
----
-layout:false
-.left-column[##Testing Multiple Prototypes
-<br>
-<br>
-Wiklund Thurrot &amp; Dumas<br>
-Human Factors Society 1992
-]
-.right-column[
-We have found subjects reluctant to be critical of designs when they are asked to assign a rating to the design. In our usability tests, we see the same phenomenon even when we encourage subjects to be critical. 
-]
---
-.right-column[
-We speculate that the test subjects feel that giving a low rating to a
-product gives the impression that they are “negative” people, that the
-ratings reflect negatively on their ability to use computer-based
-technology, that some of the blame for a product’s poor performance
-falls on them, or that they don’t want to hurt the feelings of the
-person conducting the test.
-]
-
----
-template:inverse
-
-#What are some strategies to combat this problem?
----
-layout:false
-
-.left-column[##Eliciting Criticism]
-.right-column[
-Test low-fidelity prototypes that look unfinished
-
-Have independent testers (testers not invested in outcome)
-
-Show multiple prototypes/products & have them compare
-]
----
-template: inverse
-# Exercise
----
-layout: false
-## Exercise
-- Brainstorming - a To Do List app (7 mins)
-
---
-
-- Paper Prototype the app in groups of 3 (20 mins)
-
---
-
-- Come up with Task Scenarios (5 min)
-
---
-
-- User Test with 2 students from another group (15 min)
-
---
-
-- Discussion (10 min)
-
---
-
-Things we would add if we had time!
-- Refine your Prototype (10 min)
-
---
-
-- User Test with 1 student (10 min)
-
----
-
-## Discussion
-
---
-
-- What can and can't you learn from it?
-
---
-
-- Why is this hard for mobile applications?
-  
---
-
-  - Context-aware Applications?
-
---
-
-- What other low-fi techniques can we use?
----
-Sources:
-Storyboards, Paper Prototypes and Mockups
-Scott Klemmer’s HCI MOOC
-https://www.youtube.com/watch?v=z4glsttyxw8
-
-Paper Prototyping as a Usability Testing Technique
-https://usabilitygeek.com/paper-prototyping-as-a-usability-testing-technique/
-
-
-Also useful: wikipedia.org/wiki/Paper_prototyping
-Google image search: ‘paper prototyping’
-
-
-
-Book: Prototyping: A practitioner’s guide
-https://www.amazon.com/Prototyping-Practitioners-Todd-Zaki-Warfel/dp/1933820217
-
-Book: Paper Prototyping
-https://www.amazon.com/Paper-Prototyping-Interfaces-Interactive-Technologies/dp/1558608702
-
-
-Prototyping for tiny fingers. Rettig, Marc. Communications of the
-ACM 37.4 (1994
-
-Supporting knowledge workers beyond the desktop with
-PALPlates. Mankoff, Jennifer, and  Bill Schilit. CHI 1997.
-
-MoveableMaker: facilitating the design, generation, and assembly of
-moveable papercraft. Annett, Michelle, et al., UIST 2015. 
-
- 
----
-# Unused
-
----
- Example 1: Travellr
-
-![:youtube Paper Prototyping of travel app,_5FGeSQ7DBU]
-
-Example 2: Game (also video prototyping...)
-![:youtube Paper Prototyping of video game,x48qOA2Z_xQ]
-
----
-# Complex has its place too .red[*]
-
-![:youtube Paper Prototyping of video game,v=0yh-omblujQ]
-
-[Long video](https://www.youtube.com/watch?v=eujk284JYOE) and [Full talk](https://www.youtube.com/watch?v=NO4Fml1UZA4)
-
-.red[*] Annett, Michelle, et al. MoveableMaker: facilitating the
-design, generation, and assembly of moveable papercraft. Proceedings
-of the 28th Annual ACM Symposium on User Interface Software &
-Technology. ACM, 2015. 
diff --git a/slides/unused/sensing-assignment.html b/slides/unused/sensing-assignment.html
deleted file mode 100644
index f59f0f0e0b7cf5db60adfa1faf77b12fa301b74a..0000000000000000000000000000000000000000
--- a/slides/unused/sensing-assignment.html
+++ /dev/null
@@ -1,236 +0,0 @@
----
-layout: presentation
-title: Sensing Implementation
-description: Implementation of phone sensing
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Sensing with your Phone: Implementation
-
-Jennifer Mankoff
-
-CSE 340 Spring 2019 
----
-layout: false
-
-.title[Review: Android Awareness API]
-.body[
-Link to overview [Awareness API](https://developers.google.com/awareness/) 
-
-Unfortunately much of the documentation online is not up to date (last
-updated in 2017)
-]
-
-???
----
-.title[Non-programming requirements]
-.body[
-Emulator requirements: Play store installed
-- Makes it easier to get your app working
-
-Permission requirements: Correct API installed
-
-Follow the “[Quick
-Guide](https://developers.google.com/places/web-service/get-api-key)”
-- Click on 'Get Started'
-- Use your class repo name for your app name (something like
-cse340-LaughingChipmunks) -- competing with all other google apps for namespace
-- You may need a billing account. 
-- DONT LOSE YOUR API KEY or you'll have to start over. 
-]
----
-.title[Which APIs to enable?]
-.body[
-
-Minimum requirements
-- Awareness API (should be turned on by default
-- [See APis enabled](https://console.developers.google.com/apis/)
-]
-
----
-.title[Using your API key]
-.body[
-When you have your API key, go to your android manifest and paste it
-in between the quotation marks labeled API_KEY. 
-
-Once you do that, as
-described in the spec, you'll need to accept permissions and update
-play when you run your code.
-
-```xml
-
-        <meta-data
-            android:name="com.google.android.awareness.API_KEY"
-            android:value="YOUR_KEY_HERE"/>
-        <meta-data
-            android:name="com.google.android.geo.API_KEY"
-          android:value="YOUR_KEY_HERE"/>
-```
-	
-]
----
-.title[Review: Snapshots]
-.body[
-Current info
-
-Requires a single callback: 
-`onSnapshot(Response response)`
-
-Setup the callback in MainActivity (pass in the type of activity)
-`setSnapshotListener(Awareness.getSnapshotClient(this).getDetectedActivity(),`
-`new ActivitySnapshotListener(mUpdate, mResources));`
-	
-Parse the response and act on it in onSnapshot
-]
----
-.title[What are Snapshots useful for?]
-.body[
-Debugging
-
-Anything else?
-
-]
----
-.title[Review: [Fences](https://developers.google.com/awareness/)]
-.body[
-Conditional data
-
-3 callbacks: during, starting, stopping
-
-Setup in `MainActivity.java setupFenceListeners()`
-```java
-mActivityFenceListener = new ActivityFenceListener(
-	            // during
-                DetectedActivityFence.during(DetectedActivity.WALKING),
-			    // starting
-                DetectedActivityFence.starting(DetectedActivity.WALKING),
-				// stopping
-                DetectedActivityFence.stopping(DetectedActivity.WALKING),
-                this, this, mUpdate);
-```
-]
-???
-What might we use for a location fence?
-Headphone fence?
-...
----
-.title[Setting up a fence in `MainActivity.java`]
-.body[
-The rest is pretty boilerplate for everything
-
-```java
-if (((Checkable) v).isChecked() && 
-*    ensureFineLocationAccess()) {
-                mActivityFenceListener.register();
-            } else {
-                mActivityFenceListener.unregister();
-            }
-```
-]
-.footnote[
-`ensureFineLocationAccess()` needs to be checked before anything
-that uses location, e.g. weather]
-
----
-.title[Setting up a fence in `MainActivity.java`]
-.body[
-
-The rest is pretty boilerplate for everything
-```java
-if (((Checkable) v).isChecked() && 
-     ensureFineLocationAccess()) {
-                mActivityFenceListener.register();
-            } else {
-                 mActivityFenceListener.unregister();
-            }
-```
-]
-.footnote[These are because this is asynchronous]
----
-.title[Using Places]
-.body[
-Shows you what is nearby
-
-```java
-//In MainActivity:
-setSnapshotListener(
-    Awareness.getSnapshotClient(this).getPlaces(),
-                        new PlacesSnapshotListener(mUpdate, mResources)));
-//In PlacesSnapshotListener
-
-public void onSnapshot(PlacesResponse response) {
-        List<PlaceLikelihood> placeLikelihood = response.getPlaceLikelihoods();
-        if (placeLikelihood != null && !placeLikelihood.isEmpty()) {
-            for (PlaceLikelihood likelihood : placeLikelihood) {
-                addPlace(likelihood.getPlace().getName().toString(), likelihood.getLikelihood());
-            }
-        }
-
-
-        mUpdate.prependText(placeLikelihood.toString());
-    }
-```
-]
----
-.title[Work on adding a snapshot]
-.body[
-Make sure to download Oreo 27 for emulation (Nougat 25 won't work)
-
-When you run your code, you'll need to update Play store & set permissions
-
-Try to have the base code running by end of class (e.g. everything installed;
-            api keys correct) 
-You can get additional help in office hours
-]
----
-.title[Context Aware Computing Assignment]
-.body[
-Pick one type of context
-- attach for later
-- automatically execute based on context
-- present info based on context
-]
----
-.title[System Usability Scale]
-.body[
-1) I think that I would like to keep using this app.
-
-2) I found the system unnecessarily complex.
-
-3) I thought the system was easy to use.
-
-4) I found the use of implicit and explicit data in this app to be well integrated.
-
-5) I thought there was too much inconsistency in this system.
-
-6) I would imagine that most people would learn to use this system very quickly.
-
-7) I found the system very cumbersome to use.
-
-8) I felt very confident using the system.
-]
----
-.title[Group Project]
-.body[
-Expectations:
-- Work together to decide on a focus
-- Implement your App
-- Make a video
-]
----
-.title[More Expectations:]
-.body[
-Divide and conquer ok for video, interface implementation,
-  context-aware implementation
-
-Should not look at sensing code by others until yours has been
-  turned in 
-
-Group participation will be assessed
-]
-???
-Questions?
----
diff --git a/slides/unused/sensing.html b/slides/unused/sensing.html
deleted file mode 100644
index 5a1790e86793cf7d03ab8931cdee540f95f9bbeb..0000000000000000000000000000000000000000
--- a/slides/unused/sensing.html
+++ /dev/null
@@ -1,129 +0,0 @@
----
-layout: presentation
-title: Sensing with your Phone
-description: Discussion of practical side of phone sensing
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Sensing with your Phone
-
-Jennifer Mankoff
-
-CSE 340 Spring 2019 
----
-layout: false
-
-# Types of Input
-
-- Not just touches: clicks, key presses
-
---
-
-- *Sensors* - GPS, IMU/Accelerometer, humidity, temperature, etc
-
-???
-Sampled or event based?
---
-  - `Managers` (e.g. `LocationManager`) let us create and register a listener
-
-  - Listeners can receive updates at different intervals, etc.
-
-  - Some Sensor-specific settings  
-    [https://source.android.com/devices/sensors/sensor-types.html](https://source.android.com/devices/sensors/sensor-types.html)
-
----
-# Other Kinds of Input
-
-- Microphone
-
-- Camera
-
-- Multi-touch
-
-- Connected Devices? 
----
-.title[
-Aware Framework]
-.body[
-![:img Picture of how AWARE is used](img/sensing/aware_overview1.png)
-[Aware's Many Sensors](https://awareframework.com/sensors/)
-]
-???
-AWARE is an Android framework dedicated to instrument, infer, log and share mobile context information, for application developers, researchers and smartphone users. AWARE captures hardware-, software-, and human-based data. The data is then analyzed using AWARE plugins. They transform data into information you can understand.
----
-.title[Easy to collect data]
-.body[
-![:img Aware Study Interface, 70%](img/sensing/aware-study.png)
-]
----
-.title[We'll implement our own version]
-.body[
-Much Simpler
-
-Android only
-
-Uses Android's
-[Task](https://developer.android.com/reference/com/google/android/play/core/tasks/Task)
-API because this may be asynchronous. We do our best to hide this for
-you
-
-Uses Google's [Awareness
-API](https://developers.google.com/awareness/) to provide you access
-to data
-]
-
-???
----
-.title[Snapshots]
-.body[
-Current info
-
-Requires a single callback: 
-`onSnapshot(Response response)`
-
-Parse the response and act on it! 
-
-`WeatherSnapshotActivity` example
-]
----
-.title[Subclass ContextSnapshotActivity]
-.body[
-	You'll create activities for multiple sensors
-]
----
-.title[[Fences](https://developers.google.com/awareness/)]
-.body[
-Conditional data
-
-3 callbacks: during, starting, stopping
-
-From the android docs: 
-```
-if (TextUtils.equals(fenceState.getFenceKey(), "headphoneFenceKey")) {
-            switch(fenceState.getCurrentState()) {
-                case FenceState.TRUE:
-                    Log.i(TAG, "Headphones are plugged in.");
-                    break;
-                case FenceState.FALSE:
-                    Log.i(TAG, "Headphones are NOT plugged in.");
-                    break;
-                case FenceState.UNKNOWN:
-                    Log.i(TAG, "The headphone fence is in an unknown state.");
-                    break;
-            }
-        }
-```
-]
----
-.title[Subclass FenceActivity]
-.body[
-Again you'll create for multiple sensors
-]
----
-.title[Simulation Demo]
-.body[
-]
----
diff --git a/slides/unused/sensing2.html b/slides/unused/sensing2.html
deleted file mode 100644
index 9a5e82ecfe852f6e8feb84fd1e66e77e9f88f97d..0000000000000000000000000000000000000000
--- a/slides/unused/sensing2.html
+++ /dev/null
@@ -1,31 +0,0 @@
-
-<!-- ---
-# Types of Input
-
-- Not just touches, clicks, key presses
-
---
-
-- *Sensors* - GPS, IMU/Accelerometer, humidity, temperature, etc
-
-???
-Sampled or event based?
---
-  - `Managers` (e.g. `LocationManager`) let us create and register a listener
-
-  - Listeners can receive updates at different intervals, etc.
-
-  - Some Sensor-specific settings  
-    https://source.android.com/devices/sensors/sensor-types.html
-
----
-# Other Kinds of Input
-
-- Microphone
-
-- Camera
-
-- Multi-touch
-
-- Connected Devices? -->
----
diff --git a/slides/unused/state.html b/slides/unused/state.html
deleted file mode 100644
index aceb78df0dc2fc5451c94352c3a323ad861ea2e8..0000000000000000000000000000000000000000
--- a/slides/unused/state.html
+++ /dev/null
@@ -1,505 +0,0 @@
----
-layout: presentation
-title: Capturing Behavior through State 
-description: Description the use of propositional production systems to describe component behavior (interaction techniques)
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-layout: false
-
-.title[# Hall of Fame/Shame]
-.body[
-![:img Picture of the course website with the mouse clicking on an unresponsive hamburger menu,80%](img/noresponse.png)
-]
-
----
-class: inverse, center, middle
-
-.title[# From Events to Behavior]
-.body[
-Jennifer Mankoff
-CSE 340 Spring 2019 
-]
----
-
-[//]: # (Outline Slide)
-.title[# Today's goals]
-.body[
-Review / Quiz 
-
-Introduce interaction techniques
-
-Discuss use of Propositional Production Systems in implementing them
-
-Try creating a PPS 
-]
----
-.title[What is part of an event?]
-.body[
-![:img Picture of quiz results for the question about events. The question is "Which of these is not an event?" and the most popular answer is "CTRL (key pressed)" but many people also chose "WindowOpen" and "4"., 80%](img/notevent.png)
-]
----
-.title[When is focus used?]
-.body[![:img Picture of quiz results for the question about focus. The question is "In which of the following situations is focused used during event handling?" and many people correctly chose "When a mouse moves off a scrollbar" but others chose things like "When selecting a word in a text area" and "When clicking on a button", 80%](img/focus.png)
-]
----
-.left-column[
-## Interaction Technique]
-.right-column[
-A method for carrying out a specific interactive task
-
-Example: enter a number in a range
-
-could use...
-]
-???
-have the class try to think of examples
---
-.right-column[
-- (simulated) slider
-- (simulated) knob
-- type in a number (text edit box)
-
-Each is a different interaction technique
-]
----
-.left-column[
-## Example: Specify the end points for a line
-]
-.right-column[
-Could just specify two endpoints – click, click
-- not good: no affordance, <br>no feedback (/ feedforward)
-
-Better feedback is to use “rubber banding”
-- stretch out the line as you drag
-- at all times, shows where you would end up <br> if you “let go”
-]
-???
-Importance of feedback vs application callback
----
-.left-column[
-## Implementing rubber banding]
-
-.large.right-column[
-```
-Accept the press for endpoint P1; P2 = P1;
-Draw line P1-P2;
-Repeat
-  Erase line P1-P2;
-  P2 = current_position(); Draw line P1-P2;
-Until release event;
-Act on line input;
-```
-]
-???
-Discuss! 
-Not event based
-Not in the basic event/redraw loop
-Potentially locks up the system
----
-.left-column[
-## Implementing rubber banding]
-.right-column[
-Need to get around this loop <br> absolute min of 5 times / sec
-
-– 10 times better
-
-– more would be better
-]
-???
-aside -- why 5-10 times per second?
-
----
-.left-column[## Event driven code]
-.right-column[
-Needs to respond to events as they arrive
-
-Needs to maintain state between events 
-
-]
-
----
-.left-column[
-# Solution: Propositional Production Systems]
-.right-column[
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((A))
-A -- "Event/Callback()" --> B((B))
-B -- "Event2/Callback2()" --> C[C]
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-
-
-class S invisible
-class A start
-class C finish
-class B normal
-</div>
-
-Special circle start state <br> (arrow going into it)
-
-Special circle for 'final state' <br> (really means 'reset to start')
-
-Transitions represent actions (callbacks).
-
-]
-???
-
----
-.left-column[
-# PPS Example: Rubber Banding
-
-
-Compare to previous implementation: 
-
-```
-Accept the press for endpoint P1; P2 = P1;
-Draw line P1-P2;
-Repeat
-  Erase line P1-P2;
-  P2 = current_position(); Draw line P1-P2;
-Until release event;
-Act on line input;
-```
-]
-.right-column[
-
-- Determine the Events (triggers)
-
-- Determine the States
-
-- Determine the Actions
-
-- Determine the Queries
-]
----
-.left-column[
-# PPS Example: Rubber Banding
-
-Compare to previous implementation: 
-
-```
-Accept the press for endpoint P1; P2 = P1;
-Draw line P1-P2;
-Repeat
-  Erase line P1-P2;
-  P2 = current_position(); Draw line P1-P2;
-Until release event;
-Act on line input;
-```
-]
-.right-column[
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((Start))
-A -- "Mouse Down:?inView/Start_Line()" --> B((Drawing))
-B -- "Mouse_Move:?inView/Update()" --> B
-B -- "Mouse_Release:?inView/Finish_Line()" --> C[Finished]
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-
-class S invisible
-class A start
-class C finish
-class B normal
-</div>
-
-]
-
-???
-  Means: When you are in Start State, and a Mouse Down event arrives, do
-  the action ```Start_line()``` and go to Drawing State. Then update
-  the line end point position every time the mouse moves. Finally,
-  when it releases (Mouse Release event), finish the line (at this
-  stage a callback to the application might be appropriate)
-
-- translates input sequence into action!
-- How could we provide a better affordance?
-- Does it matter if we are using a mouse or a touch screen?
-
----
-
-.left-column[##Summary]
-.right-column[
-State machines are very good (for this job) but do have limits
-
-State machines don't handle independent actions very well (state explosion)
-
-Mostly useful for smaller things
-
-- Great for individual components
-- Not so great for whole dialogs
-
-Path of least resistance is rigid sequencing
- Ask: is this good for what I am doing?
-
-]
-???
-xxx TODO decide whether to keep
-xxx TODO decide how to end this deck and/or what other material needs
-to be covered
----
-.left-column[## Guards on transitions]
-.right-column[
-Sometimes also use “guards” --> **Propositional Production System**
-
-- predicate (Boolean expr) before event
-
-- adds extra conditions required to fire
-
-- typical notation: pred : event / action
-
-- e.g. button.enabled: press-inside / A
-
-Note: FSM augmented with guards is Turing complete 
-]
----
-
-.left-column[
-## PPS for Button?
-
-![:img FB Messenger Animation, 100%](img/messenger-bubble.gif)
-
-]
-.right-column[
-- Determine the Events (triggers)
-
-- Determine the States
-
-- Determine the Queries (essential geometry, context)
-
-- Determine the Actions
-]
-
-???
-What constitutes an “event” varies
-
-- may be just low level events, or
-- higher level (synthesized) events
-- e.g. region-enter, press-inside
-
-What is missing? Query fields 
-
----
-.left-column[
-## Facebook Button Solution
-![:img FB Messenger Animation, 100%](img/messenger-bubble.gif)
-]
---
-.right-column[
-
-Press:?inside => highlight(), start_animation(), small, active<br>
-AnimateStep ==> update(), active<br>
-AnimateFinish ==> !small, active<br>
-Release:inside,small => unhighlight(), exit()<br>
-Release:inside,!small => add_to_chat(), small, unhighlight(),
-exit()<br>
-
-__rest is unknowable from this animation__
-
-<div class="mermaid">
-  graph LR
-  S((.)) --> A((Start))
-  A -- "Press:?inside/highlight(), start_animation()" --> B((Active))
-  B -- "AnimateStep,update()" --> B
-  B -- "AnimateFinish,!small"--> B
-  B -- "Release,inside:small, unhighlight" -->D(End)
-  B -- "Release,inside:!small,add_to_chat(),unhighlight()" --> D
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-linkStyle 5 stroke-width:4px;    
- 
-class S invisible
-class A start
-class D finish
-class B normal
-</div>
-
-]
-
----
-.left-column[
-## When to use PPSs
-]
-.right-column[
-
-- You're probably already using them, just not intentionally (and maybe
-less well as a result)
-- PPSs are a good way to do control flow in event driven systems
-
-Can do (formal or informal) analysis
-- are all possible inputs (e.g. errors) handled from each state
-- what are next legal inputs: can use to enable / disable
-Can be automated based on higher level specification
-]
-
----
-.left-column[
-## Implementation of PPS
-]
-
-???
-```
-fsm_transition(state, evt) switch (state)
-
-..case 0: // case for each state
-
-...switch(evt.kind)
-
-...case loc_move: // transition event
-
-....do all the transition actions
-....state = 42 // set the new state
-
-..case 1: // case for next state switch (evt.kind) ...
-
-return state;
-```
-
----
-layout: false
-
-.title[Exercise: Build your own color picker]
-.body[
-Learning goals: 
-- Create non-rectangle interactor
-- Use a state machine to manage feedback
-- Callbacks: React to events
-- Should handle error cases appropriately
-
-Android learning goals:
-- Save app state
-- Handle touch input properly
-- Understand app lifecycle
-]
-???
-
----
-.title[Color Picker PPS ]
-
-.body[Work in pairs on this]
-
----
-.left-column[![:img Picture of a menu with two items pulled down, 105%](img/menu.png)]
-
-.right-column[
-## Another example: Pull-down Menu
-
-How do we manage the drop-down behavior?
-
-FSM controller?
-
-]
-
---
-.right-column[
-Behavior:
-
-- Body pulls down on press (in arrow)
-
-- Body stays down until release
-
-- Items highlighted while cursor is over them
-]
----
-![:img Picture of a menu with two items pulled down, 25%](img/menu.png)
-
-<div class="mermaid">
-  graph LR
-  A((Start)) -- "Dn-inside-Top/Drop()" --> N((NotIn))
-  N -- "Enter-Item1/Highlight(1)" --> I((In1))
-  I -- "Enter-Item2/Highlight(2)" --> II
-  N -- "Enter-Item2/Highlight(2)" --> II((In2))  
-  I -- "Exit-Item1/Highlight(none)" --> N
-  II -- "Enter-Item1/Highlight(1)" --> I
-  I -- "Up/Fire-Item(1)" -->E((End))
-  II -- "Up/Fire-Item(2)"-->E((End))
-  II -- "Exit-Item2/Highlight(none)" --> N
-  N -- "Up/UnDrop()" --> F((End))
-</div>
-
----
-.title[ Summary]
-.body[
-- Interaction technique: involves input AND feedback
-- Propositional Production Systems let us implement feedback
-  - event driven
-  - actions on **transitions**
-  - guards (conditionals) on **transitions**
-]
----
-#End of Slides / Old material below here
----
-.left-column[# Discussion of state explosion]
-.right-column[
-Take a button, and a control key (can you draw the state machine for
-the control key?)
-]
---
-.right-column[Combine them (cross product)]
-
-
-<div class="mermaid" id="simplestate">
-  graph TD
-  A(( )) --> B(( ))
-  B --> A
-</div>
-
-<div class="mermaid">
-  graph LR
-  A(( )) --> B(( ))
-  B --> C(( ))
-  C --> B
-  C --> D(( ))
-  B --> End(( ))
-</div>
-
----
-.left-column[# Cross product of state diagrams]
-.right-column[
-Replicate the larger one
-
-Once for every state in the smaller one!
-
-At transitions between corresponding states
-
-Correct semantics
-  - Eliminate impossible states
-  - Merge similar ones
-
-
-Now add another independent machine (shift key?)
-
-]
-???
-Totally out of hand -- combinatorical explosion!
diff --git a/slides/unused/unused.html b/slides/unused/unused.html
deleted file mode 100644
index 8292316c4988413bc4b116286959ff8736a86b1c..0000000000000000000000000000000000000000
--- a/slides/unused/unused.html
+++ /dev/null
@@ -1,965 +0,0 @@
----
-layout: presentation
-title: Introductory Slides--Week 1, Monday--
-description: Introductory slides for Interaction Programming, CSE 340
-class: middle, center, inverse
----
-# Text quirks
-
-- Each glyph has a reference point that defines a baseline
-- Each glyph has an advance width (distance to next glyph's reference point)
-
-![:img examples of reference point and advance width,40%](img/reference.png)
----
-# Text quirks
-
-- Each glyph has a reference point that defines a baseline
-- Each glyph has an advance width (distance to next glyph's reference point)
-- font has standard ascent and descent
-
-![:img letter p with ascent and descent marked,60%](img/ascent.png)
----
-.title[Text quirks]
-.body[
-- Each glyph has a reference point that defines a baseline
-- Each glyph has an advance width (distance to next glyph's reference point)
-- Font has standard ascent and descent
-- Font has 'leading' (distance between lines)
-]
---
-.title[Why am I telling you all this?]
-.body[
-- Where is (0,0) of text when you call [drawText()]("https://developer.android.com/reference/android/graphics/Canvas.html#drawText(java.lang.CharSequence,%20int,%20int,%20float,%20float,%20android.graphics.Paint")? 
-- What should you set up in [Paint](https://developer.android.com/reference/android/graphics/Paint)?
-]
- 
----
-# Other Paint properties
-
-- Transparency and composition characteristics: Alpha value and `xfermode`([Porter-Duff](https://developer.android.com/reference/android/graphics/PorterDuffXfermode))
-???
-When the alpha channel is 1, the image is fully there, when it is 0,
-the image isn’t there at all, and when it is in between, the image is
-partially there. In other words, the alpha channel describes the shape
-of the image, it does not describe opacity. The way to think of images
-with an alpha channel is as irregularly shaped pieces of cardboard,
-not as colored glass.
-
---
-<br>![:img source image with triangle on transparent background,10%](img/source.png)
-![:img destination image with & on transparent background,10%](img/dest.png)
-![:img diagram of pixel relationships,10%](img/diagram.png)
---
-
-- Each type of pixel can be treated differently. 
-
---
-<br>![:img Both should be blue and source red, 10%](img/destatop-diagram.png)
-![:img result: just part shows,10%](img/destatop.png)
-![:img Both should be pink and source orange and dest red, 10%](img/colordodge-diagram.png)
-![:img result: pink triangle with blue and,10%](img/colordodge-both.png)
-???
-Dest blend mode, atop source, limited to pixels in dest, colors blue and orange
-Color Dodge blend mode, pixels from both kept, colors pink and blue and orange
-
-The general formula is an area weighted average:
-
-Asrcâ‹…[s]+Adestâ‹…[d]+Abothâ‹…B(s,d)
-
-where [s] and [d] are the source and destination colors respectively
-or 0, and B(s,d) can be chosen from a set of formulas
-
-alpha channel is
-Asrcâ‹…[as]+Adestâ‹…[ad]+Abothâ‹…[ab]
-
-where [ab] is determined by the blend mode. 
-
----
-# How does Canvas work?
-
-  - Handles __clipping__ of drawing boundaries
-
-???
-Clipping is super efficient if limited to a rectangle
-Implications for GUI design
---
-
-  - Performs __transformations__ on drawn visual elements
-
----
-# Work through clipping example (bell)
-.left[
-- For draw
-- For redraw
-]
-.right[
-![:img Picture of a very simple interface showing a ringing bell at
-left and an x at right to close the window with the words Google
-Calendar reminder Christian and Anind (Jen Mankoff) is starting at
-12:30pm. Video call between them, 70%](img/interface.png)
-
-]
----
-# Coordinate Transformations in Android
-
-```java
-  Canvas c = new Canvas();
-
-  // Set the drawing boundary
-  c.setClippingRect(100, 50, 200, 100);
-
-  // Draw the shape
-  c.drawRect(0, 0, 50, 50);
-
-  // Move origin to where shape's top-left corner is
-  c.translate(100, 50);
-
-  // Draw another Rect inside the Rect just drawn
-  c.drawRect(10,10,10,10);
-
-  // Return state back to before the translation & clipping
-  c.restore();
-```
----
-Which of the following must a parent component do before passing a
-drawable region to the child? [raise your hands]
-
-- [a] Translate (child.x, child.y)
-- [b] Clip(parent.x, parent.y, parent.w, parent.h)
-- [c] Translate (-child.x, -child.y)
-- [d] Clip(0,0,child.w,child.h)
-
----
-.left-column[
-# Aside: Interactors: Significant Stagnation
-
-- Basic GUI components invented 1970s
-- Windows, Icons, Menus, Pointers (“WIMP”)
-- “Perfected” by Macintosh in 1984
-- Not much change since then (even with web)
-]
-.right-column[
-## Most GUIs still use the same 7-10 interaction techniques
-
-![:img Picture of a very old mac control panel showing typical interactors at the time,80%](img/mvc/interactors1.png)
-]
-???
-- Work well, uniform
-- Good for usability
-- GUI is victim of its own success
-- Opportunities lost by not customizing interaction techniques to tasks
-- Hard for better techniques to get traction
-- Only very recently with mobile devices (touch based) have we seen lots of new techniques get a major foothold
----
-.title[In class Exercise: Interface Developer]
-.body[
-Let's look at interactors in Android Studio
-![:img A picture of the setup for android study in which we can layout
-components,80%](img/mvc/android-components.png)
-]
-???
-Menu, Button(types), Slider, Scrollbar, Spinner, List box, Icon, Link,
-Text box, Label,
----
-.title[In class Exercise]
-.body[
-Quick Tour | tutorial
-for [building a ui](https://developer.android.com/training/basics/firstapp/building-ui)
-
-![:img A picture of the setup for android study in which we can layout
-components,80%](img/mvc/android-components2.png)
-]
-
----
-# Multiple Simultaneous Animations (`AnimatorSet`)
-
-```java
-  // Create animator set
-  AnimatorSet bouncer = new AnimatorSet();
-
-  // Add the good stuff
-  bouncer.play(bounceAnim).before(squashAnim1);
-  bouncer.play(squashAnim1).with(squashAnim2);
-  bouncer.play(squashAnim1).with(stretchAnim1);
-  bouncer.play(squashAnim1).with(stretchAnim2);
-  bouncer.play(bounceBackAnim).after(stretchAnim2);
-
-  // Animate the alpha value from 1->0
-  ValueAnimator fadeAnim = ObjectAnimator.ofFloat(newBall, "alpha", 1f, 0f);
-  fadeAnim.setDuration(250);
-
-  // Build up a another level of animation sets
-  AnimatorSet animatorSet = new AnimatorSet();
-  animatorSet.play(bouncer).before(fadeAnim);
-
-  // Starts the animations
-  animatorSet.start()
-```
----
-# Declaring Animations in XML
-
-```
-/res/animator/object_animator_ex.xml
-```
-```xml
-<set android:ordering="sequentially">
-    <set>
-        <objectAnimator
-            android:propertyName="x"
-            android:valueTo="200"/>
-        <objectAnimator
-            android:propertyName="y"
-            android:valueTo="300"/>
-    </set>
-    <objectAnimator
-        android:propertyName="alpha"
-        android:valueTo=".5f"/>
-</set>
-```
-
-.footnote[Can do even *more* with ValueAnimator XML (will let you google this)]
-
----
-# There's more flexibility... (3/3)
-
-You can then run the animation by doing the following:
-
-```java
-  Animator anim = (Animator) AnimatorInflater.loadAnimator(this,
-      R.animator.object_animator_ex);
-  anim.setTarget(myObject);
-  anim.setDuration(2000);
-  anim.start();
-```
-
-Note that animations xml files should be in the `res/animator/` directory
-
----
-# Make sure the animation info is inside of:
-```xml
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-<!-- ... -->
-</set>
-```
-
----
-# An Aside: What is an Inflater?
-
-You will use these often! They give you access to XML data (part of
-the *model* of your application). Just saw an 
-[AnimatorInflater](https://developer.android.com/reference/android/animation/AnimatorInflater)
-in the previous code.
-
-```java
-[Type] [name] = ([Cast to Type]) [Inflator].load...([arguments])
-```
-Will need the *path* to the part of the XML you care about, typically
-something like:
-```
-R.[dirname].[filename]
-```
-Specifics vary from situation to situation (*e.g.,* [LayoutInflater](https://developer.android.com/reference/android/view/LayoutInflater)
-works slightly differently), so you'll need to read the documentation.
-]
-
-
----
-.title[Interactor (Component) Model]
-.body[
-__Encapsulate interactive components__ (interactors)
-- Component library (button, slider, container)
-- Interface built as a hierarchy of components
-
-__Components drawn by underlying graphics library__
-- Input event generation and dispatch
-- Historically mouse & keyboard, now touch, ...
-
-__Bounds management & damage/redraw__
-- Model geometry, redraw updated regions only
-]
-
----
-template: inverse
-
-# Saving State
----
-layout: false
-
-.left-column[## When to save state? (1/3)]
-.right-column[
-- Activity `A` spawns Activity `B`
-  - E.g. Typing a Facebook post, then you select 'Add a Location'
-]
---
-.right-column[
-- Android kills `A` to reclaim resources while the user is interacting with `B`
-]
---
-.right-column[
-- User finishes with `B`, returns to `A` but the post is gone!
-]
----
-.left-column[## Activity Lifecycle]
-.right-column[![:img Android activity lifecycle, 50%](img/viewupdate/activity_lifecycle.png)]
-
----
-
-.left-column[## When to save state? (2/3)]
-.right-column[![:img Android activity state diagram, 50%](img/viewupdate/android-activity-states-01.png)]
-
----
-
-.left-column[## When to save state? (3/3)]
-.right-column[![:img Android activity state diagram -- process killed, 50%](img/viewupdate/android-activity-states-02.png)]
-
----
-.title[ Maintaining Activity State]
-.body[
-- We can fix it by saving the state in a `Bundle` before Android closes the `Activity`
-
-- We then restore the state when we return to the `Activity` later
-]
----
-
-.title[# Bundle it up]
-.body[
-- `Bundle`: A hash map (dictionary) of String keys to Primitive, Parcelable, Serializable values
-]
---
-.body[
-- Used to:
-  (1) Save/restore state
-  (2) Transfer data between different `Activity` in an app
-]
---
-.body[
-- Primitive are `int`, `float`, `boolean`, `double` (the usual suspects)
-]
----
-.left-column[
-## Saving in the Bundle
-]
-.right-column[
-Methods for _saving_ items out of a Bundle
-
-- Ints: `putInt(String key, int value)`
-- Floats: `putFloat(String key, float value)`
-- Characters: `putChar(String key, char value)`
-- Strings: `putString(String key, String value)`
-- Serializable Objects: `putSerializable(String key, Serializable value)`
-- Parcelable Objects: `putParcelable(String key, Parcelable value)`
-- _Others in the documentation (e.g. Arrays, Bytes, etc).._
-]
-.footnote[[Bundle Documentation](    https://developer.android.com/reference/android/os/Bundle.html
-)]
----
-.left-column[
-## Retrieving from the Bundle
-]
-.right-column[
-Methods for getting items out of a Bundle
-
-- Ints: `getInt(String key)`
-- Floats: `getFloat(String key)`
-- Characters: `getChar(String key)`
-- Strings: `getString(String key)`
-- Serializable Objects: `getSerializable(String key)`
-- Parcelable Objects: `getParcelable(String key)`
-- _Others in the documentation_ (e.g. Arrays, Bytes, etc)..
-]
-.footnote[[Bundle Documentation](    https://developer.android.com/reference/android/os/Bundle.html
-)]
----
-.left-column[
-## Saving Activity State (1/3)]
-.right-column[
-- Android provides the `onSaveInstanceState(Bundle savedInstanceState)` callback method for you to save the state of an `Activity`
-
-```java
-private static final USERNAME_KEY = "USER_NAME_KEY";
-private static final FIB_SUM_KEY = "FIB_SUM_KEY";
-
-private int mFibSumValue; // Set to 10295 by our user
-private String mUsername; // Set to "Prabha" by our user
-
-@Override
-public void onSaveInstanceState(Bundle outState) {
-    // Always call super - your super classes could be saving state for you!
-    super.onSaveInstanceState(outState);
-
-    // Now
-    outState.putInt(FIB_SUM_KEY, mFibSumValue);
-    outState.putString(USERNAME_KEY, mUsername);
-}
-```
-]
----
-.left-column[
-## Restoring Activity State (1/2)
-]
-.right-column[
-- We saved, and now our user goes off to some other app
-]
---
-.right-column[
-- Android kills our `Activity`
-]
---
-.right-column[
-- Now how do we get the _saved_ state back?
-]
----
-.left-column[
-## Restoring Activity State (2/2)]
-.right-column[
--  Two ways:
-  - `onCreate(Bundle savedInstanceState)`
-  - `onRestoreInstanceState(Bundle savedInstanceState)`
-]
----
-.left-column[
-## Restoring in `onCreate` vs. `onRestoreInstanceState`
-]
-.right-column[
-- `onRestoreInstanceState`
-  - Guarantees you will never have a non-null `Bundle` when called
-  - Lets subclasses override the behavior of restoring the state
-
-- `onCreate`
-  - Lets you focus on doing all of your initialization in one place
-
-- In the assignment we use onCreate
-]
-.footnote[[Stackoverflow conversation on this](http://stackoverflow.com/questions/36408776/using-oncreate-vs-onrestoreinstancestate)
-]
----
----
-# Saving state: advanced material
----
-
-- Custom objects that implement the `Serializable` or `Parcelable` interfaces
-  - You will need to make any custom classes that you want to save into a `Bundle` implement the `Parcelable` interface
-
----
-
-# Parcelable vs. Serializable
-
-- Both are for the same purpose of saving but `Serializable` makes implementations much easier...
-
---
-
-- **EXCEPT, .red[you should almost always use `Parcelable`]**
-
---
-
-- Why?
-  - `Serializable` uses introspection ==> more memory, and CPU cycles
-  - `Parcelable` **is optimized for mobile devices**
-
----
-## Implementing `Parcelable` (1/3)
-
--- You are required to implement the following methods for the `Parcelable` interface:
-
-```java
-public class MyPersonModel implements Parcelable {
-    private int mAge;
-
-    // Required for the interface
-    public int describeContents() {
-        return 0;
-    }
-
-    // Required for the interface
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeInt(mAge);
-    }
-    // Continued on next slide...
-```
-
----
-
-## Implementing `Parcelable` (2/3)
-
-```java
-
-    // Required for the interface
-    // CREATOR is an object that can remark
-    public static final Parcelable.Creator<MyPersonModel> CREATOR
-            = new Parcelable.Creator<MyPersonModel>() {
-        public MyPersonModel createFromParcel(Parcel in) {
-            return new MyPersonModel(in);
-        }
-
-        public MyPersonModel[] newArray(int size) {
-            return new MyPersonModel[size];
-        }
-    };
-
-    // Required for the interface
-    // Private constructor for Android to use with your CREATOR
-    private MyPersonModel(Parcel in) {
-        mAge = in.readInt();
-    }
-}
-```
----
-
-## Implementing `Parcelable` (3/3)
-- **Note**: .red[the order of the values when writing and reading them matters!]
-
-  - When you write to the parcel using `write*()` methods in `writeToParcel`,
-
-  - The write order __MUST BE__ the same as when you read them in the private constructor
-
-- For more details on implementation:
-  https://developer.android.com/reference/android/os/Parcelable.html
-
----
-## example code for restoring state
-
-
-```java
-private static final USERNAME_KEY = "USER_NAME_KEY";
-private static final FIB_SUM_KEY = "FIB_SUM_KEY";
-
-private int mFibSumValue = 0;
-private String mUsername = null;
-
-@Override
-protected void onCreate(Bundle savedInstanceState) {
-  super.onCreate(savedInstanceState);
-  setContentView(R.layout.activity_main);
-
-  mMainTextView = (TextView) findViewById(R.id.text_main_title);
-  mSumTextView = (TextView) findViewById(R.id.text_sum);
-  // Check if there was a previously saved state to restore to the user
-  // A non-null bundle means there was a state that was saved previously
-  // A bundle is just a Key-Value pairing - its a hash map :)
-  if (savedInstanceState != null) {
-    // There was a previous state - time to restore
-    mFibSumValue = savedInstanceState.getInt(FIB_SUM_KEY);
-    mUsername = savedInstanceState.getString(USERNAME_KEY);
-  }
-  updateMainText();
-  updateFibSumText();
-}
-```
----
-## example code for restoring state
-
-```java
-private static final USERNAME_KEY = "USER_NAME_KEY";
-private static final FIB_SUM_KEY = "FIB_SUM_KEY";
-private int mFibSumValue = 0;
-
-@Override
-protected void onRestoreInstanceState(Bundle savedInstanceState) {
-  super.onRestoreInstanceState(savedInstanceState);
-  // Check if there was a previously saved state to restore to the user
-  if (savedInstanceState != null) {
-    // There was a previous state - time to restore
-    mFibSumValue = savedInstanceState.getInt(FIB_SUM_KEY);
-    mUsername = savedInstanceState.getString(USERNAME_KEY);
-  }
-  updateMainText();
-  updateFibSumText();
-}
-```
----
----
-## Exercise: Parcelable and Activity State
-
-- Pair up!
-
-- Download the base code here:
-
-- This app lets a user enter a name, age, and favorite food
-
-- It stores this info in a `PersonModel`
-
-- When the app is killed, this information needs to remain edited
-
-- Implement the `Parcelable` interface for the PersonModel
-
-- Then use the Activity's relevant state change callbacks to `PersonModel` when the phone rotates
-
----
-### Some Notes about `onSaveInstanceState()`
-- .red[Only use to save and restore session variables and the state of the UI]
-
---
-
-  - Android won't always trigger the method
-
---
-
-  - It is called when the `Activity` is closed and _expected_ to be restored soon
-
---
-
-- If your app crashes, or is closed, **the values in the bundle will disappear!**
-
---
-
-- If you use custom views, you can implement their version of `onSaveInstanceState`:
-
-  Android will call `onSaveInstanceState()` every view in the layout
-
----
-.left-column[
-## Essential Behavior Quiz question
-PPS Parts?
-- Action	
-- Input modifier
-- Input Event
-- Query field (Condition)
-- State
-]
-.right-column[
-![:img Picture of first quiz question asking "What sort of interaction does this PPS support?" and showing a state machine for drawing a line with updates to the line on every move event. Most people correctly understood a line with rubber banding., 100%](img/viewupdate/quizqs.png)
-]
-
-
----
-layout: false
-
-# Affordance
-
-Opportunities to act
-- which are readily apparent to the user ... and appropriate to the
-  user’s abilities 
-
-Form “affords” certain actions and makes that apparent
-
-Allows and promotes certain actions
-
-- Door knobs afford turning
-- Handle of hammer affords grasping in a particular way
-]
-
----
-# Affordance Example: Knurling
-
-.left-column[
-![:img Picture of a knob with ridges around it, 80%](img/interaction/knurling.png)
-
-]
-.right-column[
-Small ridges typically found on knobs
-
-Increases friction
-
-Affords grip
-]
-
----
-# “Virtual affordances”
-
-.left-column[
-![:img Picture of a digital window corner ridges drawn on it, 80%](img/interaction/virtual-knurling.png)
-]
-
-.right-column[
-Don’t typically have much physical form in a GUI
-
-But, visual appearance can still suggest function
-]
---
-.right-column[
-Note that you don’t have to know about knurling for this to afford
-“grip” with the mouse
-]
----
-# Feedback
-
-Response by the system to the actins of the user – Cause and effect
-
-- Essential for forming mental models
-
-Making “system state” visible
-
----
-# Component design guideline #1
-
-Explicitly design a conceptual model and use affordance and feedback
-(and everything else you have)
-to reinforce it
-
----
-# Performance properties of people
-
-(Only a very few here) How long will things take?
-
-- e.g., physical movements
-
-How much can people remember? How fast are thing perceived?
-
----
-#How long will user actions take
-
-Strong models for physical movement
-
-Fitts’ law predicts movements as a function of distance and required accuracy:
-
-T = A log2(D/S + 0.5) + B D – distance to target
-
-S – size of target
-
-A,B proportionality constant and intercept (linear fit)
-
-– Property of user (motor control group)
-
----
-# Speed Differences Explained
-
-Menu position and design can have a
-significant impact on speed of interaction
-
-Fitts' law is the main
-explanation for this.
-
----
-# Fitts law –
-
-helps to capture the difficulty of input with different devices]
-
-Time = A + B*log2(Dist/Size + 0.5)
-
-“Index of Difficulty”
-
-- Time is linearly proportional to “index of difficulty” (log of what we would intuitively think of as “difficulty”)
-
-  - Proportionality constants depend on muscle group and device
-
-  - Difficulty determined by distance and required accuracy (size of
-target)
----
-.left-column[##Fitts’ law]
-.right-column[
-
-Actual numbers from Fitts’ law generally not all that helpful
-
-- That level of detailed analysis is hard
-
-- Very hard to know what exact distances are across
-
-dynamic layout and varied platforms General guideline
-
-- Keep required movements (accuracy & distance) firmly in mind
- - Avoid device swapping
- - Avoid disturbing focus of attention
-]
----
-.left-column[##Fitts’ law]
-.right-column[
-(True) expert performance tends to be closely related to time required for movements
-
-- not that closely related to learning (or performance) of novices
-
-- still need to consider “cognitive load”
-]
----
-.left-column[##How much can a person remember Short term (working)
-memory]
-.right-column[
-- Famous 7 +/- 2 “chunks” (Somewhat outdated model)
-
-- For us just: “very limited” and “decays quickly” – Has become “worse” with constant multitasking
-
-Long term
-
-– Essentially unbounded
-– But requires effort & may not always work on cue –  Can’t explicitly forget! Even though you try!
-]
----
-.left-column[##How much can a person remember Novice / expert
-differences]
-.right-column[
--  Experts have learned items in long term memory to draw on, novices don’t
-
--  But note that having the ability to operate from recogni2on does not preclude recall
-
-Implication:
-
-- Generally better to rely on recognition (seeing it in front of you)
-than just recall (having to pull it out of long term memory)
-]
----
-.left-column[##How fast are things perceived?]
-.right-column[
-
-less than ~20ms (1/50 sec) discrete images/flashes merge into con2nuous percep2on
-
-- Image you are looking at flickers 60 times per second
-- Differences in peripheral vision
-  - Sabertooth tigers
-]
---
-.right-column[
-Don’t ever have to be faster than this for user response!
-
-Get more than 120 million instructions per core (@3Ghz)
-
-(High end GPU theoretically as high as 26 billion instr.)
- - You can do a lot with that
- -  (First GUIs had ~20K)
- -  Not enough? Twice as many cores in 2-3yrs...
-]
----
-.left-column[##How fast are things perceived?]
-.right-column[
- ~100ms seems like “instant response”
-
-- Hard to tell response times below this apart
-
-- Upper range of eye saccades
-
-Discrete images into steps instead of apparent motion
-]
----
-.left-column[##How fast are things perceived?]
-.right-column[
-
-100ms (1/10 sec)
-
-Except some animation, most things don’t need to be faster than this
-
-- Typical target “cycle time”
-
-- 600 million+ machine instructions, ...
-]
----
-.left-column[##How fast are things perceived?]
-.right-column[
- 1-2 seconds typically “good response time”
-
--  Similar times in conversa2onal turn taking protocols
-
--  Longer delays ~5 sec have to say something to keep conversation alive
-
-(Note: numbers fuzzier as we go out)
-]
----
-.left-column[##How fast are things perceived?]
-.right-column[
-10-15 sec is typically “bad response time” – STM decay effects
-]
----
-.left-column[##A liMle about response times]
-.right-column[
-Good vs. bad response time
-is very dependent on expecta2on
-
--  If you can’t meet the goals, manipulate user expectations!
-
-Consistency of response is very important
-
-- Can be more important than
-time
-]
----
-.left-column[##How long do other cognitive activities take?]
-.right-column[
-Unfortunate, but...
-
-–  Things known, but overall not as well understood –  Much harder to apply what is understood
-
-–  See other HCI courses for some of this
-]
----
-.left-column[##We do know essen2ally minimums]
-.right-column[
-“Cycle” times for “Human Processor”
-(Model Human Processor [Card, Moran, Newell])
-
-- Perceptual ~100ms [50-200]
-
-- Cognitive ~70ms [25-170]
-
-- Motor ~70ms [30-100]
-
-Can be used to predict reaction times and highly routine actions
-
-- E.g., it takes at least ~150ms to
-act on something (~250ms more likely)
-
-Harder to use for complex things and/or with learning
-
-]
----
-.left-column[##When do these rules break down?]
-.right-column[
--  Novices
--  Disabled
- ]
-
----
-XX add some active learning?
-XX add something about color perception here or earlier?
-
-
----
-# Case Study: Text Entry Speed on Mobile Devices
-
-.left-column[
-![:img Picture of phone keypad with buttons laid out in rows of "1 2 3 - 4 5
-6 - 7 8 9 - * 0 #", 100%](img/pm/buttons.png)
-]
-.right-column[
-Multi-tap
-```
-77 88 444 222 55 0 22 777 666 9 66 0 333 666 99
-q u i c k _ b r o w n _ f o x
-```
-
-Slow, lot's of overhead
-]
-
----
-# Case Study: Text Entry Speed on Mobile Devices
-.left-column[
-![:img Picture of phone keypad with buttons laid out in rows of "1 2 3 - 4 5
-6 - 7 8 9 - * 0 #", 100%](img/pm/buttons.png)
-]
-.right-column[
-Multi-tap (~ 20 WPM)
-```
-77 88 444 222 55 0 22 777 666 9 66 0 333 666 99
-q u i c k _ b r o w n _ f o x
-```
-
-T9 - dictionary based disambiguation (~ 20 WPM)
-```
-7 8 4 2 5 0 2 7 6 9 6 0 3 6 9
-q u i c k _ b r o w n _ f o x 843 78425 27696 369 58677 6837 843 5299 364
-the quick brown fox jumps over the jazz dog
-tie stick crown lumps muds tie lazy fog
-vie vie
-```
-]
-???
-Most common word (top) not always right
----
-# Case Study: Text Entry Speed on Mobile Devices
-
-.left-column[
-![:img Picture of phone keypad with swype enabled and the swype for quick shown, 100%](img/pm/swype.jpg)
-]
-.right-column[
-Method | Speed
-----|----
-Multi-tap | ~ 20WPM
-T9 - dictionary based disambiguation | ~ 20 WPM
-Swype | ~ 55 WPM
-Keyboard | ~ 55 WPM
-Flesky | Up to 80 WPM ([Guinness World Record!](https://www.cnn.com/2014/05/15/tech/mobile/guiness-record-fastest-text/) )
-Speech | ~ 150 WPM
-
-Skeptical? Need to know % errors and time cost of error correction to truly evaluate
-]
-
-???
-Flesky is combination of gestures and automatic error correction
-
diff --git a/slides/wk01/drawing.html b/slides/wk01/drawing.html
deleted file mode 100644
index ef29741325c58b757b4616b11ea65b820961d186..0000000000000000000000000000000000000000
--- a/slides/wk01/drawing.html
+++ /dev/null
@@ -1,701 +0,0 @@
----
-layout: presentation
-title: Drawing On the Screen
-description: Discussion of basic information about how to draw on the screen
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Introduction to Drawing
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- Administrivia
-- Warmups
-  - Checks for understanding
-  - Practicing with breakouts, polleverywhere, and Ed
-- Quick view of resources
-- Abstractions for drawing on the screen
-- Drawing in Android
-- Clipping and other transformations
-
----
-# Administrivia
-
-- Please remember to take the first day [survey](https://catalyst.uw.edu/webq/survey/bricker/387508) if you have not already
-- Ed-iquette
-  - Please tag your posts with the most appropriate tag, e.g., if you are posting about doodle
-  please tag it with as1-doodle
-  - Please search to see if someone has already answered your question before posting! (these tags can help!)
-- Lab videos were posted
-- Important [Ed Post about a change to Part1.java](https://us.edstem.org/courses/381/discussion/24015)
-
----
-# Trying new things!
-
-1. Breakout rooms
-  - Today I've randomly assigned you to breakout rooms with one TA each.
-  - In the future, we will experiment with a system where you can choose your breakout partners
-  - Goal: Meet other students, answer some questions.
-    - Please turn your cameras on in the breakouts
-    - Introduce yourself, and say what color socks your wearing.
-    - Work together on the question posed....
-2. Warmup 1: pollev.com/docbrick
-   - answer the question
-   - try to think of a one unique answer per person in your breakout
-   - Each person should answer the poll separately
-   - We'll come back together and see the results.
-3. Warmup 2: Ed sway
-  - We'll go back into the breakout rooms and try to work together to answer questions on Sway
-  - Each person should submit their answers.
-
----
-
-Warmup 1
-
-<iframe src="https://embed.polleverywhere.com/free_text_polls/gmZBJAx5kjHZQkO16zRve?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
-
-
----
-# Quick view of resources
-
-One commong "Good Programming Practice" is to remove "static" resources from your code and
-store them in a resource area to be used by your program. Think of this like the "No Magic Numbers"
-principle you learned early in 142).
-
-- Often used in internationalization or localization
-- Often used in A/B testing in software development
-
-Android resources are stored in `.xml` files in subdirectories of the `app/res` directory may include
-- `drawable` - images you might draw on the screen in various formats
-- `layout` - layouts of various screens
-- `menu` - the menus for your application
-- `values` - might contain `colors.xml` and `strings.xml`
-
----
-## Developer roles
-
-.left-column[
-
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-
-  class t,l,a,w yellow
-  class ip green
-</div>
-]
-
-.right-column[
-From [last class](toolkits.html) we briefly discussed of the roles
-a developer can play in app development.
-
-- Today we're going to focus on being an Interface Developer (adding existing components like
-`ImageView` objects to the `doodleView`)
-- We might get to touch on being a Component Developer and thinking about how to create that new
-`LineView` component
-]
-
-
----
-# Drawing on the Screen
-
-- Take out your phone. Open an App. What do you see on your screen?
----
-# Drawing on the Screen
-
-- Take out your phone. Open an App. What do you see on your screen?
-
-.left-column[
-![:img Example poll everywhere mobile presenter application screen, 100%](img/drawing/pollevscreen.jpeg)]
-
-.right-column[
-(this is what I currently see)
-
-What is an app made up of?
-]
----
-# What is on your screen?
-
-.left-column[
-![:img Example poll everywhere mobile presenter application screen, 100%](img/drawing/pollevscreen.jpeg)
-]
-
-.right-column[
-App is made up of? Interactors
-
-Last class we discussed the "tree" of components.
-
-Think about what this hierarchy might look like.
-- What is at the "root" ?
-- How is this divided up into sections
-- In each section, how are things further divided up?
-
-
-]
-
----
-# What is on your screen?
-
-.left-column[
-![:img Example poll everywhere mobile presenter application screen, 100%](img/drawing/pollevscreen.jpeg)]
-
-.right-column[
-<div class="mermaid" style="width: 75%">
-graph LR
-W(Window) --> T[Title Bar]
-W --> L[Label: My Folders]
-W --> F[Folders]
-W --> B[Toolbar]
-T --> TA[Icon]
-T --> TB[Label: Activities]
-T --> TC[Button: Search]
-T --> TD[Button: Folder]
-T --> TE[Button: Add]
-F --> F1[Folder 1]
-F --> F2[Folder 2]
-F --> F3[Folder 3]
-F1 --> I[Icon]
-F1 --> N[Folder Name]
-F1 --> C[Activity Count]
-B --> H[Button:Home]
-B --> A[Button: Activities]
-B --> R[Button: Reports]
-B --> P[Button: Profile]
-
-classDef start font-size:12pt,text-align:center
-classDef blue font-size:12pt,text-align:center
-
-class W start
-class T,L,E,F,B,TA,TB,TC,TD,TE,F1,F2,F3,H,A,R,P,I,N,C blue
-
-</div>
-]
----
-# What is on your screen?
-
-.left-column[
-![:img Example poll everywhere mobile presenter application screen, 100%](img/drawing/pollevscreen.jpeg)
-]
-
-.right-column[
-App is made up of? Interactors
-
-What are Interactors made up of?
-
-]
-
-???
-Should push them down to the lowest level on the screen
-
-App is made up of? Interactors
-
-Interactors are made up of? lines, circles, text
-
-Lines, circles and text are made up of? Pixels
-
----
-# What is on your screen?
-
-.left-column[
-![:img Example poll everywhere mobile presenter application screen, 100%](img/drawing/pollevscreen.jpeg)]
-
-.right-column[
-App is made up of? Interactors
-
-Interactors are made up of? lines, circles, text
-
-Lines, circles and text are made up of? Pixels (picture elements)
-]
----
-# Aside: Displaying a Pixel
-
-.left-column30[
-Do you know how pixels are lit up in color or greyscale?
-- on your computer or TV screen?
-- on a projector?
-]
---
-.right-column50[
-[Cathode Ray Tube](https://en.wikipedia.org/wiki/Cathode-ray_tube) |  [LED Display](https://en.wikipedia.org/wiki/LED_display)
-:--: | :--:
-![:img Magnified view of a delta-gun shadow mask color CRT, 90%](img/drawing/CRT_display.jpg) | ![:img Detail view of a LED display with a matrix of red green and blue diodes, 90%](img/drawing/LED_display.jpg)
-
-]
-
-???
-Get them to at least realize that the actual pixels on their
-screen are LEDs
-
-
-
-
----
-# Drawing on the Screen
-
-What are we going to control as we build this application?
-
---
-- Interactors
-
---
-  - from the Toolkit
-  - they know how to draw themselves and possibly react to input
-
---
-In Android, we call these Interactors `Views`
-
-- *Aside: Widgets, Interactors, and `Views` are all variations on the same term*
-
---
-What if you were to build an interactor from scratch?
-
---
-- You'd need basic drawing capabilities from the toolkit such as drawing lines, circles, and so on
-
----
-# Toolkit Support for Basic Drawing
-
-.left-column[
-![:img Example poll everywhere mobile presenter application screen, 85%](img/drawing/DrawingPanel.png)]
-
-.right-column[
-All toolkits have some sort of `Canvas` object or abstraction
-- `Canvas` is an object level abstraction for performing drawing operations
-- Each `View` has a `Canvas` in Android
-- You can access it in the `onDraw(Canvas canvas)` method
-
-When is `onDraw()` called?
-
-]
-
-???
-Connect to DrawingPanel in 143?
-
----
-# Toolkit Support for Basic Drawing
-
-.left-column[
-![:img Example poll everywhere mobile presenter application screen, 85%](img/drawing/DrawingPanel.png)]
-
-.right-column[
-All toolkits have some sort of `Canvas` object or abstraction
-- `Canvas` is an object level abstraction for performing drawing operations
-- Each `View` has a `Canvas` in Android
-- You can access it in the `onDraw(Canvas canvas)` method
-
-When is `onDraw()` called?
-- Handled automatically for you by toolkit
-- Triggered whenever the pixels are *dirty* (there's been a change to what needs to be viewed)
-- You can trigger this with `invalidate()` (we'll use this in the future)
-
-]
-
-???
-Lots to discuss here. Mainly focus on introducing the concept
-of a library (a bunch of views you can pick from, Canvas and its methods, etc)
-
-vs an architecture (which controls when and in what order things happen).
-We'll learn about both in this class. You need to understand both to use a toolkit.
-
----
-# How does Canvas work?
-
-- Drawing is done by calling methods for different kinds of objects
-
---
-
-- For example: `drawRect`, `drawOval`, `drawLine`, `drawPath` ...
-
-  [Full List in the API Documentation](https://developer.android.com/reference/android/graphics/Canvas.html)
-
----
-# How does Canvas work?
-
-- Drawing is done by calling methods for different kinds of objects
-
-- Lots happens under the covers... let's look at an example...
-
---
-
-"I want to draw a line on the screen"
-
---
-
-So I would likely call `drawLine` on the `Canvas`.
-
---
-
-So... how do I tell the computer where the start and end of the line will be?
-
----
-# How is location decided?
-
-- (0,0) is at the top left of the screen
-- The screen is drawn pixel by pixel from top left to bottom right in "raster" lines
-
-![:img Picture of a very old CRT based TV display, 25%](img/drawing/analogtv.jpg)
-![:img Picture of raster scanning going from top left to top right; down a row; and so on, 25%](img/drawing/rasterscanning.png)
-[Source: Wikipedia](https://en.wikipedia.org/wiki/Analog_television#Displaying_an_image)
----
-# How is a drawing object rendered on screen?
-
-- An object (like a line) would be converted into one or more **strokes**
-- A stroke has properties such as width or color
-- The stroke is converted to **pixels** (correspond to dots on your screen)
-- These pixels are put in a `Bitmap` (frame buffer) first, then updated on the screen all at once
-
-???
-top left is from old-style raster graphics, where a beam of light literally moved
-down the screen from top left to bottom right, causing chemical excitation when on
-and thus lighting the screen
-
-the last is left over from when both graphics and drawing were slower and more linear
-Still most reliable approach
-
----
-# How is a stroke converted to pixels?
-- Strokes (can be) size independent. Pixels are not
-- Strokes are continuous. Pixels are not
-- Anti-aliasing
-
-Essentially converting from **vector** to **raster** graphics ([Bresenham's algorithm](https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm))
-
----
-# Quick understanding test
-
-What internal data structure (abstraction) represents an entire
-picture to display on a color screen?
-
---
-pixels in a 2D array
-
-![:img The left side of this image displays the RGB pixel values of the image of GitGrade's Hopper on the right side 3%](img/drawing/pixelcalc.png)
-
-Pixel Calculator (Tanimoto 2010)
-
-???
-
-**A frame buffer (2D array)	(picture)**
-
-The following are wrong, they represent a single pixel (but we haven't studied this yet)
-
-- A pixel (R,G,B)
-- A number from 0 to 255
-
----
-# What is the [Paint](https://developer.android.com/reference/android/graphics/Paint.html) Object?
-
-
-.left-column[
-![:img Picture of a phone screen with a blue and green circle drawn on it at different vertical positions (50 and 150 y center point), 80%](img/drawing/circles.png)
-]
-
-.right-column[A Paint object is an abstraction that determines how drawing operations should look
-```java
-Paint drawPaint = new Paint();
-drawPaint.setColor(Color.BLUE);
-drawPaint.setAntiAlias(true);
-drawPaint.setStrokeWidth(5);
-drawPaint.setStyle(Paint.Style.STROKE);
-canvas.drawCircle(500, 500, 400, drawPaint);
-
-drawPaint.setStrokeJoin(Paint.Join.ROUND);
-drawPaint.setStrokeCap(Paint.Cap.ROUND);
-drawPaint.setColor(Color.GREEN);
-drawPaint.setStrokeWidth(15);
-canvas.drawLine(350, 300, 500,600, drawPaint);
-```]
----
-
-# What is the [Paint](https://developer.android.com/reference/android/graphics/Paint.html) Object?
-
-- Abstraction that determines how drawing operations should look
-  - Drawing style: stroked, filled
-  - Line Characteristics: color, line width, join, cap styles
-  - Fill Characteristics (color)
-
-![:img example dotted line--unfilled,15%](img/drawing/dotted.png)
-![:img example solid filled,15%](img/drawing/filled.png)
-![:img example solid unfilled,15%](img/drawing/unfilled.png)
----
-
-# Other Paint properties
-
-- Text Characteristics: font family, style, size, alignment settings, etc.
-
---
-- font: shapes for chars (called *glyphs*) plus layout
-  - family or typeface
-
-![:img examples of different types of fonts,40%](img/drawing/fonts.png)
-
----
-# Other Paint properties
-
-- Text Characteristics: font family, style, size, alignment settings,
-etc.
-- font: shapes for chars (called *glyphs*) plus layout
-  - family or typeface
-  - style: plain, *italic*, **bold**, **_both_**, ~~strikethrough~~,  *etc.*
---
-
-  - points: 72.27 points per inch
-???
-because french inches were different (72 per inch)
-Really just a guideline these days
-It is the *width* of a capital M (no height specified)
-
----
-# The Path Object
-
-- Canvas supports drawing primitive shapes _and_ arbitrary paths:  `void drawPath(Path p, Paint paint);`
-
---
-
-- Declaring a `Path` can be done by combining basic primitive shapes (e.g rectangles, circles, ovals, curves like arc, cubic, etc.)
-
---
-
-- What drawing model does creating a path in this way correspond to?
- - Raster model
- - Vector model
-
----
-# The Path Object
-
-- Canvas supports drawing primitive shapes _and_ arbitrary paths:  `void drawPath(Path p, Paint paint);`
-
-- Declaring a `Path` can be done by combining basic primitive shapes (e.g rectangles, circles, ovals, curves like arc, cubic, etc.)
-
-
-- Which is more scalable?
-
- - Raster model
- - Vector model
-
-???
-XXXX could do in-class [drawing
-exercise](https://github.com/mriveralee/ssui-mobile-exercises-2016/tree/master/exercises/lab05/CustomDrawing)
-IF time XXXX needs updating
-
----
-# Bounding box of an object
-
-A bounding box (or sometimes [Minimum Bounding Box](https://en.wikipedia.org/wiki/Minimum_bounding_box))
-is a term used in coordinate geometry to describe the smallest rectangular area that contains an object or set of objects.
-
-Great example to play with: https://www.mathopenref.com/coordbounds.html
-
-Drawing Demo - things to think about
-- What is the bounding box of a line that is drawn diagonally
-  - from upper left to lower right?
-  - lower right to the upper left?
-  - from the upper right to the lower left?
-  - from the lower s`
-- What is bounding box of a vertical line?
-- What is the bounding box of a horizontal line?
-
----
-# Doodle assignment: practice with drawing
-
-Inspired by Google's Doodles, and will include animation (to be discussed)
-
-First we will create holders for things you might draw
-- Android already provides an `ImageView` and a `TextView`
-- You will create a `LineView`
-- You will produce some things we specify
-- Then you will have a chance to create any animation you want!
-
----
-# [Example from 19sp](img/drawing/doodlevid.mp4)
-
-.left-column[
-Note that we use a `View` for **each** thing on the screen
-]
-.right-column[
-![:youtube Animation showing images of food moving in a line down the page around a U finally forming a W, Sx8oiJGjaIM]
-
-]
-
----
-# Why so many separate `Views`?
-
-.left-column-half[
-
-Useful later when we want to do animation
-
-Also provides **separation of concerns** and good high level control
-- Can have a different paint object for each view
-- Can easily change z-order (what is on top of what)
-- Can store information used to draw that thing (whatever it is)
-- Can either make the size of the whole screen or resize around what is drawn
-
-Views can also be re-used easily
-]
-
-.right-column20[
-![:img Picture of an android device with 3 Views each one containing a line circle and square a different size with different backgrounds, 80%](img/drawing/views.png)
-]
-
-???
-This could be a good place to ask them to think about what that means and demonstrating two things with different z order.
-
----
-# Coordinates of the Views
-
-- The coordinate system for each View has the (0, 0) point in the upper left hand corner (remember why?)
-- The width and height of the View is determined it's `ViewGroup.LayoutParams` -
-  - These will be used by the layout system for positioning.
-  - We will learn more about these next week.
-  -
-- The `View` also has a position on the screen.
-  - `View#SetX(int)` and `View.SetY(int)` set the left and top most coordinate of the `View` in its parent.
-
----
-# Advanced Canvas: Coordinate Transformations
-
-.left-column[
-## How does the android toolkit move the various objects on this screen?
-]
-.right-column[
-![:youtube A phone screen with patterned circles spinning in different directions on it, w7DEWWtIlrs]
-]
-
-???
-Be sure to orally narrate what is happening for low-vision people in the room
-
----
-# Linear ("affine") Transformations available
-
-Translate, Scale, Rotate, Shear (and any combination thereof)
-
---
-
-- Translate: Move origin (and everything else) in x and y
-![:img a large moon and a large moon moved to the right a few pixels, 15%](img/drawing/translate.png)
-
-???
-used extensively in GUIS because child objects just draw themselves
-at *their* origin, so a component doesn't have to calculate how to draw
-itself based on its position
-
---
-
-- Scale: change size (negative == flip)
-![:img a large and small moon, 15%](img/drawing/scale.png)
-
---
-
-- Rotate and Shear
-![:img a rotated and angled moon, 25%](img/drawing/shear.png)
-
----
-# Coordinate Transformations
-
-- Can modify any shape, including text.
-- In practice, complex transformations are done with matrices, and matrices are using `concat(Matrix)`
-- But Android helps with this by providing methods in the [Canvas](https://developer.android.com/reference/android/graphics/Canvas) object to transform a canvas such as
-```java
-translate(float dx, float dy)
-rotate(float degrees)                           // the whole canvas around the canvas origin
-rotate (float degrees, float px, float py)      // around a particular point
-scale(float, float)
-scale (float sx, float sy, float px, float py)  // around a pivot point
-skew(float sx, float sy)                        // skew by sx and sy
-save()                                          // save the current transform
-restore()                                       // restore the previous transform
-```
-
-???
-- important thing to point out here: This is a value proposition for a toolkit again
-
-– Affine transformations are based on two-dimensional matrices of the
-following form:
-
-P' = T*P where P is 1x3 and T is the transform matrix (3x3) with the
-bottom row 0 0 1
-
-Thus, x' = ax + cy + t_x and y' = bx + dy + t_y
-
-*Note* Any sequence of transform, rotate and shear can be represented
-in a single matrix of this form (just multiple the matrices together)
-
-
-
----
-# Question: How to rotate about the center of an object
-
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/DfxDLPdpd2zTpLlUJt9h9?controls=none&short_poll=true" width="800" height="500" frameBorder="0"></iframe>
-
-
-???
-
-[raise your hands]
-
-- A: Translate, rotate, translate
-- B: Rotate, Translate, Rotate
-- C: Scale, Rotate, Scale
-- D: Rotate
-
-
-XX define exercise
-maybe put this after android stuff?
-
-I usually draw this out on a piece of paper using the document camera to help
-
----
-# Solution: How to rotate about the center of an object
-.left-column[
-![:img a blue square and then a translated and rotated green square, 80%](img/drawing/trans-rotate.png)]
-.right-column[
-
-```java
-int rectHeight = 300;
-int rectWidth = 300;
-int rectY = 100;
-int rectX = 100;
-float px = (rectWidth - rectX)/2 + rectX;
-float py = (rectHeight - rectY)/2 + rectY;
-
-canvas.drawRect(rectX, rectY, rectWidth, rectHeight, paint);
-
-for (int i = 15; i < 360; i += 15) {
-    int color = (i % 2 == 0) ? Color.GREEN : Color.BLUE;
-    paint.setColor(color);
-
-    canvas.drawRect(rectX, rectY, rectWidth, rectHeight, paint);
-    canvas.translate(px, py);
-    canvas.rotate(i);
-    canvas.translate(-px, -py);
-}
-```
-
-]
-
----
-# Summary & revisiting learning goals for this week
-
-- What are the layers of the application stack
-- What are the roles of developers at each layer
-- How to add interactors to the app
-- How interactors are drawn
-- Pixel & stroke models
-- Canvas & Paint & Paths in Android
-- Maybe...Rotating around an object
diff --git a/slides/wk01/figs.pptx b/slides/wk01/figs.pptx
deleted file mode 100644
index 640314bbc7787224d8cd6a0c4be4c8daf54b0975..0000000000000000000000000000000000000000
Binary files a/slides/wk01/figs.pptx and /dev/null differ
diff --git a/slides/wk01/hci-intro.html b/slides/wk01/hci-intro.html
deleted file mode 100644
index ec15a5fa39ec71cde5c490d9625fc46a02cc66c9..0000000000000000000000000000000000000000
--- a/slides/wk01/hci-intro.html
+++ /dev/null
@@ -1,228 +0,0 @@
----
-layout: presentation
-title: Introduction to HCI --Week 1, Monday--
-description: High Level Introduction to HCI for Interaction Programming, CSE 340
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-
-# Introduction to Human Computer Interaction
-
-CSE 340 {{site.quarter}}
-
----
-layout: false
-
-#  Human-Computer Interaction (HCI)
-
-A science of the artificial
-- Human
- - Anyone impacted by the existence of the program
- - End users
-- Computer
- - Artificial thing human is interacting with
-- Interaction
- - How the artificial stuff is actually used
-- 48% of app code [Myers & Rosson, CHI'92]; probably more now!
-
----
-.left-column-half[
-![:img Couple with cordless telegraph apparatus,100%](img/hci-intro/mobile-telegraph.png)
-]
-.right-column-half[
-Robida's vision of a cordless telegraph (1906)
-]
----
-.left-column-half[
-![:img Two women using video phones,100%](img/hci-intro/videophones.png)
-]
-.right-column-half[
-Commercial vision of a wireless private video phone  (1929)
-]
----
-.left-column-half[
-![:img Vannevar Bush's imagined Memex--a desk with mechanical and digital innards,100%](img/hci-intro/memex.png)
-]
-
-.right-column-half[
-His article: [As we may think](http://web.mit.edu/STS.035/www/PDFs/think.pdf)
-
-.quote[The MEMEX 'is a desk that can instantly bring files and material on
-any subject to the operators fingertips....' (Bush, 1945, 'As We May
-Think', Atlantic Monthly)]
-]
-
----
-.left-column-half[
-![:img A prototype of a wearable wristwatch/cellphone and Dick Tracy using it in a stamp based on the comic strip, 100%](img/hci-intro/watches.png)
-]
-.right-column-half[
-A wrist-watch cellphone prototype (1947), which captured popular imagination as shown in this Dick Tracy stamp
-]
----
-.left-column-half[
-![:img A young man sitting at a complex machine covered in buttons--drawing on the screen with a pen, 100%](img/hci-intro/sutherland.png)
-]
-.right-column-half[
-Ivan Sutherland. 1964. The sketchpad graphical communication system in action.
-.font-small[In Proceedings of the SHARE design automation workshop (DAC '64). ACM, New York, NY, USA, 6.329-6.346.]
-]
----
-# Sutherland  Inspires Engelbart
-
-.left-column-half[
-![:img Two images -- a man giving a live demo of a text based
-    interface; and a wooden computer mouse.,
-80%](img/hci-intro/engelbart.png)
-![:youtube Engelbart's *Mother of all Demos*. His presentation included windows;
-hypertext; graphics; video conferencing; the computer mouse; word
-processing; dynamic file linking; revision control; collaborative
-real-time editing; all new inventions!, B6rKUf9DWRI]
-]
-.right-column-half[
-Engelbart's *Mother of all Demos* His presentation included many all new inventions:
-- windows
-- hypertext
-- graphics
-- video conferencing
-- the computer mouse
-- word processing
-- dynamic file linking
-- revision control
-- collaborative real-time editing
-]
-.footnote[
-December 9 1968 at the
-Fall Joint Computer Conference.
-]
----
-# [1970s](https://www.computerhistory.org/timeline/1970/) starts the computer revolution 
-
-.left-column-half[
-![:img Picture of two people with long hair and glasses interacting with a computer kiosk in Lepold's Records, 80%](img/hci-intro/community-memory.jpg)
-]
-.right-column-half[
-- 1971: Email is invented by Ray Tomlinson.
-- 1973: The first commercial graphical user interface is introduced in 1973 on the Xerox Alto. The modern GUI is later popularized by the Xerox Star and Apple Lisa (but Xerox never made money on this)
-- 1973: The first capacitive touchscreen is developed at CERN.
-]
----
-# [1980s](https://www.computerhistory.org/timeline/1980/): Wave 1 of HCI: Personal Computing (mobile and desktops) 
-
-.left-column-half[
-![:img LEFT: Picture of peter lewis holding a large cellphone with Harry Brock - President of Metrocell in 1982. RIGHT: Close-up of Peter T. Lewis in 2015 - a smiling African-American man in a pink shirt holding his glasses,60%](img/hci-intro/Lewis.png)<br>
-![:img A desktop personal computer showing a WYSIWYG
-word processor and graphical window system, 25%](img/hci-intro/smalltalk-interface.png)
-![:img A picture of Adele Goldberg inventor of Smalltalk-80, 30%](img/hci-intro/goldberg.jpg)
-]
-.right-column-half[
-
-- 1984: The first commercially available cell phone, the DynaTAC 8000X, is created by Motorola.
-- 1985: "The term 'Internet of Things' was first conceptualized, coined, and published by Peter T. Lewis in a speech to the Congressional Black Caucus ([Chetan Sharma](http://www.chetansharma.com/correcting-the-iot-history/))<sup>1</sup>
-- Personal computers hit the mass market
-  - User interface toolkits were invented (Smalltalk 80, invented by Adele Goldberg, is the first)
-]
-.footnote[<sup>1</sup> This history was erased and instead attributed to a white man until very recently]
-
-
----
-# [1990s](https://www.computerhistory.org/timeline/1990/): Wave 2: Collaboration & communication 
-
-.left-column-half[
-![:img A picture of Hiroshi Ishii in a suit and tie and Roz Picard in a black pantsuit touching a physical computing device hooked up to circuit boards with wires, 30%](img/hci-intro/ishii.jpg)
-<br>.font-small[Hiroshi Ishii and Roz Picard at the MIT Media lab in 1998, from [Ben Shneiderman's archive of HCI Pioneers](https://hcipioneers.wordpress.com/portfolio/ishii-hiroshi/)]
-]
-.right-column-half[
-- 1990: The World Wide Web is first introduced to the public by English engineer and computer scientist Sir Tim Berners-Lee, echoing the MEMEX proposed in 1945
-- 1993: Mosaic, the first popular web browser is introduced
-- 1996: Palm pilot is introduced
-- 1998: The first portable MP3 player is released by SaeHan Information Systems.
-21st century
-- 1998: Ishii pioneers tangible computing
-]
-.footnote[[HCI/UX timeline](https://miro.medium.com/max/2000/1*_c9Sy7zXyBMlmuGH_orf2Q.png)]
----
-# [2000s](https://www.computerhistory.org/timeline/2000/): Wave 2: Collaboration & communication 
-
-.left-column-half[
-![:img A picture of Deborah Estrin talking about mobile health, 45%](img/hci-intro/estrin.jpg) ![:img A picture of an App store full of mobile apps, 40%](img/hci-intro/mobile-apps.jpg)<br>
-
-
-.font-small[(left) Deborah Estrin, who won a MacArthur Genius award for her pioneering work in Mobile Health (right) "The iPhone’s phenomenal popularity creates a new computing platform that brings mobile Web browsing to a large audience. Google’s Android mobile platform soon makes that audience even larger." ([Computer History Museum](https://www.computerhistory.org/timeline/2009/))
-]
-]
-
-.right-column-half[
-- 2007: Apple Inc. launches the iPhone, the first touchscreen smart phone.[411]
-- 2009: Mobile apps hit mass market
-- 2011: Deborah Estrin pioneers the use of mobile technology for health
-]
-
----
-# [2010s](https://www.computerhistory.org/timeline/2010/): Wave 3: Self-expression, social change 
-
-.left-column-half[
-![:img A picture of a large crowd gathered in Tunis, 40%](img/hci-intro/arab-spring.jpg)
-.font-small["Starting in late 2010 and continuing through 2011, protests in North Africa and the Middle East lead to regime change, and in some cases, free elections for the first time in history. Many of these protests were organized or promoted on sites such as Twitter and Facebook, and commentary appearing on popular blogs helped get the news out to the rest of the world while official, government-run media outlets were often silent." ([Computer History Museum](https://www.computerhistory.org/timeline/2011/))
-]]
-
-.right-column-half[
-- Diversification of focus and impact
- - Study of computers in many contexts
- - Diversification of apps
-- Diversification of input and output 
- - 2015 first SmartWatch released 
- - Mobile interaction options proliferate
- - Introduction of new mobile interaction techniques, sensors 
- - Accessibility of mobile devices increases and through the access to navigation, information through the camera and more
-- [Rise of HCI](https://blog.prototypr.io/the-rise-of-human-computer-interaction-hci-823dd6286e1d)
-]
-
----
-.left-column-half[
-## HCI's more shameful moments
-![:img A picture of an alert stating: Emergency Alert. Ballistic missile threat inbound to Hawaii. Seek immediate shelter. This is not a drill, 50%](img/hci-intro/hawaii.jpg)
-<br>.font-small[2017 [Hawaii missile gaffe](https://theconversation.com/hawaiis-missile-alert-gaffe-why-good-human-machine-design-is-critical-90144) warns incorrectly of incoming nuclear missile
-]
-]
-.right-column-half[
-- 1979-1989 over 1000 people die due to computer-related accidents, many involving HCI interfaces. [1994 report](https://www.cs.uic.edu/~i377/MacKenzie-Computer-related-accidental-death-an-empirical-exploration.pdf). This data still isn't tracked...
-- 2015 [Google's image recognition code tags a Black person as a gorilla](https://muse-jhu-edu.offcampus.lib.washington.edu/article/645268/pdf). The fix [as of 2018](https://www.wired.com/story/when-it-comes-to-gorillas-google-photos-remains-blind/) was still a hard coded solution
-- 2016 [Did fake news change the outcome of an election?](https://www.npr.org/2018/04/11/601323233/6-facts-we-know-about-fake-news-in-the-2016-election) 
-- 2019 Discussions increase about the need to address [algorithmic bias in health care](https://www.healthaffairs.org/do/10.1377/hblog20191031.373615/full/). Articles show how [race is baked into health care decision making algorithms](https://www.statnews.com/2020/06/17/racial-bias-skews-algorithms-widely-used-to-guide-patient-care/) while patients do not have the right to know the basis 
-- 2020 [Algorithm leads to false arrest of Black man](https://www.npr.org/2020/06/24/882683463/the-computer-got-it-wrong-how-facial-recognition-led-to-a-false-arrest-in-michig) 
-]
-
----
-#  HCI in the Future
-
-How do we invent a preferable future? an inclusive future?
-- What will the future look like?
-- Who needs to help design the future for us to achieve this?
-- Who needs to use technology in the future for us to achieve this?
-
----
-
-#  <span class="fa-stack fa-lg"> <i class="fa fa-comment fa-stack-2x"></i> <i class="fa fa-cloud fa-stack-2x"></i> </span> Think Ahead
-
-Question we will discuss in lecture: How is it changing us as individuals and a society?
-
-???
-- Social networking has been implicated in revolutions and elections.
-- Interfaces designs have impacted health and safety.
-
-
----
-# Summary (somewhat tongue in cheek)
-
-
-Welcome to the class!
-
-All of HCI was already invented (sort of!)
-
-HCI has a huge influence on individuals and society
-
-HCI is really all of computer science
diff --git a/slides/wk01/img/drawing/CRT_display.jpg b/slides/wk01/img/drawing/CRT_display.jpg
deleted file mode 100644
index 6e7315151756a6b0b81795cf9da1e461c26154df..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/CRT_display.jpg and /dev/null differ
diff --git a/slides/wk01/img/drawing/DrawingPanel.png b/slides/wk01/img/drawing/DrawingPanel.png
deleted file mode 100644
index a80c2e8f320be3df12dcc7248e1824ef267f3ea8..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/DrawingPanel.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/LED_display.jpg b/slides/wk01/img/drawing/LED_display.jpg
deleted file mode 100644
index 95bd0ad4022000674e359b23a082452d1e895b7b..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/LED_display.jpg and /dev/null differ
diff --git a/slides/wk01/img/drawing/activity_lifecycle.png b/slides/wk01/img/drawing/activity_lifecycle.png
deleted file mode 100644
index 837eea1fc6721683c4e103348a9e704faf527835..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/activity_lifecycle.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/activity_lifecycle_full.png b/slides/wk01/img/drawing/activity_lifecycle_full.png
deleted file mode 100755
index 879f51f6e8fafe75d267984680ef63f85b118dc5..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/activity_lifecycle_full.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/analogtv.jpg b/slides/wk01/img/drawing/analogtv.jpg
deleted file mode 100644
index c74daaf942b864b1bf0fa5a0948761a35f0576ab..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/analogtv.jpg and /dev/null differ
diff --git a/slides/wk01/img/drawing/android-animate.gif b/slides/wk01/img/drawing/android-animate.gif
deleted file mode 100755
index 0fb1d08fd616979b31c4390966e7c2e3410b2c4f..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/android-animate.gif and /dev/null differ
diff --git a/slides/wk01/img/drawing/animation-linear.png b/slides/wk01/img/drawing/animation-linear.png
deleted file mode 100755
index 08bd9fc3dc2ce5d151294b1d2b695a490f2e5f00..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/animation-linear.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/boundless.gif b/slides/wk01/img/drawing/boundless.gif
deleted file mode 100644
index b0613367fe237b6755557dd886a4f374380ec574..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/boundless.gif and /dev/null differ
diff --git a/slides/wk01/img/drawing/circles.png b/slides/wk01/img/drawing/circles.png
deleted file mode 100644
index 81448d0a6c68d6aaa1ecbe4952e90d4345d08006..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/circles.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/doodlevid.mp4 b/slides/wk01/img/drawing/doodlevid.mp4
deleted file mode 100644
index 090f7e51963466d13b647eb8fb71fb795925d70c..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/doodlevid.mp4 and /dev/null differ
diff --git a/slides/wk01/img/drawing/dotted.png b/slides/wk01/img/drawing/dotted.png
deleted file mode 100644
index 17a01df4330e0a8eef0d139fbe02ec41ece7910f..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/dotted.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/fastfood.mp4 b/slides/wk01/img/drawing/fastfood.mp4
deleted file mode 100644
index 8089ac7b2d852079847bf8384d270d2bf5c62591..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/fastfood.mp4 and /dev/null differ
diff --git a/slides/wk01/img/drawing/filled.png b/slides/wk01/img/drawing/filled.png
deleted file mode 100644
index eeccdb82550384e358f10b7ac93be3ec419a586a..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/filled.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/fonts.png b/slides/wk01/img/drawing/fonts.png
deleted file mode 100644
index 102d6b0b1adc3a98b0ecc0a220901b4b605195fd..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/fonts.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/interactors.png b/slides/wk01/img/drawing/interactors.png
deleted file mode 100644
index 339747d21e81b21df33a7a971a143991e85ffae4..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/interactors.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/interpolators.gif b/slides/wk01/img/drawing/interpolators.gif
deleted file mode 100644
index ad4e46ef00ad0843547fa69de0754dbaf9a7c59b..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/interpolators.gif and /dev/null differ
diff --git a/slides/wk01/img/drawing/messaging.png b/slides/wk01/img/drawing/messaging.png
deleted file mode 100644
index dbcd315a04f897ddc84b88b144f447f7379ff3b8..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/messaging.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/messenger-bubble.gif b/slides/wk01/img/drawing/messenger-bubble.gif
deleted file mode 100755
index 77defd497891e79a775a6ca3593cf33e02d2c890..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/messenger-bubble.gif and /dev/null differ
diff --git a/slides/wk01/img/drawing/pacing.png b/slides/wk01/img/drawing/pacing.png
deleted file mode 100644
index 3997cf6fd6aeee192b83ddd549982c9fb8c857a2..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/pacing.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/pathanimation.gif b/slides/wk01/img/drawing/pathanimation.gif
deleted file mode 100644
index f2829498a59210e38138a4a30b31cc26fe948916..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/pathanimation.gif and /dev/null differ
diff --git a/slides/wk01/img/drawing/pixelcalc.png b/slides/wk01/img/drawing/pixelcalc.png
deleted file mode 100644
index 2a18bcc5ecfea59668643d5654782554323e6631..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/pixelcalc.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/pollevscreen.jpeg b/slides/wk01/img/drawing/pollevscreen.jpeg
deleted file mode 100644
index eec7d069978daffee0f466c7388aedf36c734d58..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/pollevscreen.jpeg and /dev/null differ
diff --git a/slides/wk01/img/drawing/rasterscanning.png b/slides/wk01/img/drawing/rasterscanning.png
deleted file mode 100644
index 95cf22eb58025670e99a1af4b1d3c4d6456e9406..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/rasterscanning.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/spinners.mov b/slides/wk01/img/drawing/spinners.mov
deleted file mode 100644
index 90bd20b62efaa4fe887a336b371a58025539b6a8..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/spinners.mov and /dev/null differ
diff --git a/slides/wk01/img/drawing/trans-rotate.png b/slides/wk01/img/drawing/trans-rotate.png
deleted file mode 100644
index bdc729191278f7a42d4470d4329b243378d1c6a6..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/trans-rotate.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/unfilled.png b/slides/wk01/img/drawing/unfilled.png
deleted file mode 100644
index cec58bfe8be1cfd1338377dbadd1f11197ab2af5..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/unfilled.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/valueanimator.png b/slides/wk01/img/drawing/valueanimator.png
deleted file mode 100755
index 6cc2a13bbfca142b090c3fec00ddf410ca82eeb5..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/valueanimator.png and /dev/null differ
diff --git a/slides/wk01/img/drawing/views.png b/slides/wk01/img/drawing/views.png
deleted file mode 100644
index 63ed37f80d05ee622489509f2ca0fd9b9aecef78..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/drawing/views.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/Lewis.png b/slides/wk01/img/hci-intro/Lewis.png
deleted file mode 100644
index 5c5d43add5041afb5946baa2225de6dc7ce10031..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/Lewis.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/alto.jpg b/slides/wk01/img/hci-intro/alto.jpg
deleted file mode 100644
index b4ca583b8540653a19898578653e4287e6d045b0..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/alto.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/arab-spring.jpg b/slides/wk01/img/hci-intro/arab-spring.jpg
deleted file mode 100644
index ac79e327acb07ca70a878c8c84b76b04754097e3..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/arab-spring.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/community-memory.jpg b/slides/wk01/img/hci-intro/community-memory.jpg
deleted file mode 100644
index 4651c035dae94869fee908b331676b39d4b0c530..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/community-memory.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/cronkite.png b/slides/wk01/img/hci-intro/cronkite.png
deleted file mode 100644
index 85d3eebdaacbde2c235f083343dc30dd629864d4..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/cronkite.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/engelbart.png b/slides/wk01/img/hci-intro/engelbart.png
deleted file mode 100644
index 25df0b9821e1057ce4c3dba78bc2e3633ef39f3f..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/engelbart.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/estrin.jpg b/slides/wk01/img/hci-intro/estrin.jpg
deleted file mode 100644
index 0ecfe09f6b14e5fb8e502075d67d8fd376a4caab..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/estrin.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/goldberg.jpg b/slides/wk01/img/hci-intro/goldberg.jpg
deleted file mode 100644
index e391a0edd5e7e70d2638cb5acbc3304f23ac80f2..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/goldberg.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/google-blooper.jpeg b/slides/wk01/img/hci-intro/google-blooper.jpeg
deleted file mode 100644
index 0fb9f6a15edc02069dddf011c0a7e45644222d49..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/google-blooper.jpeg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/hawaii.jpg b/slides/wk01/img/hci-intro/hawaii.jpg
deleted file mode 100644
index 2f8abde6ee1c5e18fe62e71c1a68c7149b138988..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/hawaii.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/ishii.jpg b/slides/wk01/img/hci-intro/ishii.jpg
deleted file mode 100644
index 9179cfeab5f2c5ea8b0153257df2869a2c85f751..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/ishii.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/memex.png b/slides/wk01/img/hci-intro/memex.png
deleted file mode 100644
index 094de66dc1e71babd0e2159d440b227f757cd87c..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/memex.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/mobile-apps.jpg b/slides/wk01/img/hci-intro/mobile-apps.jpg
deleted file mode 100644
index 04cbd780353972f0b098c2eaf4626d90d4b64e48..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/mobile-apps.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/mobile-telegraph.png b/slides/wk01/img/hci-intro/mobile-telegraph.png
deleted file mode 100644
index 80467c73d558996e3bef98d15ab75f7edf4747d7..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/mobile-telegraph.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/palm-pilot.jpg b/slides/wk01/img/hci-intro/palm-pilot.jpg
deleted file mode 100644
index f00d70b065afc837a6f6e7ce3cab95f86809aa1c..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/palm-pilot.jpg and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/sketchpad-screens.png b/slides/wk01/img/hci-intro/sketchpad-screens.png
deleted file mode 100644
index 54869734fb21241e285a9da40967771f30565685..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/sketchpad-screens.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/smalltalk-interface.png b/slides/wk01/img/hci-intro/smalltalk-interface.png
deleted file mode 100644
index e5bb5cc43560722e13ce84477f0717a0d04d0502..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/smalltalk-interface.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/sutherland.png b/slides/wk01/img/hci-intro/sutherland.png
deleted file mode 100644
index 5f3d71b7c3fa008288e99202f9ccc567257f8544..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/sutherland.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/videophones.png b/slides/wk01/img/hci-intro/videophones.png
deleted file mode 100644
index 6cad4552510a46a7c25e7598ad73b6b025f50257..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/videophones.png and /dev/null differ
diff --git a/slides/wk01/img/hci-intro/watches.png b/slides/wk01/img/hci-intro/watches.png
deleted file mode 100644
index bc3dd12e5b373e6067bfc0699f0fcb61d49628b4..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/hci-intro/watches.png and /dev/null differ
diff --git a/slides/wk01/img/intro/android-versions-may2019.png b/slides/wk01/img/intro/android-versions-may2019.png
deleted file mode 100644
index 1b2c243f3a9f1b105d5ee77332c1e50df0a16fe1..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/intro/android-versions-may2019.png and /dev/null differ
diff --git a/slides/wk01/img/intro/android-versions-oct2018.png b/slides/wk01/img/intro/android-versions-oct2018.png
deleted file mode 100644
index 0317a23481dd904945e70c60790755ac28b2ae69..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/intro/android-versions-oct2018.png and /dev/null differ
diff --git a/slides/wk01/img/intro/mankoff-projects.png b/slides/wk01/img/intro/mankoff-projects.png
deleted file mode 100644
index 34e6a73f3d92bb2e63288757e385b556f3d37ae7..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/intro/mankoff-projects.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/activity_lifecycle.png b/slides/wk01/img/toolkits/activity_lifecycle.png
deleted file mode 100644
index ab0921a717d184442c96c1b8863018d46920a67c..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/activity_lifecycle.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/android-components.png b/slides/wk01/img/toolkits/android-components.png
deleted file mode 100644
index 30d90a952ecddebdfddc1ee1cd2586bb42070762..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/android-components.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/android-components2.png b/slides/wk01/img/toolkits/android-components2.png
deleted file mode 100644
index bb2539c214d6fbaacd876a56443f5533ff5cb5bd..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/android-components2.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/android-editor.gif b/slides/wk01/img/toolkits/android-editor.gif
deleted file mode 100644
index 740a8447abe8a2c87ace8be0786161fa86b0c070..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/android-editor.gif and /dev/null differ
diff --git a/slides/wk01/img/toolkits/android-swipe.png b/slides/wk01/img/toolkits/android-swipe.png
deleted file mode 100644
index 3f2f55e84b63c7a9e551125f114db550ac804e52..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/android-swipe.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/android-type.jpg b/slides/wk01/img/toolkits/android-type.jpg
deleted file mode 100644
index ce7404e45aa8b9a8b6f92cfddfd135311694b868..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/android-type.jpg and /dev/null differ
diff --git a/slides/wk01/img/toolkits/android-ui.png b/slides/wk01/img/toolkits/android-ui.png
deleted file mode 100644
index 16760d5095a74f896378a3cff9e5b70231161919..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/android-ui.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/animation.gif b/slides/wk01/img/toolkits/animation.gif
deleted file mode 100644
index 31558eec649308ffd33ab15872fb2c10997c6488..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/animation.gif and /dev/null differ
diff --git a/slides/wk01/img/toolkits/ape_fwk_hal.png b/slides/wk01/img/toolkits/ape_fwk_hal.png
deleted file mode 100644
index 54927259aed04a9eb299408e941f69a8a615ef03..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/ape_fwk_hal.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/hardware.jpg b/slides/wk01/img/toolkits/hardware.jpg
deleted file mode 100644
index d92ec906e33b0f37b1f5cc06e2c623e148155fc5..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/hardware.jpg and /dev/null differ
diff --git a/slides/wk01/img/toolkits/interactors1.png b/slides/wk01/img/toolkits/interactors1.png
deleted file mode 100644
index 73d003f6a57acf9338a629abb520bc9045e98ebb..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/interactors1.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/interface.png b/slides/wk01/img/toolkits/interface.png
deleted file mode 100644
index efc20af479615d575dd62054d447dabd3ab6f698..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/interface.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/many-uis.png b/slides/wk01/img/toolkits/many-uis.png
deleted file mode 100644
index 1fd7edc75974437e56d41047b159f73339022298..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/many-uis.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/novellibrary.png b/slides/wk01/img/toolkits/novellibrary.png
deleted file mode 100644
index a6e73b04930f211e0d98219be61682337e99bcc2..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/novellibrary.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/phones.jpeg b/slides/wk01/img/toolkits/phones.jpeg
deleted file mode 100644
index 167440241532cf08b589ef24ad9fb66ec70d7540..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/phones.jpeg and /dev/null differ
diff --git a/slides/wk01/img/toolkits/prototype.png b/slides/wk01/img/toolkits/prototype.png
deleted file mode 100644
index 920c6b2ba08cbca1aa6406ff0987b59eda057ce2..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/prototype.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/sandcastle1.png b/slides/wk01/img/toolkits/sandcastle1.png
deleted file mode 100644
index 265a540744d3b32b000231b226bd5df75de1a935..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/sandcastle1.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/sandcastle2.jpg b/slides/wk01/img/toolkits/sandcastle2.jpg
deleted file mode 100644
index 19f5af8ea412f80fbd7e2fb2d1ec0a110b25a755..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/sandcastle2.jpg and /dev/null differ
diff --git a/slides/wk01/img/toolkits/sandcastletools.png b/slides/wk01/img/toolkits/sandcastletools.png
deleted file mode 100644
index befeb3939b90834e9cd3c158e418425e7410ebf2..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/sandcastletools.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/sketch.png b/slides/wk01/img/toolkits/sketch.png
deleted file mode 100644
index 12952eab789096730ba6ea4040107be435804fa6..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/sketch.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/zoom-hall-of-fame.png b/slides/wk01/img/toolkits/zoom-hall-of-fame.png
deleted file mode 100644
index d11b519efcaff9347aaa4ffe0b0db21b28b2390a..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/zoom-hall-of-fame.png and /dev/null differ
diff --git a/slides/wk01/img/toolkits/zoom-hall-of-shame.png b/slides/wk01/img/toolkits/zoom-hall-of-shame.png
deleted file mode 100644
index b11f8a5d8b07fc74eddc9d0468684e13ff39c576..0000000000000000000000000000000000000000
Binary files a/slides/wk01/img/toolkits/zoom-hall-of-shame.png and /dev/null differ
diff --git a/slides/wk01/intro.html b/slides/wk01/intro.html
deleted file mode 100644
index 7744053e9278480072292d9dea360ef4a8349892..0000000000000000000000000000000000000000
--- a/slides/wk01/intro.html
+++ /dev/null
@@ -1,561 +0,0 @@
----
-layout: presentation
-title: Introductory Slides--Week 1, Monday--
-description: Introductory slides for Interaction Programming, CSE 340
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-
-# Introduction to Interaction Programming
-
-Welcome to CSE 340 {{site.quarter}}
-
-Instructor: {{site.author.name}} <br>
-TAs: David Chen, Zach Cheung, Taylor Gotfrid, Brian Lee, Jay Lin, <br>
-Michelle Lin, Jasper Palmer, Sophie Tian, My Tran, <br>
-with help from GitGrade's Jeremy Zhang.
-
----
-layout: false
-
-<!-- (Outline Slide) -->
-
-# Today's goals
-
-- **HCI: Designing the Future**
-- Learning goals
-- Course staff
-- Syllabus
-
-
----
-#  HCI in the Future
-
-Small Group Discussion: How is it changing us as individuals and a society?
-
-<iframe src="https://us.edstem.org/courses/114/sway/host/1153" width="800" height="600" frameBorder="0"></iframe>
-
-???
-- Social networking has been implicated in revolutions and elections.
-- Interfaces designs have impacted health and safety.
----
-# Return to discuss as a class
-
----
-# Summary (somewhat tongue in cheek)
-
-
-Welcome to the class!
-
-All of HCI was already invented (sort of!)
-
-HCI has a huge influence on individuals and society
-
-HCI is really all of computer science
-
----
-layout: false
-
-<!-- (Outline Slide) -->
-
-# Today's goals
-
-- HCI: Designing the Future
-- **Learning goals**
-- Course staff
-- Syllabus
----
-.left-column[
-# This **week's** learning goals
-]
-.right-column[
-- What is HCI? Past, present and future
-- Get up to speed with Android basics
-- Learn about basic abstractions for UI implementation
-- Names for common interactors
-]
----
-.left-column[
-# Course learning goals:
-]
-.right-column[
-# Building Interfaces
-- Deep understanding of **how to build user interfaces**
-- Basic abstractions (layout, event handling, *etc.*)
-- Implementing best practices: Undo, Accessibility, Feedback, Errors,
-*etc.*
-- Exploration of advanced UI concepts: Ubicomp, Sensing, AR, *etc.*
-]
----
-
-.left-column[
-# Course learning goals:
-]
-.right-column[
-#  Iterative Design
-
-- Basic understanding of **Iterative Design**
-- Why designers are valuable
-- Iterative design process
-- How designers get data from users
-]
----
-layout: false
-
-<!-- (Outline Slide) -->
-
-# Today's goals
-
-- HCI: Designing the Future
-- Learning goals
-- **Course staff**
-- Syllabus
----
-.left-column-half[
-# Jennifer Mankoff
-
-Pronouns: She/her
-
-[Make4All Lab](http://make4all.org)
-
-I use techonology to improving inclusion in
-and accessibility of our digital future.
-
-- Assistive and health technology
-- Fabrication/Physical computing
-- Improve inclusion and accessibility
-]
-
-.right-column-half[
-![:img Pictures of projects from the make4all lab including experiments with 3D printing materials; toolkits; capabilities; application; and understanding socio-technical system, 80%](img/intro/mankoff-projects.png)
-
-]
-
----
-
-.left-column-staff[
-
-## Lauren Bricker (she/her)
-bricker@cs.washington.edu<br>
-Faculty Lecturer<br>
-OH: Mon, Fri 11:30 am - 12:30 pm
-
-![:img Picture of Lauren, 40%]({{site.baseurl}}/assets/img/staff/bricker.jpg)
-]
-
-.right-column-staff[
-- I am a UW CSE PhD Alum
-- This is my 3rd year as Faculty in CSE
-  - I've taught 2nd grade - Masters students
-  - I also STARS and Startup support courses and do K-12 outreach
-  - I taught CSE 154 three times, consulted with it three times, and created CSE 390Z
-  - I was a part time instructor on CSE 340 in 20wi
-- My older son is also a CSE Alum, my younger son is a current Husky in Chem E
-- I'm an artist and maker
-- I love to bicycle and begrudgingly run
-- I'm an intermediate drummer
-]
-
-
----
-
-.left-column-staff[
-## David Chen (he/him)
-hanfec@cs.washington.edu<br>
-OH:
-- Sun 2:30 - 3:30 pm
-- Fri 1:00 - 2:00 pm
-
-![:img David Chen, 30%]({{site.baseurl}}/assets/img/staff/chen.jpg)
-]
-
-.right-column-staff[
-- I grew up in China, and went to New Jersy for the last two years of the high school.
-- It's my second time TAing 340, my suggestions: start doing the assgignment early.
-- Foods I like:
-  - Chocolate, Salmon, Green tea
-- Foods I hate:
-  - Tomatoes
-]
----
-
-.left-column-staff[
-## Zach Cheung (he/him)
-zachcheu@uw.edu<br>
-OH:
-- Tues 4:30 pm - 5:30 pm
-- Wed 9:30 am - 10:30 am
-
-![:img Zach Cheung, 30%]({{site.baseurl}}/assets/img/staff/cheung.jpg)
-]
-.right-column-staff[
-Hello!
-- I'm from Redmond, WA and will be remote from Redmond this quarter
-- I'm a Junior at UW CSE and this is my 2nd time TAing 340
-- Some things I'm looking forward to this quarter:
-  - Reading some books that I've put off
-  - Working on apps/projects with my friends remotely
-  - Getting to know you!
-]
-
----
-
-.left-column-staff[
-## Taylor Gotfrid (she/her)
-gotfrid7@cs.washington.edu <br>
-OH:
-- Thurs 2:30 - 3:30 pm
-- Friday 1:00 - 2:00 pm
-
-![:img Taylor Gotfrid, 30%]({{site.baseurl}}/assets/img/staff/gotfrid.jpg)
-]
-
-.right-column-staff[
-- 1st year PhD student in CSE working with Jennifer Mankoff
-- My research interests are in accessibility and HCI
-- My favorite video game is Stardew Valley
-- I love tea
-- I have a cat named Indie who you may potentially see during office hours
-]
----
-
-.left-column-staff[
-## Brian Lee (he/him)
-blee11@uw.edu <br>
-OH: Tues, Thurs 12:30 - 1:30 pm
-
-![:img Brian Lee, 40%]({{site.baseurl}}/assets/img/staff/lee.jpg)
-]
-
-.right-column-staff[
-- I am a 2nd year student studying Informatics.
-- I grew up in Seoul, moved to Anchorage when I was in 5th grade, moved to Seattle about 7 years ago.
-- I have rewatched all 9 seasons of The Office 7 times (best record was a 2 weeks).
-- I also love coffee, if you need any coffee shop suggestions, ask me!
-]
----
-
-.left-column-staff[
-## Jay Lin
-jial8@uw.edu<br>
-OH:
-- Sun 2:30 - 3:30 pm
-- Wed 4:30 - 5:30 pm
-
-![:img Jay Lin, 50%]({{site.baseurl}}/assets/img/staff/linj.jpg)
-]
-
-.right-column-staff[
-- 2nd year undergrad student
-  - Ambassador for Husky ADAPT
-  - Took this class just last quarter :)
-- Loves:
-  - Opossums (the American marsupial)
-  - Music (transcribing/composing)
-  - Single-player video games
-]
-
----
-
-.left-column-staff[
-## Michelle Lin (she/her)
-mlin88@cs.washington.edu <br>
-OH:
-- Wed 9:30 - 10:30 am
-- Sat 3:30 - 4:30 pm
-
-![:img Michelle Lin , 30%]({{site.baseurl}}/assets/img/staff/linm.jpg)
-]
-
-.right-column-staff[
-- I'm a 3rd year undergraduate student
-  - Director of Outreach for CSE Student Advisory Council
-  - Took this class last Spring!
-- In my somewhat limited free time I enjoy:
-  - Playing flute
-  - Graphic design
-  - Fabrication (3D printing/laser cutting)
-  - Exercising (occasionally)
-  - Trying new things (I’ll try almost anything once)
-- So excited to meet y'all! ^_^
-]
-
----
-
-.left-column-staff[
-## Jasper Palmer (he/him)
-jpalmer4@cs.washington.edu <br>
-OH:
-- Tue 9:30 - 10:30 am
-- Tue 4:30 - 5:20 pm
-
-![:img Jasper Palmer, 40%]({{site.baseurl}}/assets/img/staff/palmer.jpg)
-]
-
-.right-column-staff[
-- I am a second year undergraduate student!
-- I spent my first year at UW studying Biochemistry
-- I have played Ultimate Frisbee for 10 years
-- I moved to Seattle when I was 4 from Michigan
-]
-
----
-
-
-.left-column-staff[
-## My Tran (Emhily) (she/her)
-tranmy@cs.washington.edu <br>
-OH:
-- Wed 4:30 - 5:30 pm
-- Thurs 2:30 - 3:30 pm
-
-![:img My Tran, 40%]({{site.baseurl}}/assets/img/staff/tran.jpg)
-]
-
-.right-column-staff[
-- **Hi**, my first name is pronounced as "me"
-- I'm a CS transfer student from Oregon, graduating Fall '20
-- Originally "made in Vietnam" and love photography
-- It's my second time TA-ing CSE 340
-]
-
----
-
-.left-column-staff[
-## Sophie Tian (she/her)
-shuxut@cs.washington.edu<br>
-OH: Tue/Thurs 12:30 - 1:30 pm
-
-![:img Sophie Tian, 40%]({{site.baseurl}}/assets/img/staff/tian.jpg)
-]
-.right-column-staff[
-- I am a 5th year master's student.
-- I am a hopeless Star Trekkie.
-- I grew up in Tongling and Nanjing in China. I attended Gallaudet University, a school for the Deaf and hard of hearing located in Washington, DC.
-- After graduating from Gallaudet with a degree in IT, I moved to Seattle and entered UW CSE to pursue a BS and then MS in computer science.
-]
-
----
-
-
-.left-column-staff[
-## Jeremy Zhang (he/him)
-jkzhang@uw.edu <br>
-GitGrade Inventor
-
-![:img Jeremy Zhang, 50%]({{site.baseurl}}/assets/img/staff/zhang.jpg)
-]
-
-.right-column-staff[
-
-- **Hello** from *UW Bothell*! (Studying Computer Science)
-- A My Little Pony: Friendship is Magic enthusiast
-- Casual Super Smash Bros Ultimate Player
-    - Previously threw an April Fools joke for CSE 154; turning course website into a playable fighting game (Spring 2019)
-]
-
-
----
-# Let's get to know you!
-
-Breakout rooms, with questions:
-
-- Where in the world are you?
-- What is one thing that helped you most through quarantine?
-- What is your favorite food? Make a [wordcloud](https://us.edstem.org/courses/114/sway/host/1156)
-
-
----
-
-[//]: # (Outline Slide)
-# Today's  goals
-
-- HCI: Designing the Future
-- Learning goals
-- Course staff
-- **Syllabus**
-
----
-# Where to find what
-
-The class is on the [web]({{site.baseurl}}/index),
-  but we have used iframes to connect this to
-  [Canvas]({{site.canvas}}). We try to interlink
-  everything as much as possible.
-
-- Class discussions and all contact with instructors should happen
-either in office hours or through [Ed]({{site.piazza}})
-- You can also request appointments for further help
-- Assignments will be accepted and turned in [GitGrade]({{site.gitgrade}})
-- GitGrade will make you a [gitlab]({{site.gitlab}}) repo which you will use to receive
-starter code and commit your changes.
----
-
-#  Development Environement
-
-**Background**: Lots of programming expected. Need 143 or equivalent
-
-Java is our primary language
-- Comfortable with Java; basic software engineering; some Data Structures
- - Fast-paced introduction to git & Android Studio IDE
- - Advanced Java use (e.g. anonymous inner classes)
- - Must be comfortable with reading documentation (not just Stack Overflow)
- - We will use trees, state machines, etc.
- - Math computations (trig) for later assignments
-
----
-# Platform: Android
-
-Most commonly used
-interface development platform for Java
-
---
-  - Open source
-  - Around 75% market share
-  - Thousands of supported devices
-
---
-- Exposes Android SDK
-  - Framework for building apps on mobile devices
---
-
-  - Written in __Java__ and E__X__tensible __M__arkup __L__anguage (__XML__)
-
----
-.left-column-half[
-## Android Versioning
-
-![:img Android Versioning and Distribution, 100%](img/intro/android-versions-may2019.png)
-]
-.right-column-half[
-## We're going to target  .red[Nougat] :)
-
-That's .red[__19%__] of devices. (Looking into upgrading to Oreo)
-
-]
-
----
-# Android Versioning
-
-- We encourage you to buy an android phone (no tablets)  ~$150
-- ~~Support will have 10 Android phones on loan for 24hrs or less~~
-- Laptop will need sufficient memory/disk space to run <br/>
-Android Studio & emulators
-- Ask questions on Ed if you need more guidance
-
----
-# [Syllabus]({{site.baseurl}}) Scavenger Hunt 
-
----
-#  Summary of expectations and values
-
-- **Sharing**: Yes, but don't copy
-- **Accessibility**: This course is designed to be accessible
-- **Inclusivity**: An important value in this class, and in HCI!
-- **Academic Integrity**: A course value and requirement See our [Academic Conduct]({{site.baseurl}}/academic-conduct) page for more details
-- **Language**: I am Jen, or Dr. Mankoff
-- **Respect**: This class is a compact between us based on respect
-- **Healthy Environment**: Your health/mental health are important and we have tried to
-structure the class to support you (e.g. up to 3 late days without questions asked).
-If you need larger accommodations for any reason, consider working with
-[DRS](https://depts.washington.edu/uwdrs/) so we can support you.
-
-If you run into problems, or have preferences about these issues, please tell me!
----
-# Distance learning
-
-So how's this Distance Learning thing going to work? With shared expections of the
-- students
-- instructor
-- TAs.
-
----
-# Lecture and Section: Student Expectations
-
-- You are not required to have your video turned on during lecture except for during group activities in breakout rooms.
-- Please keep your mic muted unless you’re asking a question.
-- To ask a question, please type “hand” in the chat in Zoom. The instructor will call on you and then you can unmute your mic and ask your question.
-- You may also post questions in the chat, but you may be asked to unmute your mic and ask your question aloud.
-- If you do type in the chat, ensure what you are typing is school appropriate and inclusive.
-- There will be individual and group based activities which you are expected to
-participate in. (Contact us if you are not able to participate in real time)
-- Please post (privately) on Ed if you are in a time zone that does not allow you to participate during class synchronously so we can accomodate that for exams, etc.
-
----
-# Lecture: Instructor Expectations
-
-- Will address the class via video before switching to slides/lecture content. Instructors
-will keep their video on during the entirety of the lecture.
-- Will not record student computer activity via Zoom during lecture
-- The moderator instructor will notify the content instructor if there are questions
-- If for some reason the screen sharing stops working, the moderator instructor will
-notify the content instructor as soon as possible
-
----
-# Lecture: TA Expectations
-
-- Will have their camera on when asking a question or in a breakout room.
-- Will mute a student if they forget to mute themselves .
-- Will help organize breakout rooms for group activities.
-- May be in breakout rooms with students during group activites.
-- Will model student expectations in lecture (e.g., type “hand” to ask a question).
-
----
-
-# Section: TA Expectations
-
-There will be 3 and sometimes 4 TAs in each section. TAs will
-
-- Take turns in presenting the material (depending on the week)
-- Have their camera on throughout section.
-- Mute a student if they forget to mute themselves.
-- Will help organize breakout rooms for group activities.
-- May be in breakout rooms with students during group activites.
-- Will model student expectations in lecture (e.g., type “hand” to ask a question).
-
-A TA who is not actively presenting during a section will act as a moderator.
-
----
-# Assignment Structure
-
-Assignments typically include closed piece and open-ended piece.
-- Closed piece is graded by us
-- Open ended piece will be evaluated by your peers, sometimes using traditional HCI methods. Peer evaluations are required and graded pass/fail
-- You write a reflection for each assignment.
-
----
-# A typical assignment takes about a week
-
-- Introduce theory
-- Introduce Assignment including core part (structured) and open ended part
-  - Expand theory, add practice
-  - Get practical help in lab
-  - Work over weekend
-- `*`Peer evaluate
-- Write reflection
-- `*`Take practice quiz
-- Take Examlet
-
-`*` Starred items are required, but you pass them if you do them. They help your peers and/or us
-with assessment and are important to your class participation grade as well
-
----
-
-#  Assignment Structure
-
-Projects: Implementation of Interfaces
-- Practical help with assignments in lab
-- Code tested with unit tests
-- Applications tested through user studies you run
-- Some basics handled in code review
-
----
-.left-column[
-# Field Trip
-]
-.right-column[
-# [Assignments]({{site.baseurl}}/assignments)
-]
diff --git a/slides/wk01/toolkits.html b/slides/wk01/toolkits.html
deleted file mode 100644
index b3eebd1d97db20302d4bc4518efb1591f379ff80..0000000000000000000000000000000000000000
--- a/slides/wk01/toolkits.html
+++ /dev/null
@@ -1,910 +0,0 @@
----
-layout: presentation
-title: Basic Toolkit Abstractions
-description: Discussion of basic abstractions for user interfaces
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Core Toolkit Abstractions
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-name: normal
-layout: true
-class:
----
-layout: false
-
-| Hall of Shame | Hall of Fame|
-|---|---|
-|![:img Zoom toolbar displaying over tabs, 100%](img/toolkits/zoom-hall-of-shame.png) | ![:img Zoom-hall-of-fame, 100%](img/toolkits/zoom-hall-of-fame.png)
----
-| Hall of Shame(?) | Hall of Fame |
-|---|---|
-|![:img Picture of a small sandcastle that is falling apart, 100%](img/toolkits/sandcastle1.png) | ![:img Picture of a complex sandcastle with LEDs lighting it up, 85%](img/toolkits/sandcastle2.jpg)
----
-![:img Simple home tools for sandcastle making such as a bucket; funnel; brush; and spackle knife, 45%](img/toolkits/sandcastletools.png)
----
-# Announcements
-
-- We have Ed ([use us.edstem.org](https://us.edstem.org/dashboard) to log in)
-- Reminder: set up your machine before lab tomorrow!
- - Android Basics: Follow [this](https://developer.android.com/training/basics/firstapp) tutorial to create an Android Application.
- - Continue with the tutorial to also [run your app](https://developer.android.com/training/basics/firstapp/running-app) either on an emulator or on an Android Device.
- - Git Setup: [macOS](https://courses.cs.washington.edu/courses/cse154/19au/resources/assets/atomgit/macosx/), [win](https://courses.cs.washington.edu/courses/cse154/19au/resources/assets/atomgit/windows/) (ignore pieces about Atom as we use Android Studio)
-Make sure you have git setup on your computer, follow above instructions
- - If you have never used git before read through [this](http://cse340-20wi.pages.cs.washington.edu/website/docs/git.html#1) and [this](https://courses.cs.washington.edu/courses/cse331/18au/handouts/tools/versioncontrol.html) (Android Studio ≈ Intellij)
- - Ensure that you can clone from CSE GitLab, (we recommend cloning via SSH)
-- There are now two new helpful pages
-  - An [Academic Conduct]({{site.baseurl}}/academic-conduct) page
-  with Application Content and Collaboration Policies section. (Linked to from home page)
-  - A [GitGrade]({{site.baseurl}}/docs/gitgrade) tutorial page linked to from
-  the [docs]({{site.baseurl}}/docs) page. Note: there are still more tutorials we are building up.
-
-???
-Our learning goals for the first lab are Android project structure, GitGrade and first assignment Doodle.
-Please follow the instructions below to be familiar with Android and have your Git ready before this Thursday section:
-
----
-# Java refresher course
-
-The TAs will be hosting a Java refresher that covers most facets of Java we will be using in this
-class (and maybe some additional Java 8+ material that is nice to know). Which includes:
-
-- Inheritance
-- Generics
-- Anonymous Inner Classes
-- Lambdas (and "::" notation)
-
-If these are not topics you're comfortable with (some are not directly covered in any CS class), come join us!
-
-Time: 5:30-6:30pm Thursday
-Zoom link in Ed
-
----
-[//]: # (Outline Slide)
-# Today's goals
-
-- **Toolkits & Toolkit Users**
-- Introduce the interactor hierarchy
-- How does an interactor draw?
-
----
-# What does it take to run an app on a phone?
-
-![:youtube An android screen with many icons on it; then an app opens and the user can be seen drawing a line. When they finish an undo button appears, 2TJPjyMQGkM]
-
-???
-
-- Give them 60 seconds to think about it and talk with their neighbor.
-- What you want to get at is the application stack
-
----
-# The Application Stack
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ap,o,w yellow
-  class hlt,t green
-  class h darkblue
-</div>
-]
-.right-column[
-![:img Picture of a woman in front of an open laptop holding a phone with an ipad next to the laptop; a wristwatch on her arm; and a keyfob to the left of the laptop, 50%](img/toolkits/hardware.jpg)
-]
-
-???
-Get the class to brainstorm about what hardware is visible on the screen
-
-Point out that they all have stacks and the things we are learning are not android specific
-
----
-.left-column[
-![:img Picture of the control buttons at the bottom of several different phones; with icons and order changing from phone to phone, 100%](img/toolkits/phones.jpeg)
-]
-.right-column[
-## Android Hardware
-
-![:img Picture of the Hardware Abstraction Layer for android including audio; automotive; bluetooth; camera; drm; graphics; input; media; peripherals; sensors; storage; and tv componnets, 70%](img/toolkits/ape_fwk_hal.png)]
-
-???
-Get the class to brainstorm about what hardware is available on android vs their laptop and how that might influence user interfaces
-
----
-# The Application Stack
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ap,h,w yellow
-  class hlt,t green
-  class o darkblue
-</div>
-]
-
-.right-column[
-What services does it provide?
-
-How does this impact what you might build in an application?
-]
-
-???
-Class brainstorming about what OS does
-1) manages shared resources (e.g. memory, processor power)
-2) has the power to start and pause and stop applicatinos
-
----
-.left-column[
-# Impact of Android OS on apps
-]
-.right-column[
-![:img Android Activity Lifecycle which shows when the operating system starts; pauses and kills android processes, 45%](img/toolkits/activity_lifecycle.png)
-]
-
-???
-How does the operating system influence what
-you can build? How does this differ on an android device from a desktop?
-
-The Android Activity Lifecycle starts when an activity is launched (by the OS); which leads to
-callbacks to the application such as onCreate, onStart and onResume. Once the activity is running,
-it may be paused, stopped or destroyed. Things like priority and available memory may
-influence this process, as does the user opening the app.
-
----
-# The Application Stack
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ap,o,h yellow
-  class hlt,t green
-  class w darkblue
-</div>
-]
-.right-column[
-
-- Manages window size and visibility across many applications
-- May trigger clipping and redraw
-  - Lots of cases where this arises on a desktop (overlapping windows, minimization, etc)
-  - Toolkit handles this for you, but can lead to callbacks; redraw events
-
-Where is this on Android?
-]
-
-???
----
-# The Application Stack
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ap,w,h,o yellow
-  class hlt,t green
-  class t darkblue
-</div>
-]
-
-.right-column[
-Services a toolkit supports (in the order we will learn them)
-- Graphics
-- Animation
-- Layout
-- Accessibility
-- Event Handling
-- Interactive Components
-- Undo
-- Sensing (not covered)
-- Data (not covered)
- - databases; apis
-]
-
-???
-What are some things you expect every interface to have that I didn't mention here?
-Example: Undo (we will learn about this)
-
-Do all user interface toolkits have all of these?
-
----
-# What is an Interface Toolkit
-
-(Main subject of this course)
-- Difference between toolkit and IDE (Integrated Development Environment)?
-- Difference between toolkit and API (Application Programming Interface)?
-
-Structure of a Toolkit
-- Library of components
-- Architecture
-
-???
-Connect what they learned in 143 (i.e that they used the SDK for Java which had a bunch of libraries that had pre-defined code). The IDE most people used was JGrasp.
-
----
-# Example: Doodle assignment: Makes use of the Android Toolkit
-
-Inspired by Google's Doodles, and will include drawing animation (to be discussed): <br>
-[Example from last year's class](img/drawing/doodlevid.mp4)
-
-![:youtube Animation showing images of food moving in a line down the page around a U finally forming a W, Sx8oiJGjaIM]
-
----
-.left-column40[
-## Doodle Assignment
-
-Uses of Android Toolkit  **Library** (green)
-
-<div class="mermaid">
-  graph TD
-  Activity[Activity]
-  Activity -->|...| Doodler[Doodler]
-  Doodler --> Part1[Part1]
-  Part1 --> Part1Activity[Part1Activity]
-  Part1 --> Part2Activity[Part2Activity]
-
-  View[View]
-  View --> ImageView[ImageView]
-  View --> TextView[TextView]
-  View --> LineView[LineView]
-
-  classDef yellow font-size:12pt,text-align:center
-  classDef green font-size:12pt,text-align:center
-  classDef blue font-size:12pt,text-align:center
-
-  class Part1,Part1Activity,Part2Activity,LineView yellow
-  class Activity,View,ImageView,TextView green
-  class Doodler blue
-
-</div>
-]
-
-.right-column30[
-##  Classes we are using in Doodle
-
-- Doodler (which you don't edit) *extends* [Activity](https://developer.android.com/reference/android/app/Activity)
-- Part1 *extends* Doodler. It implements *helper methods*.
-- Part1Activity and Part2Activity both extend Part1 (and use the helper methods)
-- LineView *extends* [View](https://developer.android.com/reference/android/view/View) (so does [ImageView](https://developer.android.com/reference/android/widget/ImageView.html) and [TextView](https://developer.android.com/reference/android/widget/TextView.html)
-
-]
-
-???
-Green: Android toolkit
-Blue: Classes we provide you don't have to modify
-Yellow: Classes you implement
-
-Remind students that they did do inheritance in 142/143 like with Critters.
-
----
-.left-column40[
-# Doodle: What you will learn
-
-- How the Android Activity Lifecycle works (*Architecture*)
-- How to use Android Toolkit `View` objects to show things on screen (*Library*)
-- How to create a custom `View` to draw lines on screen (*Library*)
-- All about Android's `Canvas` object and how to use it to draw on screen (*Library*)
-- How the Android Toolkit supports animation (*Architecture & Library*)
-]
-
-.right-column40[
-# Doodle: What you will do
-
-- Modify Android Activities (`Part1` and `Part1Activity`)
-- Implement methods to add images, text and lines
-- Create the custom view `LineView`
-- Override `onDraw` to draw on the screen in `LineView`
-- Use `ObjectAnimator` to animate Text and other things
-- Create a custom doodle in `Part2Activity`
-]
----
-
-# The Application Stack
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class w,ap,o,h yellow
-  class t green
-  class hlt darkblue
-</div>
-]
-.right-column[
-![:img Screenshot of the android layout tool, 80%](img/toolkits/android-editor.gif)
-]
----
-# Subtle influence of tools
-
-![:img Hand-drawn sketch of an interface very rough around the edges, 50%](img/toolkits/sketch.png)
-
----
-# Subtle influence of tools
-
-![:img High Fidelity Prototype, 40%](img/toolkits/prototype.png)
-
----
-# Subtle influence of tools
-
-Whorfian Effects
-- The way in which our tools influence how we think and thus what we do.
-
-- Origins are linguistic (e.g. the way in which language about color affects what we perceive)
-
-- Can even affect perception of human emotion!
-http://www.radiolab.org/story/91730-new-words-new-world/
-
-
----
-# The Application Stack
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class w,o,h yellow
-  class t,hlt green
-  class ap darkblue
-</div>
-]
-.right-column[
-![:img Screenshot of an android ui for exploring a neighborhood showing a range of locations; activities to engage in in those locations; and things that match the selected activity in a sequence of screens, 80%](img/toolkits/android-ui.png)
-]
-
-???
-Get class to discuss all the things that a UI like this does a little bit. What do you have to think about to build an application? How might a toolkit help with this?
----
-
-# Summary: The Application Stack
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-
-  class ap,w,o,h yellow
-  class hlt,t green
-
-</div>
-]
-
-.right-column[
-- **Application Program** - An application designed for an end user to perform specific tasks.
-- **High Level Tools** - Graphical interfaces that that let you specify parts of your interface (such as layout). Subject to Worfian Effects
-- **Toolkit** - A set of libraries and tools you use to develop applications.
-- **Window System** - Manages window size and visibility across applications
-- **OS** - The operating system that is running on the device, providing system services such as acceess to displays, input devices, file I/O
-- **Hardware** - The device that is running software, such as an Android Phone
-
-High level tools and the the Toolkit are generally packaged as part of a toolkit but really should be thought of as separate things. (You can program the toolkit without the tools. )
-]
-
----
-
-.left-column[
-## Developer roles
-
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ip,t yellow
-  class w,l,a green
-</div>
-]
-.right-column[
-## Let's say you want to build an app
-
-In this class, you will use the Android Toolkit
-
-Who are we when we build the app?
-]
-
----
-.left-column[
-## Developer roles
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class t yellow
-  class w,l,a green
-  class ip darkblue
-</div>
-]
-.right-column[
-**Interface Programmers** combine library elements according to toolkit rules & following
-constraints of architecture; common to all UI toolkits
-
-In Android
-- Construct app out of `Views`
-- Assembly happens in an `Activity` in `onCreate()` using `addView(View)`
-
-In Doodle
-- You add views when you implement `addImage`, `addText` and `addLine` in `Part1.java`
-- You will need to call `doodleView.addView([view])` (`doodleView` is defined in `Doodler`)
-]
----
-# How does the toolkit know what to draw?
-
-![:img Picture of a very simple interface showing a ringing bell at
-left and an x at right to close the window with the words Google
-Calendar reminder Christian and Anind (Jen Mankoff) is starting at
-12:30pm. Video call between them, 70%](img/toolkits/interface.png)
-
-
-- Discuss
-???
-discuss with your neighbor based on the reading what does the
-toolkit need to know to draw this
-- what to draw; where to draw it
-- what are good abstractions for this?
-- Hierarchy normally reflects spatial containment relationships
-
---
-
-- Deconstruct
-
- - Let's list all the components... and arrange them in a tree
-
-???
-
-- deconstruct this interface into an interactor hierarchy
-
----
-![:img Picture of a very simple interface showing a ringing bell at
-left and an x at right to close the window with the words Google
-Calendar reminder Christian and Anind (Jen Mankoff) is starting at
-12:30pm. Video call between them, 60%](img/toolkits/interface.png)
-
-
-<div class="mermaid">
-graph LR
-W(Window) --> L(LeftSide:Icon)
-W --> M(Middle:Label)
-W --> R(Right:Close Button)
-
-classDef start font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-
-class W start
-class M,R,L blue
-
-</div>
-
----
-# More complex example
-
-![:img Picture of a messaging interface with two messages in it, 20%](img/drawing/messaging.png)
-
----
-.left-column[
-## More complex example
-
-![:img Picture of a messaging interface with two messages in it, 80%](img/drawing/messaging.png)]
-
-.right-column[
-<div class="mermaid">
-graph LR
-W(Window) --> T(Controls)
-W --> M(Chats)
-W --> Q(Text Entry)
-T --> A[Button:Messages]
-T --> B[Label:288-88]
-T --> C[Button:Edit]
-M --> G[Button:Call]
-M --> H[Button:Add to Contacts]
-M --> E[Chat1]
-M --> F[Chat2...]
-E --> I[Date]
-E --> J[Chat Msg]
-E --> K[Arrow]
-
-classDef start font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-
-
-class W start
-class T,M,E,Q,A,B,C,G,H,E,F,I,J,K blue
-
-</div>
-]
----
-# How is the tree used for drawing?
-
-Interface Programmer:
-- Build and interface == build an interactor hierarchy
-- Change an interface == change the interactor hierarchy (or its  parameters)
-
-
----
-
-.left-column-half[
-## How does Android let you do this
-Architecture invokes the work to construct the *interactor hierarchy*
-by calling  `onCreate()`
-
-In Doodle
-- *Doodler* overrides `onCreate()` (from it's grandparent *Activity* class)
-- *Doodler* provides a helper method for this (`doodle()`) which you
-   override in `Part1Activity` and `Part2Activity`.
-]
-.right-column-half[
-```java
-
-abstract class Doodler extends AppCompatActivity {
-    // ...
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        // ...
-        doodle(...)
-    }
-
-    abstract protected void doodle(FrameLayout doodleView);
-```
-]
-
----
-# How is the tree used for drawing?
-
-The interface programmer is not really *drawing on a canvas*, they are *adding views* to a *parent view* in `onCreate()` (or later if something changes)
-
-This is *setup* for the interface being rendered: We are constructing
-the interactor (also called component) hierarchy when we call these methods.
-
-This happens in `Doodle` inside of `Part1.java` in `addImage()` when we say `doodleView.addView(imageView);`
-
-You have to do it in `addText()` and `addLine()` too.
-
----
-# How is the tree used for drawing?
-Toolkit Architecture:
-- Draw an interface == walk the tree and tell interactors to draw
-- Update an interface == walk the tree, only redraw things that are marked as dirty
-- Deliver input == walk the tree and deliver events (after midterm)
-
----
-# How does an interactor draw?
-
-Interactors (Views in Android):
-- Receive draw (`onDraw()` in Android)
-- Show feedback () (Draw onto `Canvas` in Android)
-- Respond to input (Future assignment!)
-
-You will create a custom interactor, a `LineView`, which has to implement `onDraw(Canvas canvas)`
-
-You can use all the [Canvas](https://developer.android.com/reference/android/graphics/Canvas) methods (we'll talk more about these in the [Drawing](Drawing.html) lecture on Friday)
-
-???
-HTML is like this too
-
-<!-- --- -->
-<!-- .left-column-half[ -->
-<!-- ## Most GUIs still use the same 7-10 interaction techniques -->
-<!-- - Basic GUI components invented 1970s -->
-<!-- - Windows, Icons, Menus, Pointers (“WIMP”) -->
-<!-- - “Perfected” by Macintosh in 1984 -->
-<!-- - Not much change since then (even with web) -->
-<!-- ] -->
-<!-- .right-column-half[ -->
-<!-- ## Aside: Significant Stagnation -->
-
-
-<!-- ![:img Picture of a very old mac control panel showing typical interactors at the time,70%](img/toolkits/interactors1.png) -->
-<!-- ] -->
-<!-- ??? -->
-<!-- - Work well, uniform -->
-<!-- - Good for usability -->
-<!-- - GUI is victim of its own success -->
-<!-- - Opportunities lost by not customizing interaction techniques to tasks -->
-<!-- - Hard for better techniques to get traction -->
-<!-- - Only very recently with mobile devices (touch based) have we seen lots of new techniques get a major foothold -->
-
-<!-- --- -->
-<!-- .left-column[ -->
-<!-- ## In class Exercise: Interface Developer, using Android Toolkit -->
-
-<!-- Quick Tour | tutorial -->
-<!-- for [building a ui](https://developer.android.com/training/basics/firstapp/building-ui)] -->
-
-<!-- .right-column[ -->
-<!-- ![:img A picture of the setup for android study in which we can layout -->
-<!-- components,60%](img/toolkits/android-components2.png) -->
-<!-- ] -->
-
----
-.left-column[
-## Developer Roles
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ip,t yellow
-  class w,l,a green
-  class w darkblue
-</div>
-]
-.right-column[
-**Components** are small, reusable, well defined pieces of code that allow programmers to
-design and develop our UIs in a consistent way ([source](https://blog.bitsrc.io/building-a-consistent-ui-design-system-4481fb37470f)).
-- A UI component can create both functional and visual consistency in an application or set of applications.
-- Often components support new forms of input/direct manipulation.
-- Component development is supported by many toolkits
-
-**Component Developers** create these new, re-usable components.
-
-Example: In the Doodle assignment you will be developing the `LineView` interactor, a new component
-for drawing lines on the screen at certain locations.
-
-]
----
-# Component Developer: Developing Novel Interaction Techniques
-
-.left-column-half[
-- A method for carrying out a specific interactive task
-- Example: enter a number in a range
- - Swiping to invoke an action
- - Gesture based text entry
-
-![img: A picture of gesture based text entry on an android phone, 20%](img/toolkits/android-type.jpg)
-]
-
-.right-column-half[
-![img: A picture of a finger left-swiping to invoke an action on a
-list on an android phone, 10%](img/toolkits/android-swipe.png)
-
-]
----
-.left-column[
-## Developer Roles
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ip,t yellow
-  class w,a green
-  class l darkblue
-</div>
-]
-.right-column[
-**Library Extenders** are similar to component developers, but may
-create new forms of layout, types of input, etc.
-
-- Supported by a few toolkits
-- Examples:
-  - The Java JDK can be extended by developers who create a set of components in a `.jar` file
-that is included with a software project (example [JFreeChart](http://jfree.org/jfreechart/))
-  - JavaScript has been extended by
-  [many libraries](https://en.wikipedia.org/wiki/List_of_JavaScript_libraries), such as Bootstrap or jQuery.
-]
----
-# Library Extender: Toolkit Support for Styling
-
-.left-column-half[
-![:img A picture of the same dialogue box styled 4 different ways, 100%](img/toolkits/novellibrary.png)
-]
-.right-column-half[
-subArctic allowed visually rich, dynamically resizable, images to be
-provided using primarily conventional drawing tools (and with no
-programming or programming-like activities at all).  Scott E. Hudson
-and Kenichiro Tanaka. (UIST '00)
-]
----
-.left-column[
-## Developer Roles
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ip,t yellow
-  class w,l,a green
-  class a darkblue
-</div>
-]
-.right-column[
-**Architecture Extenders** modifies the flow of information within a toolkit to create entirely
-new effects (e.g. adding support for command objects)
-
-Supported by very few toolkits
-]
----
-# Architecture Extender: Animation
-
-.right-column50[
-![:img A picture of a phone interface using animation to show a menu, 80%](img/toolkits/animation.gif)
-]
-
-Integrated into existing GUI toolkit
-
-Primary abstraction: transition
-- models movement over time
-- through arbitrary space of values (e.g., color)
-- screen space is most common
-
-
-.footnote[Great post about [types of animation on mobile phones](https://yalantis.com/blog/-seven-types-of-animations-for-mobile-apps/), also
-source of the image]
-
----
-.left-column[
-## Developer Roles
-
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-  classDef darkblue font-size:14pt,text-align:center
-
-  class ip,t yellow
-  class w,l,a green
-  class t darkblue
-</div>
-]
-.right-column[
-**Toolkit builders** create entirely new toolkits that enable radical new forms of interaction
-
-e.g. RapID https://make4all.org/portfolio/rapid/
-]
----
-# Toolkit Builder: Physical Interfaces
-Creates entirely new toolkits that changes what we can do
-
-
-![:youtube Physical Interface made out of RFID tags,4k15uXpp7-g]
-
----
-# Toolkit for Overloading Existing Interfaces
-Prefab supports pixel based enhancements: write interpretation logic that can be composed, reused, and shared to manage the multi-faceted nature of pixel-based interpretation; robustly annotate interface elements with metadata needed to enable runtime enhancements.
-
-![:youtube Prefab Demo,lju6IIteg9Q]
-
----
-#  Summary: Developer Roles
-.left-column[
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-
-  class ip,w,l,a,t yellow
-</div>
-]
-.right-column[
-- **Interface Programmer** - Uses high level tools and toolkit to create a user interface.
-- **Component Developer** - Creates new, re-usable interators or interaction techniques.
-- **Library Extender** - Similar to Component Developer, creates a system of components such as new forms of layout, types of input, etc.
-- **Architecture Extender** - Modifies the flow of information within a toolkit to create entirely new effects
-- **Toolkit Builder** - Creates entirely new toolkits that enable radical new forms of interaction.
-]
----
-#  Summary: In this class we look at General Principals
-
-Particular toolkits tend to be mired in a particular platform
-
-Along comes the next big thing  (e.g., iPhone) and you’ll need to
-learn a new one
-
-We frequently will use Android as an example of these concepts
-
-If you learn the structures/concepts (and esp. rationale behind them)
-that survives change better
diff --git a/slides/wk02/graphs/example.mmd b/slides/wk02/graphs/example.mmd
deleted file mode 100644
index 2844fd51b384d36d23313011eef5290ab0919dab..0000000000000000000000000000000000000000
--- a/slides/wk02/graphs/example.mmd
+++ /dev/null
@@ -1,2 +0,0 @@
-graph LR
-    Start --> Stop
\ No newline at end of file
diff --git a/slides/wk02/graphs/simple.dot b/slides/wk02/graphs/simple.dot
deleted file mode 100644
index 454fdd5d94344e177a90e2602850802f0718a5c6..0000000000000000000000000000000000000000
--- a/slides/wk02/graphs/simple.dot
+++ /dev/null
@@ -1,5 +0,0 @@
-digraph simplestate {
-A --> B;
-B --> A;
-}
-
diff --git a/slides/wk02/img/animation/android-animate.gif b/slides/wk02/img/animation/android-animate.gif
deleted file mode 100755
index 0fb1d08fd616979b31c4390966e7c2e3410b2c4f..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/animation/android-animate.gif and /dev/null differ
diff --git a/slides/wk02/img/animation/animation-linear.png b/slides/wk02/img/animation/animation-linear.png
deleted file mode 100755
index 08bd9fc3dc2ce5d151294b1d2b695a490f2e5f00..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/animation/animation-linear.png and /dev/null differ
diff --git a/slides/wk02/img/animation/animation-nonlinear.png b/slides/wk02/img/animation/animation-nonlinear.png
deleted file mode 100644
index 999dddaa39b03e378e97aee307f76efa27605b39..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/animation/animation-nonlinear.png and /dev/null differ
diff --git a/slides/wk02/img/animation/valueanimator.png b/slides/wk02/img/animation/valueanimator.png
deleted file mode 100755
index 6cc2a13bbfca142b090c3fec00ddf410ca82eeb5..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/animation/valueanimator.png and /dev/null differ
diff --git a/slides/wk02/img/layout/1_portrait.png b/slides/wk02/img/layout/1_portrait.png
deleted file mode 100644
index 9bd05c02c72702aa248ba15346a46bf1e9ae0036..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/1_portrait.png and /dev/null differ
diff --git a/slides/wk02/img/layout/android-linear.png b/slides/wk02/img/layout/android-linear.png
deleted file mode 100644
index 6b252da67203bb2e57a21a65c2b442d1e7e14a9d..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/android-linear.png and /dev/null differ
diff --git a/slides/wk02/img/layout/colormeter.png b/slides/wk02/img/layout/colormeter.png
deleted file mode 100644
index 0ce396fb04418a818bbabfdc8d4aa75653a62936..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/colormeter.png and /dev/null differ
diff --git a/slides/wk02/img/layout/colormetercircled.png b/slides/wk02/img/layout/colormetercircled.png
deleted file mode 100644
index 7846c8e37ff787c175f38683920c4619ee47ff64..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/colormetercircled.png and /dev/null differ
diff --git a/slides/wk02/img/layout/design-view.png b/slides/wk02/img/layout/design-view.png
deleted file mode 100644
index 76f63830d1dbd0e0388c6ce7f57bd2b3d7618db9..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/design-view.png and /dev/null differ
diff --git a/slides/wk02/img/layout/facebook-bad.png b/slides/wk02/img/layout/facebook-bad.png
deleted file mode 100644
index 3803fe4e0e5e0d8ffb69f4e5b6c4253922a87359..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/facebook-bad.png and /dev/null differ
diff --git a/slides/wk02/img/layout/jackbox-bad.png b/slides/wk02/img/layout/jackbox-bad.png
deleted file mode 100644
index d1c9feef5ea3e5ea45202ea096aa2f63b3c7b274..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/jackbox-bad.png and /dev/null differ
diff --git a/slides/wk02/img/layout/layout-demo.png b/slides/wk02/img/layout/layout-demo.png
deleted file mode 100644
index 78b3721df71bc0e3bd03ad5271a0b56b103e513f..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/layout-demo.png and /dev/null differ
diff --git a/slides/wk02/img/layout/layout-inspector-menu.png b/slides/wk02/img/layout/layout-inspector-menu.png
deleted file mode 100644
index 84f498c204863802f17a63845e60d19ce7226653..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/layout-inspector-menu.png and /dev/null differ
diff --git a/slides/wk02/img/layout/part3-runtime.png b/slides/wk02/img/layout/part3-runtime.png
deleted file mode 100644
index e4d3a100d8ed6bfe5ead63b5feb07ee0c231337c..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/part3-runtime.png and /dev/null differ
diff --git a/slides/wk02/img/layout/pinterest-android.png b/slides/wk02/img/layout/pinterest-android.png
deleted file mode 100644
index b07ff8eb6c83c79e5b44007a16da7d1b47c88536..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/pinterest-android.png and /dev/null differ
diff --git a/slides/wk02/img/layout/pinterest-replica.png b/slides/wk02/img/layout/pinterest-replica.png
deleted file mode 100644
index ca0505920df258ef1f2bfb69e98559e25bd59878..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/pinterest-replica.png and /dev/null differ
diff --git a/slides/wk02/img/layout/watch.png b/slides/wk02/img/layout/watch.png
deleted file mode 100644
index a82e63211658da388620dbd69e66bac095532167..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/watch.png and /dev/null differ
diff --git a/slides/wk02/img/layout/watch2.png b/slides/wk02/img/layout/watch2.png
deleted file mode 100644
index bdd0e20b7981219a126087817f39a68708d532a3..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/watch2.png and /dev/null differ
diff --git a/slides/wk02/img/layout/windowsLayout.png b/slides/wk02/img/layout/windowsLayout.png
deleted file mode 100644
index 786c745ae438c2eade82a1e2df63e1ceebc34695..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/layout/windowsLayout.png and /dev/null differ
diff --git a/slides/wk02/img/people/777777.png b/slides/wk02/img/people/777777.png
deleted file mode 100644
index e16d234794a0ad23ae1da057e76a3c945901d621..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/777777.png and /dev/null differ
diff --git a/slides/wk02/img/people/777777w.png b/slides/wk02/img/people/777777w.png
deleted file mode 100644
index bbd487ec276a647eefd22dcfed2882e7b9d8e57f..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/777777w.png and /dev/null differ
diff --git a/slides/wk02/img/people/adobe.jpg b/slides/wk02/img/people/adobe.jpg
deleted file mode 100644
index 7d830e46a1851ba4bd3aaf119ee8cf219d262975..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/adobe.jpg and /dev/null differ
diff --git a/slides/wk02/img/people/amazon.png b/slides/wk02/img/people/amazon.png
deleted file mode 100644
index a4aab78af76c80ed70a1bc040c7226612ec2a8a0..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/amazon.png and /dev/null differ
diff --git a/slides/wk02/img/people/badviz.png b/slides/wk02/img/people/badviz.png
deleted file mode 100644
index f7dbf5fef601adbdc7c8627c1bd32244ed5de9c2..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/badviz.png and /dev/null differ
diff --git a/slides/wk02/img/people/bluelinks.png b/slides/wk02/img/people/bluelinks.png
deleted file mode 100644
index 78cc44cbed982de6cce60284ec1330985dd18451..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/bluelinks.png and /dev/null differ
diff --git a/slides/wk02/img/people/blueonblue.png b/slides/wk02/img/people/blueonblue.png
deleted file mode 100644
index 71c8d916afaf06f0f786e1c76b80ee45bfafb9d3..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/blueonblue.png and /dev/null differ
diff --git a/slides/wk02/img/people/blues.jpg b/slides/wk02/img/people/blues.jpg
deleted file mode 100644
index bb231a598f446eb6ca3230c50f5639f548a894be..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/blues.jpg and /dev/null differ
diff --git a/slides/wk02/img/people/chunking.png b/slides/wk02/img/people/chunking.png
deleted file mode 100644
index d0b8d8b362865cdf83b73dd45616f09175c40daa..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/chunking.png and /dev/null differ
diff --git a/slides/wk02/img/people/color-guidelines.png b/slides/wk02/img/people/color-guidelines.png
deleted file mode 100644
index d81e483ef9a8dacfe3d798eee43784b68c9b5583..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/color-guidelines.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct.png b/slides/wk02/img/people/distinct.png
deleted file mode 100644
index ddb0ea8f7b50260b768c2a600f2cd93f9cd6970e..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct1.png b/slides/wk02/img/people/distinct1.png
deleted file mode 100644
index ee1470dad6801674f88397baed960c134295f9fe..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct1.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct2.png b/slides/wk02/img/people/distinct2.png
deleted file mode 100644
index 07b85fab15355dde58ae94a0109923a341fd676e..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct2.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct3.png b/slides/wk02/img/people/distinct3.png
deleted file mode 100644
index a105e0f1b55b9cfa87af8ccbf38a4b6a97d431cb..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct3.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct4.png b/slides/wk02/img/people/distinct4.png
deleted file mode 100644
index 7eabd003d7af201fbe89300a7645d2755c4da1fa..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct4.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct5.png b/slides/wk02/img/people/distinct5.png
deleted file mode 100644
index e7825b09a4caac026e9b71ebd53e117ab7d51832..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct5.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct6.png b/slides/wk02/img/people/distinct6.png
deleted file mode 100644
index 97b10f1439bd4d53b501975896aca04228a3893d..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct6.png and /dev/null differ
diff --git a/slides/wk02/img/people/distinct7.png b/slides/wk02/img/people/distinct7.png
deleted file mode 100644
index df1123a90d8d15a3855066417edcff5538318bec..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/distinct7.png and /dev/null differ
diff --git a/slides/wk02/img/people/drawAll.gif b/slides/wk02/img/people/drawAll.gif
deleted file mode 100644
index 5cb98a396766419682d1138f677c93a1e91f4148..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/drawAll.gif and /dev/null differ
diff --git a/slides/wk02/img/people/elevator1.png b/slides/wk02/img/people/elevator1.png
deleted file mode 100644
index 3dd5bd9705a0196e746c40f34c1ffecdfb71f280..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/elevator1.png and /dev/null differ
diff --git a/slides/wk02/img/people/elevator2.png b/slides/wk02/img/people/elevator2.png
deleted file mode 100644
index 2f502f44672d483f1b6b7bcdd4ac35bca8f1d37d..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/elevator2.png and /dev/null differ
diff --git a/slides/wk02/img/people/eye.png b/slides/wk02/img/people/eye.png
deleted file mode 100644
index 18c3959f493de660378f9c7d3d1733b35f2a9f60..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/eye.png and /dev/null differ
diff --git a/slides/wk02/img/people/facebook.png b/slides/wk02/img/people/facebook.png
deleted file mode 100644
index 92d3ad836dedbe70081798da7ce6287a9097cbc6..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/facebook.png and /dev/null differ
diff --git a/slides/wk02/img/people/goodviz.png b/slides/wk02/img/people/goodviz.png
deleted file mode 100644
index 7cf03c3b75e24e2bc53086b70dc2569aecc275f0..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/goodviz.png and /dev/null differ
diff --git a/slides/wk02/img/people/hsv.png b/slides/wk02/img/people/hsv.png
deleted file mode 100644
index c6bede4dbe1e130f60964dd9d6bc8225a3a8556c..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/hsv.png and /dev/null differ
diff --git a/slides/wk02/img/people/humanspectrum.png b/slides/wk02/img/people/humanspectrum.png
deleted file mode 100644
index 47a8beee58beea7349195fd6a76f0c0487d19108..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/humanspectrum.png and /dev/null differ
diff --git a/slides/wk02/img/people/monalisa.png b/slides/wk02/img/people/monalisa.png
deleted file mode 100644
index 6594f080f477f7a0accc3e02f5ea77475f082886..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/monalisa.png and /dev/null differ
diff --git a/slides/wk02/img/people/pixelmonalisa.png b/slides/wk02/img/people/pixelmonalisa.png
deleted file mode 100644
index f37b3ec30eca0745b8fdd16f1699e371fa11faec..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/pixelmonalisa.png and /dev/null differ
diff --git a/slides/wk02/img/people/q1.png b/slides/wk02/img/people/q1.png
deleted file mode 100644
index 9090ed23584f5965f01fe97ef1c3c376b3f8f0ac..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/q1.png and /dev/null differ
diff --git a/slides/wk02/img/people/q3.png b/slides/wk02/img/people/q3.png
deleted file mode 100644
index 2f6b23badf43181ad42231740acd1368a8823aad..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/q3.png and /dev/null differ
diff --git a/slides/wk02/img/people/recognition.png b/slides/wk02/img/people/recognition.png
deleted file mode 100644
index 75e626b0d15f215a6182a3dbb972de0e18513f87..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/recognition.png and /dev/null differ
diff --git a/slides/wk02/img/people/redcomp.png b/slides/wk02/img/people/redcomp.png
deleted file mode 100644
index 81dec38e9e9408f89fddf1c850100ef978395f2a..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/redcomp.png and /dev/null differ
diff --git a/slides/wk02/img/people/rgb.png b/slides/wk02/img/people/rgb.png
deleted file mode 100644
index 4d5dc962d7325f3b83f25233d6f7667a1cdbbd9c..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/rgb.png and /dev/null differ
diff --git a/slides/wk02/img/people/rods_cones.png b/slides/wk02/img/people/rods_cones.png
deleted file mode 100644
index 6c4c88eaf3d67d1545818b497d737d5ce0a87626..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/rods_cones.png and /dev/null differ
diff --git a/slides/wk02/img/people/saturated.png b/slides/wk02/img/people/saturated.png
deleted file mode 100644
index afb6f508ce29ca418e9c27880ed232876799c702..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/saturated.png and /dev/null differ
diff --git a/slides/wk02/img/people/signs.png b/slides/wk02/img/people/signs.png
deleted file mode 100644
index 43c41773ac4b4b9a5676bd5d3175ce32b303d6b0..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/signs.png and /dev/null differ
diff --git a/slides/wk02/img/people/stars.png b/slides/wk02/img/people/stars.png
deleted file mode 100644
index 4b15a6175319606a10be47158b87682af91ae949..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/stars.png and /dev/null differ
diff --git a/slides/wk02/img/people/tiger.png b/slides/wk02/img/people/tiger.png
deleted file mode 100644
index 0d881bc771abf977c2e1982eba348b1771a47bc6..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/tiger.png and /dev/null differ
diff --git a/slides/wk02/img/people/tufte.png b/slides/wk02/img/people/tufte.png
deleted file mode 100644
index dc6f6a97a2a71c926e3a2a2dfcd4be3281fc2a81..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/tufte.png and /dev/null differ
diff --git a/slides/wk02/img/people/value-sat.png b/slides/wk02/img/people/value-sat.png
deleted file mode 100644
index b5ffb6814dde40eb19feca12d1c5d404219c0831..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/value-sat.png and /dev/null differ
diff --git a/slides/wk02/img/people/visualgrouping.png b/slides/wk02/img/people/visualgrouping.png
deleted file mode 100644
index ce969612793e2c9977149f83e24a61692ff1e36b..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/visualgrouping.png and /dev/null differ
diff --git a/slides/wk02/img/people/web1.png b/slides/wk02/img/people/web1.png
deleted file mode 100644
index 61ca27232965dbb3424d46dba693138c05fa85a7..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/web1.png and /dev/null differ
diff --git a/slides/wk02/img/people/web2.png b/slides/wk02/img/people/web2.png
deleted file mode 100644
index f0f96e2b9bda73c4f40f7a970100f0d9095dd817..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/web2.png and /dev/null differ
diff --git a/slides/wk02/img/people/web3.png b/slides/wk02/img/people/web3.png
deleted file mode 100644
index 88a1df7b1ee3b4095219efce172c12f7feebbf9b..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/web3.png and /dev/null differ
diff --git a/slides/wk02/img/people/windowsLayout.png b/slides/wk02/img/people/windowsLayout.png
deleted file mode 100644
index 786c745ae438c2eade82a1e2df63e1ceebc34695..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/windowsLayout.png and /dev/null differ
diff --git a/slides/wk02/img/people/windowsLayoutGreyscale.png b/slides/wk02/img/people/windowsLayoutGreyscale.png
deleted file mode 100644
index 5b253f3fe0b9b3243b844f0674614aa93ccc350a..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/windowsLayoutGreyscale.png and /dev/null differ
diff --git a/slides/wk02/img/people/yellow.png b/slides/wk02/img/people/yellow.png
deleted file mode 100644
index fa27be165b215ba5c1737359b12610ef7f37f29e..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/people/yellow.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/accelerate.gif b/slides/wk02/img/toolkit-drawing/accelerate.gif
deleted file mode 100644
index 519648efffb6d5c51fe0b4f1a392de59116a4ce7..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/accelerate.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/animation-linear.png b/slides/wk02/img/toolkit-drawing/animation-linear.png
deleted file mode 100644
index 08bd9fc3dc2ce5d151294b1d2b695a490f2e5f00..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/animation-linear.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/bounce.gif b/slides/wk02/img/toolkit-drawing/bounce.gif
deleted file mode 100644
index c313049ed5d7841a755f38f3d48aafd6b3715021..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/bounce.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/bounding-animation.png b/slides/wk02/img/toolkit-drawing/bounding-animation.png
deleted file mode 100644
index 411566257aaa2a6e8fa0df2697b0e44726f7bc9b..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/bounding-animation.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/boundless.gif b/slides/wk02/img/toolkit-drawing/boundless.gif
deleted file mode 100644
index b0613367fe237b6755557dd886a4f374380ec574..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/boundless.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/doodle-layout.png b/slides/wk02/img/toolkit-drawing/doodle-layout.png
deleted file mode 100644
index 80b9fd17ebb77684d1000953988f9d9258137bb5..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/doodle-layout.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/doodle-layout2.png b/slides/wk02/img/toolkit-drawing/doodle-layout2.png
deleted file mode 100644
index a3d68d2f3fc0e04fe7bd44fabbcf25079fce798c..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/doodle-layout2.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/doodle-screenshot.png b/slides/wk02/img/toolkit-drawing/doodle-screenshot.png
deleted file mode 100644
index e2ead8c9139d191ba5182a6a95e12bd1ae0cd51e..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/doodle-screenshot.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/interactor-hierarchy.png b/slides/wk02/img/toolkit-drawing/interactor-hierarchy.png
deleted file mode 100644
index bb41dc3d5b987687e7df6970f7df476cea7c6bbd..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/interactor-hierarchy.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/interpolators.gif b/slides/wk02/img/toolkit-drawing/interpolators.gif
deleted file mode 100644
index ad4e46ef00ad0843547fa69de0754dbaf9a7c59b..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/interpolators.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/linear.gif b/slides/wk02/img/toolkit-drawing/linear.gif
deleted file mode 100644
index 862a9241ff308d3e216ebf75f82e733db6637fe6..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/linear.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/linearrotate.gif b/slides/wk02/img/toolkit-drawing/linearrotate.gif
deleted file mode 100644
index 8fc4be4fac5d10a2d5c6fc593e13284ce0339fb3..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/linearrotate.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/overshoot.gif b/slides/wk02/img/toolkit-drawing/overshoot.gif
deleted file mode 100644
index 13bda4720e4de0f0584a7eee39c1a7cb65e22c3d..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/overshoot.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/pathanimation.gif b/slides/wk02/img/toolkit-drawing/pathanimation.gif
deleted file mode 100644
index daf37d692c757cca41c53c041f6117921adb074a..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/pathanimation.gif and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/rotatedrects-center.png b/slides/wk02/img/toolkit-drawing/rotatedrects-center.png
deleted file mode 100644
index c84316897dace66263a21265cf31a6d4febaa1d4..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/rotatedrects-center.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/rotatedrects-original-origin.png b/slides/wk02/img/toolkit-drawing/rotatedrects-original-origin.png
deleted file mode 100644
index f8534eb40c19fb39bd2e9b8a4fa1763d8fd56e34..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/rotatedrects-original-origin.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/scale.png b/slides/wk02/img/toolkit-drawing/scale.png
deleted file mode 100644
index 8dbb996d67c33c9469850bac11933aeb5fdb061f..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/scale.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/screenshot_no_animation.jpeg b/slides/wk02/img/toolkit-drawing/screenshot_no_animation.jpeg
deleted file mode 100644
index f06bf323fa86e6e9285eebbaae7ce2a4805b890e..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/screenshot_no_animation.jpeg and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/shear.png b/slides/wk02/img/toolkit-drawing/shear.png
deleted file mode 100644
index 75ba28462f9ec3df6717dbb306e91391e53cc3f2..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/shear.png and /dev/null differ
diff --git a/slides/wk02/img/toolkit-drawing/translate.png b/slides/wk02/img/toolkit-drawing/translate.png
deleted file mode 100644
index 37fa3326c7b96cefe9e0d17c89c4fb45bf122030..0000000000000000000000000000000000000000
Binary files a/slides/wk02/img/toolkit-drawing/translate.png and /dev/null differ
diff --git a/slides/wk02/interface-drawing.html b/slides/wk02/interface-drawing.html
deleted file mode 100644
index dbf8ef56f2efa3ecb8df8fc7bac5a1c15b02b29c..0000000000000000000000000000000000000000
--- a/slides/wk02/interface-drawing.html
+++ /dev/null
@@ -1,871 +0,0 @@
----
-layout: presentation
-title: Drawing Interfaces
-description: Discussion of how toolkits draw interfaces
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Introduction to Drawing Interfaces
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- Reviewing Transformations
-- Breakout room test 2
-- Reviewing Rotation
-- Role of Interactor Hierarchy in drawing the screen
-- How to use Animation to move Interactors
-- Summary of what we've learned so far
-
----
-
-# Administrivia
-
-Important [Ed Post about two changes to the spec](https://us.edstem.org/courses/381/discussion/24921)
-1. You do not need to handle lines that have a "positive slope"
-2. We are asking that you turn in a video of your running custom doodle at the same time as your code.  (demo)
-
----
-# Linear ("affine") Transformations
-
-Translate, Scale, Rotate, Shear (and any combination thereof)
-
---
-
-- Translate: Move origin (and everything else) in x and y
-![:img a large moon and a large moon moved to the right a few pixels, 15%](img/toolkit-drawing/translate.png)
-
-???
-used extensively in GUIS because child objects just draw themselves
-at *their* origin, so a component doesn't have to calculate how to draw
-itself based on its position
-
---
-
-- Scale: change size (negative == flip)
-![:img a large and small moon, 15%](img/toolkit-drawing/scale.png)
-
---
-
-- Rotate and Shear
-![:img a rotated and angled moon, 25%](img/toolkit-drawing/shear.png)
-
----
-# Coordinate Transformations
-
-- Can modify any shape, including text.
-- In practice, complex transformations are done with matrices, and matrices are using `concat(Matrix)`
-- But Android helps with this by providing methods in the
-[Canvas](https://developer.android.com/reference/android/graphics/Canvas) object to transform a canvas such as
-
-```java
-translate(float dx, float dy)
-rotate(float degrees)                           // the whole canvas around the canvas origin
-rotate (float degrees, float px, float py)      // around a particular point
-scale(float, float)
-scale (float sx, float sy, float px, float py)  // around a pivot point
-skew(float sx, float sy)                        // skew by sx and sy
-save()                                          // save the current transform
-restore()                                       // restore the previous transform
-```
-
-???
-- important thing to point out here: This is a value proposition for a toolkit again
-
-– Affine transformations are based on two-dimensional matrices of the
-following form:
-
-P' = T*P where P is 1x3 and T is the transform matrix (3x3) with the
-bottom row 0 0 1
-
-Thus, x' = ax + cy + t_x and y' = bx + dy + t_y
-
-*Note* Any sequence of transform, rotate and shear can be represented
-in a single matrix of this form (just multiple the matrices together)
-
----
-# Breakout question: How can you rotate around the center of an object:
-
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/DfxDLPdpd2zTpLlUJt9h9?controls=none&short_poll=true" width="800" height="500" frameBorder="0"></iframe>
-
-
-???
-
-[raise your hands]
-
-- A: Translate, rotate, translate
-- B: Rotate, Translate, Rotate
-- C: Scale, Rotate, Scale
-- D: Rotate
-
-
-XX define exercise
-maybe put this after android stuff?
-
-I usually draw this out on a piece of paper using the document camera to help
-
----
-# Breakout rooms test 2
-
-- You've been randomly assigned you to breakout rooms with one TA each.
-- In the future, we will experiment with a system where you can choose your breakout partners
-- Goal: Meet other students, test out the technology
-  - Please turn your cameras on in the breakouts
-  - Introduce yourself, and tell your group what color your favorite shirt is.
-  - Discuss the poll everywhere question and vote
-
-We'll do this for 5 minutes, then I will close the breakouts
-
----
-
-# Explanation
-
-.left-column[
-![:img Three rectangle with a second rectangle displayed rotating around the origin of the rectangle, 80%](img/toolkit-drawing/rotatedrects-original-origin.png)
-]
-
-.right-column[
-New view created called `RotatedRectangleView` that has `mEndPoint` and `mBrush` defined in a
-similar way to your `LineView`. It also is given the number of degrees (stored in the variable mDegrees)
-by which to rotate the rectangle.
-
-```java
-public void onDraw(Canvas canvas) {
-
-  canvas.drawRect(0, 0, mEndPoint.x , mEndPoint.y, mBrush);
-
-  int saveColor = mBrush.getColor();
-  mBrush.setColor(Color.GREEN);
-  canvas.rotate(mDegrees);
-  canvas.drawRect(0, 0, mEndPoint.x, mEndPoint.y, mBrush);
-}
-```
-]
-
----
-# Moving the canvas
-
-.left-column[
-![:img Three rectangle with a second rectangle displayed rotating around the origin of the rectangle, 80%](img/toolkit-drawing/rotatedrects-center.png)
-]
-
-.right-column[
-Move origin of the `canvas` to the center of the object, THEN rotate it, then
-move the origin back to it's original location (in this new rotated orientation)
-
-```java
-public void onDraw(Canvas canvas) {
-
-  canvas.drawRect(0, 0, mEndPoint.x , mEndPoint.y, mBrush);
-
-  float px = mEndPoint.x / 2;
-  float py = mEndPoint.y / 2;
-  int saveColor = mBrush.getColor();
-  mBrush.setColor(Color.GREEN);
-  canvas.translate(px, py);
-  canvas.rotate(mDegrees);
-  canvas.translate(-px, -py);
-  canvas.drawRect(0, 0, mEndPoint.x, mEndPoint.y, mBrush);
-}
-```
-]
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Toolkits
----
-layout: false
-
-## Review: Developer roles
-
-.left-column[
-
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-
-  class t,l,a,w yellow
-  class ip green
-</div>
-]
-
-.right-column[
-Recall the role Interface Programmer a developer can play in app development.
-]
-
----
-
-# Draw the interactor hierarchy
-
-Think about why we use a `View` for **each** thing on the screen...
-
- ![:img Picture of images arranged in a heart shape with a vertical line above them; the words UW below them and a horizontal line below that, 15%](img/toolkit-drawing/screenshot_no_animation.jpeg) &nbsp; &nbsp;  ![:img Interactor hierarcy of the image to the left , 20%](img/toolkit-drawing/interactor-hierarchy.png)
-
-
----
-
-# Simpler Example as an Interface Programmer
-
-.left-column[
-![:img Picture of a very simple doodle with the word 'placeholder' at the top and a line that goes from top left to about halfway down the screen, 100%](img/toolkit-drawing/doodle-screenshot.png)
-]
-.right-column[
-
-```java
- LineView line = new LineView(this, startX, startY, endX, endY, width, color);
- canvas.addView(line);
- TextView text = new TextView(this);
- text.setX(x);
- text.setY(y);
- text.setText("placeholder");
- canvas.addView(text);
-```
-]
-
----
-
-## Review: Developer roles
-
-.left-column[
-
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-
-  class t green
-  class ip,l,a,w yellow
-
-</div>
-]
-
-.right-column[
-Today we're going to discuss the role Toolkit builder plays in app development
-]
-
-
----
-# What is the toolkit architecture?
-
-???
-Applies to the flow of information within the toolkit
-
-Example: How the interface is drawn
-
-What could you add? Support for animation, machine learning, etc
-
-Supported by very few toolkits
-
----
-# What is the toolkit architecture?
-
-Applies to the flow of information within the toolkit
-
-Examples:
-- How the interface is drawn
-- How the interface is layed out
-- How the interface responds to the user
-
-What could you add? Support for animation, machine learning, etc
-
-Adding new features at the toolkit level is supported by very few toolkits
-
----
-
-# How is a View drawn on the screen?
-
-**Toolkit Architecture Builder**
-
-- Depth-first tree traversal of the interactor hierarchy
-- Each View draws itself in its location
-- Siblings drawn in order they appear
-
-Naive Pseudocode:
-
-```java
-protected void drawAll() {
-    onDraw();                     // Draw yourself. (lower in the Z-order)
-    foreach child c {             // for all of the children in this node
-        if (child.isVisible()) {  // if the child is visible
-          child.drawAll();        // tell the child to draw itself
-        }
-    }
-}
-```
-
-???
-What is missing here?
-How can children misbehave?
-What are they expecting that we don't do?
-Draw out what will happen on paper
-
----
-# How is a View drawn on the screen?
-
-Naive Pseudocode:
-
-```java
-protected void drawAll() {
-   onDraw();
-   foreach child c {
-     if (child.isVisible()) {
-       child.drawAll();
-     }
-   }
-}
-```
-
-- How could children misbehave?
-- Work arounds could we do?
-
-???
-Imagine if all the children were the same dimensions.
-
----
-# Work arounds?
-
-Make the **Interface Programmer** fix this
-
-Could make every view the size of the whole screen; Then just draw items in those views
-in the correct position
-
-Could tell every view where it is so it draws properly
-
-
----
-# For this, view needs a position, width and height
-
-.left-column-half[
-![:img Picture of the interactor hierarchy for the same app, 70%](img/toolkit-drawing/doodle-layout.png)
-]
-
-.right-column-half[
-What could go wrong with this approach?
-
-]
-???
-- What if we want to place a different view, automatically, to the right of the text?
-- How do we guarrantee that a view doesn't draw over it's neighbor?
-
----
-# For this, view needs a position, width and height
-
-.left-column-half[
-![:img Picture of the interactor hierarchy for the same app, 70%](img/toolkit-drawing/doodle-layout.png)
-]
-
-.right-column-half[
-What could go wrong with this approach?
-- What if we want to place a different view, automatically, to the right of the text?
-- How do we guarrantee that a view doesn't draw over it's neighbor?
-
-]
----
-# Specifying View position, width and height?
-
-.left-column-half[
-<br>
-![:img Picture of the interactor hierarchy for the same app, 70%](img/toolkit-drawing/doodle-layout2.png)
-]
-
-.right-column-half[
-**Interface Programmer** does this
-
-```java
-View view = new View();
-view.setX();
-view.setY();
-ViewGroup.LayoutParams params = view.getLayoutParams();
-param.width = width;
-param.height = height;
-view.setLayoutParams(param);
-```
-]
-???
-We'll go into much more depth on this in your next assignment
-
----
-# How does a toolkit use this?
-**Toolkit Architecture Builder**
-
-**Uses coordinate transformations to make each child the center of its universe!**
- - Parent (usually) specifies position of child when adding to the interactor hierarchy
- - Child counts on parent to set things up so child's internal coordinate system starts at (0,0)
-
---
-We just saw this with rotating the canvas!
-
----
-# How is a View drawn on the screen
-**Toolkit Architecture Builder**
-
-```java
-protected void drawAll() {
-    onDraw();
-    foreach child c {
-        if (child.isVisible()) {
-
-
-
-
-			 child.drawAll();
-
-		}
-  }
-}
-```
-Is this part of the _Toolkit Architecture_ or _Toolkit Library_?
-
----
-# How is a View drawn on the screen
-**Toolkit Architecture Builder**
-
-```java
-protected void drawAll() {
-    onDraw();
-    foreach child c {
-        if (child.isVisible()) {
-*            Rectangle r = child.getLayoutParams(); // Find child coordinates
-*            canvas.save();                         // Capture the current state of canvas
-*            canvas.translate(r.x, r.y);            // Move origin to child's top-left corner
-*            canvas.clip(0,0,r.width,r.height);     // Clip to child
-             child.drawAll();                       // Draw child (and all it's kids)
-*            canvas.restore();                      // Restore
-		}
-  }
-}
-```
-Is this part of the _Toolkit Architecture_ or _Toolkit Library_?
-???
-Draw out on paper again
-Note that this is  has absolute layout!
-
----
-
-# Why is a bounding box important here?
-
-![:img mouse moving along a path with linear interpolation, 25%](img/toolkit-drawing/linear.gif)
-&nbsp;
-![:img Bounding box around the objects being animated used to control their position, 40%](img/toolkit-drawing/bounding-animation.png)
-
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Animation
----
-layout: false
-
-.left-column[
-![:img Android Animation Example with bouncing and spinning circles that eventually transition to spell out android, 100%](img/animation/android-animate.gif)
-]
-
-.right-column[
-# Animation becoming core pillar of UX design
-
-Greater awareness of role for communicating UI behavior
-Guide, provide context, delight, engage
-
-.quote[‘Animation is increasingly becoming an important part of the UI
-design experience. Google’s material design guidelines are a good
-illustration of this. Expect to see even more tools and optimizations
-made to improve the production workflow and performance in browsers
-and on devices.’ ([Weareathlon](https://www.weareathlon.com/ideas/ten-ux-design-trends-for-2015))]
-]
-
-
----
-# Old implementation approach
-
-Frame-based
-- Redraw scene at regular intervals
-- Developer defines redraw function
-
-What toolkit principals does this violate?
-
-???
-it's bad because it doesn't provide any useful abstractions
-
-Fails to provide separation of concerns
---
-- Doesn't provide supportive abstractions
-
---
-- Fails to provide separation of concerns
-
----
-# Main implementation approach
-Transition-based (Hudson & Stasko '93)
-- Specify property values of animation transition speed and process
- - Uses 'pacing' functions to stylize animation, e.g. slow-in
-slow-out (see [easings.net](http://easings.net))
-
-- Typically computed via __interpolation__
-```java
-step(fraction){x_now = x_start + fraction*(x_end - x_start);}
-```
-- Timing and redraw managed by toolkit
-
-
----
-# Toolkit Architecture for Animation
-
-.left-column[
-<br>
-<br>
-<br>
-<br>
-<br>
-![Value Animator Process](img/animation/valueanimator.png)
-]
-.right-column[
-
-Steamlined process for animation of each frame
-- An update function is called
-- `invalidate()` is called
-- View is redrawn
-]
-
----
-# How an animation is set up
-
-Define an animation that changes on object's property (a field on a object) over a length of time.
-
-![:img boxes showing position and time changing over a 40 ms duration, 80%](img/toolkit-drawing/animation-linear.png)
-
-.footnote[[image source: Android animation documentation](https://developer.android.com/guide/topics/graphics/prop-animation)]
-
----
-# How an animation is set up
-
-Need the start and end value of the properties to be
-modified. Typically use a
-[Path](https://developer.android.com/reference/android/graphics/Path)
-for this.
-
-Need a *duration* (total time in ms for the animation)
-
-Need the *pacing function* for animation using an [Interpolator](https://developer.android.com/reference/android/view/animation/Interpolator)
-- Default is [AccelerateDecelerateInterpolator](https://developer.android.com/reference/android/view/animation/AccelerateDecelerateInterpolator)
-- Other subclasses include AccelerateInterpolator, AnticipateInterpolator, AnticipateOvershootInterpolator,
-BounceInterpolator, CycleInterpolator, DecelerateInterpolator, LinearInterpolator,
-OvershootInterpolator, PathInterpolator
-- Or make your own!
-
----
-
-# [ObjectAnimator](https://developer.android.com/reference/android/animation/ObjectAnimator)
-
-Directly animate a properties on an object
-
-**However**: the property that you are animating must have a setter
-function (in camel case) in the form of `set<propertyName>()` for this
-to work
-
-Can use a string (like `"alpha"`) or a property (like `View.X` in [View](https://developer.android.com/reference/android/view/View))
-
----
-# [ObjectAnimator](https://developer.android.com/reference/android/animation/ObjectAnimator)
-
-.left-column[
-<br>
-<br>
-![:img Boundless animation, 90%](img/toolkit-drawing/boundless.gif)
-]
-
-.right-column[
-Example for color
-```java
-// takes a target view, a property name, and values
-ObjectAnimator anim = ObjectAnimator.ofFloat(boundlessView, "alpha", 0f, 1f);
-anim.setDuration(1000);
-anim.start();
-```
-]
----
-# [ObjectAnimator](https://developer.android.com/reference/android/animation/ObjectAnimator)
-
-.left-column[
-![:img Path animation, 90%](img/toolkit-drawing/linear.gif)
-]
-
-.right-column[
-Example for position (using a
-[Path](https://developer.android.com/reference/android/graphics/Path))
-```java
-ImageView mouse = addImage(doodleView, "mouse", 500f, 50f, size);
-Path path = new Path();
-path.moveTo(400f, 50f);
-path.arcTo(200f, 50f, 600f, 450, 270, -180, true);
-path.arcTo(200f, 450f, 600f, 850, 270f, 180f, true);
-
-ObjectAnimator anim = ObjectAnimator.ofFloat(mouse, View.X, View.Y, path);
-anim.setDuration(5000);
-anim.start();
-
-
-```
-]
-
----
-# [ObjectAnimator](https://developer.android.com/reference/android/animation/ObjectAnimator)
-
-.left-column[
-![:img Path animation, 90%](img/toolkit-drawing/linearrotate.gif)
-]
-
-.right-column[
-- The static functions (like ofFloat) in ObjectAnimator are "factories" - the method creates the
-ObjectAnimator object for you!
-- You can have multiple ObjectAnimators working on a single view at the same time!
-
-```java
-ImageView mouse = addImage(doodleView, "mouse", 500f, 50f, size);
-Path path = new Path();
-// code to set up the path....
-ObjectAnimator anim = ObjectAnimator.ofFloat(mouse, View.X, View.Y, path);
-anim.setDuration(5000);
-anim.start();
-
-ObjectAnimator anim = ObjectAnimator.ofFloat(mouse,"rotation", 720);
-anim.setDuration(5000);
-anim.start();
-```
-
-]
----
-
-# Other useful properties for animation
-
-- `translationX` /`translationY` - view location as a delta from its top/left coordinates relative to the parent
-- `rotation` / `rotationX`/`rotationY` - control 2D rotation and 3D rotation around a pivot point
-- `scaleX` / `scaleY` - 2D scaliong of a `View` around a pivot point
-- `pivotX` / `pivotY` - changes location of thej pivot point (default is object's center)
-- `x` / `y` - utility property to describe the final location of a `View` in its container as a sum of (left, top) + `translationX`, `translationY`)
-- `alpha`
-
-.footnote[All found in the [View](https://developer.android.com/reference/android/view/View) class]
----
-
-# For more more flexibility...
-You can specify `Keyframe` objects to control the animation
-
-```java
-  // Key for start at 0
-  Keyframe kf0 = Keyframe.ofFloat(0f, 0f);
-  // Key for half way finished animation
-  Keyframe kf1 = Keyframe.ofFloat(.5f, 360f);
-  // Key for end state
-  Keyframe kf2 = Keyframe.ofFloat(1f, 0f);
-  // ValueName-to-keyframes
-  PropertyValuesHolder pvhRotation = PropertyValuesHolder.ofKeyframe("rotation",
-                                                                      kf0, kf1, kf2);
-  // Create the animation
-  ObjectAnimator rotationAnim = ObjectAnimator.ofPropertyValuesHolder(target,
-                                                                      pvhRotation)
-  rotationAnim.setDuration(5000ms);
-```
----
-
-# Taking Animation to the next level
-
-.quote[ Despite the differences between user interfaces and cartoons
--- cartoons are frivolous, passive entertainment and user interfaces
-are serious, interactive tools -- cartoon animation has much to lend
-user interfaces to realize both affective and cognitive benefits]
-.small[Principals of animation borrowed from Johnston & Thomas ‘81,
-Lasseter ‘87]
-
----
-# Chang & Ungar, UIST '93
-
-What strategies do you see here?
-
-![:youtube Opening cartoon from who framed roger rabbit showing him trying to keep a baby safe,oQe0OWZvwWo]
-
-???
-- Squash-and-Stretch
-- Staging, Overlapping Action
-- Anticipation
-- Follow-Through
-- Slow In Slow Out
-
-
----
-## Example pacing functions -- derived from Disney style animation!
-.left-column[
-![:img Picture of for types of interpolation functions provided with
-android, 100%](img/toolkit-drawing/interpolators.gif)
-]
-.right-column[
-Slow in slow out (Accelerate/decelerate)
-<br>
-<br>
-
-Slow in (Accelerate)
-<br>
-<br>
-
-Anticipate (back up slightly, then accelerate)
-<br>
-<br>
-
-Anticipate Overshoot (same, then go too far and slow down)
-]
-
----
-# Why is pacing so important?
-
-Need to mimic real world
-- Observing motion tells us about size, weight, rigidity
-- No abrupt changes in velocity!
-
-Gives a feeling of reality and liveness
-- “animation” = “bring to life”
-- make inanimate object animate
-
-With this can come appeal and desirability
-
----
-# Example pacing functions
-
-Watch this and note the pacing you see!
-
-![:youtube Video showing a mother and child lamp playing with a ball
-illustrating a range of techniques,6G3O60o5U7w]
-
-???
-Normally I show this twice and ask them what they see:
-- No teleportation!
-- Squash and Stretch (preserve volume; can approximate inertia (ball))
-- Follow through (i.e. cord lags behind lamp)
-- Anticipation (small amount of counter movement (lampshade motion))
-- Exaggeration (cord up and down)
-
-- (not shown) Motion blur (doesn't need to be realistic
-
-
----
-# How implement pacing in animation?
-
-How would `t` and `x` change for slow in slow out?
-
---
-![:img boxes showing position and time changing over a 40 ms duration, 80%](img/animation/animation-nonlinear.png)
-
-.footnote[[image source: Android animation documentation](https://developer.android.com/guide/topics/graphics/prop-animation)]
-
----
-# We implement these with `Interpolators` in Android
-.left-column-half[
-![:img mouse moving along a path with linear interpolation,22%](img/toolkit-drawing/linear.gif)
-![:img mouse moving along a path with linear interpolation,22%](img/toolkit-drawing/accelerate.gif)
-![:img mouse moving along a path with overshoot interpolation,22%](img/toolkit-drawing/overshoot.gif)
-![:img mouse moving along a path with bounce interpolation,22%](img/toolkit-drawing/bounce.gif)
-]
-.right-column-half[
-The durations are the same for each of these animations
-- Left side is _Linear_
-- Second one is _Accelerate_
-- Third one is ??
-- Right side is ??
-
-
-]
-
-???
-overshoot
-bounce
-
----
-# Using an Interpolator
-```java
-ObjectAnimator anim = ObjectAnimator.ofFloat(mouse,
-                                             View.X, View.Y, path);  // Create the ObjectAnimator
-OvershootInterpolator interpolator = new OvershootInterpolator();    // Create an Interpolator
-anim.setInterpolator(interpolator);                                  // Tell the animator to use the interpolator
-anim.setDuration(3000);                                              // set the duration
-anim.start();                                                        // Tell the animation to start
-```
-
----
-# Using Animation Well - Accessbility
-
-.quote['The impact of animation on people with vestibular disorders can be quite severe.
-Triggered reactions include nausea, migraine headaches, and potentially
-needing bed rest to recover.' [W3C Accessibility Guidelines](https://www.w3.org/WAI/WCAG21/Understanding/animation-from-interactions.html)]
-
-Best option: provide control, be minimalistic
-???
-
----
-# Summary: Animation Design Tips
-
-1. Used sparingly and understandingly, animation can enhance the interface … otherwise can distract!
-2. Need to mimic real world
-3. Observing motion tells us about size, weight, rigidity
-4. No abrupt changes in velocity!
-5. Think about accessibility.
-
----
-# What to do for Doodle Part2Activity?
-
-Your chance to  make something creative.
-
-Peers will reviewed your custom doodle to ensure it uses some combination of lines, text, images, and animation.
-
-Peers will also "evaluate" (give you feedback on how much they liked it).
-
-
----
-# Summary & revisiting learning goals for this week and last
-
-.left-column-half[
-- What is HCI?
-- What is a toolkit? How do an architecture and library differ?
-- How do we draw on the screen?
-  - What is a pixel?
-  - What is a raster vs a vector model?
-  - What abstractions help with drawing?
-  - How do we use affine transformations?
-- What is the interactor hierarchy?
-  - How is it used for drawing?
-  - What role do affine transformations play in this?
-- What are the key abstractions for animation?
-  ]
-.right-column-half[
-- Android basics
-- What is a `View`?
-- `onCreate()` and `onDraw()`
-- How does `Canvas` work?
-- How do we construct the interactor hierarchy?
-- Implementing Animation
-]
diff --git a/slides/wk02/layout.html b/slides/wk02/layout.html
deleted file mode 100644
index 650ec178ce507ce3f152c01f378f68028f5ffddc..0000000000000000000000000000000000000000
--- a/slides/wk02/layout.html
+++ /dev/null
@@ -1,634 +0,0 @@
----
-layout: presentation
-title: Layout
-description: Description of Layout Algorithms and Approaches
-class: middle, center, inverse
----
-layout: false
-
-
-# Visual Design Tips Employed or Avoided?
-
-.left-column-half[
-<br>
-<br>
-![:img Facebook group page with 4 cards each with a picture and light grey on white fonts,80%](img/layout/facebook-bad.png)
-<br>
-<br>
-<br>
-<br>
-<br>
-<br>
-<br>
-]
-
-.right-column-half[
-- #1: Don't rely on blue for small objects
-- #2: Don't rely on blue for older users
-- #3: Make sure that contrast is high enough
-- #4:  Minimize saturated colors
-- #5: Use redundant cues
-- #6: Make things distinct
-- #7: Use small multiples
-- #8: Manage expectations if you can't change response time
-- #9: Replace subtle changes with obvious ones
-- #10: Use well-tested visual grouping strategies
-- #11: Minimize the number of options
-- #12: Rely on recognition rather than recall
-]
-
-.footnote[Shile W, 20sp from a Facebook group page]
-
----
-# Visual Design Tips Employed or Avoided?
-
-
-.left-column-half[
-<br>
-![:img Jackbox games front screen with many visual design tips not followed including using blue,80%](img/layout/jackbox-bad.png)
-<br>
-<br>
-]
-
-.right-column-half[
-- #1: Don't rely on blue for small objects
-- #2: Don't rely on blue for older users
-- #3: Make sure that contrast is high enough
-- #4:  Minimize saturated colors
-- #5: Use redundant cues
-- #6: Make things distinct
-- #7: Use small multiples
-- #8: Manage expectations if you can't change response time
-- #9: Replace subtle changes with obvious ones
-- #10: Use well-tested visual grouping strategies
-- #11: Minimize the number of options
-- #12: Rely on recognition rather than recall
-]
-
-.footnote[Lauren Bricker after visiting Jackbox games in 20sp]
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Introduction to Layout
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
-
----
-name: normal
-layout: true
-class:
----
-
-[//]: # (Outline Slide)
-# Today's goals
-- Announcements
-  - Reminder: Peer review emails will go out Saturday night/Sunday morning
-  - Layout will be released later today
-- Review of tree construction
-- Using tree for layout
-- Container components
-
----
-# Hall of Shame (from [CSE 154](https://courses.cs.washington.edu/courses/cse154/19au/lectures/lec05-css-iii-more-layout/index.html#/))
-
-![:img Terrible website from gatesnfences.com, 50%](https://courses.cs.washington.edu/courses/cse154/19au/lectures/lec05-css-iii-more-layout/images/gatesnfences.png)
-
-Thoughts?
-
-.footnote[[gatesnfences.com](http://www.gatesnfences.com/)]
-
----
-
-![:img Windows tablet screen with a grid of interactive squares...
-icons along the side for invoking menus... and a colorful background
-picture,70%](img/layout/windowsLayout.png)
-
-
-???
-Key Issues
-- where do components get placed?
-- how much space should they occupy?
-
----
-# Review of tree construction
-
-Circle all of the interactors in this interface.
-
-.left-column[![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 150%](img/layout/colormeter.png)]
-
-
----
-# Review of tree construction
-
-Circle all of the interactors in this interface.
-
-.left-column[![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 150%](img/layout/colormetercircled.png)]
-
----
-# What is the interactor hierarchy?
-
-<br>
-
-.left-column30[
-![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 100%](img/layout/colormeter.png)]
-
-
----
-# What is the interactor hierarchy?
-
-Naive version...
-
-.left-column30[
-![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 100%](img/layout/colormeter.png)]
-
-.right-column-half[
-<div class="mermaid">
-graph TD
-W(Window) --> M[Icon:Mag Window]
-W --> A[Slider:Aperture Size x y w h]
-W --> C[Menu:Choice x y w h]
-W --> I[Icon:Color x y w h]
-W --> T[Text:RGB x y w h]
-W --> La[Text:Label x y w h]
-
-classDef blue font-size:14pt,text-align:center
-classDef green font-size:14pt,text-align:center
-
-class W green
-class M,A,C,I,T,La blue
-</div>
-]
-
-???
-Start talking here about meta data that maters, they know about x, y, w and h from doodle
-
-Ask them to think about what else you might want to know to position something?
-
----
-# Why do we need layout?
-.left-column[
-
-<br>
-
-![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 100%](img/layout/colormeter.png)
-]
-.right-column[
-How can you center something?
-
-How can you lock it to an edge?
-
-How can you design layout that reacts (responds) well to turning your phone?
-
-Examples for web (from [CSE 154](https://courses.cs.washington.edu/courses/cse154/19au/lectures/lec05-css-iii-more-layout/index.html#/6))
-- c0FFEE shop with [no layout](https://courses.cs.washington.edu/courses/cse154/19au/lectures/lec05-css-iii-more-layout/code/coffee-shop-solution/coffee-shop.html)
-- c0FFEE shop with [layout](https://courses.cs.washington.edu/courses/cse154/19au/lectures/lec05-css-iii-more-layout/code/coffee-shop-starter/coffee-shop.html)
-]
-
----
-# User Interfaces on Android
-.left-column-half[
-- Views
-  - Base class for __all__ UI elements
-  - Interactors (e.g buttons, labels, image views, etc)
-- ViewGroups
-  - Encapsulates one or more views (e.g. Android Components, **Layouts**)
-  - Can define specific **layout** properties
-
-  We will use the word *Components* to include both layout components and interactors (Views) since you
-  don't generally "interact" with layouts
-]
-
-.right-column-half[
-<div class="mermaid">
-graph TD
-W(ViewGroup) --> V[ViewGroup]
-W --> V1[View]
-W --> V2[View]
-V --> V3[View]
-V --> V4[View]
-V --> V5[View]
-
-classDef blue font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-
-class W,V darkblue
-class V1,V2,V3,V4,V5 blue
-</div>
-
-]
-
----
-# Practice: Let's try to recreate this layout using containers and spacers
-
-.left-column[![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 150%](img/layout/colormeter.png)]
-
---
-.right-column-half[
-<div class="mermaid">
-graph TD
-W(Window) --> L(LeftSide:DisplayVert)
-W --> R(RightSide:DisplayVert)
-L --> Z[Space:Fixed]
-L --> Y[Space:Stretchy]
-R --> D(RGB DisplayHor)
-D --> V[Space:Fixed]
-D --> U[Space:Flexible]
-
-
-classDef bluegreen font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-classDef green font-size:14pt,text-align:center
-classDef yellow font-size:14pt,text-align:center
-
-class W bluegreen
-class L,R,D green
-class Z,Y,V,U yellow
-class M,A,C,I,T,Q blue
-</div>
-]
-
----
-# Practice: Let's try to recreate this layout using containers and spacers
-
-.left-column[![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 150%](img/layout/colormeter.png)]
-
-.right-column-half[
-<div class="mermaid">
-graph TD
-W(Window) --> L(LeftSide:DisplayVert)
-W --> R(RightSide:DisplayVert)
-L --> Z[Space:Fixed]
-L --> M[Icon:Mag Window]
-L --> A[Slider:Aperture Size]
-L --> Y[Space:Stretchy]
-R --> C[Menu:Choice]
-R --> D(RGB DisplayHor)
-D --> V[Space:Fixed]
-D --> I[Icon:Color]
-D --> T[Text:RGB]
-D --> U[Space:Flexible]
-R --> Q[Text:Label]
-
-classDef bluegreen font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-classDef green font-size:14pt,text-align:center
-classDef yellow font-size:14pt,text-align:center
-
-class W bluegreen
-class L,R,D green
-class Z,Y,V,U yellow
-class M,A,C,I,T,Q blue
-</div>
-]
-
----
-# Vertical Container Components
-
-.left-column[
-
-![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 150%](img/layout/colormeter.png)
-
-Linear (1D) layout of components
-- Always layout in the same direction
-- Places its direct descendants, in order, in that direction
-
-]
-
-.right-column[
-<div class="mermaid">
-graph TD
-W(Window) --> L(LeftSide:DisplayVert)
-W --> R(RightSide:DisplayVert)
-L --> Z[Space:Fixed]
-L --> M[Icon:Mag Window]
-L --> A[Slider:Aperture Size]
-L --> Y[Space:Stretchy]
-R --> C[Menu:Choice]
-R --> D(RGB DisplayHor)
-D --> V[Space:Fixed]
-D --> I[Icon:Color]
-D --> T[Text:RGB]
-D --> U[Space:Flexible]
-R --> Q[Text:Label]
-
-classDef bluegreen font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-classDef green font-size:14pt,text-align:center
-classDef yellow font-size:14pt,text-align:center
-
-class L,R darkblue
-class W bluegreen
-class D green
-class Z,Y,V,U yellow
-class M,A,C,I,T,Q blue
-</div>
-
-]
-
----
-# Horizontal Container Components
-
-.left-column[
-![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 150%](img/layout/colormeter.png)
-
-Same: Linear (1D) layout of components
-- Always layout in the same direction
-- Places its kids, in order, in that direction
-]
-
-.right-column[
-<div class="mermaid">
-graph TD
-W(Window) --> L(LeftSide:DisplayVert)
-W --> R(RightSide:DisplayVert)
-L --> Z[Space:Fixed]
-L --> M[Icon:Mag Window]
-L --> A[Slider:Aperture Size]
-L --> Y[Space:Stretchy]
-R --> C[Menu:Choice]
-R --> D(RGB DisplayHor)
-D --> V[Space:Fixed]
-D --> I[Icon:Color]
-D --> T[Text:RGB]
-D --> U[Space:Flexible]
-R --> Q[Text:Label]
-
-classDef bluegreen font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-classDef green font-size:14pt,text-align:center
-classDef yellow font-size:14pt,text-align:center
-
-class D darkblue
-class W bluegreen
-class L,R,D green
-class Z,Y,V,U yellow
-class M,A,C,I,T,Q blue
-</div>
-
-
-]
-
----
-# Spacers
-
-.left-column[
-![:img Color Meter Mac App -- shows the RGB values for whatever pixel the cursor is over, 150%](img/layout/colormeter.png)
-
-- Work extra well with layout containers
-- We can add *Fixed Space* (struts)
-  - Think of it like a strut in a building
-  - They hold things a fixed distance apart
-- We can also add *Stretchy Space* (springs)
-  - they push things apart as much as possible
-]
-
-.right-column[
-<div class="mermaid">
-graph TD
-W(Window) --> L(LeftSide:DisplayVert)
-W --> R(RightSide:DisplayVert)
-L --> Z[Space:Fixed]
-L --> M[Icon:Mag Window]
-L --> A[Slider:Aperture Size]
-L --> Y[Space:Stretchy]
-L --> C[Menu:Choice]
-R --> D(RGB DisplayHor)
-D --> V[Space:Fixed]
-D --> I[Icon:Color]
-D --> T[Text:RGB]
-D --> U[Space:Flexible]
-R --> Q[Text:Label]
-
-classDef bluegreen font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-classDef green font-size:14pt,text-align:center
-classDef yellow font-size:14pt,text-align:center
-
-class Y,Z,V,U darkblue
-class W bluegreen
-class L,R,D green
-class Z,Y,V,U yellow
-class M,A,C,I,T,Q blue
-</div>
-
-]
-
-
----
-
-.left-column-half[
-# Example (Layout Assignment)
-
-![:img Picture of Pintrest, 50%](img/layout/pinterest-android.png)
-]
-
-.right-column30[
-![:img Picture of layout part 3, 60%](img/layout/pinterest-replica.png)
-]
-
-???
-This is the kind of stuff we can do thanks to viewgroups
-
----
-# Example (Layout Assignment, part 3)
-
-.left-column-half[
-I've highlighted things that are visible (as opposed to just doing layout work)
-<div class="mermaid">
-graph TD
-C[ViewGroup:ConstraintLayout]
-C --> Column1[ViewGroup:Column1]
-C --> Column2[ViewGroup:Column2]
-Column1 --> V1[View:Fox]
-Column1 --> V2[View:Squirrel]
-Column1 --> V3[...]
-Column2 --> V4[View:Duckling]
-Column2 --> V5[...]
-
-classDef darkblue font-size:14pt,text-align:center
-classDef blue font-size:14pt,text-align:center
-
-class C,Column1,Column2 blue
-class V1,V2,V3,V4,V5 darkblue
-</div>
-
-]
-.right-column30[
-![:img Picture of layout part 3,60%](img/layout/pinterest-replica.png)
-]
-
-???
-This is the kind of stuff we can do thanks to viewgroups
-
----
-# Android's runtime view of the same
-
-.left-column[
-![:img Picture of the android studio tools menu with Layout Inspector highlighted, 100%](img/layout/layout-inspector-menu.png)
-
-VERY IMPORANT debugging tool
-]
-.right-column-half[
-![:img Picture of Part3 of the assignment running with the related interactor hierarchy at right, 50%](img/layout/part3-runtime.png)
-]
-
----
-# Layout Assignment
-
-.left-column[
-![:img Part1: picture of animals a button and a big textbox in a phone held vertically, 65%](img/layout/1_portrait.png)
-
-You can scroll this and the images are all equidistant.
-]
-.right-column[
-- Part 1 is about basic reactive layout using XML and constraints for a fixed number of images
-- Part 2 replicates this in code for a fixed number of images
-- Part 3 you create a *Layout Container* that can do a fancier layout, for an arbitrary number of images **Pintrest** style!
-- Part 4 you try to recreate a layout of your choice!
-
-]
-
----
-# Brief Diversion: What is XML?
-- XML stands for eXtensible Markup Language
-- A superset of HTML
-  - Tag names are surrounded by '<' and '>''s (Alligators or "wakkas")
-  - Tags are generally in pairs such as `<html>` `</html>` or can be self closing `<ImageView />`
-  - Tags can have attributes such as
-
-     `<tagname attribute="value" attribute="value"> content </tagname>`
-
----
-# Layout in Android
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two buttons (save and discard),100%](img/layout/layout-demo.png)
-]
-
-.right-column-half[
-This is Android's GUI layout editor
-
-Where's the interactor hierarchy here?
-]
-
-???
-point out the "space"
-
----
-# Layout in Android
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two buttons (save and discard),100%](img/layout/layout-demo.png)
-]
-
-.right-column-half[
-This is Android's GUI layout editor
-
-Where's the interactor hierarchy here?
-- It's the component tree!
-- The XML is a visual way of specifying the hierarchy that exists once the XML is loaded into the application
-
-What are the leaf nodes?
-Do you see anything unusual?
-]
-
-???
-point out the "space"
-
-
----
-# What is a spacer?
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two buttons (save and discard),100%](img/layout/layout-demo.png)
-
-]
-
-.right-column-half[
-
-What is a Space?
-- Works extra well with layout containers
-- We can add *struts*
-  - Think of it like a strut in a building
-  - They hold things a fixed distance apart
-- We can also add *springs*
-  - they push things apart as much as possible
-
-```xml
-<Space
-  android:layout_width="0dp"
-  android:layout_height="wrap_content"
-  android:layout_weight="1" />
-```
-]
-
-???
-see next slide!
-
----
-# Layout in Android
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two buttons (save and discard),100%](img/layout/layout-demo.png)
-]
-.right-column-half[
-In this case, they are in a `LinearLayout`
-- It always has a direction (horizontal or vertical)
-- And it places its kids, in order, in that direction, within its bounds
-
-Where is the linear layout on the screen?
-]
-
----
-# Layout in Android
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two buttons (save and discard),100%](img/layout/layout-demo.png)
-]
-.right-column-half[
-In this case, they are in a `LinearLayout`
-- It always has a direction (horizontal or vertical)
-- And it places its kids, in order, in that direction, within its bounds
-
-Where is the linear layout on the screen?
-
-It's the box around 'Save and Discard'
-- We call this a *Layout Container*
-- Note: this is not visible in the actual GUI, it's a hidden interactor tree element
-]
----
-# Layout in Android
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two buttons (save and discard),100%](img/layout/layout-demo.png)
-]
-.right-column-half[
-A Layout Container can
- - automate a lot of the layout tasks
- - make it much simpler to ensure reliable results
- - use these whenever they do the job
- - you will implement one for your assignment
-]
-
-
----
-# Layout in Android
-Many layout and other attributes for components. You should explore!
-
-![:img Picture of the whole android layout interface showing the possible components that can be added; the component tree (interactor hierarchy; and the attributes for the Save Button; which is selected, 90%](img/layout/design-view.png)
-
-???
-Talk about how there's many layout and other attributes for components that they should explore!
-
----
-# End of Deck
-
-The slides that were here have move to [Layout Part II](../wk03/layout-ii.html)
diff --git a/slides/wk02/people-vision.html b/slides/wk02/people-vision.html
deleted file mode 100644
index e1067dd972909f54a7970e66c8fe2135b5c33f77..0000000000000000000000000000000000000000
--- a/slides/wk02/people-vision.html
+++ /dev/null
@@ -1,1045 +0,0 @@
----
-layout: presentation
-title: Properties of People-- Visual Capacity
-description: Discussion of what we know about people that influences interface design in the vision realm
-class: middle, center, inverse
-
----
-
-# Open poll
-
-<iframe src="https://embed.polleverywhere.com/free_text_polls/sK4PfNJjme9aKeezruC36?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
-
-???
-
-
----
-# Critique this ad:
-
-![:img Adobe advertisement in vibrant colors showing a red cloud icon
-on a blueish background along with bold and very thin white text on
-the blueish background and more white text on a
-blue button and a play arrow in light blue on a light grey
-background,100%](img/people/adobe.jp
-
---
-
-Adobe, what were you thinking?
-- Selling Software
-- showing off what they can do
-- Make sure it's said that it is hard to read - thin white line/poor contrest.
-
-???
----
-# Review
-
-.left-column60[
-In the `drawAll()` method for the toolkit:
-
-Which of the following must a parent component do to its own Canvas obect before
-telling a child component to draw itself?
-
-- [a] canvas.translate(child.x, child.y)
-- [b] canvas.clip(parent.x, parent.y, parent.w, parent.h)
-- [c] canvas.translate(-child.x, -child.y)
-- [d] canvas.clip(0, 0, child.w, child.h)
-]
-
---
-.right-column30[
-![:img Animation of the drawAll method with translation and clipping,95%](img/people/drawAll.gif)
-]
---
-
-What does it need to do after the child draws itself?
-
-.footnote[See [How a view is drawn on the screen](https://courses.cs.washington.edu/courses/cse340/20sp/slides/wk02/interface-drawing.html#29)]
-
-???
-Answer: Translate (a), then clip (d)
-Answer 2: (c)
-
-
-
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Properties of People
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-name: normal
-layout: true
-class:
----
-
-[//]: # (Outline Slide)
-
-# Today's goals
-
-- Discuss visual properties of people
-- Discuss memory
-
-## Future Goals
-- Discuss motor control
-
----
-# Administrivia
-
-- Reminder: [Doodle](https://courses.cs.washington.edu/courses/cse340/20sp/assignments/) code is due Thursday night.
-  - IMPORTANT: git add/commit/push - then [TURN IN](https://gitgrade.cs.washington.edu/student/assignment/116/turnin)
-  - Lab will go over this
-- Doodle peer reviews will be out late Saturday or early Sunday. Get these done quickly. They do not take long
-- Layout will be out on Friday
-- Religious accomodations section added to [syllabus](https://courses.cs.washington.edu/courses/cse340/20sp/#Religious-Accommodations)
-(Chag sameach Pesach to those who celebrate)
-
----
-# Visual Properties of People
-
-People's visual abilities have a big impact on everything from how we
-model color to what makes for good design
-
-People have a variety of visual capabilities, which you should know
-- 4.5% of the world population (mostly men) is color blind<sup>1</sup>
-- 17% of the world population live with some vision impairment<sup>2</sup>
-
-Good design is generally more accessible design
-
-*Bad psychology is good enough to support good design (I hope! :)*
-
-.footnote[
-<sup>1</sup>[colourblindawareness.org](www.colourblindawareness.org/colour-blindness/)<br>
-<sup>2</sup>[WHO](https://www.who.int/news-room/fact-sheets/detail/blindness-and-visual-impairment)<br>
-]
-???
-talk about my own disability
-
----
-layout: false
-# What does this image show? (raise hands if you know)
-
-.body[
-![:img Picture of unknown object. Color range is -3500 (blue) to 1000 (red) but
-only yellow and a little blue shows, 40%](img/people/badviz.png)
-]
-.footnote[
-Example from
-http://10qviz.org/home/categories/rainbow-color-map/
-]
-
----
-# What does this image show? (raise hands if you know)
-
-.body[
-![:img Picture of unknown object. Color range is -3500 (blue) to 1000 (red) but
-only yellow and a little blue shows, 40%](img/people/badviz.png)
-![:img Picture of US Coastline (florida). Color range is -3500 (blue)
-to 1000 (white) and range maps well onto values so detail can be made out, 40%](img/people/goodviz.png)
-]
-.footnote[
-Example from
-http://www.research.ibm.com/people/l/lloydt/color/color.HTM
-]
-
-
-???
-So why is the color choice poor?
-- No mapping of color (note on right how blues are used for water, and greens for land)
-- Color is better if you adjust by saturation (purity) or value (brightness) rather than hue (rough color, ie red, green, blue, orange) for mapping. People can more easily see and compare differences in saturation and value over hue. Also, changes in hue don’t naturally map to a scale, whereas saturation and value do.
-
----
-# Visible Spectrum (Human Limits matter!)
-![:img Color spectrum UV to IR (purple to red), 50%](img/people/humanspectrum.png)
-
-.footnote[
-http://insight.med.utah.edu/Webvision/index.html]
----
-.left-column-half[
-## Why RGB
-
-- Match eye's model
-  - Receptor cells for red, green, blue (cones)
-- Receptor cells for grayscale (rods)
-]
-.right-column-half[
-![:img Picture of Rod & Cone cells, 85%](img/people/rods_cones.png)
-]
----
-# Retina covered with light-sensitive receptors
-
-.right-column[
-Rods
-- Primarily for night vision & perceiving movement
-- Sense intensity or shades of gray
-- Can’t discriminate between colors
-- Mostly at edge of retina
-- ~75M – 150M rods
-]
-.left-column[
-![:img Diagram of eye, 120%](img/people/eye.png)
-]
-
----
-# Retina covered with light-sensitive receptors
-
-.right-column[
-Rods
-- ~75M – 150M rods
-
-Cones
-- Used to sense color
-- Mostly in center of retina
-- ~4.5M – 7M cones
-
-Many more rods than cones
-]
-.left-column[
-![:img Diagram of eye, 120%](img/people/eye.png)
-]
----
-# RGB Matches how human vision works
-
-.right-column[
-In Java, CSS, and other GUI programming, color is 24 bit (+ 8 bits for
-alpha transparency)
-
-So 8 bits for each of red, green, blue
-
-- Why not more bits?
-- Why not 64 bit color?
-
-Discuss!
-]
-.left-column[
-![:img RGB color scheme, 100%](img/people/rgb.png)
-]
-
-???
-Humans can’t really see much more colors
-
----
-# RGB Matches how human vision works
-
-.right-column[
-However, RGB isn't all that intuitive (technology centric)
-- Especially artists and visual designers
-- Hard to pick colors in 3d on a 2d screen
-- Or actually perceive them at a cognitive level
-]
-.left-column[
-![:img RGB color scheme, 100%](img/people/rgb.png)
-]
-???
-
----
-# RGB Matches how human vision works
-
-.right-column[
-However, RGB isn't all that intuitive (technology centric)
-- Especially artists and visual designers
-- Hard to pick colors in 3d on a 2d screen
-- Or actually perceive them at a cognitive level
-
-HSV is much better for *people*
-- Hue: Dominant wavelength of light
-- Saturation: Purity (how much white/black mixed in)
-- Value: Luminance or amount of light in color = max(R,G,B)
-]
-.left-column[
-## RGB
-![:img RGB color scheme, 50%](img/people/rgb.png)
-## HSV
-![:img HSV color scheme, 50%](img/people/hsv.png)
-
-]
-
-???
-HSV cylindrical – hue around the outside (angle) on the web value between
-0 and 360 (red is 0, green is 120, blue is 240) and it’s in rainbow
-order), saturation from center to edge, value is top to bottom
-
----
-# Understanding HSV
-
-.left-column[
-![:img HSV color scheme, 100%](img/people/hsv.png)
-]
-
-.right-column[
-- Hue - or color value, is around the circle at the top of the cone.
-- Saturation - the colors get more saturated the further out from the center of the cone
-- Value - the color gets "brighter" the closer you are to the top of the cone and darker the further you go down.
-
-
-]
----
-# Compare the following colors using HSV
-.right-column[
-Which is correct?
-
-- A: Top color has different *hue* than bottom color
-- B: Top color has higher *saturation* than bottom color
-- C: Top color has higher *value* than bottom color
-]
-.left-column[
-![:img Darker and lighter red boxes, 100%](img/people/redcomp.png)
-]
-???
-B: Saturation
-
----
-# Value vs saturation
-
-![Red with varying saturation (to white) and value (to black)](img/people/value-sat.png)
----
-# Question
-
-You have been asked to create a digital-paper compatible interface. As a result; you need to pick colors that will be easily distinguishable in black and white. Which of 'H' 'S' and 'V' should you vary to support black and white display?
-
-???
-last year's answers
-
-![:img You have been asked to create a digital-paper compatible interface. As a result; you need to pick colors that will be easily distinguishable in black and white. Which of 'H' 'S' and 'V' should you vary to support black and white display?, 75%](img/people/q3.png)
-
----
-# Perception of Color is Culturally Defined!
-
-.footnote[
-<sup>1</sup>[New Scientist: Russian speakers get the blues](https://www.newscientist.com/article/dn11759-russian-speakers-get-the-blues/)
-]
-
-.right-column[
-
-Not only are we limited to RGB, but we disagree about how to interpret
-it<sup>1</sup>
-]
-.left-column[
-![:img Picture of blues that not everyone can distinguish,90%](img/people/blues.jpg)
-]
-???
-
-The language you speak can affect how you see the world, a new study of colour perception indicates. Native speakers of Russian – which lacks a single word for “blue” – discriminated between light and dark blues differently from their English-speaking counterparts, researchers found.
-
----
-# And Relative
-
-![:youtube Vergeer and Van Lier illusion,Db4PwJ2LDVk]
----
-# Design Tip #1: Don't rely on Blue for Small Objects
-
-.left-column-half[
-![:img Example webpage from
-https://www.crazyegg.com/blog/why-hyperlinks-are-blue/ describing why
-hyperlinks are blue historically and which has blue hyperlinks, 80%](img/people/bluelinks.png)
-
-]
-.right-column-half[
-- Photopigments not distributed evenly
- - Mainly reds (64%) & few blues (2-4%)
- - Less sensitive to short wavelengths (blue)
-]
-
----
-# Design Tip #1: Don't rely on Blue for Small Objects
-
-.left-column-half[
-![:img Example webpage from
-https://www.crazyegg.com/blog/why-hyperlinks-are-blue/ describing why
-hyperlinks are blue historically and which has blue hyperlinks, 80%](img/people/bluelinks.png)
-
-]
-.right-column-half[
-- Photopigments not distributed evenly
- - Mainly reds (64%) & few blues (2-4%)
- - Less sensitive to short wavelengths (blue)
-- Few blue cones in fovea
- - Harder to see small blue objects you fixate on
- - Blue text also slightly harder to read
-
-
-- So: blue hyperlinks as default is worst choice
-- Note: strong contrast >> avoiding blue
-]
-
----
-# Design Tip #2: Don’t Rely on Blue for Older Users
-
-- As we age, our lens yellows and absorbs <Br> shorter wavelengths
-- Sensitivity to blue is even more reduced
-
-![:img Example article from IEEE pervasive with inaccessible blue on blue text, 40%](img/people/blueonblue.png)
-
----
-# Design Tip #3: Make sure that contrast is high enough
-
-.left-column-half[
-**Accessibility Issue!**
-
-WCAG requires *at least 4.5:1* contrast, so you cannot round a
-contrast ratio up to 4.5:1. For example, #777777 <br>(![:img grey with
-black text,10%](img/people/777777.png) ![:img grey with
-white text,10%](img/people/777777w.png)) is a commonly-used
-shade of gray with a 4.48:1 contrast ratio. It does not meet the WCAG
-contrast threshold.<sup>1</sup>
-]
-.right-column-half[
-![:img Windows tablet screen with a grid of interactive squares...
-icons along the side for invoking menus... and a colorful background
-picture,100%](img/people/windowsLayout.png)]
-
-.footnote[
-[WCAG guidelines on contrast](https://webaim.org/articles/contrast/)
-]
-???
-Test in greyscale
-
----
-# Design Tip #3: Make sure that contrast is high enough
-
-.left-column-half[
-**Accessibility Issue!**
-
-WCAG requires "at least 4.5:1" contrast, so you cannot round a
-contrast ratio up to 4.5:1. For example, #777777 <br>(![:img grey with
-black text,10%](img/people/777777.png) ![:img grey with
-white text,10%](img/people/777777w.png)) is a commonly-used
-shade of gray with a 4.48:1 contrast ratio. It does not meet the WCAG
-contrast threshold.
-]
-
-.right-column-half[
-![:img Windows tablet screen with a grid of interactive squares...
-icons along the side for invoking menus... and a colorful background
-picture,100%](img/people/windowsLayoutGreyscale.png)
-]
-
-
-???
-Test in greyscale
-
-Focus on value over hue or saturation
-
-This will help ensure visibility
-
-Can use a b/w photocopier to help if you already have a GUI
-
-Keep luminance / intensity / value the same from grayscale when moving to color
-
----
-# Designing Tip #4: Minimize saturated Colors
-
-.medium.right-column70[
-- Different wavelengths of light focus at different distances behind
-eye’s lens
-
-- If your GUI has lots of reds and blues, will force lots of
-refocusing and cause fatigue
-
-- Design Implication
- - Pure (saturated) colors require more focusing than less pure
-(desaturated, pastel)
- - Avoid saturated colors in UIs unless really need something to stand
-out (stop sign)
- - Don't follow this advice! [Vibrant Colors in Web Design](https://uxplanet.org/vibrant-colors-in-web-design-20-visually-impactful-websites-to-inspire-you-bc7988da1e95)
-]
-.left-column[
-![:img Picture of President Trump and Hilary Clinton in bright blue
-and red with yellow writing over the top,150%](img/people/saturated.png)
-
-[mediaelection.com](http://mediaelection.com/)
-]
----
-# Where to Find More Color Advice?
-
-.medium.right-column70[
-- Martin Krzywinski<sup>1</sup> on <br>[Brewer Palettes](http://mkweb.bcgsc.ca/brewer/)
-- [Color Brewer](http://colorbrewer2.org/), [Color Scheme
-Desginer](http://colorschemedesigner.com), [Color Schemer](http://colorschemer.com)
-]
-.left-column[![:img Picture of color palette that is vibrant and less saturated, 150%](img/people/color-guidelines.png)]
-.footnote[
-<sup>1</sup>Famous information graphics artist, [bio](http://mkweb.bcgsc.ca/bio/martin-krzywinski-bio.pdf)]
----
-# Color Blindness: Ishihara Test
-![:youtube Ishihara Colorblindness test showing colored dots inside
-colored dots showing numbers,WzAW41DugXQ]
-
-If you can’t see numbers, don’t worry
-- Projectors, LCD screens, CRT, and print all have different dynamic ranges, hard to get them to match
-???
-
-Trouble discriminating colors
-
-About 9% of males, 0.5% of females
-
-Two main types
-- Different photopigment response is common
- - Reduces capability to discern small color diffs
-- Red-green deficiency is best known
- - Lack of either green or red photopigment can’t discriminate colors dependent on R & G
- - More rare are blue-yellow and total color blindness
-
-Some women have a fourth type of cone
-- Estimates are 12% women
-- Some can see more colors than ordinary humans
-
-
----
-# Design Tip #5: Use Redundant Cues
-
-.left-column-half[
-![:img Picture of hexagonal red stopsign and triangular red yield
-sign, 70%](img/people/signs.png)
-]
-
-
-.right-column-half[
-Don't rely solely on Hue: Use mixtures of colors (red / green issues)
-
-Also have contrast in intensity
-
-Consider having other redundant cues too
- - What redundant cues used for traffic signs?
-]
-
-???
-Traffic signs have multiple cues: color, word, shape
-
-another case for using greyscale to test
-
----
-# Gestalt Psychology
-
-A lot of this draws from Gestalt Psychology.
-
-_Gestalt_ means "an organized whole that is perceived as more than the sum of its parts."
-
-Read about other [gestalt psychology](https://www.interaction-design.org/literature/article/the-law-of-similarity-gestalt-principles-1) principles
-- similarity
-- continuation
-- closure
-- proximity
-- figure/ground
-- symmetry and order
-
----
-# People are easy to trick
-
-.left-column50[
-![:img Spheres where the foreground colorr hue 230° & 90° appear similar but the background spheres all base color RGB 255 157 194 appear distinctly pink and orange, 85%](https://pbs.twimg.com/media/EZ_3kqmWkAAU2R9?format=jpg&name=large)
-]
-
-.right-column40[
-From [@NovikProf](https://twitter.com/NovickProf/status/1270005909704638470/photo/1)
-
-Surprising 4: The foreground colors (hue 230° & 90°) appear similar but the background spheres
-(all base color RGB 255 157 194) appear distinctly pink and orange.
-Original .png file is at [http://bit.ly/2O74l2I](http://bit.ly/2O74l2I).
-]
-
-
----
-# People are easy to trick
-
-How do we actually create color? We don't have LEDs of every color
---
-
-- Three LCD cells per pixel
-
-- Keep them small!
-
----
-# Why Pixels are enough
-
-.right-column-half[
-Limits of human perceptual system
-
-Eye reconstructs
-]
-.left-column-half[
-![:img Picture of mona lisa,45%](img/people/monalisa.png) ![:img pixelated
-zoomed in picture of mona lisa, 45%](img/people/pixelmonalisa.png)
-]
----
-# People are easy to trick
-
-How do we actually create color? We don't have LEDs of every color
-
-- Three LCD cells per pixel
-
-- Keep them small!
-
-How might we do grayscale?
-
-???
-make connection to video
----
-# How fast can people see things?
-
-.left-column[
-![:img Picture of a sabertooth tiger,100%](img/people/tiger.png)
-]
-
-.right-column[
-*&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception*
-
-Image you are looking at flickers 60 times per second
-
-Differences in peripheral vision
- -  Sabertooth tigers
-]
----
-# How fast can people see things?
-.left-column[
-![:img Picture of a sabertooth tiger,100%](img/people/tiger.png)
-]
-.right-column[
-*&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception*
-
-Pretty much never have to be faster than this for user response!
-- Get >120 million instructions per core (@3Ghz)
-- High end GPU theoretically as high as 26 *billion* instr.
-- First GUIs had ~20 *thousand*
-]
----
-# Can use this to create greyscale
-
-How might we do grayscale?
-
---
-
-- Black 25% of the time,
-- 40-60 frames per second (FPS)?
-???
-40-60 FPS
-
----
-# Can use this for animation
-- minimum of 10 FPS
-- 24-40 smoother
----
-# How fast can people see things?
-
-&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-*&lt; ~100-200ms seems like “instant response”*
-- Hard to tell response times below this apart
-- Upper range of eye saccades
-
----
-# Let's try an experiment
-
----
-# Also useful for Pre-attentive processing
-
-.left-column[
-![:img Picture of red squares,170%](img/people/distinct1.png)
-]
-
-.right-column-half[
-On the next couple of slides you're going to see a picture.
-
-- Turn on your mics if you'd like to partipate.
-- If all of the shapes are the same, you'll call out "same", call out "different" if they are different.
-- One of the TAs will time us.
-
-Need a ~~victim~~ volunteer with a stopwatch
-
-]
-
-???
-Grouping looks at how to make things look related
-
-What if we want to make things look different and stand out?
-
-Let's try it: Say out loud:
-
-Same 		if every object is the same
-
-Different 	if at least one object is different
----
-# Pre-attentive processing
-
-![:img Picture of red squares and one red circle,35%](img/people/distinct2.png)
-
-???
-this is about shape
-
----
-# Pre-attentive processing
-
-![:img Picture of blue circles and one red
-circle,35%](img/people/distinct3.png)
-
-???
-this is about color
----
-# Pre-attentive processing
-
-![:img Picture of blue circles with no standout,35%](img/people/distinct4.png)
-
-???
-gotcha!
-
----
-# Pre-attentive processing
-
-![:img Picture of blue circles and one larger blue
-circle,35%](img/people/distinct5.png)
-
-???
-this is about size
----
-# Pre-attentive processing
-
-![:img Picture of blue circles and red squares and one red circle. ,35%](img/people/distinct6.png)
-
-???
-This one doesn't work well
----
-# Design Tip #6 Make things Distinct
-
-![:img Picture of blue circles and red squares and one red circle. ,45%](img/people/distinct7.png)
-
-What other variables might be important to making things distinct?
-???
-From Kevin Mullet and Darrell Sano, Designing Visual Interfaces
-
-- Value
-- Orientation
-- Texture
-- Position (2d/3d)
----
-# Design Tip #7: Use [Small Multiples](https://en.wikipedia.org/wiki/Small_multiple)
-
-.left-column-half[
-
-![:img 5 star rating for a review with the stars being multiples, 30%](img/people/stars.png)
-
-]
-
-![:img Picture of Tufte book cover with examples of small multiples
-including micro-macro readings (clothes of different colors hanging on
-a line) and layering and separation ( people waving signals). ,50%](img/people/tufte.png)
-
-.footnote["Information consists of differences that make a difference" -- Edward --
--- Tufte, Envisioning Information]
-
-
----
-# How fast can people see things?
-
-.left-column-half[
-&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-&lt; ~100-200ms seems like “instant response”
-
-.bold.blue[&lt; 1-2 seconds typically “good response time”]
-- Similar times in conversational turn taking protocols
-- Longer delays ~5 sec have to say something to keep conversation
-       alive
-- Note: numbers fuzzier as we go out
-]
----
-# How fast can people see things?
-.left-column-half[
-&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-&lt; ~100-200ms seems like “instant response”
-
-&lt; 1-2 seconds typically “good response time”
-
-.bold.blue[More than  10-15 sec is typically “bad response time”]
-
-- Short Term Memory (STM) g#1 decay effects
-- Web has trained us to accept slower response times
-- However a difference of 250 ms can switch people to a competitor
-]
----
-# How fast can people see things?
-.left-column-half[
-&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-&lt; ~100-200ms seems like “instant response”
-
-&lt; 1-2 seconds typically “good response time”
-
-.bold.blue[More than  10-15 sec is typically “bad response time”]
-]
-.right-column-half[
-.quote["Two hundred fifty msec, either slower or faster, is close to
-the magic number now for competitive advantage on the Web"]
-]
-.footnote[Harry Shum, a computer scientist and speed specialist at Microsoft]
-
----
-# Design Tip #8: Manage Expectations
-
-Long response times are more manageable if you
-
-- Tell people what to expect, be predictable (follow through)
-
-- Also good to support interrupts
-
----
-
-# How fast can people see things?
-.left-column-half[
-&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-&lt; ~100-200ms seems like “instant response”
-
-&lt; 1-2 seconds typically “good response time”
-
-.bold.blue[More than  10-15 sec is typically “bad response time”]
-]
-
-.right-column-half[
-Can also manipulate perception: [Chris Harrison's
-work](http://chrisharrison.net/index.php/Research/ProgressBars2)
-
-
-![:youtube Harrison progress bar manipulation shows how animation of
-progress bars changes perception of response time,CDnN3wLY3OE]
-]
-
----
-# How fast can people see things?
-
-.left-column-half[
-&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-&lt; ~100-200ms seems like “instant response”
-
-&lt; 1-2 seconds typically “good response time”
-
-More than  10-15 sec is typically “bad response time”
-
-.bold.blue[No response: Change Blindness]
-]
-.right-column-half[
-![:youtube Video of someone asking for directions while another person
-walks by with a door,FWSxSQsspiQ]
-]
-
-???
-
-- Subtle changes over time
-- Distractors
-- Discontinuities (Ex. in movies)
-
----
-# How fast can people see things?
-
-.left-column-half[
-&lt; ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-&lt; ~100-200ms seems like “instant response”
-
-&lt; 1-2 seconds typically “good response time”
-
-More than  10-15 sec is typically “bad response time”
-
-.bold.blue[No response: Change Blindness]
-]
-.right-column-half[
-![:youtube Video of basketball players, 0grANlx7y2E]
-]
----
-# Design Tip #9: Replace subtle changes with obvious ones
-
-![:img Picture of a web page form,40%](img/people/web1.png)
----
-# Design Tip #9: Replace subtle changes with obvious ones
-
-![:img Picture of a web page form,40%](img/people/web2.png)
----
-# Design Tip #9: Replace subtle changes with obvious ones
-
-![:img Picture of a web page form,40%](img/people/web3.png)
----
-
-# What's wrong with these buttons?
-
-![:img Picture of an elevator button panel with the labels and buttons
-not visually associated leading to ambiguity,40%](img/people/elevator1.png)
-
-???
-No clear association between buttons and labels
----
-# Better grouping strategy
-
-![:img Picture of an elevator button panel with the labels and buttons
- visually associated removing ambiguity,40%](img/people/elevator2.png)
-
-???
-Clear association between buttons and labels
-
----
-# Good or bad?
-
-Review Star Labels | Icon Labels
-----|----
-![:img Similar issue but with star ratings for multiple categories of issues such as durability and fun ambiguously associated on Amazon,80%](img/people/amazon.png) | ![:img Similar issue but with labels for icons on Facebook,60%](img/people/facebook.png)
-
-???
-No clear association between icons and labels
-
----
-# Design Tip #10: Use well-tested visual grouping strategies
-
-.right-column[![:img Visual grouping strategies including proximity similarity and
-connections between related things are shown in the image. For example
-putting things close together that are grouped and further otherwise
-is proximity. Using color or shape could be for similarity. Lines can support connections. ,40%](img/people/visualgrouping.png)
-]
----
-# But not too many groups!
-
-[Hick's law](https://en.wikipedia.org/wiki/Hick%27s_law): Reaction
- time (RT) is logarithmically related to the number of options
- .jax[$$RT = T * log_2(n+1)$$]
-
- - in other words people use *binary search*
- - Assumes there is a logic to the ordering (worse when random)
-
- - General case: Information foraging theory (Pirolli & Card)
-
----
-# Design Tip #11: Minimize the number of options
-
-With every additional choice the time it will take
- more time for  selection
-
-
----
-# How much can a person remember?
-
-Short term (working memory)
-- Famous 7 +/- 2 “chunks” (Somewhat outdated model)
- - 2461827176
- - YBEAMBIMGC
-
----
-# How much can a person remember?
-
-Short term (working memory)
-- Famous 7 +/- 2 “chunks” (Somewhat outdated model)
- - 2461827176 vs (412) 268-1776
- - YBEAMBIMGC vs EBAY IBM GMC
-
----
-# Chunking in practice
-
-![:img 4 different example ribbons from microsoft demonstrating
-chunking of related functions, 70%](img/people/chunking.png)
----
-
-# How much can a person remember?
-
-Short term (working memory)
-- Famous 7 +/- 2 “chunks” (Somewhat outdated model)
-- Basically: “very limited” and “decays quickly”
-- Has become “worse” with constant multitasking
-
---
-Long term
-- Essentially unbounded
-- But requires effort & may not always work on cue
-- Can’t explicitly forget! Even though you try!
----
-# How much can a person remember?
-
-Short term
-- 7 +/- 2 "chunks" (or less); decays quickly
-
-Long term
-- Essentially unbounded, but slower
-
-Novice / expert differences
--  Experts have learned items in long term memory to draw on, novices don’t
-
----
-# Design Tip #12: Rely on Recognition rather than Recall
-.right-column[
-Cannot count on memory to be there, or be fast!
-
-- Generally better to rely on recognition (seeing it in front of you)
-than just recall (having to pull it out of long term memory)
-
--  But note that having the ability to operate from recognition does
-not preclude recall
-]
-.left-column[
-![:img Example of printer dialog with image of printed page at top
-right illustrating impact of settings and thus supporting recognition,
-110%](img/people/recognition.png)
-]
----
-# Recap of Design Tips for Vision
-
-- #1: Don't rely on blue for small objects
-- #2: Don't rely on blue for older users
-- #3: Make sure that contrast is high enough
-- #4:  Minimize saturated colors
-- #5: Use redundant cues
-- #6: Make things distinct
-- #7: Use small multiples
-- #8: Manage expectations if you can't change response time
-- #9: Replace subtle changes with obvious ones
-- #10: Use well-tested visual grouping strategies
-- #11: Minimize the number of options
-- #12: Rely on recognition rather than recall
-
----
-# Summary
-
-Human Physiology drives design
-- Number of colors
-- Pixel size (retina displays)
-
-Good design is accessible design
-
-- There is tons to know about good use of color and other visual
-design elements. For not, the simplest thing to do is to look for existing color palettes, and just those. That should account for the vast majority of your needs for colors. There is also red-green color blindness too. Simplest thing to do is to turn your screens into greyscale, and see if you can see differences.
-
----
-# End of deck (unused slides past here)
----
-# Demonstrate your Understanding of HSV
-
-You have been asked to create a digital-paper compatible interface. As
-a result, you need to pick colors that will be easily distinguishable
-in black and white. Which of 'H' 'S' and 'V' should you vary to
-support black and white display?
-
-Which is correct?
-- A: Hue
-- B: Saturation
-- C: Value
-
-???
-C Value
-
----
-
-# Aside: Color Gamuts<sup>1</sup>
-
-![:youtube Explanation of color gamuts,8y9yENEdtG4]
-
-.footnote[
-<sup>1</sup>
-See the [Wikipedia page on color
-gamuts](http://en.wikipedia.org/wiki/Gamut) for more information]
-
-???
-- no time to play video
-- Outside is wavelengths (hues)
-- Triangle shows primary colors for this gamut
----
diff --git a/slides/wk03/examlet.html b/slides/wk03/examlet.html
deleted file mode 100644
index 5e865cfd2d80d936f639bd9839237df380066821..0000000000000000000000000000000000000000
--- a/slides/wk03/examlet.html
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: presentation
-title: AMA/Examlet
-description: Review, then assessment.
----
-
-# On Tap for today
-
-Part 1: Review on anything up to 4/9 (25 minutes)
-
-Part 2: Our Examlet. (25 minutes)
-  - The examlet will open at 10:55 - 25 minutes into class.
-  - The expectation is that everyone that is in our timezone (PDT) or close to PDT would take this before the end of class.  I have
-  spoken to the students I know are not in this time zone separately
-  - You should start right away as you would in a traditional classroom and not wait around.
-  - We will be checking to see that everyone has taken it by 11:45am
-  - You will not need to stay on Zoom to take the assessment. However we will stay in the classroom session in case you have questions about the format etc.
-  - This should be about 20 minutes, but you will have a buffer to 25 minutes to ensure that everyone can submit on time.
-  - If you have problems with any of the technology you MUST get in touch with the course staff immediately.
-  - You may use your notes, the website, take a look at your code, etc, but *you may not collaborate with others on the exam*.
diff --git a/slides/wk03/img/layout-algorithm/android-linear.png b/slides/wk03/img/layout-algorithm/android-linear.png
deleted file mode 100644
index 6b252da67203bb2e57a21a65c2b442d1e7e14a9d..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/android-linear.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/bad-layout.jpg b/slides/wk03/img/layout-algorithm/bad-layout.jpg
deleted file mode 100644
index 55cf47438eb8cae311aa26180659dbc9d7975f50..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/bad-layout.jpg and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/badLayout.png b/slides/wk03/img/layout-algorithm/badLayout.png
deleted file mode 100644
index 1272a6dab0bd83e82e70988038b0ca788e522d15..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/badLayout.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/constraints.png b/slides/wk03/img/layout-algorithm/constraints.png
deleted file mode 100644
index 78898ddb4fc866d46c7981a84778ddd14ebdd44b..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/constraints.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/goodLayout.png b/slides/wk03/img/layout-algorithm/goodLayout.png
deleted file mode 100644
index ad8b0eee3f09ef6e9fa90147d74456ad290929de..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/goodLayout.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/pinterest-android.jpg b/slides/wk03/img/layout-algorithm/pinterest-android.jpg
deleted file mode 100644
index 3c36582648b9294fa1bfbbaf56f7f0f9fcc8d670..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/pinterest-android.jpg and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/quiz1.png b/slides/wk03/img/layout-algorithm/quiz1.png
deleted file mode 100644
index 80e63bddd1e58cee348d0f8bff3c241b688745ec..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/quiz1.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/quiz2.png b/slides/wk03/img/layout-algorithm/quiz2.png
deleted file mode 100644
index 024ddbdd8c6f8a519caa3ab8ac5908c24fd27166..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/quiz2.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/trylayout.png b/slides/wk03/img/layout-algorithm/trylayout.png
deleted file mode 100644
index d001b208ec53f2c7ece0a3aaf50adffe8a453125..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/trylayout.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/watch3.png b/slides/wk03/img/layout-algorithm/watch3.png
deleted file mode 100644
index ce7134c4b0c57883931335e40fef086a366e7294..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/watch3.png and /dev/null differ
diff --git a/slides/wk03/img/layout-algorithm/worseLayout.png b/slides/wk03/img/layout-algorithm/worseLayout.png
deleted file mode 100644
index b94189d6c98f546d08d4aced03c7dfaf972e34a1..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-algorithm/worseLayout.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/constraint-editor.png b/slides/wk03/img/layout-ii/constraint-editor.png
deleted file mode 100644
index cb898264dbb375ea8f1fe36aa38180cf76f5ceee..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/constraint-editor.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/constraints.png b/slides/wk03/img/layout-ii/constraints.png
deleted file mode 100644
index 78898ddb4fc866d46c7981a84778ddd14ebdd44b..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/constraints.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/design-view.png b/slides/wk03/img/layout-ii/design-view.png
deleted file mode 100644
index 76f63830d1dbd0e0388c6ce7f57bd2b3d7618db9..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/design-view.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/explore-devices.png b/slides/wk03/img/layout-ii/explore-devices.png
deleted file mode 100644
index f226288d9e058fef8b2b28d1f9836d908661407a..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/explore-devices.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/fixed.png b/slides/wk03/img/layout-ii/fixed.png
deleted file mode 100644
index 412bad473f486a9178681db203cbae918e767c56..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/fixed.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/layoutparams.png b/slides/wk03/img/layout-ii/layoutparams.png
deleted file mode 100644
index 1e80c2fef10e2de5d5b0691481112a8dc323744f..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/layoutparams.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/layouttoolbar.png b/slides/wk03/img/layout-ii/layouttoolbar.png
deleted file mode 100644
index be73a95c45ee9ec84379257721b63951c60e7f2f..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/layouttoolbar.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/linearlayout.png b/slides/wk03/img/layout-ii/linearlayout.png
deleted file mode 100644
index ab3d68b83b6c5a7cb915ab87c6c75cfb4b952864..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/linearlayout.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/match.png b/slides/wk03/img/layout-ii/match.png
deleted file mode 100644
index 96fdca857d70a2ecd6c7f3e4e2b1e2493865cd10..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/match.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/modern-yahoo.png b/slides/wk03/img/layout-ii/modern-yahoo.png
deleted file mode 100644
index 0760609a794ec4c1a2797bdbfd5d5190fc9723da..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/modern-yahoo.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/part1-diagram.png b/slides/wk03/img/layout-ii/part1-diagram.png
deleted file mode 100644
index d35a62e29abba453847a525fc4eba2956e1d34d2..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/part1-diagram.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/spottheheron-prototype.png b/slides/wk03/img/layout-ii/spottheheron-prototype.png
deleted file mode 100644
index 240a67f5cbb7a18f176a778be692c4e09d26ec7f..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/spottheheron-prototype.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/spottheheron-wireframe.png b/slides/wk03/img/layout-ii/spottheheron-wireframe.png
deleted file mode 100644
index f54d313eb11c98a26d1dc0d1b855b902bbe1b875..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/spottheheron-wireframe.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/text-view.png b/slides/wk03/img/layout-ii/text-view.png
deleted file mode 100644
index 1d49a12ee182cd49abf523f77607b1f62b181c73..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/text-view.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/watch.png b/slides/wk03/img/layout-ii/watch.png
deleted file mode 100644
index 44b8d98d37b56d24272f42df63a5ae6cb3d40700..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/watch.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/watch3.png b/slides/wk03/img/layout-ii/watch3.png
deleted file mode 100644
index ce7134c4b0c57883931335e40fef086a366e7294..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/watch3.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/wrap.png b/slides/wk03/img/layout-ii/wrap.png
deleted file mode 100644
index 6cc11d6b590c7545445ea02762584ac07f51d6af..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/wrap.png and /dev/null differ
diff --git a/slides/wk03/img/layout-ii/xml-files.png b/slides/wk03/img/layout-ii/xml-files.png
deleted file mode 100644
index 97e22458b2bb3db69d909a66b8df2e0b0e32a16a..0000000000000000000000000000000000000000
Binary files a/slides/wk03/img/layout-ii/xml-files.png and /dev/null differ
diff --git a/slides/wk03/layout-algorithm.html b/slides/wk03/layout-algorithm.html
deleted file mode 100644
index 1861944f3761e789c63e121e82e238474720e642..0000000000000000000000000000000000000000
--- a/slides/wk03/layout-algorithm.html
+++ /dev/null
@@ -1,800 +0,0 @@
----
-layout: presentation
-title: Layout Algorithms
-description: Introduction the implementation of layout
-class: middle, center, inverse
----
-
-# Hall of Fame or Hall of Shame?
-
-.left-column-half[
-Think about those Visual Design Tips!
-
-![:img Picture of two layouts with very small areas for interaction or images that are too small to see, 60%](img/layout-algorithm/bad-layout.jpg)
-]
-
-.right-column-half[
-
-- #1: Don't rely on blue for small objects
-- #2: Don't rely on blue for older users
-- #3: Make sure that contrast is high enough
-- #4:  Minimize saturated colors
-- #5: Use redundant cues
-- #6: Make things distinct
-- #7: Use small multiples
-- #8: Manage expectations if you can't change response time
-- #9: Replace subtle changes with obvious ones
-- #10: Use well-tested visual grouping strategies
-- #11: Minimize the number of options
-- #12: Rely on recognition rather than recall
-]
-
----
-
-# What went wrong?
-.left-column50[![:img File browser with toolbar, 90%](img/layout-algorithm/goodLayout.png)]
-.right-column50[![:img File browser with only half of same toolbar, 80%](img/layout-algorithm/badLayout.png)]
-
-???
-- Changing available space e.g., window resized by user
-- Changing sizes, fonts, etc.
-- Adding and removing components
-- Layout mechanism has to deal with all cases
----
-# What went wrong?
-![:img File browser with only half of same toolbar, 80%](img/layout-algorithm/worseLayout.png)
-
-???
-- No scroll bar for text boxes that are too narrow
-- No way to redistribute space between directory & file list
-- Important controls (e.g., Open) get hidden
-- Min size is much too small
-- No way to send the dialog away (buttons gone)
-
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-
-# Layout Algorithms
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
-
----
-name: normal
-layout: true
-class:
-
----
-layout: false
-
-[//]: # (Outline Slide)
-# Goals for today
-- __Review__
-- How layout is implemented in the toolkit
-
----
-# Review: XML Inflation
-
-
-Inflation in `MainActivity#onCreate(Bundle)`:
-```java
-// contents is the ScrollView
-contents.addView(getLayoutInflater().inflate(R.layout.part1solution, null), PARAMS);
-```
-
-To break this down, recall that `MainActivity` inherits (indirectly) from  `Context`
-```java
-LayoutInflater inflater = getLayoutInflater();         // ask the Context for the inflater
-View newView = inflater.inflate(R.layout.part1, null); // newView is at the root of the inflated tree
-contents.addView(newView, PARAMS);                     // attach the newView to the parent
-```
-
-In a View (in say `Part3View.java`) get the inflater this way:
-```java
-LayoutInflater inflater = LayoutInflater.from(context); // Use a static method to get the inflater
-// The rest is the similar
-```
-???
-Remind that you can inflate once but use many times
-
----
-# Review: Adding Programatically
-
-Adding a view programatically in `MainActivity` broken down in steps
-1. The LayoutParams are created
-2. The new view is created
-3. Use [ViewGroup#addView(View, ViewGroup.LayoutParams)](https://developer.android.com/reference/android/view/ViewGroup#addView%28android.view.View,%20android.view.ViewGroup.LayoutParams%29)
-method on the parent to add it to the Interactor Hierarchy (with the params)
-
-```java
-public static final RelativeLayout.LayoutParams PARAMS = new RelativeLayout.LayoutParams(
-            RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
-....
-Part2View p2v = new Part2View(this, getImageStrings(), vMargin);
-contents.addView(p2v, PARAMS);
-```
----
-# Review: Adding Programatically
-
-A slightly different way:
-1. Create the new view
-2. Add it to the parent using [ViewGroup#addView(View)](https://developer.android.com/reference/android/view/ViewGroup#addView%28android.view.View%29)
-3. Set up the LayoutParams
-4. Add the LayoutParams to the view
-
-```java
-public static final RelativeLayout.LayoutParams PARAMS = new RelativeLayout.LayoutParams(
-            RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
-...
-Part2View p2v = new new Part2View(this, getImageStrings(), vMargin);
-contents.addView(p2v);
-// Add more setup for the params if needed.
-contents.setLayoutParams(PARAMS);
-```
-
----
-# Solutions to [LayoutLab](https://github.com/harshitha-akkaraju/layoutlab)
-
-Don't peek until you've tried it :)
-
-- [Inflation](https://github.com/harshitha-akkaraju/layoutlab/blob/complete/app/src/main/res/layout/activity_main.xml)
-- [Programatically](https://github.com/harshitha-akkaraju/layoutlab/blob/complete/app/src/main/java/com/harshiakkaraju/layoutlab/ProgrammaticConstraints.java)
-
----
-# Aside: changing properties dynamically
-
-What if you canted to change background color of all of the buttons to red?
-
-
-```java
-for (int i = 0; i &lt; layout.getChildCount(); i++) {
-  view = layout.getChildAt(i);
-  view.setBackgroundColor(Color.RED);
-}
-```
-
----
-# Reminder: Layout Types in Android
-
-- [FrameLayout](https://developer.android.com/reference/android/component/FrameLayout.html) - good for position views on
-top of each other, or encapsulating a bunch of views. Used in [Doodle](/assignments/doodle).
-
-- [__LinearLayout__](https://developer.android.com/reference/android/component/LinearLayout.html) - places views one after
-the other in order according to the orientation (Horizontal or Vertical). Used in [Layout](/assignments/layout).
-
-- [__RelativeLayout__](https://developer.android.com/reference/android/widget/RelativeLayout) - Positions of the children
-are desribed in relation to one another
-
-- [__TableLayout__](https://developer.android.com/reference/android/component/TableLayout.html) - Rows and columns style
-way of declaring a layout
-
-- [GridLayout](https://developer.android.com/reference/android/component/GridLayout.html) - Uses
-an [*adapter*](https://developer.android.com/reference/android/interactor/Adapter.html) that provides items to display in
-a grid
-
-- [ConstraintLayout](https://developer.android.com/reference/android/component/ConstraintLayout.html) Let's you use constraints to specify how things should lay out. Used in [Layout](/assignments/layout).
-
-
-- More on https://developer.android.com/guide/topics/ui/declaring-layout.html
-
-???
-
-Talk about different Toolkits may have different layouts.
-
----
-
-# Layouts in Play
-
-.left-column-half[
-Which layouts are used in these apps?
-]
-.right-column-half[
-![:img Pinterest layout, 36%](img/layout-algorithm/pinterest-android.jpg)
-![:img Pinterest layout, 35%](img/layout-algorithm/android-linear.png)
-]
-
---
-.left-column-half[
-Probably:
-- **LinearLayout**
-- **ConstraintLayout**
-
-Thinking about what layouts are in an app is part of your Part 4 of the Layout assignment.
-]
-
----
-# General & Powerful Approach: Constraints
-
-General mechanism for establishing and maintaining relationships between things
-- Layout is one use
-- Several other uses in UI
- - Connection of application to UI, e.g. deriving appearance from data
- - Multiple views of same data
- - Automated semantic feedback
- - Automatic arrangement of lines (powerpoint snapping!)
-
----
-layout: false
-
-## ConstraintLayout in Android
-
-.left-column[
-![:img A simple layout on an android watch with a textview and two
-buttons (save and discard) and the constraints highlighted,100%](img/layout-algorithm/watch3.png)
-]
-.right-column[
-- [ConstraintLayout](https://developer.android.com/reference/android/support/constraint/ConstraintLayout)
-  - Allows you to position widgets in a flexible way
-  - Useful for building **responsive** interfaces in Android.
-
-- You will be using ConstraintLayout for the Layout exercise
-
-- Review Monday's slides for more details
-]
-
----
-layout: false
-
-[//]: # (Outline Slide)
-# Goals for today
-- Review
-- **How layout is implemented in the toolkit**
-
----
-# Time to talk about position again
-
-.left-column-half[
-.quote[You have been asked to create a new `CircleView` object that can draw a circle in our
-`drawingView` object in Doodle. The user wants to add a circle so that the center point is at
-(100,100) on the drawingView and has a radius of (10). In `CircleView#onDraw(Canvas)` you will
-need to call `canvas.drawCircle(cx, cy, radius, paint)` (note that drawCircle takes the (x, y)
-location of the center of the circle as input). What values should you use for `cx` and `cy`
-in this your onDraw code?]
-]
-
-.right-column-half[
-![:img Quiz results showing that many people correctly selected 10 10 although some incorrectly selelected 100 100, 100%](img/layout-algorithm/quiz1.png)
-]
-
----
-# Time to talk about position again
-.left-column-half[
-.quote[Consider the same CircleView object that contains a circle of radius 10 that we want to
-display in the drawingView so the center appears at `100, 100` in the parent view's coordinate system.
-How should we set up the bounding box for the `CircleView` so that its canvas will be correctly
-clipped? What are `x`, `y`, `width` and `height` for the bounding box (in parent coordinates?)]
-]
-.right-column-half[
-![:img Quiz results showing that many people correctly selected 90 90 20 20, 100%](img/layout-algorithm/quiz2.png)
-
-]
-
----
-# Time to talk about position again
-
-.left-column-half[
-
-.quote[You have been asked to create a new `SquareView` object that can draw a square. The user
-  wants to add a square with its top left corner at (150,50) and a width of (20). In `SquareView.onDraw()`
-  you will need to call `canvas.drawRect(left, top, right, bottom, paint)` What values should
-  you use for `left` and `top`?
-]
-]
-???
-(0,0)
---
-.right-column-half[
-`(0,0)`
-]
----
-# Time to talk about position again
-.left-column-half[
-.quote[Consider the same square (at `150,50` with a width of `20` in its parent). How should we set
-up the bounding box for the `SquareView` so that its `Canvas` will be correctly clipped?
-What are `x`, `y`, `width` and `height` for the bounding box (in parent coordinates?)
-]
-]
-???
-(150,50,20,20)
---
-.right-column-half[
-`(150,50,20,20)`
-]
----
-# So: what have we learned?
-
-
---
-When an interactor draws itself, its drawing area always starts at (0,0)
-
-The *View* that interactor is in (it's *parent*) determines the location of its bounding box. This is what correctly positions it!
-
----
-# How does layout come into this?
-
-In Doodle you hard-coded the position of everything (or used animation to set it)
-
-But in most interfaces, we use *layout containers* to accomplish this.
-- Layout containers make decisions like "stack these views vertically" or "make them fit into this size area" and set their position and bounding box on this basis
-- The *toolkit architecture* then helps to enforce this
-
----
-# How is position calculated by the toolkit architecture?
-.left-column-half[
-<br>
-<br>
-
-<div class="mermaid">
-graph TD
-W(ViewGroup) --> V[ViewGroup]
-W --> V1[View]
-W --> V2[View]
-V --> V3[View]
-V --> V4[View]
-V --> V5[View]
-
-classDef blue font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-
-class W,V darkblue
-class V1,V2,V3,V4,V5 blue
-</div>
-]
-.right-column-half[
-- The Component (Interactors + ViewGroups) Hierarchy in just about everything
-  - Draw and redraw
-  - Layout
-- Toolkit architecture invokes layout
-- Containers do the work
-  - Manage size and position of children
-  - Enforce component abstraction: Simple loop through child components --> Recursive tree traversal
-    - Translate child to correct location
-    - Clip child after drawing is complete
-  - Know how to handle resizing (reactive)
-
-]
-???
-- Parent knows how to setup for drawing of children, invoke their
-drawing code, and add additional output (before and/or after) based on
-what the parent is and its internal state
-
-- Whorfian effects (things not in the library are hard)
-
-- Nesting not well defined
-
-
----
-# How do Container Components actually do layout?
-.left-column-half[
-<br>
-<br>
-
-<div class="mermaid">
-graph TD
-W(ViewGroup) --> V[ViewGroup]
-W --> V1[View]
-W --> V2[View]
-V --> V3[View]
-V --> V4[View]
-V --> V5[View]
-
-classDef blue font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-
-class W,V darkblue
-class V1,V2,V3,V4,V5 blue
-</div>
-]
-.right-column-half[
-Key Issues:
-- Where do components get placed?
-- How much space should they occupy?
-- How should components to react to changes?
-  - number of components
-  - size of window
-- Who should get to decide children's sizes? parents or children?
-  - Should it be a top down vs bottom up approach
-  - Depth first tree traversal
-]
----
-# Simplest possible layout implementation (similar to what is in Frame layout)
-
-Depth first tree traversal
-
-No consideration of child size or position in doing layout
-
-Simplified from
-FrameLayout
-[source
-code](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/FrameLayout.java),
-[View](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/View.java)
-and [ViewGroup](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewGroup.java)
-
-```java
-protected void onLayout(boolean changed, int l, int t, int r, int b) {
-    foreach child c {
-        if (child.isVisible()) {
-             Rectangle r = child.getLayoutParams();
-             childLeft = padding + r.x;
-             childTop = padding + r.y;
-             child.layout(childLeft, childTop, r.w, r.h);
-        }
-    }
-}
-```
-???
-we're ignoring the implementation of gravity here
-
-remind them what protected means?
-
----
-# Generalized implementation of layout
-Details of most else, and two-pass process, handled in [View](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/View.java)
-and [ViewGroup](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewGroup.java)
-
-```java
-// Second: do the actual updating
-public void layout(Rectangle newBounds) {
-   onMeasure() // measure myself; this is recursive
-   onLayout()  // again; recursive. Makes use of calculated measurements
-}
-```
-
----
-.left-column[
-# Measuring
-]
-.right-column[
-`onMeasure()` is a callback* invoked by `View.measure()`
-]
-.footnote[We'll be talking more about callbacks when we talk about events]
-
---
-.right-column[
-Object is given guidance about the size is given from parent view in the form of `MeasureSpec` parameters
-]
---
-.right-column[
-`onMeasure` ensures every view has a width and height value set prior to a layout pass
-]
---
-
-.right-column[
-Note: You must manually take padding into account (subtract padding
-from the width/height dimensions)
-]
-
----
-.left-column[
-# Best toolkits let child specify
-]
-.right-column[
-Size (based on nature of component (think TextBox vs Button vs LinearLayout)
-- preferred size
-- minimum size
-- maximum size
-
-Parent gets to ignore all of that, but usually tries not to. Someone has to be in charge; it's the parents (my kids hate that! :)
-- Usually tries to give each child as much as possible & divide up the remainder proportionally
-- However, child component has to deal if not enough (i.e. truncate text)
-]
-
----
-# Reference Implementation of onMeasure
-
-```java
-// First: Measure everything
-protected void onMeasure(int widthspec, int heightspec) {
-  // loop through children in order they were added
-  foreach child {
-    // get child's preferred layout size
-	onMeasure()
-	// story relevant information & do calculations about
-	// the container size
-  }
-  // based on all that, update our dimensions
-  setMeasuredDimension()
-}
-```
-
-Why does a container need to know about its kids' sizes to measure itself?
-
-???
-
-Example: it might need to be big enough to fit them all (LinearLayout)
-
----
-# Aside `ImageView` height:
-
-- What is it's height before layout is done? Unknown!
-- But you need it in Part3 to decide where to put it
- - You haven't added it to the interactor hierarchy yet
- - How do you get height?
-
---
-
-Call `image.measure()` (you'll have to think about what the right parameters are)
-
-Then call `image.getMeasuredHeight()` (why not `image.getHeight()`?)
-
---
-
-Because it's 0! Since this image isn't laid out.
-
----
-# Frame layout -- actual implementation (slightly simplified)
-
-```java
-protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec {
-   // recursively calculate size of children
-   foreach child  {
-     // ... calculate max child width and max child height
-     maxWidth = Math.max(maxWidth, child.getMeasuredWidth() // +  margins);
-     maxHeight = ...
-   }
-   // ... add in padding
-   setMeasuredDimension(... based on what was found)
-   // now recursively set dimensions for all children
-
-   foreach child {
-       final View child = getChildAt(i);
-       child.measure(childWidthMeasureSpec, childHeightMeasureSpec); // recursion through callback
-   }
-}
-```
-???
-How would we do this for linearLayout?
-
----
-# Generalized implementation of layout
-Details of most else, and two-pass process, handled in [View](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/View.java)
-and [ViewGroup](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewGroup.java)
-
-```java
-// Second: do the actual updating
-public void layout(Rectangle newBounds) {
-   onMeasure() // measure myself; this is recursive
-   onLayout()  // again; recursive. Makes use of calculated measurements
-}
-```
-
----
-.left-column[
-# Layout
-]
-.right-column[
-`onLayout()` is a callback triggered when a view's position is changed
-]
---
-.right-column[
-Gives the new position __relative__ to the parent
-]
---
-.right-column[
-Causes a layout call on all children (!)
-]
-
----
-# Reference implementation of onLayout
-
-```java
-// a layout class should override onLayout.
-protected void onLayout(boolean changed, int l, int t, int r, int b) {
-   // recursively calls layout on each child
-   foreach child {
-       LayoutParams lp = child.getLayoutParams();
-	   // calculate the width and height of the kids
-       int width = calculated width
-       int height = calculated height
-	   // calculate the position of kids
-       int childLeft = calculated position
-	   int childTop = calculated position
-       child.layout(childLeft, childTop, childLeft + width, childTop + height);
-   }
-}
-```
-???
-
-What might we use for left/top/width/height
-- in FrameLayout?
-- in LinearLayout?
-
----
-# How would LinearLayout calculate these?
-This is just setting the bounding box!
-What is child *n*'s position? Width? Height?
-- need to know we are vertical
-- can decide to set our width entirely based on kids
-- we get to decide position
-
----
-# Generalized implementation of onLayout
-
-When is this called?
-
-???
-- Whenever the interface is *damaged* (call `invalidate(true)` to force this)
-- Before the recursive `drawAll()` function we talked about last week. **Why?**
-
-
---
-- Whenever the interface is *damaged* (call `invalidate(true)` to force this)
-- Before the recursive `drawAll()` function we talked about last week. **Why?**
-
-
-???
-Because `drawAll()` needs to know where interactors are to properly *translate* and *clip* before calling `onDraw()` on each of them
-
---
-
- - Because `drawAll()` needs to know where interactors are to properly *translate* and *clip* before calling `onDraw()` on each of them
-
----
-# How does this relate to drawing?
-.left-column-half[
-<br>
-<br>
-
-<div class="mermaid">
-graph TD
-W(ViewGroup) --> V[ViewGroup]
-W --> V1[View]
-W --> V2[View]
-V --> V3[View]
-V --> V4[View]
-V --> V5[View]
-
-classDef blue font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-
-
-class W,V darkblue
-class V1,V2,V3,V4,V5 blue
-</div>
-]
-.right-column-half[
-*After* measuring & layout:
-
-__Tree traversal__ may be done on the layout hierarchy. Order depends on the specific layout algorithm (constraints don't require any!)
-]
-
---
-.right-column-half[
-Each view is responsible for drawing itself
-]
---
-.right-column-half[
-Siblings are drawn in the order that they appear
-]
----
-.left-column[
-# When to (re)Draw?
-]
-.right-column[
-Drawing is costly- (e.g. frame rates dropping for scrolling interactions)
-]
---
-.right-column[
-Often the screen is static
-]
---
-.right-column[
-We should *draw when we need to*
-]
-
---
-.right-column[
-Re-drawing "damaged" areas: call `invalidate()`
-]
----
-.left-column[
-# Summary of the Drawing Process
-]
-.right-column[
-1) Android calls measure on root node (view)
-```java
-// View specifies size of self
-protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec);
-```
-]
----
-.left-column[
-# Summary of the Drawing Process
-]
-.right-column[
-1) Android calls measure on root node (view)
-```java
-// View specifies size of self
-protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec);
-```
-2) Android calls layout on view
-```java
-// View specifies size and position of children
-protected void onLayout(boolean changed, int left, int top, int right, int bottom);
-```
-]
----
-.left-column[
-# Summary of the Drawing Process
-]
-.right-column[
-1) Android calls measure on root node (view)
-```java
-// View specifies size of self
-protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec);
-```
-2) Android calls layout on view
-```java
-// View specifies size and position of children
-protected void onLayout(boolean changed, int left, int top, int right, int bottom);
-```
-3) Android calls draw on view
-```java
-// Add the drawing happens
-protected void onDraw(Canvas canvas);
-```
-]
----
-# What of this do *you* need to do
-
-- If you are creating an interface, none of it
- - Just use the layouts
-- If you are creating a new type of layout class
- - It depends
- - If you can manage layout entirely by specifying
-   an interactor hierarchy with layout params that do what you want, you are golden (our assignment)
-- If you want to do something entirely new (lay out images in a spiral for example) you have to override `onLayout()` or `onMeasure()` or both (not assigned)
----
-# End of deck
-
----
-#Conceptual form of UI constraints
-
-``` java
-// this is 5 pixels to the right of that
-this.x = that.x + that.w + 5
-// this is centered
-this.x = that.x + that.w/2 - this.w/2
-// this is 10 larger than children
-this.w = 10 + max_child().x + max_child().w
-```
-
----
-# Frame layout -- actual implementation (slightly simplified)
-
-Simplified from
-FrameLayout
-[source
-code](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/FrameLayout.java),
-[View](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/View.java)
-and [ViewGroup](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewGroup.java)
-```java
-// this is implemented in view
-public void layout(int l, int t, int r, int b) {
-  // first make sure everything has a size (recursively)
-  onMeasure()
-  // then do layout
-  onLayout(changed, left, top, right, bottom)
-}
-
-// a layout class should override onLayout. In FrameLayout
-protected void onLayout(boolean changed, int l, int t, int r, int b) {
-   // recursively calls layout on each child
-   foreach child {
-       LayoutParams lp = child.getLayoutParams();
-       int width = child.getMeasuredWidth();
-       int height = child.getMeasuredHeight();
-       int childLeft = parentLeft + lp.leftPadding; // add padding
-       int childTop = parentTop + lp.topPadding; // add padding
-       child.layout(childLeft, childTop, childLeft + width, childTop + height);   // recursion through callback
-   }
-}
-```
-???
-Traverses the hierarchy many times over as implemented
-Can try to be more efficient or give more control... tradeoffs
diff --git a/slides/wk03/layout-ii.html b/slides/wk03/layout-ii.html
deleted file mode 100644
index 1945cd1068cf3855f404cb2951a27b4e1fe1db15..0000000000000000000000000000000000000000
--- a/slides/wk03/layout-ii.html
+++ /dev/null
@@ -1,641 +0,0 @@
----
-layout: presentation
-title: Layout II - More on Android Layout
-description: Layout II - the details
-class: middle, center, inverse
----
-
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/cnO00FYxqbWSpDfHzx2PM?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-
-# Layout II - More on Android Layout
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
-
----
-name: normal
-layout: true
-class:
-
----
-
-[//]: # (Outline Slide)
-# Today's goals
-- Announcements
-  - Peer reviews technically due Tuesday, please do them early
-  - Reflection due Wednesday (no late days)
-  - Layout 1-2 due Friday (no late days)
-- Specifying Layout in XML
-- Inflation
-- Laying out views programatically
-- Wednesday we will talk about the theory behind layout.
-
-
----
-# Why do we need layout?
-.left-column60[
-![:img Yahoo in 1996 with no layout other than centering, 40%](http://blogoscoped.com/files/yahoo-1996-large.png)&nbsp;&nbsp;![:img screen capture of modern yahoo  with blocks laying out different news articles, 50%](img/layout-ii/modern-yahoo.png)
-]
-
-.right-column30[
-- Visual appeal
-- Organization (think about Properties of People Design tip #10: Use well-tested visual grouping strategies)
-]
-
----
-# Reminder: User Interfaces on Android
-.left-column-half[
-- Views
-  - Base class for __all__ UI elements
-  - Interactors (e.g buttons, labels, image views, etc)
-- ViewGroups
-  - Encapsulates one or more views (e.g. Android Components, **Layouts**)
-  - Can define specific **layout** properties
-
- We will use the word *Components* to include both layout components and interactors (Views) since you
- don't generally "interact" with layouts
-]
-.right-column-half[
-<div class="mermaid">
-graph TD
-W(ViewGroup) --> V[ViewGroup]
-W --> V1[View]
-W --> V2[View]
-V --> V3[View]
-V --> V4[View]
-V --> V5[View]
-
-classDef blue font-size:14pt,text-align:center
-classDef darkblue font-size:14pt,text-align:center
-
-class W,V darkblue
-class V1,V2,V3,V4,V5 blue
-</div>
-
-]
-
----
-# Layout in Android
-Where we left off: "Many layout and other attributes for components. You should explore!"
-
-![:img Picture of the whole android layout interface showing the possible components that can be added; the component tree (interactor hierarchy; and the attributes for the Save Button; which is selected, 90%](img/layout-ii/design-view.png)
-
-???
-Talk about how there's many layout and other attributes for components that they should explore!
-
----
-# Layout Types in Android
-
-- [FrameLayout](https://developer.android.com/reference/android/component/FrameLayout.html) - good for position views on
-top of each other, or encapsulating a bunch of views. Used in [Doodle](/assignments/doodle).
-
-- [__LinearLayout__](https://developer.android.com/reference/android/component/LinearLayout.html) - places views one after
-the other in order according to the orientation (Horizontal or Vertical). Used in [Layout](/assignments/layout).
-
-- [__RelativeLayout__](https://developer.android.com/reference/android/widget/RelativeLayout) - Positions of the children
-are desribed in relation to one another
-
-- [__TableLayout__](https://developer.android.com/reference/android/component/TableLayout.html) - Rows and columns style
-way of declaring a layout
-
-- [GridLayout](https://developer.android.com/reference/android/component/GridLayout.html) - Uses
-an [*adapter*](https://developer.android.com/reference/android/interactor/Adapter.html) that provides items to display in
-a grid
-
-- [ConstraintLayout](https://developer.android.com/reference/android/component/ConstraintLayout.html) Let's you use constraints to specify how things should lay out. Used in [Layout](/assignments/layout).
-
-
-- More on https://developer.android.com/guide/topics/ui/declaring-layout.html
-
-???
-
-We'll talk more about Constraint layouts later
-
-
----
-.left-column[
-## Example: Linear Layout of Email
-
-[Linear Layout Tutorial](https://developer.android.com/guide/topics/ui/layout/linear)
-
-![:img Linear layout of an email message with to line subject line and message arranged vertically, 100%](img/layout-ii/linearlayout.png)
-
-]
-
-.right-column[
-
-```xml
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp"
-    android:orientation="vertical" &gt;
-  &lt;EditText
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/to" /&gt;
-  &lt;EditText
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/subject" /&gt;
-  &lt;EditText
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:gravity="top"
-        android:hint="@string/message" /&gt;
-  &lt;Button
-        android:layout_width="100dp"
-        android:layout_height="wrap_content"
-        android:layout_gravity="right"
-        android:text="@string/send" /&gt;
-&lt;/LinearLayout&gt;
-```
-
-]
-
-
-???
-Can implement all of the things we discussed earlier using constraints
-
-note that they can be hard to debug?
-
-Discussion of specific inheritance hierarchy for constraints
-
-- Only have to write once when we use classes properly
-- can mix and match things
-
-
-
----
-# Layout in Android
-- The Layout XML View completely specifies what was in the GUI (and vice versa)
-- Get to it by clicking 'Text' (next to 'Design')
-
-.left-column-half[
-![:img Picture of the  android layout interface showing the xml which completely specifies what was in the other image,45%](img/layout-ii/text-view.png)&nbsp;
-![:img A simple layout on an android watch with a textview and two buttons (save and discard),50%](img/layout-ii/watch.png)
-]
-
-.right-column-half[
-
-```xml
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;-...-&gt;
-&lt;TextView
-&lt;-...-&gt;
-&lt;LinearLayout
-   &lt;-...-&gt;
-   &lt;Button
-      android:id="@+id/button"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:text="@string/Save" /&gt;
-      &lt;-...-&gt;
-&lt;/LinearLayout&gt;
-```
-
-]
-
-???
-What examples do we have here?
-- Layout container (linearlayout)
-- Spacer
-- springiness
-- struts
-- constraints
-
----
-# More about XML and Android
-.left-column[
-![:img Picture of the android ide file system with an xml file inside of res highlighted, 70%](img/layout-ii/xml-files.png)
-]
-.right-column[
-
-Android has XML, where all sorts of static properties can be specified
-
-Every Android app has a `layout` directory and a `values` directory and several others. We'll use these in this assignment
-
-In XML you can set variables that we can access later in XML or code
-- In XML access a value (such as  `vMargin` from our assignment) using `@(file name)/(value name)`
-, where the file name is a file somewhere in `res` and the value name is an xml value found in that file.  i.e., for `vMargin`, you can use  `"@dimen/vMargin"`
-- In code, you refer to that value by `R.(file name).(value name)`
-
-]
-
----
-# The importance of ID
-
-.left-column-half[
-In `MainActivity.java` for Layout
-```java
-// Set window contents based on selected item.
-*switch (item.getItemId()) {
-*  case R.id.action_part_1:
-*    setCurrentTabId(R.id.action_part_1);
-     contents.addView(getLayoutInflater().inflate(R.layout.part1, null), PARAMS); // params here is a set of layout paramaters for this view
-     return true;
-*  case R.id.action_part_2:
-*    setCurrentTabId(R.id.action_part_2);
-     contents.addView(new Part2View(this, getImageStrings()), PARAMS);
-     return true;
-     //...
-}
-```
-]
-.right-column-half[
-- Set the IDs in your layout XML when you create things!
-- Use good ID names (like variables in programming)
-- Access it programmatically using `[Component].getId()` and `[Component].setID()`.
-- Access all Ids using `R.id.[ID]`
-- We use this to implement the tab navbar in Layout
-
-![:img Picture of the android layout toolbar, 50%](img/layout-ii/layouttoolbar.png)
-
-]
----
-# Lots to unpack here
-
-`PARAMS` is a class constant added to `MainActivity` to hold the parameters for the layout:
-```java
-*public static final RelativeLayout.LayoutParams PARAMS =
-*            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
-*                                            RelativeLayout.LayoutParams.MATCH_PARENT);
-...
-switch (item.getItemId()) { // Set window contents based on selected item.
-  case R.id.action_part_1:
-    setCurrentTabId(R.id.action_part_1);
-*   contents.addView(getLayoutInflater().inflate(R.layout.part1, null), PARAMS);
-    return true;
-  case R.id.action_part_2:
-    setCurrentTabId(R.id.action_part_2);
-*   contents.addView(new Part2View(this, getImageStrings()), PARAMS);
-    return true;
-    //...
-}
-```
----
-# PARAMS
-
-```java
-public static final RelativeLayout.LayoutParams PARAMS =
-            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
-                                            RelativeLayout.LayoutParams.MATCH_PARENT);
-```
-.left-column40[
-- There are a lot of options for layout parameters, study the documentation! [Here](https://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams) is the documentation for the `RelativeLayout` `LayoutParams`
-- Width and height are often set as either `MATCH_PARENT` or `WRAP_CONTENT` (could be used to wrap the bounding box wrap around the text in your `TextView` in Doodle)
-]
-.right-column-half[
-![:img Four different permuations of the MATCH_PARENT or WRAP_CONTENT layout parameters, 100%](img/layout-ii/layoutparams.png)
-
-]
----
-# Two ways to create Interactors
-
-- Specify elements in WYSIWYG* editor, which will automatically create and initialize the objects via XML.
-  - You could also hand type the XML the editor would produce.
-  - Done in `Doodler#onCreate(Bundle)` - the line `setContentView(R.layout.activity_main);`
-  - Will be done in Part 1, Part 3, and Part 4 for Layout
-
-```java
-*   contents.addView(getLayoutInflater().inflate(R.layout.part1, null), PARAMS);
-```
-
-- Instantiate UI classes at runtime.
-  - We did this creating new views in Doodle at runtime!
-  - Will do this in Part 2, Part 3, and Part 4 for Layout
-
-```java
-*   contents.addView(new Part2View(this, getImageStrings()), PARAMS);
-```
-.footnote[\*WYSIWYG = What You See Is What You Get]
----
-# Where are these views getting added?
-
-Looking at  `MainActivity#onCreate(Bundle)` we see `setContentView(R.layout.activity_main);`
-
-This statement loads `activity_main.xml`.
-
-Looking deeper we see that contains a `RelativeLayout`
-which contains a `ScrollView` and the `BottomNavigationView`.
-
-```
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ... >
-    <ScrollView
-       android:id="@+id/tab_contents" >
-     </ScrollView>
-
-    <android.support.design.widget.BottomNavigationView
-      android:id="@+id/bottom_nav"
-      ...  />
-
-</RelativeLayout>
-```
-
----
-
-# Using that id
-
-So we find the `contents` (a `ScrollView`) by that unique id
-
-`ScrollView contents = findViewById(R.id.tab_contents);`
-
----
-# Runtime Instantiation *FROM XML*
-
-In part 1 we instantiate (create) `part1.xml` into the hierarchy of view which will be the children of
-the `ScrollView contents` using **Inflation**.
-
-We use a [LayoutInflater](https://developer.android.com/reference/android/view/LayoutInflater)
-pass it in the id of the xml we're interested in (`R.layout.part1`). Once inflated, we add
-it to the ScrollView.
-
-```java
-*   contents.addView(getLayoutInflater().inflate(R.layout.part1, null), PARAMS);
-```
-
-To do Inflation in your code you need to `import [package].R;`
-
----
-# Programatic creation of the hierarchy
-
-In part 2, we recreate his hierarchy programatically by instantiating an `Part2View` object and adding
-that to the view.
-
-```java
-*   contents.addView(new Part2View(this, getImageStrings()), PARAMS);
-```
-
-Just like with Part 1, we need to create a `ConstraintLayout` then add that to the ScrollView.
-
-We did that for you... Your job is to add `ImageView` objects to the `ConstraintLayout`.
-
-Hint: create and use `ConstraintLayout.LayoutParams` for specifying the constraints on the `ImageView`
-objects you create. You'll probably want to look at the [documentation](https://developer.android.com/reference/android/support/constraint/ConstraintLayout.LayoutParams)
-
----
-# Constraint Layout in Android
-.left-column-half[
-
-![:img A simple layout on an android watch with a textview and two
-buttons (save and discard) and the constraints highlighted,90%](img/layout-ii/constraint-editor.png)
-]
-.right-column-half[
-This assignment also uses **Constraints** (the `ConstraintLayout`)
-
-You can see little lines connecting the `textView` to its container and it's sibling (the `linearLayout`).
-- This specifies how it's attached (can change type by clicking on right)
-- If you were to change the interface (e.g. a different sized screen), it would stay attached and keep filling the space
-- All ends up in XML you can explore too
-]
-
----
-# Constraint Layout in Android
-.left-column-half[
-
-![:img A simple layout on an android phone instead of a watch with a textview and two buttons (save and discard),100%](img/layout-ii/explore-devices.png)
-]
-.right-column-half[
-You  can test this:  modify the aspect ratio of your display, and flip it to horizontal to test things
-]
-
-???
-Demonstration: consider demoing this interface live
-PRINT THIS LIST
-- Show dragging things to create layout
-- Show different size and orientation phones
-- Show editing attributes
-- Show clicking on constraints in box to change type
-- Show simple interface hierarchy
-- Show simplifying xml
-- Show changing button names/ids
-
----
-# What are  Constraints?
-.left-column[
-![:img A simple layout on an android watch with a textview and two
-buttons (save and discard) and the constraints highlighted,110%](img/layout-ii/watch3.png)]
-.right-column[
-
-- Very general
-- Can reproduce most other things
-- Can operate on multiple axes
-- Can enhance other layout options
-
-]
-
----
-
-# What are  Constraints?
-.left-column[
-![:img A simple layout on an android watch with a textview and two
-buttons (save and discard) and the constraints highlighted,110%](img/layout-ii/watch3.png)]
-
-.right-column[
-
-- What do you think this does? `app:layout_constraintBottom_toTopOf="@+id/linearLayout"`
-- And this? `app:layout_constraintEnd_toEndOf="parent"`
-- We  also use `Start_tStartOf` and 'Top_toTopOf` to create this
-
-```xml
-&lt;TextView
-  android:id="@+id/textView"
-  android:layout_width="0dp"
-  android:layout_height="0dp"
-  android:text="@string/sample_text"
-  app:layout_constraintBottom_toTopOf="@+id/linearLayout"
-  app:layout_constraintEnd_toEndOf="parent"
-  app:layout_constraintStart_toStartOf="parent"
-  app:layout_constraintTop_toTopOf="parent"
-  android:layout_marginStart="8dp"
-  android:layout_marginTop="8dp"
-  android:layout_marginEnd="8dp"
-  android:layout_marginBottom="8dp"/&gt;
-
-```
-]
----
-.left-column[
-## Constraints in Android
-
-![:img picture of attributes window showing controls for
-constraint-based layout including five types of elements, 100%](img/layout-ii/constraints.png)]
-
-.right-column[
-[Docs](https://developer.android.com/training/constraint-layout/): limited set of constraints
-- 1 Size ratio
-- 2 Delete constraint (not a constraint, just removes them)
-- 3 Height/width mode (3 main types):
- - Wrap constraint ![:img wrap symbol >>>, 5%](img/layout-ii/wrap.png)
- - Fixed size ![:img fixed symbol I--I, 5%](img/layout-ii/fixed.png)
- - Match Constraint ![:img match symbol IvvvI, 5%](img/layout-ii/match.png)
-- 4 Margins
-- 5 Constraint bias (essentially weights on competing constraints)
-
-Range of attachment options (e.g. button sides, corners)
-
-Worth getting to know additional abstractions (groups; guidelines;
-barriers; chains)
-]
-???
-
--bias lets us create something that is 2-3 of the way over rather than
-centered
-
-go back to android to demo again
----
-# Powerful option
-
-Can do everything we can do with springs, struts, and linear layouts
-
-Declare relationships (.red[what] should be true)
-
-System automatically maintains relationships under change (.red[how])
----
-# Powerful option
-
-Can do everything we can do with springs, struts, and linear layouts
-
-Declare relationships (what should be true)
-
-- This should be centered in that
-
-- This should be 12 pixels to the right of that
-
-- Parent should be 5 pixels larger than child
-
-System automatically maintains relationships under change (how)
----
-# Powerful option
-Can do everything we can do with springs, struts, and linear layouts
-
-Declare relationships (what should be true)
-
-System automatically maintains relationships under change (how)
-
-Too good to be true?
-- Unsolvable for arbitrary things
-- Works really well for a limited set
-???
-a good set for ui programming
-xx need to make sure I know why it is hard for arbitrary things
-
----
-# Note that these are one-way constraints
-
-You can change the right side, and it will update the left side (not
-the reverse)
-
-Can be very inefficient  .jax[$$O(2^n)$$]
-
-But highly efficient incremental update algorithms exist
-???
-
-Only have to update things that might change
-
-Hudson's work on this was seminal
-
-can have a Directed Acyclic Graph (DAG) but not a cycle (thus, a tree)
-hard to guard against cycles
-
----
-# Layout Assignment
-.left-column[
-![:img Part1: diagram of images evenly spaced stacked vertically, 100%](img/layout-ii/part1-diagram.png)
-]
-
-.right-column[
-Part 1 is about basic reactive layout using XML and constraints
-- We will use constraints for the left/right/top/bottom of each image
-- `scaleType`, `width` and `height` will be provided for you
-
-There are also things we specify without constraints: margins, for example.
-- Android best practice is to use a variable for this
-- How do we do that in XML?
-
-Note: the image on the left is what we are calling a __Layout Wireframe__
-]
-
----
-# Layout Assignment
-.left-column[
-![:img Part1: diagram of images evenly spaced stacked vertically, 100%](img/layout-ii/part1-diagram.png)
-]
-
-.right-column[
-Part 1 is about basic reactive layout using XML and constraints
-
-Part 2 asks you to reproduce this in code
-- Not all that different from creating views in Doodle
-- What are the key steps here?
-]
-???
-instantiate
-add to the hierarchy
-
-Just now we will also add layout containers
----
-# Layout Assignment
-.left-column[
-![:img Part1: diagram of images evenly spaced stacked vertically, 100%](img/layout-ii/part1-diagram.png)
-]
-
-.right-column[
-Part 1 is about basic reactive layout using XML and constraints
-
-Part 2 asks you to reproduce this in code
-- Not all that different from creating views in Doodle
-- What are the key steps here?
-  - instantiate (create an interactor)
-  - add to the hierarchy
-  - just now we will also add layout containers
-]
-
----
-# Layout Assignment
-.left-column[
-![:img Part4: Spot the heron low fidelity prototype, 40%](img/layout-ii/spottheheron-prototype.png) ![:img Part4: Spot the heron layout wireframe, 50%](img/layout-ii/spottheheron-wireframe.png)
-
-]
-
-.right-column[
-Part 3 is about using both XML and programatic means to create a Pinterest style Layout
-
-Part 4 is about designing and creating your own mock up of another app layout
-- Make sure you do the design first
-- Create your Layout Wireframe (see left)
-- Create your interactor hierarchy
-]
-
----
-# Constraints: A General and Powerful Approach
-
-General mechanism for establishing and maintaining relationships between things
-- Layout is one use
-- Several other uses in UI
- - Connection of application to UI, e.g. deriving appearance from data
- - Multiple views of same data
- - Automated semantic feedback
- - Automatic arrangement of lines (Snapping in drawing programs)
-
-
----
-
-# Practice with the [Layout Lab](https://github.com/harshitha-akkaraju/layoutlab)
-
-- Clone [https://github.com/harshitha-akkaraju/layoutlab.git](https://github.com/harshitha-akkaraju/layoutlab.git)
-- Open it up in Android studio
-- Switch between the challenges based in the `AndroidManifest.xml`
-
-| Create this layout using XML | Create this layout programatically |
-| :-- | :-- |
-| ![:img Challenge for buttons in XML, 30%](https://github.com/harshitha-akkaraju/layoutlab/raw/master/img/xml-layout.png) | ![:img Challenge with buttons to be added programatically, 30%](https://github.com/harshitha-akkaraju/layoutlab/raw/master/img/programmatic-layout.png)|
diff --git a/slides/wk04/340AccessibiltyScanner.pdf b/slides/wk04/340AccessibiltyScanner.pdf
deleted file mode 100644
index 12d1e850100a27121cf1ec26b917e66545bc79fb..0000000000000000000000000000000000000000
Binary files a/slides/wk04/340AccessibiltyScanner.pdf and /dev/null differ
diff --git a/slides/wk04/340AccessibiltyScanner.pptx b/slides/wk04/340AccessibiltyScanner.pptx
deleted file mode 100644
index 349f162034811496921188fb0e680c38c7f1b6fe..0000000000000000000000000000000000000000
Binary files a/slides/wk04/340AccessibiltyScanner.pptx and /dev/null differ
diff --git a/slides/wk04/accessibility-and-inclusive-design.pdf b/slides/wk04/accessibility-and-inclusive-design.pdf
deleted file mode 100644
index 743b2c59227b9aaf00d299c8970bf1d362c302a5..0000000000000000000000000000000000000000
Binary files a/slides/wk04/accessibility-and-inclusive-design.pdf and /dev/null differ
diff --git a/slides/wk04/accessibility.html b/slides/wk04/accessibility.html
deleted file mode 100644
index df690dde43c9586011fd0997f35b3573d4883921..0000000000000000000000000000000000000000
--- a/slides/wk04/accessibility.html
+++ /dev/null
@@ -1,113 +0,0 @@
----
-layout: presentation
-title: Accessibility --Week 4, Monday--
-description: Accessibility
-class: middle, center, inverse
----
-[//]: # (Outline Slide)
-.left-column[
-# Today's goals
-]
-.right-column[
-
-Reminders
-  - Layout Part 3-5 due tomorrow at 10pm
-    - Remember you needed to accept [as2-layout-part-3-4](https://gitgrade.cs.washington.edu/student/assignment/120) first!
-    - Remember git add/commit/push __then go to [GitGrade to turn in](https://gitgrade.cs.washington.edu/student/assignment/120/turnin)__
-  - Accessiblity is now open!
-    - Remember to [accept]() the assignment through GitGrade
-
-Accessibility in practice!
-
-Intro to the Accessibility assignment
-]
----
-
-# Screen Reader Accessibility on Android
-
-Venkatesh Potluri & Anne Ross
-
-CSE 340, {{site.quarter}}
-
----
-name: normal
-layout: true
-class:
-
----
-# Venkatesh Research Interests
-
-Accessible programming tools for blind software developers
-- A Multi Modal Approach for Blind and Visually Impaired Developers to Edit Webpage Designs
-- CodeTalk (aka.ms/codetalk)
-
-Improving screen reader interactions
-- investigating nonvisual interaction techniques on laptop touchpads
-- QBit: an exploratory tangible user interface to support nonlinear nonvisual window switching
-
----
-# A Multimodal Approach for Blind and Visually Impaired Developers to Edit Webpage Designs
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/NbkiVG9Mi9s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-
----
-# Today’s focus
-
-.left-column-half[
-Screen readers.
-
-What are screen readers?
-
-Different types of screen readers.
-- JAWS for Windows
-- NonVisual Desktop Access
-- VoiceOver
-- TalkBack
-- ChromeVox
-
-]
-.right-column-half[
-![:img JAWS logo. A blue shark; with talking rings over blue text that reads JAWS.,30%](img/accessibility/JAWS_logo.png) ![:img NVAccess logo. geometric shapes intermix in orange blues and purple. text reads; NVAccess empowering lives through non-visual access to technology,50%](img/accessibility/NVDA_logo.png)
-
-*Where can you find one?*
-Different devices used to interact with screen readers.
-]
-
----
-# Building for screen readers
-
-Screen readers get underlying information about controls from operating systems.
-- this information is provided by a developer.
-- Accessibility APIs provide the information to a screen reader.
-- Screen readers provide this information visually, through audio or in Braille to users.
-
-.left-column-half[
-![:img Diagram showing the client (screen reader) making a call to the accessibility API; which passes along the request to the provider (browser); which checks the content in the web document; which sends the information back up the chain, 100%](img/accessibility/ScreenReaderIllustration.png)
-]
-.right-column-half[
-Illustrative example of how screen readers get information. Source: semantics to screen readers -- a list apart.
-
-*Do all developers provide this information?*
-]
-
----
-# App Health Indicators reported by Google's Accessibility Scanner
-
-| Error                | Description                                                                                                                   |
-|----------------------|-------------------------------------------------------------------------------------------------------------------------------|
-| Clickable Items      | Overlapping clickable items                                                                                                   |
-| Editable Image Label | TextView has a content description. This might interfere with a screen reader’s ability to read the content of the text field |
-| Image Contrast       | Low contrast in image or icon                                                                                                 |
-| Item Descriptions    | Items with identical speakable text                                                                                           |
-| Item Label           | Missing element label                                                                                                         |
-| Item Type Label      | Item label ends with type, e.g., “Play Button.” TalkBack automatically announces item type, so information is redundant       |
-| Link                 | URL in link may be invalid                                                                                                    |
-| Text Contrast        | Low text contrast between foreground and background                                                                           |
-| Touch Target         | Item is too small|
-
-
----
-# Demo
-
----
-# Accessbility assignment
diff --git a/slides/wk04/events.html b/slides/wk04/events.html
deleted file mode 100644
index 5be04a5d53d9461f12bfe56bd78875547a4e476b..0000000000000000000000000000000000000000
--- a/slides/wk04/events.html
+++ /dev/null
@@ -1,721 +0,0 @@
----
-layout: presentation
-title: Event Handling I -- Callbacks, Model View Controller, and Events
-description: Describes input devices, abstractions around events, Listeners, Event Delivery
-class: center, middle, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Write down three things that you reacted to this week
-
-What are some examples?
-
---
-
-This is event-driven interaction
-
---
-
-We will be studying the theory and practice of event driven interactions in Android
-
-
-
----
-# Event Handling I - Callbacks, Model View Controller, and Events
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
-
-
----
-layout: false
-
-# Administrivia
-- Layout part 3-5
-   - Due date TONIGHT at 10pm
-   - Reflection is due with code.
-   - Lock date (aka when GitGrade and Gradescope will lock) TOMORROW at 10pm
-- Assesssments
-   - [Post Layout Quiz](https://canvas.uw.edu/courses/1370612/quizzes/1236290) it out due Sunday.
-   - Will likely change the format for the Layout Examlet.
-- Accessiblity is out
-- Mid quarter evals are out
-
-
----
-[//]: # (Outline Slide)
-# Today's goals
-
-- What is a callback?
-- What is an event?
-- What is a Model View Controller?
-- How is this all related? 
----
-
-# Java 102: `Comparator&lt;E&gt;`
-
-Recall that if you have an array of items that have a "natural sorting order"
-such as:
-
-```java
-String[] names = {"Emma", "Ncuti", "Tina", "Idris", "Awkwafina"};
-```
-
-We can sort those things using `Arrays.sort`
-
-```java
-Arrays.sort(names);
-System.out.println(Arrays.toString(names));
-```
-
-Which will output:
-
-```
-[Awkwafina, Emma, Idris, Ncuti, Tina]
-```
-
----
-
-# Java 102: `Comparator&lt;E&gt;`
-
-What if you want to create a new class: [Person](person.zip)
-
-```java
-public class Person {
-
-   private String mFirstName;
-   private String mLastName;
-   private int mAge;
-
-   public Person(String firstName, String lastName, int age) {
-      mFirstName = firstName;
-      mLastName = lastName;
-      mAge = age;
-   }
-
-   public String toString() { return mFirstName + " " + mLastName + " - age " + mAge; }
-```
-
-
----
-
-# Java 102: `Comparator&lt;E&gt;`
-
-If we had an array of these `Person` objects
-
-```
-Person[] people = {new Person("Emma", "Watson", 30), new Person("Ncuti", "Gatwa", 27), ... }
-```
-
-How would we sort that array using `Arrays.sort`?
-
---
-
-```java
-public class Person implements Comparable<Person> {
-
-  ...
-  public int compareTo(Person other) {
-    // what would go in here?!?!?!?!?
-  }
-}
-```
-
-Should we choose based on the first name? Last name? age?
-
----
-
-# Java 102: `Comparator&lt;E&gt;`
-
-There's another way to set up sorting: by creating an object that extends from
-[`Comparator&lt;E&gt;`](https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/Comparator.html)
-
-A subclass of `Comparator&lt;E&gt;` must implement one method:
-
-```java
-public int compare​(E object1, E object2)	 // Compares its two arguments for order.
-```
-`compare` compare returns
-
-* -1 if object1 is "less than" object2
-* 0 if object1 and object2 are equivalent
-* 1 if object1 is "greater than" object 2
-
----
-# Java 102: `Comparator&lt;E&gt;`
-
-Example:
-
-```
-// this class is defined in PersonLastNameComparator.java
-public class PersonLastNameComparator implements Comparator<Person> {
-
-   @Override
-   public int compare(Person p1, Person p2) {
-     return p1.getLastName().compareTo(p2.getLastName());
-   }
-}
-```
-
-Then we could do the folowing to sort the array by the last name.
-
-
-```java
-Arrays.sort(people, new PersonLastNameComparator());
-```
-
----
-# Callbacks
-
-The model used for implementing Comparators is consider a **Callback**
-
-From [Wikipedia](https://en.wikipedia.org/wiki/Callback_(computer_programming)):
-
-> A callback ... is any executable code that is passed as an argument to other code;
-> that other code is expected to call back (execute) the argument at a given time.
-
----
-# Classes, Inner classes, and Anonymous classes.
-
-There are three ways to implement callbacks in Java
-
-1. Creating a class in a separate file (like `PersonLastNameComparator`)
-2. Creating an inner class (like `Person.FirstNameComparator`)
-3. Creating an anonymous class (like the following)
-
-```java
-Arrays.sort(people, new Comparator<Person>() {
-   @Override
-   public int compare(Person p1, Person p2) {
-
-      return p1.getAge() - p2.getAge();
-   }
-});
-```
----
-# Classes, Inner classes, and Anonymous classes.
-
-There are <del>three</del> four ways to implement callbacks in Java
-
-1. Creating a class in a separate file (like `PersonLastNameComparator`)
-2. Creating an inner class (like `Person.FirstNameComparator`)
-3. Creating an anonymous class (like the following)
-4. Using a lambda
-
-```java
-Arrays.sort(people, (Person p1, Person p2)->{return p1.getAge() - p2.getAge();});
-```
-
----
-# Callback Exercise
-
-Note: this is a breakout room exercise
-
-- Please participate!
-- TAs will help moderate the activity.
-
----
-
-# Callback Exercise
-
-1. Imagine we're designing a Zoo. Each group is going to design a different zoo enclosure
-2. In your rooms
-  - Agree on and write down the name of your enclosure (what animal you contain)
-  - Determine the type of animal in this enclosure.
-  - Decide what sound will emanate from this enclosure when you get a “makeNoise for some number of seconds” request
-  - Decide who will turn their mic on in the main room to make the sound.
-  - Decide who will type the name of your enclosure in the chat upon your return
-3. When you come back into the main room
-  - One person type the name of your enclosure in the chat.
-4. Wait until the instructor calls your enclosure name, then make the sound for the requested number of seconds.
-
----
-# Callback Exercise
-
-As code, I've asked each enclosure to implement the following interface to define the behavior. (Note:
-Listeners are a type of event handling callback in Java/Android)
-
-  ```java
-  public interface EnclosureListener {
-      public void makeNoise(int numSeconds);
-  }
-  ```
-
-For example:
-
-  ```java
-  public class LionCage implements EnclosureListener {
-    ...
-
-    public void makeNoise(int numSeconds) {
-      // make the animal noise for the given number of seconds
-    }
-  }
-  ```
-
----
-# Callback Exercise
-
-Further, by telling me the name of your enclosure you're registering your listener WITH me, the "zookeeper"
-
-  ```java
-  public class LionCage implements EnclosureListener {
-    ...
-
-    public void makeNoise(int numSeconds) {
-      // make the animal noise for the given number of seconds
-    }
-
-    public void onCreate(Bundle savedInstanceState) {
-      ...
-      zookeeper.addEnclosureListener(this);
-    }
-  }
-  ```
----
-# Callback Exercise
-
-  ```java
-  public class Zookeeper {
-    // The zookeeper keeps a list of all EnclosureListeners that were registered,
-    private List<EnclosureListeners> mEnclosureListeners;
-
-    public final void addEnclosureListener(EnclosureListener listener) {
-        if (listener == null) {
-            throw new IllegalArgumentException("enclosureListener should never be null");
-        }
-        mEnclosureListeners.add(listener);
-    }
-
-    // And can call on them whenever they need with the right amount of time.
-    public void cacophony(int seconds)
-      for (EnclosureListener listener : mEnclosureListeners) {
-          listener->makeNoise(seconds);
-      }
-    }
-  }
-  ```
----
-# Callback Exercise
-
-- The Zookeeper has NO idea what each enclosure will do until the listener is registered and called.
-- Each enclosure separately defines how it will react to a makeNoise event.
-- The "contract" between the zookeeper and the enclosures is the defined EnclosureListener interface.
-
----
-# Callbacks in Java
-
-- At the time Java has created the toolkit developers had *no* idea how every app would want to respond to events
-- The toolkit has pre-defined interfaces so apps or components can respond to events such as clicks or touches. For example:
-   - The `View` class defines the following Listeners as inner classes:
-      - `View.OnClickListener`
-      - `View.OnLongClickListener`
-      - `View.OnFocusChangeListener`
-      - `View.OnKeyListener`
-      - `View.OnTouchListener`  (this is used in ColorPicker and Menu by subclassing AppCompatImageView)
-      - `View.OnCreateContextMenuListener`
-
-We will come back to these in our next class.
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Model View Controller, Input Devices and Events
----
-name: normal
-layout: true
-class:
----
-# How do you think an app responds to user input?
-
-.left-column30[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-
-  class ap,w,o,h,hlt,t yellow
-</div>
-]
-.right-column60[
-What happens at each level of the hardware stack?
-]
----
-# How do you think an app responds to user input?
-
-.left-column30[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-
-  class ap,w,o,h,hlt,t yellow
-</div>
-]
-.right-column60[
-What happens at each level of the hardware stack?
-- Hardware level: electronics to sense circuits closing or movement
-  - Difference between hardware (Event vs sampled)
-  - Sensor based input
-- OS: "Interrupts" that tell the Window system something happened
-   - Logical device abstraction and types of devices
-- Windows system: Tells which window received the input
-- Toolkit: defines how the app developer will use these events
-  - Events as an abstraction
-- High level tools: Defines standard components that react to events in a certain way
-- Application Program: Can use standard components OR create new interactions
-  - May define separate interaction techniques
-]
----
-# Responding to Users: Model View Controller (MVC)
-
-.left-column30[
-<br>
-<div class="mermaid">
-graph TD
-View(View * ) --1-Input--> Presenter(Controller)
-Presenter --5-Output --> View
-Presenter --2-Updates-->Model(0,3-Model)
-Model --4-State Change-->Presenter
-
-classDef edgeLabel font-size:14pt
-classDef blue font-size:14pt,text-align:center
-classDef bluegreen font-size:14pt,text-align:center
-
-class View,Presenter blue
-class User,Model bluegreen
-</div>
-]
-
-.right-column60[
-Suppose this is a digital phone app
-
-<sup>*</sup> User interacts through View (s) (the interactor hierarchy)<br>
-<sup>0</sup> Model State: _Current person:_ Lauren; _Lock state:_ closed<br>
-<sup>1</sup> Password entry. Trigger _Event Handling_<br>
-<sup>2</sup> Change state: App unlocked<br>
-<sup>3</sup> Model State: _Current person:_ Lauren; _Lock state:_ open<br>
-<sup>4</sup> Change state of View(s)<br>
-<sup>5</sup> Trigger _Redraw_ and show
-
-]
-???
-Sketch out key concepts
-- Input -- we need to know when people are doing things. This needs to be event driven.
-- Output -- we need to show people feedback. This cannot ‘take over’ i.e. it needs to be multi threaded
-- Back end -- we need to be able to talk to the application.
-- State machine -- we need to keep track of state.
-- What don’t we need? We don’t need to know about the rest of the UI, probably, etc etc
-- Model View Controller -- this works within components (draw diagram), but also represents the overall structure (ideally) of a whole user interface
-- NOTE: Be careful to write any new vocabulary words on the board and define as they come up.
-
----
-# Responding to Users: Model View Controller (MVC)
-
-.left-column30[
-<br>
-<div class="mermaid">
-graph TD
-View(View * ) --1-Input--> Presenter(Controller)
-Presenter --5-Output --> View
-Presenter --2-Updates-->Model(0,3-Model)
-Model --4-State Change-->Presenter
-
-classDef edgeLabel font-size:14pt
-classDef blue font-size:14pt,text-align:center
-classDef bluegreen font-size:14pt,text-align:center
-
-class View,Presenter blue
-class User,Model bluegreen
-</div>
-]
-
-.right-column60[
-Suppose this is a fancy speech-recognition based digital door lock instead
-
-
-<sup>*</sup> User interacts through View (s) (the interactor hierarchy)<br>
-<sup>0</sup> Model State: _Current person:_ Lauren; _Lock state:_ closed<br>
-<sup>1</sup> Password entry. Trigger _Event Handling_<br>
-<sup>2</sup> Change person to Lauren; App unlocked<br>
-<sup>3</sup> Model State: _Current person:_ Lauren; _Lock state:_ open<br>
-<sup>4</sup> Change state of View(s)<br>
-<sup>5</sup> Trigger _Redraw_ and show
-
-]
-???
-Sketch out key concepts
-- Input -- we need to know when people are doing things. This needs to be event driven.
-- Output -- we need to show people feedback. This cannot ‘take over’ i.e. it needs to be multi threaded
-- Back end -- we need to be able to talk to the application.
-- State machine -- we need to keep track of state.
-- What don’t we need? We don’t need to know about the rest of the UI, probably, etc etc
-- Model View Controller -- this works within components (draw diagram), but also represents the overall structure (ideally) of a whole user interface
-- NOTE: Be careful to write any new vocabulary words on the board and define as they come up.
-
----
-# Model View Controller (MVC)
-
-From [Wikipedia]()
-
->MVC is a software design pattern commonly used for
-developing user interfaces which divides the related program logic into three interconnected elements.
-
-- *Model* - a representation of the state of your application
-- *View* - a visual representation presented to the user
-- *Controller* - communicates between the model and the view
-  - Handles changing the model based on user input
-  - Retrieves information from the model to display on the view
-
---
-MVC exists within each View as well as for overall interface
-
----
-# MVC in Android
-
-.left-column30[
-
-<br>
-<div class="mermaid">
-graph TD
-View(Passive View) --user events--> Presenter(Presenter: <BR>Supervising Controller)
-Presenter --updates view--> View
-Presenter --updates model--> Model(Model)
-Model --state-change events--> Presenter
-
-classDef edgeLabel font-size:14pt
-classDef blue font-size:14pt,text-align:center
-classDef bluegreen font-size:14pt,text-align:center
-
-class View,Presenter blue
-class Model bluegreen
-</div>
-]
-.right-column60[
-Applications typically follow this architecture
-
-- What did we learn about how to do this?
- - What causes the screen to update?
- - How are things laid out on screen?
-]
-???
-- Relationship of MVC to Android software stack
-- Measure and layout
-- Discuss Whorfian effects
-
---
-.right-column60[
-Responding to Users: Event Handling
-- When a user interacts with our apps, Android creates **events**
-- As app developers, we react "listening" for events and responding
-appropriately
-]
----
-
-|Procedural | Event Driven |
-| :--: | :--: |
-|![:img Code printout saying Statement 1; Statement 2; Statement 3, 60%](img/events/procedural.png)|<br><br><br><br>![:img Code printout saying Method 1; Method 2; Method 3 with mouse and keyboard icons causing events pointed at different methods, 60%](img/events/eventdriven.png)|
-|Code is executed in sequential order |&nbsp;&nbsp;&nbsp; Code is executed based upon events|
-
----
-
-# But what is an Event?
-
-Generally, input is harder than output
-
-- More diversity, less uniformity
-
-- More affected by human properties
-
----
-# Where does and Event come from?
-
-Consider the "location" of an event...
-
-What is different about a joystick, a touch screen, and a mouse?
-
-???
-- Mouse was originally just a 1:1 mapping in 2 dimensions == absolute
-location; bounded
-- Joystick is relative (maps movement into rate of change in location); unbounded
-- Touch screen is absolute; bounded
-- What about today's mouse? Lifting and moving?
-
---
-
-- Mouse was originally just a 1:1 mapping in 2 dimensions == absolute
-location; bounded
-- Joystick is relative (maps movement into rate of change in location); unbounded
-- Touch screen is absolute; bounded
-
---
-
-What about the modern mouse? Lifting and moving?
-
---
-
-How about a wii controller?
-
----
-# Is this an input device?
-
-.left-column-half[![:img Picture of swipe keyboard showing text entry of satisfying, 60%](img/events/swipe.png)]
---
-.right-column-half[No … it’s an interaction technique. Over 50 WPM!]
-
-???
-Who/what/where/etc
-Dimensionality – how many dimensions can a device sense?
-Range – is a device bounded or unbounded?
-Mapping – is a device absolute or relative?
-
---
-.right-column-half[
-Considerations:
-- Dimensionality – how many dimensions can a device sense?
-- Range – is a device bounded or unbounded?
-- Mapping – is a device absolute or relative?
-]
----
-# Interaction techniques / Components make input devices effective
-
-For example, consider text entry:
-- 60-80 (keyboards; twiddler)
-- ~20 (soft keyboards)
-- ~50? Swype – but is it an input device?
----
-# Modern hardware and software starting to muddy the waters around this
-
-![:img Picture of OLED keyboard with labels on keys for gaming instead
-of typing, 30%](img/events/oled.png)
-
-???
-Add OLEDs to keys -> reconfigurable label displays
-
----
-
-# Higher level abstraction
-
-Logical Device Approach:
-
-- Valuator (slider) -> returns a scalar value
-- Button -> returns integer value
-- Locator -> returns position on a logical view surface
-- Keyboard -> returns character string
-- Stroke -> obtain sequence of points
-
-???
-
-- Can obscure important differences -- hence use inheritance
-- Discussion of mouse vs pen -- what are some differences?
-- Helps us deal with a diversity of devices
-- Make sure everyone understands types of events
-- Make sure everyone has a basic concept of how one registers listeners
-
-
----
-# Not really satisfactory...
-
-Doesn't capture full device diversity
-
-| Event based devices               |&nbsp;&nbsp;&nbsp;    | Sampled devices                     |
-| --                                | -- | --                                  |
-| Time of input determined by user  |    | Time of input determined by program |
-| Value changes only when activated |    | Value is continuously changing      |
-| e.g.: button                      |    | e.g.: mouse                         |
-
-???
-Capability differences
- - Discussion of mouse vs pen
- - what are some differences?
-
----
-# Contents of Event Record
-
-Think about your real world event again. What do we need to know?
-
-**What**: Event Type
-
-**Where**: Event Target
-
-**When**: Timestamp
-
-**Value**: Event-specific variable
-
-**Context**: What was going on?
-
-???
-Discuss each with examples
-
----
-# Contents of Event Record
-
-What do we need to know about each UI event?
-
-**What**: Event Type (mouse moved, key down, etc)
-
-**Where**: Event Target (the input component)
-
-**When**: Timestamp (when did event occur)
-
-**Value**: Mouse coordinates; which key; etc.
-
-**Context**: Modifiers (Ctrl, Shift, Alt, etc); Number of clicks; etc.
-
-???
-Discuss each with examples
-
----
-
-# Input Event Goals
-
-Device Independence
-- Want / need device independence
-- Need a uniform and higher level abstraction for input
-
-Component Independence
-- Given a model for representing input, how do we get inputs delivered
-to the right component?
-???
-
-
----
-# Summary
-- Callbacks: a programatic way to get or send information from/to our program from the system
-
---
-- MVC: Separation of concerns for user interaction
---
-
-- Events: logical input device abstraction
---
-
-- We model everything as events
-- Sampled devices
-  - Handled as “incremental change” events
-  - Each measurable change: a new event with new value
-- Device differences
-  - Handled implicitly by only generating events they can generate
-- Recognition Based Input?
-  - Yes, can generate events for this too
-
-
----
-# End of Deck
diff --git a/slides/wk04/img/accessibility/JAWS_logo.png b/slides/wk04/img/accessibility/JAWS_logo.png
deleted file mode 100644
index 653532ed13a71afaa851d5a0c8bd119c70d12748..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/accessibility/JAWS_logo.png and /dev/null differ
diff --git a/slides/wk04/img/accessibility/NVDA_logo.png b/slides/wk04/img/accessibility/NVDA_logo.png
deleted file mode 100644
index 54eb3531832505478b73264830d8ea6dae708877..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/accessibility/NVDA_logo.png and /dev/null differ
diff --git a/slides/wk04/img/accessibility/ScreenReaderIllustration.png b/slides/wk04/img/accessibility/ScreenReaderIllustration.png
deleted file mode 100644
index e0671e6c54528c9fea483130979260016c61a6e1..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/accessibility/ScreenReaderIllustration.png and /dev/null differ
diff --git a/slides/wk04/img/accessibility/chart.png b/slides/wk04/img/accessibility/chart.png
deleted file mode 100644
index b2e1f680ee863fca1f6fe23e7b6bf933629b5295..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/accessibility/chart.png and /dev/null differ
diff --git a/slides/wk04/img/accessibility/diverse-people.png b/slides/wk04/img/accessibility/diverse-people.png
deleted file mode 100644
index 1717e18fce88c912b3a346a50b02ef08eebfffc0..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/accessibility/diverse-people.png and /dev/null differ
diff --git a/slides/wk04/img/events/eventdriven.png b/slides/wk04/img/events/eventdriven.png
deleted file mode 100644
index 67b3cebc7c86a8c61e71b16f054e56c26f5ef6c0..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/events/eventdriven.png and /dev/null differ
diff --git a/slides/wk04/img/events/mvp-design-pattern.png b/slides/wk04/img/events/mvp-design-pattern.png
deleted file mode 100755
index 9dd87a7f4c12553e619856dd300b307ae9e7b449..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/events/mvp-design-pattern.png and /dev/null differ
diff --git a/slides/wk04/img/events/oled.png b/slides/wk04/img/events/oled.png
deleted file mode 100644
index 93ff779017d7e530ef25d16b0ea8fbe6886e0e22..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/events/oled.png and /dev/null differ
diff --git a/slides/wk04/img/events/procedural.png b/slides/wk04/img/events/procedural.png
deleted file mode 100644
index e7c58ac3a6f46f44c0108c3a88838fbe9ec287ed..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/events/procedural.png and /dev/null differ
diff --git a/slides/wk04/img/events/quiz-mvc.png b/slides/wk04/img/events/quiz-mvc.png
deleted file mode 100644
index d8461c69af23ceebca4b045b0b1356db5049e4d2..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/events/quiz-mvc.png and /dev/null differ
diff --git a/slides/wk04/img/events/swipe.png b/slides/wk04/img/events/swipe.png
deleted file mode 100644
index e34f742fd91da41607df613a4c52c934462db305..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/events/swipe.png and /dev/null differ
diff --git a/slides/wk04/img/events/user.png b/slides/wk04/img/events/user.png
deleted file mode 100644
index abba33c403bb48060c5eb1027b976a9bc41a95db..0000000000000000000000000000000000000000
Binary files a/slides/wk04/img/events/user.png and /dev/null differ
diff --git a/slides/wk04/person.zip b/slides/wk04/person.zip
deleted file mode 100644
index 33212540315522bf36fbd37d6326b824ec591e46..0000000000000000000000000000000000000000
Binary files a/slides/wk04/person.zip and /dev/null differ
diff --git a/slides/wk04/person/Person.java b/slides/wk04/person/Person.java
deleted file mode 100644
index da937458e70d3ce038e690ecaf6e21d50b18b412..0000000000000000000000000000000000000000
--- a/slides/wk04/person/Person.java
+++ /dev/null
@@ -1,55 +0,0 @@
-import java.util.*;
-
-public class Person {
-
-   /////// Instance (non-static) methods of Person
-   private String mFirstName;
-   private String mLastName;
-   private int mAge;  
-   
-   
-   public Person(String firstName, String lastName, int age) {
-      mFirstName = firstName;
-      mLastName = lastName;
-      mAge = age;
-   }
-   
-   @Override
-   public String toString() {
-      return mFirstName + " " + mLastName + " - age " + mAge;
-   }
-   
-   public String getFirstName() {
-      return mFirstName; 
-   }
-   
-   public String getLastName() {
-      return mLastName; 
-   }
-   
-   public int getAge() {
-      return mAge; 
-   }
-   
-   
-   
-   
-   /**
-   * Ooh, fancy, an inner class!
-   * Inner classes are neat because they can access the private variables of their 
-   * outer class (Person in this case)
-   * Could we have made this its own public class in its own file, and added getters and 
-   * setters to Person?
-   *      Yes, we certainly could have. I just wanted you to see an inner class.
-   */
-   public static class FirstNameComparator implements Comparator<Person> {
-
-      @Override
-      public int compare(Person p1, Person p2) {
-         
-         // Fill me in using a known comparison method!
-         return 0;
-      }
-   }
-   
-}
\ No newline at end of file
diff --git a/slides/wk04/person/PersonClient.java b/slides/wk04/person/PersonClient.java
deleted file mode 100644
index 37ea4a315ceb7c3a52244b1c7eb426b2c572f4dd..0000000000000000000000000000000000000000
--- a/slides/wk04/person/PersonClient.java
+++ /dev/null
@@ -1,70 +0,0 @@
-import java.util.*;
-
-public class PersonClient {
-   
-   /**
-   *Main method prints out various sorts
-   *@param args commandline input
-   */
-   public static void main(String[] args) {
-      Person[] people = generatePeople();
-      
-      // Print the original list.       
-      System.out.println("Original list: " + Arrays.toString(people));
-      
-      Arrays.sort(people, new PersonLastNameComparator());
-      System.out.println("Sorted by last name: " + Arrays.toString(people));
-
-      Arrays.sort(people, new Person.FirstNameComparator());
-      System.out.println("Sorted by first name: " + Arrays.toString(people));
-
-
-      Arrays.sort(people, new Comparator<Person>() {
-         @Override
-         public int compare(Person p1, Person p2) {
-         
-            return p1.getAge() - p2.getAge();
-         }
-      });
-      System.out.println("Sorted by age (ascending): " + Arrays.toString(people));
-      
-      Arrays.sort(people, 
-         (Person p1, Person p2)->{return p2.getAge() - p1.getAge();});
-      System.out.println("Sorted by age (descending): " + Arrays.toString(people));
-      
-      
-
-
-
-
-
-
-
-   }
-   
-   /**
-   *Generates a list of three people for testing purposes
-   *@return a default list of people
-   */
-   private static Person[] generatePeople() {
-
-      Person[] people = {
-         new Person("Emma", "Watson", 30), 
-         new Person("Ncuti", "Gatwa", 27), 
-         new Person("Tina", "Fey", 49), 
-         new Person("Idris", "Elba", 47),
-         new Person("Awkwafina", "", 31),
-         new Person("Michael", "Mando", 38),
-         new Person("Judi", "Dench", 85),  
-         new Person("Adam", "Driver", 36),
-         new Person("Logan", "Browning", 30), 
-         new Person("John", "Hamm", 49), 
-         new Person("Dev", "Patel", 30), 
-         new Person("Manny", "Jacinto", 32), 
-         new Person("Jennifer", "Aniston", 51),  
-         new Person("Morgan", "Freeman", 82),  
-      };
-      return people;
-   }
-
-}
diff --git a/slides/wk04/person/PersonLastNameComparator.java b/slides/wk04/person/PersonLastNameComparator.java
deleted file mode 100644
index ae4c461538fc47e7ebe58aac91ab459d1bc01ce3..0000000000000000000000000000000000000000
--- a/slides/wk04/person/PersonLastNameComparator.java
+++ /dev/null
@@ -1,10 +0,0 @@
-import java.util.*;
-
-public class PersonLastNameComparator implements Comparator<Person> {
-
-   @Override
-   public int compare(Person p1, Person p2) {
-
-      return p1.getLastName().compareTo(p2.getLastName()); 
-   }
-}
\ No newline at end of file
diff --git a/slides/wk05/Counter.zip b/slides/wk05/Counter.zip
deleted file mode 100644
index ae4ab8d469d740ce739c5c02539ff36fea6cb14b..0000000000000000000000000000000000000000
Binary files a/slides/wk05/Counter.zip and /dev/null differ
diff --git a/slides/wk05/event-delivery.html b/slides/wk05/event-delivery.html
deleted file mode 100644
index 7cdc70d1f419860cddd44aebc316bc7febd45774..0000000000000000000000000000000000000000
--- a/slides/wk05/event-delivery.html
+++ /dev/null
@@ -1,948 +0,0 @@
----
-layout: presentation
-title: Event Handling II --  Event Delivery using the Interactor Hierarchy
-description: Describes input devices, abstractions around events, Listeners, Event Delivery
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Event Delivery using the Interactor Hierarchy
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-name: normal
-layout: true
-class:
----
-# Accessibilty warmup
-
-Try the problem on the front of the worksheet
-
---
-
-- TIL: Talkback will "tell" what an item on the screen is if
-  - it has a content description  (`android:contentDescription="..."`) OR
-  - is focusable (`android:focusable="true"`) OR
-  - it is clickable (`android:clickable="true"`) OR
-  - You have attached a `onClickListener` to the interactor.
-
----
-
-
-[//]: # (Outline Slide)
-# Today's goals
-
-Discuss how Input Events are delivered
-
-- Event hierarchy
-- Input dispatch process
-- Listeners <- Prework for Wednesday
-- ~~Picking, capture and bubble~~ <- Moved to Wednesday
-
----
-# Administrivia
-
-For Friday's examlet, you need to enable your UW GSuite account.
-
-- During class I will give out a link that will allow you to copy the Layout Examlet.
-- The Google Doc will copy to your drive.
-- You'll answer the questions in the doc.
-- You'll save the doc as a PDF
-- You'll upload the PDF to Gradescope.
-
-See this [page](https://itconnect.uw.edu/connect/email/google-apps/getting-started/) for
-information on how ensure your GSuite account is activated.
----
-# Review: Logical Device Approach
-
-- Valuator → returns a scalar value (like a slider)
-- Button → returns integer value
-- Locator → returns position on a logical view surface
-- Keyboard → returns character string
-- Stroke → obtain sequence of points
-
----
-# Meta notes
-
-We are working on grading the Layout Assignment.
--  It's mostly going well.
-- A common issues we're seeing is not reading the starter code and understanding what it is doing
-- Recommedation:
-  - START EARLY: this gives you time to go to OH, read our discussion board, ask questions, and
-  get responses. (Remember responses may not be instantaneous, so you may have to work on something
-  else while you wait. )
-  - Skim the spec. Write down a list of questions the spec raises (i.e what don't you know or understand
-  at a quick glance)
-  - Accept and open the code.
-  - Understand the class hierarchy that is given to you. A visual of the hierarchy should be in the spec.
-  - Understand what is happening in the onCreate of whatever extends from `AppCompatActivity`
-  - Start implementing Part1 and look for those TODOs.
-  - REREAD the spec.
-  - Remember to read the spec one more time before turning in the assignment to make sure you got all the pieces.
-
-
----
-# Meta notes
-
-  - Remember: this class is about Interaction Programming. Programming Android is the substrate for the discussion.
-  - We try to explicitly state when are discussing theory vs practice.
-  - Subgoal of this class: a transition or bridge to 300 level courses.
-    - Important that you learn how to read less structured specifications
-    - Important that you learn how to search for __usable__ information
-    - Is StackOverflow friend or foe?
-
----
-.left-column[
-# Review
-
-<div class="mermaid" >
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef green font-size:14pt,text-align:center
-
-  class ip,t,w,l,a green
-</div>
-]
-
-.right-column[
-<p>&nbsp;</p>
-<p>&nbsp;</p>
-
-- Which developer role were you when implementing Layout Part 1, 2, 3?
-
-- Did you take on any other developer roles for part 4?
-]
-
----
-# Interacting with the User
-
-.left-column-half[
-Command line interfaces
-![:img Picture of a Command Line Interface, 100%](img/event-delivery/commandline.png)
-]
-
---
-.right-column-half[
-- Think about the from 142/143 or in prior classes did they create that took user interaction
-  - e.g. Budgeter, Guessing game, Hangman
-- How would you write code to do interactivity on a command line or in the console in JGrasp?
-- What control flow structure did you use to get input repeatedly from the user?
-- Did the system continue to work or did it wait for the user input?
-]
-
-
----
-# Interacting with the User
-.left-column-half[
-Command line interfaces
-![:img Picture of a Command Line Interface, 100%](img/event-delivery/commandline.png)
-]
-.right-column-half[
-Mac Desktop interface
-![:img Picture of a windows desktop, 100%](img/event-delivery/windows.png)|
-]
-
-???
-  - Event-Driven Interfaces (GUIs)
-  - Interaction driven by user
-  - UI constantly waiting for input events
-  - Pointing & text input, graphical output
-
----
-# Review
-
-.left-column[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-
-  class ap,o,h,hlt,t yellow
-  class w green
-</div>
-]
-.right-column[
-The Window System layer has several responsibilities. It
-
-- provides each view (app) with an independent drawing interface.
-- ensures that the display gets updates to reflect changes
-- recieves input from the OS and dispatches it to the appropriate widget
-
-
-
-]
-
----
-# Review
-
-Device Independence
-- We need device independence to handle a variety of ways to get input
-- We need a uniform and higher level abstraction for input (events)
----
-
-# Contents of Event Record
-
-Think about one of your real world events from last class again. What do we need to know?
-
-**What**: Event Type
-
-**Where**: Event Target
-
-**When**: Timestamp
-
-**Value**: Event-specific variable
-
-**Context**: What was going on?
-
-???
-Discuss each with examples
-
----
-# Contents of Event Record
-
-Example: The cat meowed: What do we need to know?
-
-**What**: A cat's meow
-
-**Where**: My ears (this is the input target)
-
-**When**: 9:00pm
-
-**Value**: From the kitchen, near the food bowl
-
-**Context**: Whining, pacing, and generally being a pest.
-
-.footnote[It really does happen see [this video](img/event-delivery/jackhungry.mov)]
-???
-Jack wants food.
----
-# Contents of Event Record
-
-Example: The cat meowed: What do we need to know?
-
-**What**: A cat's meow
-
-**Where**: My ears (this is the input target)
-
-**When**: 10:00am
-
-**Value**: From the hallway or following us around
-
-**Context**: Purring and rubbing up against us
-
-???
-Jack wants attention.
----
-
-
----
-# Another example: : Contents of Event Record
-
-Now imagine a user clicks on the previous button in our PetGallery. What would the event button look like?
-
-What do we need to know about that UI event?
-
---
-**What**: Click (Could also think about the mouse down and mouse up separately)
-
---
-**Where**: X,Y coordinate of the finger when the click ended
-
---
-**When**: The timestamp when the click occured
-
---
-**Value**: 1 Finger (or maybe None)
-
---
-**Context**: Any possible modifiers (Ctrl, Shift, Alt, etc); Number of clicks; etc.
-
----
-
-# Your turn
-
-Imagine you are writing a program to listen for "Hey Siri" on an Android phone.
-
-Work with your neighbor to fill in the fields of the Event Record for this event on your worksheet.
-
-**What**:
-
-**Where**:
-
-**When**:
-
-**Value**:
-
-**Context**: Any possible modifiers
-
----
-
-# Your turn
-
-Imagine you are writing a program to ironically listen for "Hey Siri" on an Android phone.
-
-Work with your neighbor to fill in the fields of the Event Record for this event on your worksheet.
-
-**What**: Speaking starts (or speaking ends)
-
-**Where**: Normally position on screen. In this case, ill defined because this event is not dispatched positionally. Can be blank, or may hold the current cursor location.
-
-**When**: Timestamp of the audio heard
-
-**Value**: The content of the audio recorded
-
-**Context**: Any possible modifiers
-
----
-# Review
-
-Device Independence
-- We need device independence to handle a variety of ways to get input
-- We need a uniform and higher level abstraction for input (events)
-
-Component Independence
-- Given a model for representing input, how do we get inputs delivered
-to the right component?
-  - Valuator → returns a scalar value
-  - Button → returns integer value
-  - Locator → returns position on a logical view surface
-  - Keyboard → returns character string
-  - Stroke → obtain sequence of points
-
----
-
-## Android Events
-
-Each kind of event in Android its own class but they all implement the
-[InputEvent](https://developer.android.com/reference/android/view/InputEvent) abstract class.
-- A little hard to find all the parts defined in one place
-- Harder to deal with uniformly
-- But easily extensible for new event types
-
-.red[Artificial] events are a thing
-- Window Events
-- Search Event
-- others.
-
----
-# Android [MotionEvent](https://developer.android.com/reference/android/view/MotionEvent)
-
-```java
-java.lang.Object
-   ↳	android.view.InputEvent
- 	   ↳	android.view.MotionEvent
-
-public final class MotionEvent extends InputEvent implements Parcelable {
-
-  int getAction()      // up, down etc
-  int getActionIndex() // multi touch support -- which pointer
-  float getX()         // position
-  float getY()         // position
-  int getButtonState() // pressed or not, for example
-  long getDownTime()
-  float getOrientation(int pointerIndex)
-  float getPressure()
-  float getSize()      // fingers aren't pixel sized
-                       // and many more...
-}
-```
----
-# Aside: Multiple Hierarchies discussed so far in class
-
-Can you think of them?
-
---
-
-- Inheritance hierarchy for interactors (Viewp)
-- Inheritance hierarchy for layout
-- Inheritance hierarchy for events
-- Component hierarchy (Interactors and View Groups)
---
-  - Also remember how the component hierarchy is used in drawing (Z-order)
-
----
-# Events can represent abstract concepts...
-
-Can you think of any?
-
---
-
-...Think of how the state of the app changes as you use it.
-
---
-
-- __Create__: Android is done creating the object
---
-- __Active__: in foreground of screen, and receives input
---
-- __Paused__: activity lost focus (is no longer displayed on screen)
---
-- __Stopped__:
-  - Another activity has focus
-  - Original activity remains in memory -- perfect place to save data & state
-  - Often can be *killed* by Android OS if not resumed relatively quickly
---
-- __Inactive__: after an activity has been killed; or before it is launched
---
-- __Timer__: Animation
-
----
-
-# Activity State Change Events
-
-.left-column-half[
-![:img Android Activity Lifecycle,50%](img/event-delivery/activity_lifecycle.png)
-]
-.right-columns-half[
-Look familiar?
-]
-
----
-# Thinking as a Toolkit Developer
-
-.left-column-half[
-<br>
-<div class="mermaid">
-  graph LR
-  ip[Interface Programmer]
-  w[Component Developer]
-  l[Library Extender]
-  a[Architecture Extender]
-  t[Toolkit Builder]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-
-  class ip,w,l,a green
-  class t yellow
-</div>
-]
-
-.right-column-half.font-smaller[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-  classDef yellow font-size:14pt,text-align:center
-  classDef green font-size:14pt,text-align:center
-
-  class ap,o,h,hlt,w green
-  class t yellow
-</div>
-
-]
-
----
-# How does the Toolkit Architecture deliver events?
-
-Application’s UI Thread (This is the main thread of your program)
-```java
-while (true) {
-  // Gets event from the application message queue.
-  // If the queue is empty, we just wait here.
-  Event e = GetEventFromMessageQueue();
-
-  // Dispatches the event to the appropriate application window
-  // (the destination address is in the event data).
-  DispatchEventToMessageDestination(e);
-}
-```
---
-This code is automatically setup and managed by the UI framework you are using (e.g., .NET, WPF, Android, Swift).
-You don’t really need to worry about it (but you should know it’s there and how it functions!)
-
----
-# Input __Dispatch__ Process
-
-Input thread:
-- When a user interacts,  __events__ are created
-- Events go into a queue
-
-???
-
-What do you think of when you hear the word "thread"? How does it relate to CS?
-
-Remember a queue is a data structure that is first in first out.
-
----
-# Input __Dispatch__ Process
-
-Input thread
-
-Dispatch thread:
-- Front event comes off queue
-- How does a toolkit decide where to send events?
-
---
-
-- Depends: Is it Focus or Positional input?
- - Focus list (in order based on interest)
- - Positional list (z-order under cursor based on interactor hierarchy)
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/event-delivery/callbacks.png)]
-.right-column-half[
-Dispatch Strategies (theory)
-- Positional
-  - Bottom-up
-  - Top-down
-  - Bubble out
-- Focus-based
-]
----
-.left-column-half[
-## Event Dispatch (theory)
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/event-delivery/callbacks.png)
-]
-.right-column-half[
-- Bottom up dispatch
-  - The event is directed to the "lowest", frontmost interactor in the tree that
-contains the mouse position
-  - That interactor might not want the input, so it goes to window at the next level up the tree
-]
----
-.left-column-half[
-## Event Dispatch (theory)
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/event-delivery/callbacks.png)
-]
-.right-column-half[
-- Bottom up dispatch
-- Top down dispatch
-  - The event is directed to topmost window that contains the mouse location
-  - That window decides how to dispatch it further (recursively)
-  - Common in OO toolkits
-  - Useful in situations where the interactor is "view only" (parent wants to disable input to child)
-]
-
----
-.left-column-half[
-## Event Dispatch (theory)
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/event-delivery/callbacks.png)
-]
-.right-column-half[
-- Bottom up dispatch
-- Top down dispatch
-- Bubble-out dispatch
-  - Used when there is no clear nesting of windows and groups of interactive objects
-  - Tree is traversed as in top down approach, but bounding rectangles are hints, not guarantees
-  - Objects checked in opposite order from drawing: frontmost items are checked first
-  - Object that was hit is attached to the event, ancestors know what was selected
-]
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/event-delivery/callbacks.png)
-]
-.right-column-half[
-- Bottom up dispatch
-- Top down dispatch
-- Bubble-out dispatch
-- Focus dispatch
-  - No straighforward location of where the event happened
-  - Windowing system determines which window/interactor should get the input.
-  - Common example: where should key press/release events go?
-]
-
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface and a do_action() call
-happening below the line in response to a button_pressed(), 100%](img/event-delivery/callbacks2.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-
-]
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface with do_action() replaced
-with an actionListener, 100%](img/event-delivery/callbacks3.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-- Best implemented using custom listeners
-
-]
-
----
-template: inverse
-
-## Event Listeners
-
-### Putting theory into practice
-
-???
-- Implementation strategy
-
-- Basic goal: notify something of a change
-
----
-# Basics of Event Listeners (1/3)
-
-- Interface on the `View` class that acts as a _callback_ method
-
---
-
-  - Recall interfaces specify behavior (but no data) that can be inherited.
-
---
-
-- Must be attached to a particular `View`
-
---
-
-- Android framework triggers the method once the `View` is interacted with by the user
-
---
-
-- A `View` can have listen for different types of interactions
-- But: the `View` must implement and registering the appropriate listeners
-
-???
-What is an interface?
-
----
-layout: false
-
-.left-column[
-## Standard Event Listeners provided by Android
-
-More listed in the [API Documentation](https://developer.android.com/guide/topics/ui/ui-events.html)
-]
-.right-column[
-The set of Android's provided interfaces include:
-  ```java
-    // User tapped a view
-    public static interface View.OnClickListener { ... }
-
-    // User long pressed on a View
-    public static interface View.OnLongClickListener { ... }
-
-    // State of view has changed
-    // (e.g. user clicked outside a EditText input box)
-    public static interface View.OnFocusChangeListener { ... }
-  ```
- ]
-
----
-# Implementing clicking
-
-Create your button
-
-Register an event listener with the button
-
----
-# Registering an Event Listener
-
-~~Three~~ five ways to register an event listener:
-
-  - Creating a separate class/file or an inner class
-  - Creating an anonymous inner class
-  - Implementing an Interface
-  - Creating an anonymous class as a parameter
-  - Lambdas
-
-Code for the following demo is [here](Counter.zip).
-This code uses a helper function
-```java
-/** Method to increment the count field */
-private void incrementCount(View v) {
-    TextView counter = findViewById(R.id.count);
-    String textCount = counter.getText().toString();
-    int count = Integer.parseInt(textCount);
-    counter.setText("" + ++count);
-
-    ((TextView)findViewById(R.id.whichButton)).setText(((Button)v).getText());
-
-}
-```
-
----
-
-.left-column[
-## Registering a Listener - Inner class (1/2)
-
-Create the Listener subclass
-]
-.right-column[
-  ```java
-  private class MyButtonListener implements View.OnClickListener {
-      @Override
-      public void onClick(View v) {
-          incrementCount(v);
-      }
-  }
-  ```
-]
----
-.left-column[
-## Registering a Listener  - Inner class (2/2)
-
-Create the Listener subclass
-
-Register it (by instantiating an object of that type)
-]
-.right-column[
-  ```java
-  // in onCreate...
-  Button b1 = findViewById(R.id.button_three);
-  if (b1 != null) {  // Should always check for null
-      b1.setOnClickListener(new MyButtonListener());
-  }
-  ```
-]
-
-
----
-.left-column[
-## Create an Anonymous Inner Class
-]
-.right-column[
-```java
-public class EventExampleActivity extends AppCompatActivity {
-
-  // An anonymous inner class as a member variable in an Activity
-  View.OnClickListener mButtonClickListener = new View.OnClickListener() {
-      @Override
-      public void onClick(View v) {
-          // call the private method in EventExampleActivity
-          incrementCount(v);
-      }
-  };
-
-  protected void onCreate(Bundle savedState) {
-    Button b1 = findViewById(R.id.button_one);
-    if (b1 != null) {
-      b1.setOnClickListener(mButtonClickListener);
-    }
-  }
-}
-```
-]
-
-???
-incrementCount is a private method
-Mention that mXxxx variables are private fields and this is a quick way
-to find all private fields when searching variables in code
----
-# Digging deeper: Creating an Anonymous Inner Class
-
-Let's take some time to parse this...
-
-```java
-  private View.OnClickListener mButtonClickListener = new View.OnClickListener() {
-```
-- `private` - it's only available inside the class that contains it (i.e. `EventExampleActivity`)
-- `View.OnClickListener` is the variable type ([Documentation](https://developer.android.com/reference/android/view/View.OnClickListener.html)) - a nested class in `View`
-- `mButtonClickListener` is the variable name which is being set to...
-- a `new View.OnClickListener()` which is an anonymous object from an abstract class
-  - For those of you who have not taken 331, that means that there are methods that have not been implemented in the class.
-  - The on method that you MUST implement (in order to create a new object) is `OnClick` which overrides the abstract method
-
-```java
-  public void OnClick(View v) { /* stuff in here does the work when a click is received! */ }
-```
----
-
-.left-column[
-## Registering a Listener - Implement the Interface
-]
-.right-column[
-  ```java
-// Start by implementing the interface
-public class EventExampleActivity extends AppCompatActivity
-  implements View.OnClickListener { // Necessary to implement
-
-  protected void onCreate(Bundle savedState) {
-    Button b3 = findViewById(R.id.button_three);
-    if (b3 != null) {  // Should always check for null
-        b3.setOnClickListener(this);
-    }
-  }
-
-  // Here's where you do the implementation of your listener in your class
-  @Override
-   public void onClick(View v) {
-       incrementCount(v);
-   }
-  ```
-]
----
-
-.left-column[
-## Registering a Listener - Anonymous class as a parameter
-
-Create and register the listener all at once
-]
-.right-column[
-  ```java
-  Button b4 = findViewById(R.id.button_four);
-   if (b4 != null) {  // Should always check for null
-       b4.setOnClickListener(new View.OnClickListener() {
-           public void onClick(View v) {
-               incrementCount(v);
-           }
-       });
-   }
-  ```
-]
----
-.left-column[
-## Registering a Listener - lambda
-
-Create the and register the listener all at once with lamba syntax
-]
-.right-column[
-  ```java
-  Button b5 = findViewById(R.id.button_five);
-  if (b5 != null) {  // Should always check for null
-      b5.setOnClickListener((View v) -> incrementCount(v));
-  }
-  ```
-]
-.right-column[
-To use Lambdas you have to upgrade to Java 8. See these
-[instructions](https://developer.android.com/studio/write/java8-support) to do this.
-]
-
----
-.left-column[
-## Registering Multiple Listeners
-]
-.right-column[
-Can register more than one listener
-
-For example:
-```java
-  View v = new View();
-  v.setOnClickListener(...);
-  v.setOnLongClickListener(...);
-  ```
-]
----
-.left-column[
-## Many Views, Same Listener (1/3)]
-
-.right-column[
-Event callbacks are passed the `View` as a parameter
-]
---
-
-.right-column[
-
-We can reuse a listener for views that handle the same action
-  (e.g. all 5 buttons could use the same class/method for the action)
-]
----
-
-## Many Views, Same Listener (2/3)
-
-- And we can handle different actions by checking the `View` or its `id`:
-  ```java
-    protected void onCreate(Bundle savedState) {
-      Button b1 = (Button) findViewById(R.id.button_one);
-      if (b1 != null) {
-        b1.setOnClickListener(mButtonClickListener);
-      }
-
-      Button b2 = (Button) findViewById(R.id.button_two);
-      if (b2 != null) {
-        b2.setOnClickListener(mButtonClickListener);
-      }
-    }
-  ```
----
-## Many Views, Same Listener (3/3)
-
-You can use the ID of the view to determine where the event originated from
-
-```java
-  View.OnClickListener mButtonClickListener = new View.OnClickListener({
-    public void onClick(View v) {
-      if (v == null) {
-        return;
-      }
-
-      int viewId = v.getId();
-
-      switch (viewId) {
-        case R.id.button_one:  // First Button
-          Log.d("Button Press", "First Button");
-          break;
-        case R.id.button_two:  // Second Button
-          Log.d("Button Press", "Second Button");
-          break;
-        default:               // Someone else is using the listener!
-          Log.d("Button Press", "Invalid Button!");
-      }
-    }
-  });
-```
----
-.left-column[
-## Marking an event as handled
-]
-.right-column[
-This ensures only one view gets it (we talk about the algorithm behind this later)
-
-Return `boolean` value that indicate the event has been handled (`true`)
-
-  ```java
-    /**
-     * onLongClick - triggered when a view is long clicked
-     * @param v - the view long pressed
-     * @return - true if the callback consumed the long click, false otherwise.
-     **/
-    boolean onLongClick (View v) { ... };
-  ```
-]
-.footnote[[API Documentation for Long Click](https://developer.android.com/reference/android/view/View.OnLongClickListener.html)
-]
-
----
-# End of Deck
-
-Thing to think about...
-
-How would you handle input in a circular component?
diff --git a/slides/wk05/img/event-delivery/activity_lifecycle.png b/slides/wk05/img/event-delivery/activity_lifecycle.png
deleted file mode 100644
index ab0921a717d184442c96c1b8863018d46920a67c..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/activity_lifecycle.png and /dev/null differ
diff --git a/slides/wk05/img/event-delivery/callbacks.png b/slides/wk05/img/event-delivery/callbacks.png
deleted file mode 100644
index 72147534bc5ba07de7a95ffe479f5505d65814f4..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/callbacks.png and /dev/null differ
diff --git a/slides/wk05/img/event-delivery/callbacks2.png b/slides/wk05/img/event-delivery/callbacks2.png
deleted file mode 100644
index 37eeff1f958d4f711faf7ce2af0ceb9736121957..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/callbacks2.png and /dev/null differ
diff --git a/slides/wk05/img/event-delivery/callbacks3.png b/slides/wk05/img/event-delivery/callbacks3.png
deleted file mode 100644
index c7c5e1de7d5c73ca13b8e95df99735ce5aeec7fa..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/callbacks3.png and /dev/null differ
diff --git a/slides/wk05/img/event-delivery/commandline.png b/slides/wk05/img/event-delivery/commandline.png
deleted file mode 100644
index 773bd5e16472702193d5aa0b8818d4b283f35662..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/commandline.png and /dev/null differ
diff --git a/slides/wk05/img/event-delivery/cookie-monster.gif b/slides/wk05/img/event-delivery/cookie-monster.gif
deleted file mode 100755
index f484a992a84a146276ed1a80af3f60fd225e4ff6..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/cookie-monster.gif and /dev/null differ
diff --git a/slides/wk05/img/event-delivery/jackhungry.mov b/slides/wk05/img/event-delivery/jackhungry.mov
deleted file mode 100644
index a41f687b0b33dd94a57a852ab9e8a82c602266fd..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/jackhungry.mov and /dev/null differ
diff --git a/slides/wk05/img/event-delivery/windows.png b/slides/wk05/img/event-delivery/windows.png
deleted file mode 100644
index 3fc19c0be90e80ae595ccc58c6a8b58116954300..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/event-delivery/windows.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/activity_lifecycle.png b/slides/wk05/img/pps-geom/activity_lifecycle.png
deleted file mode 100755
index 879f51f6e8fafe75d267984680ef63f85b118dc5..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/activity_lifecycle.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/android-activity-states-01.png b/slides/wk05/img/pps-geom/android-activity-states-01.png
deleted file mode 100755
index 614cc908ef0e4a693643d2a07d7131feab55fc13..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/android-activity-states-01.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/android-activity-states-02.png b/slides/wk05/img/pps-geom/android-activity-states-02.png
deleted file mode 100755
index e7042ef93ac69f8da5c7353babd93a727284541a..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/android-activity-states-02.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/callbacks.png b/slides/wk05/img/pps-geom/callbacks.png
deleted file mode 100644
index 72147534bc5ba07de7a95ffe479f5505d65814f4..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/callbacks.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/callbacks2.png b/slides/wk05/img/pps-geom/callbacks2.png
deleted file mode 100644
index 37eeff1f958d4f711faf7ce2af0ceb9736121957..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/callbacks2.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/callbacks3.png b/slides/wk05/img/pps-geom/callbacks3.png
deleted file mode 100644
index c7c5e1de7d5c73ca13b8e95df99735ce5aeec7fa..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/callbacks3.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/focus.png b/slides/wk05/img/pps-geom/focus.png
deleted file mode 100644
index 0e3b191d6a01f296400772022e90781889482d0a..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/focus.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/messenger-bubble.gif b/slides/wk05/img/pps-geom/messenger-bubble.gif
deleted file mode 100755
index 77defd497891e79a775a6ca3593cf33e02d2c890..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/messenger-bubble.gif and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/noresponse.png b/slides/wk05/img/pps-geom/noresponse.png
deleted file mode 100644
index cb52157c564bfd05b70e0a9c1c2e4b1d9b5925ad..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/noresponse.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/notevent.png b/slides/wk05/img/pps-geom/notevent.png
deleted file mode 100644
index c610bff3b877a36f2d47fce0b250781c540e08ae..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/notevent.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/picklist.svg b/slides/wk05/img/pps-geom/picklist.svg
deleted file mode 100644
index b1bb184b9fa2dc7dc9a5a3a659943a137a331c70..0000000000000000000000000000000000000000
--- a/slides/wk05/img/pps-geom/picklist.svg
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 24.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 184.8 195.3" style="enable-background:new 0 0 184.8 195.3;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:none;stroke:#000000;stroke-miterlimit:10;}
-	.st1{fill:#2E3192;}
-	.st2{font-family:'MyriadPro-Regular';}
-	.st3{font-size:12px;}
-	.st4{fill:#009444;}
-	.st5{fill:#D12029;}
-	.st6{fill:none;stroke:#2E3192;stroke-miterlimit:10;}
-	.st7{fill:none;stroke:#42B649;stroke-miterlimit:10;}
-	.st8{fill:none;stroke:#D12029;stroke-miterlimit:10;}
-	.st9{fill:#160C0B;}
-	.st10{fill:none;stroke:#000000;stroke-width:0.75;stroke-miterlimit:10;}
-	.st11{fill:none;stroke:#000000;stroke-width:0.75;stroke-miterlimit:10;stroke-dasharray:9.9093,9.9093;}
-	.st12{fill:none;stroke:#000000;stroke-width:0.75;stroke-miterlimit:10;stroke-dasharray:10.9093,10.9093;}
-	.st13{fill:none;stroke:#D12029;stroke-width:0.75;stroke-miterlimit:10;}
-	.st14{fill:none;stroke:#D12029;stroke-width:0.75;stroke-miterlimit:10;stroke-dasharray:10.9303,10.9303;}
-	.st15{fill:none;stroke:#D12029;stroke-width:0.75;stroke-miterlimit:10;stroke-dasharray:9.9093,9.9093;}
-</style>
-<polygon class="st0" points="179.3,190.4 3.3,190.4 3.9,4.3 179.9,4.3 "/>
-<text transform="matrix(1 0 0 1 25.2813 65.6343)" class="st1 st2 st3">V1</text>
-<text transform="matrix(1 0 0 1 52.2813 71.4978)" class="st4 st2 st3">V3</text>
-<text transform="matrix(1 0 0 1 31.2098 104.4477)" class="st5 st2 st3">V2</text>
-<text transform="matrix(1 0 0 1 82.7637 37.6707)" class="st1 st2 st3">V4</text>
-<text transform="matrix(1 0 0 1 123.6179 130.4509)" class="st2 st3">V5</text>
-<text transform="matrix(1 0 0 1 105.8968 80.1523)" class="st5 st2 st3">V6</text>
-<rect x="18.3" y="53.6" class="st6" width="73" height="80"/>
-<text transform="matrix(1 0 0 1 9.3218 19.4072)" class="st2 st3">V0</text>
-<polygon class="st7" points="87.9,84.1 45.9,84.1 46.3,58.5 88.3,58.5 "/>
-<rect x="77.5" y="25.4" class="st6" width="92.2" height="155.1"/>
-<rect x="25.3" y="91.4" class="st8" width="48.9" height="33.7"/>
-<polygon class="st0" points="152.8,136.6 133.5,158.8 110.6,135.9 129.9,113.7 "/>
-<ellipse class="st8" cx="110.8" cy="88.1" rx="33.3" ry="20.1"/>
-<circle class="st9" cx="82.8" cy="71.5" r="3.5"/>
-<g>
-	<g>
-		<polyline class="st10" points="152.6,152.6 152.6,158.6 146.6,158.6 		"/>
-		<line class="st11" x1="136.7" y1="158.6" x2="121.8" y2="158.6"/>
-		<polyline class="st10" points="116.8,158.6 110.8,158.6 110.8,152.6 		"/>
-		<line class="st12" x1="110.8" y1="141.7" x2="110.8" y2="125.3"/>
-		<polyline class="st10" points="110.8,119.9 110.8,113.9 116.8,113.9 		"/>
-		<line class="st11" x1="126.8" y1="113.9" x2="141.6" y2="113.9"/>
-		<polyline class="st10" points="146.6,113.9 152.6,113.9 152.6,119.9 		"/>
-		<line class="st12" x1="152.6" y1="130.8" x2="152.6" y2="147.2"/>
-	</g>
-</g>
-<g>
-	<g>
-		<polyline class="st13" points="144.2,103 144.2,109 138.2,109 		"/>
-		<line class="st14" x1="127.2" y1="109" x2="89" y2="109"/>
-		<polyline class="st13" points="83.5,109 77.5,109 77.5,103 		"/>
-		<line class="st15" x1="77.5" y1="93.1" x2="77.5" y2="78.2"/>
-		<polyline class="st13" points="77.5,73.3 77.5,67.3 83.5,67.3 		"/>
-		<line class="st14" x1="94.5" y1="67.3" x2="132.7" y2="67.3"/>
-		<polyline class="st13" points="138.2,67.3 144.2,67.3 144.2,73.3 		"/>
-		<line class="st15" x1="144.2" y1="83.2" x2="144.2" y2="98"/>
-	</g>
-</g>
-</svg>
diff --git a/slides/wk05/img/pps-geom/quizqs.png b/slides/wk05/img/pps-geom/quizqs.png
deleted file mode 100644
index 27636e6e935530d985628916bda1cfc7ab67d710..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/quizqs.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/window-with-highlighted-menu.png b/slides/wk05/img/pps-geom/window-with-highlighted-menu.png
deleted file mode 100644
index e283f1c2cc3703e082aa33e292916c1d0dcf4bc3..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/window-with-highlighted-menu.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/window-with-menu-highlight.png b/slides/wk05/img/pps-geom/window-with-menu-highlight.png
deleted file mode 100644
index c98efae6cbebbc0ae06d4bf2cf959a56850b29dc..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/window-with-menu-highlight.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/window-with-menu-highlight2.png b/slides/wk05/img/pps-geom/window-with-menu-highlight2.png
deleted file mode 100644
index d18967a3a33292c574743985e1a44882806cc78b..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/window-with-menu-highlight2.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/window-with-scrollbar.png b/slides/wk05/img/pps-geom/window-with-scrollbar.png
deleted file mode 100644
index cd6cd1f015f34aed26f079a6e8bdfe0b19031eb6..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/window-with-scrollbar.png and /dev/null differ
diff --git a/slides/wk05/img/pps-geom/window.png b/slides/wk05/img/pps-geom/window.png
deleted file mode 100644
index e1edc0bca27881e6b8a54fbdf4495b3e493886c8..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/pps-geom/window.png and /dev/null differ
diff --git a/slides/wk05/img/whole/callbacks.png b/slides/wk05/img/whole/callbacks.png
deleted file mode 100644
index 72147534bc5ba07de7a95ffe479f5505d65814f4..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/callbacks.png and /dev/null differ
diff --git a/slides/wk05/img/whole/callbacks2.png b/slides/wk05/img/whole/callbacks2.png
deleted file mode 100644
index 37eeff1f958d4f711faf7ce2af0ceb9736121957..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/callbacks2.png and /dev/null differ
diff --git a/slides/wk05/img/whole/callbacks3.png b/slides/wk05/img/whole/callbacks3.png
deleted file mode 100644
index c7c5e1de7d5c73ca13b8e95df99735ce5aeec7fa..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/callbacks3.png and /dev/null differ
diff --git a/slides/wk05/img/whole/combined.png b/slides/wk05/img/whole/combined.png
deleted file mode 100644
index 8f82cd3caaf966242fa1d127118706586d6793c0..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/combined.png and /dev/null differ
diff --git a/slides/wk05/img/whole/drawing.png b/slides/wk05/img/whole/drawing.png
deleted file mode 100644
index 1ee68b6c60c5e385f381295d075a042752076e49..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/drawing.png and /dev/null differ
diff --git a/slides/wk05/img/whole/full-solution-buffering.png b/slides/wk05/img/whole/full-solution-buffering.png
deleted file mode 100644
index 63871837cf02c6984b3fd18308c9a20dd944c201..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/full-solution-buffering.png and /dev/null differ
diff --git a/slides/wk05/img/whole/interpolators.gif b/slides/wk05/img/whole/interpolators.gif
deleted file mode 100644
index ad4e46ef00ad0843547fa69de0754dbaf9a7c59b..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/interpolators.gif and /dev/null differ
diff --git a/slides/wk05/img/whole/original-new.png b/slides/wk05/img/whole/original-new.png
deleted file mode 100644
index 3c9f19ae8050a037ba29c82249cc7f3fda1a3db9..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/original-new.png and /dev/null differ
diff --git a/slides/wk05/img/whole/redcomp.png b/slides/wk05/img/whole/redcomp.png
deleted file mode 100644
index 81dec38e9e9408f89fddf1c850100ef978395f2a..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/redcomp.png and /dev/null differ
diff --git a/slides/wk05/img/whole/value-sat.png b/slides/wk05/img/whole/value-sat.png
deleted file mode 100644
index b5ffb6814dde40eb19feca12d1c5d404219c0831..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/value-sat.png and /dev/null differ
diff --git a/slides/wk05/img/whole/window-with-menu.png b/slides/wk05/img/whole/window-with-menu.png
deleted file mode 100644
index ce64e0a977b63efb250de2eac8551ceaebf94f44..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/window-with-menu.png and /dev/null differ
diff --git a/slides/wk05/img/whole/window.png b/slides/wk05/img/whole/window.png
deleted file mode 100644
index e1edc0bca27881e6b8a54fbdf4495b3e493886c8..0000000000000000000000000000000000000000
Binary files a/slides/wk05/img/whole/window.png and /dev/null differ
diff --git a/slides/wk05/pps-geom.html b/slides/wk05/pps-geom.html
deleted file mode 100644
index ff0500f9ae11a47653368092d742cca3bd3134b1..0000000000000000000000000000000000000000
--- a/slides/wk05/pps-geom.html
+++ /dev/null
@@ -1,1099 +0,0 @@
----
-layout: presentation
-title: Event Handling III--Essential Geometry and View Updates
-description:
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# View Updates and Essential Geometry
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout:false
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- Quick follow up from Monday - Click Listeners
-- Other Android callbacks
-- Input dispatching process (toolkit architecture)
-  - Picking (alternative: Focus)
-  - Capture
-  - Bubble
-- Propositional Production Systems in implementing interactors
-- Essential Geometry
-
----
-# Before anyone asks
-
-- Accessibility is due Thursday night. There is no reflection.
-- Examlet is on Friday (starting the last half of class).
-  - To avoid distraction this will entirely be a "take home" examlet. You may leave "class"
-  once we begin. (I will stay in class in case people need to come back in for clarifications).
-  - Instructions will be on Ed.
-  - You will be given a Google doc link to copy to your drive. You MUST have
-   [UW's GSuite enabled](https://itconnect.uw.edu/connect/email/google-apps/getting-started/).
-  - You will complete the quiz in your version of the Google doc
-  - You will your solution as a PDF (File->Download->PDF) to your machine
-  - You will then upload the quiz to Gradescope Quiz 5.
-  - Any issues will be added to an erratta document (link will also be in the ed post.)
-  - We will give you (some) more time to handle the technology.
-
----
-
-# Review of Monday
-
-- Events: logical input device abstraction
-- Event driven code: very different from procedural programming
-- Listeners are notified about events by the system and toolkit
-- Case study: implementing View.OnClickListener
-  - Creating a separate class/file or an inner class
-  - Creating an anonymous inner class
-  - Implementing an Interface
-  - Creating an anonymous class as a parameter
-  - Lambdas
-
-Please open [Ed Sway](https://us.edstem.org/courses/381/sway/)
-
-
----
-
-template: inverse
-
-# Other Android Callbacks
-
----
-layout: false
-
-# Event listeners Android sets up by default (1/3)
-
-- `onCreate`
-  - called when the activity is first created
-  - we've seen this in our Doodle, Layout, and even EventExampleActivity apps:
-
-```java
-@Override
-protected void onCreate(Bundle savedInstanceState) {
-  // We want to do any view initialization work here
-  super.onCreate(savedInstanceState);
-
-  // Load the XML representation of our layout into the view
-  setContentView(R.layout.activity_main);
-
-  // Any other work we need to do like adding views or
-  // registering click listeners!
-}
-```
-
----
-
-# Event listeners Android sets up by default (2/3)
-
-- `onStart`
-  - Called when activity is about to be visible to the user
-  - Always gets called after `onCreate` or `onRestart`
---
-- `onResume`
-  - Called when the activity will start interacting with a use
-  - Always gets called after `onStart`
---
-- `onPause`
-  - Called when the system is about to start resuming another previous activity
-  - __Commit changes__ to persistent data, __stop animations & intense operations__, __kill network__ requests
-  - .red[Fast implementation required!] - the next activity will not resume until this finishes in your activity
---
-- `onStop`: Called when the activity is no longer visible to the user
----
-# Event listeners Android sets up by default (3/3)
-
-- `onRestart`
-  - Called when the activity was previously stopped but is coming back to the user
-  - Followed by a call to `onStart`
---
-- `onDestroy`: the final notice before your activity is .red[__destroyed__]
---
-  .center.half-width-img[
-    ![Cookie Monster Eating](img/event-delivery/cookie-monster.gif)
-  ]
-
-
----
-template: inverse
-
-## Input Dispatch Process
-
----
-layout: false
-
-# Input __Dispatch__ Process
-
-Input thread:
-- When a user interacts,  __events__ are created
-- Events go into a queue
-
----
-# Input __Dispatch__ Process
-
-Input Thread
-
-Dispatch thread:
-- Front event comes off queue
-- Event gets sent to a listener (callback) attached to a `View` or `Activity`.
-- The `View` or `Activity` implements the callback
-
----
-.left-column-half[
-## Event Dispatch (Summary)
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/pps-geom/callbacks.png)]
-.right-column-half[
-Theoretical Dispatch Strategies
-- Positional
-  - Bottom-up: The event sent to the "lowest", frontmost interactor in the tree that
-contains the mouse position. If it's not wanted there it goes up the tree.
-  - Top-down: Event is sent to the topmost interactor that contains the mouse location, then passed
-  down recursively to children.
-  - Bubble out: Traversal starts top down, bounding rectangles are hints. Event is sent to bottom most item (drawn last),
-  the event can bubble back (with knowledge of what was hit).
-- Focus-based: Windowing system determines which interactor gets the event.
-]
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface and a do_action() call
-happening below the line in response to a button_pressed(), 100%](img/pps-geom/callbacks2.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-
-]
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface with do_action() replaced
-with an actionListener, 100%](img/pps-geom/callbacks3.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-- Best implemented using custom listeners
-
-]
-
----
-# Another type of event: `onTouchEvent`
-
-- `onTouchEvent` is a callback that can be implemented on a `View` to react
-to a user's touch
-- Often used when creating your own new component.
-
-```java
-public class MyView extends View extends View.OnTouchListener {
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    ...
-    // register the touch event
-    setOnTouchListener(this)
-  }
-  ...
-  @Override
-  public boolean onTouchEvent(MotionEvent event) {
-    // Handle the touch event here
-  }
-}
-
-```
----
-# Example: Overlapping windows
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1))
-V0 --> V4((V4))
-V1 --> V2((V2))
-V1 --> V3((V3))
-V4 --> V5((V5))
-V4 --> V6((V6))
-
-</div>
-]
-.right-column50[
-![:img Example of what this tree might look like in graphical form with V0 at the back, 60%](img/pps-geom/picklist.svg)
-]
----
-# How does _Android_ decide where to send events?
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1))
-V0 --> V4((V4))
-V1 --> V2((V2))
-V1 --> V3((V3))
-V4 --> V5((V5))
-V4 --> V6((V6))
-
-</div>
-]
-.right-column50[
-- Android traverses the view hierarchy (starting at root)
-- "Picks" `View` obects that respond to an input event
-- Loops through the list of `View` objects, checks if they will "capture" the event
-- If none capture the event, the event "bubbles" back up the `View`
-  object list
-]
-
----
-# Input Process - Picking
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1))
-V0 --> V4((V4))
-V1 --> V2((V2))
-V1 --> V3((V3))
-V4 --> V5((V5))
-V4 --> V6((V6))
-
-</div>
-]
-.right-column50[
-- In what order does dispatch "pick" the `View` objects?
-]
---
-.right-column50[
-- Hint: Post order traversal of the tree
-]
---
-.right-column50[
-- Picked Views = {`V2`, `V3`, `V1`, `V5`, `V6`, `V4`, `V0`}
-- Order matters!
-]
----
-# Input Process - Picking
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1))
-V0 --> V4((V4))
-V1 --> V2((V2))
-V1 --> V3((V3))
-V4 --> V5((V5))
-V4 --> V6((V6))
-</div>
-]
-
-.right-column50[
-But we can refine this! We can filter!
-
-What are some reasons to skip views?
-]
---
-.right-column50[
-- Not inside the view
-- View doesn't care about that type of input
-
-![:img Example of what this tree might look like in graphical form with V0 at the back, 40%](img/pps-geom/picklist.svg)
-
-]
-
----
-# Input Process - Picking only those interested
-
-.left-column40[
-
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1*))
-V0 --> V4((V4*))
-V1 --> V2((V2))
-V1 --> V3((V3*))
-V4 --> V5((V5))
-V4 --> V6((V6*))
-
-class V0,V2,V5 blue
-class V1,V4,V3,V6 bluegreen
-</div>
-]
-
-.footnote[*: denotes the element responds to the event because of position/type]
-
----
-# Input Example - Capture
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1*))
-V0 --> V4((V4*))
-V1 --> V2((V2))
-V1 --> V3((V3*))
-V4 --> V5((V5))
-V4 --> V6((V6*))
-
-class V0,V2,V5 blue
-class V1,V4,V3,V6 bluegreen
-</div>
-]
-.right-column50[
-Picked Views = {`V3`, `V1`, `V6`, `V4`}
-
-What happens next?
-]
---
-.right-column50[
-- Dispatch starts at the end of the picked `View` object list (`V4`)
-- Walking down the list, dispatch asks: will you consume this event?
-  - If `true`: the event is consumed and the event propagation __stops__
-  - If `false`: Move to the next element in the `View` list
-]
----
-# Input Example - Capture
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1*))
-V0 --> V4((V4*))
-V1 --> V2((V2))
-V1 --> V3((V3*))
-V4 --> V5((V5))
-V4 --> V6((V6*))
-
-class V0,V2,V5 blue
-class V1,V4,V3,V6 bluegreen
-</div>
-]
-.right-column50[
-Picked Views = {`V3`, `V1`, `V6`, `V4`}
-
-- Dispatch starts at the end of the picked `View` object list (`V4`)
-- Android backtracks through the list, asking if they want to consume the event
-- Does this correspond to a top-down or bottom-up dispatch strategy?
-- What happens when we reach the last `View` in the list and no one has consumed the event?
-]
-???
-It's top-down
-
----
-# Input Example - Bubbling
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1*))
-V0 --> V4((V4*))
-V1 --> V2((V2))
-V1 --> V3((V3*))
-V4 --> V5((V5))
-V4 --> V6((V6*))
-
-class V0,V2,V5 blue
-class V1,V4,V3,V6 bluegreen
-</div>
-]
-.right-column50[
-Picked Views = {`V3`, `V1`, `V6`, `V4`}
-]
-
---
-.right-column50[
-- Android starts at the front of the list `V3`, asking if they want to consume the event
-- Does this correspond to a top-down or bottom-up dispatch strategy?
-
-Note: Bubbling in this case is not the bubble-out in the theoretical case.
-]
-
-???
-bottom-up!
----
-# Input Example - Recap
-
-.left-column40[
-<div class="mermaid">
-graph TD
-V0((V0)) --> V1((V1*))
-V0 --> V4((V4*))
-V1 --> V2((V2))
-V1 --> V3((V3*))
-V4 --> V5((V5))
-V4 --> V6((V6*))
-
-class V0,V2,V5 blue
-class V1,V4,V3,V6 bluegreen
-</div>
-]
-.right-column50[
-|State           |Ordering         |
-|:---------------|:----------------|
-|*Picking*       | V3| V1 | V6 | V4|
-|*Capture Order* | 4 | 3  | 2  | 1 |
-|*Bubbling Order*| 1 | 2  | 3  | 4 |
-]
-
----
-# Stuff to ponder: How would you handle input in a circular component?
-???
-Consumption is based on the bounding box...
---
-
-Delivery is based on bounding box
-
-Return `false` if input is outside circle even if it's in the bounding box
-
----
-# Stuff to ponder: How would you handle focus input?
-
-- Some event types are focus based (e.g. keyboard input)
-- Just skip picking: Focus list is globally created, and we walk it the same way
-
----
-# Stuff to ponder: Implementing Drag and Drop
-
-Focus? Or Positional?
-
---
-[Android's tutorial is positional](https://developer.android.com/training/gestures/scale#java)
-
-
----
-# How does *Android* decide where to send events?
-
-- **Capture** (most things don’t) top to bottom deliver to target
-   object (bottom)
-   - example: `onInterceptTouchEvent()` in Android
-- **Pick** to identify objects of interest (or just focus())
-   - `buildTouchDispatchChildList()` in Android; happens only after capture!
-- **Bubble** (bottom to top)
-   - example: `onTouchEvent()` in Android
-- Invoke callback (wait until complete)
-  - we do this by creating a custom listener in Android
-
-.footnote[fascinating to look at [implementation in
-ViewGroup](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewGroup.java)
--- not very general!]
-
----
-# Note about event records
-
-- Where
-  - Where is the location of the cursor (x,y position on the screen)
-  - For focus based events, where is often the target
-- Value is anything you might need to know (like whether it's a 1 or 2 finger swipe; or which key was pressed)
-
-Why is this important? For *picking*:
-- When input is positional, *only* interactors whose bounding box includes (x,y) -- where -- are picked
-- When input is focus based, *only* interactors in the focus list are picked. Where isn't used in dispatch
-
-
----
-
-# Creating a new type of listener
-
-Application callbacks can be implemented as custom listeners
-
-
-```java
-// Defines a new named inner interface for listening to an interesting event
-public interface MyListener {
-    void onInterestingEvent(); // can include a parameter
-}
-
-// variable to store the listener in once registered. Could also be a list of
-// listeners that are all called if the callback is triggered.
-protected MyView.MyListener mListener;
-
-public void setMyListener(MyListener mListener) {
-    this.mListener = mListener;  // could also be stored in a list.
-}
-...
-
-// somewhere else in your code, when callback time happens
-public void someMethod() {
-  mListener.onInterestingEvent();
-}
-
-```
----
-
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Using Input to Create Interaction Techniques
-
-## State Machines, PPS, Essential Geometry
-
----
-layout:false
-
-# Interaction Technique
-
-A method for carrying out a specific interactive task
-
-For example: For entering a number in a range you could use...
-
-???
-have the class try to think of examples
---
-- (simulated) slider
-- (simulated) knob
-- type in a number (text edit box)
-
-Each is a different interaction technique
----
-# Example: Specify the end points for a line
-
-Could just specify two endpoints – click, click
-- not good: no affordance
-  - no feedback (/ feedforward)
-
-Better feedback is to use “rubber banding”
-- stretch out the line as you drag
-- at all times, shows where you would end up <br> if you “let go”
-???
-Importance of feedback vs application callback
----
-# Implementing rubber banding
-
-```
-Accept the press for endpoint P1; P2 = P1;
-Draw line P1-P2;
-Repeat
-  Erase line P1-P2;
-  P2 = current_position(); Draw line P1-P2;
-Until release event;
-Act on line input;
-```
-
-???
-Discuss!
-Not event based
-Not in the basic event/redraw loop
-Potentially locks up the system
----
-# Implementing rubber banding
-
-Need to get around this loop <br> absolute min of 5 times / sec
-
-– 10 times better
-
-– more would be better but might block system.
-
-???
-aside -- why 5-10 times per second?
-
----
-# Event driven code
-
-Needs to respond to events as they arrive
-
-Needs to maintain state between events
-
----
-# Solution: State Machine
-
-- State Machines are used to respond to incoming events and allows for us to store state between events.
-- Start state - indicated with incoming arrow
-- End state - indicated with double-layered shape (means "reset to start")
-- Transition States - indicated with single-layered shape
-- Event Arrows - indicated with an arrow between states, represent different actions taken up states.
-
-.left-column40[
-<div class="mermaid">
-graph LR
-S((.)) --> A((A))
-A -- "a" --> B((B))
-B -- "b" --> B
-B -- "b" --> C[C]
-
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-
-
-class S invisible
-class A start
-class C finish
-class B normal
-</div>
-]
---
-.right-column50[
-Is the folowing "accepted" by the above state machine?
-
-- ab
-- abbbbbb
-- aab
-- abbbbba
-]
----
-# Solution: State Machine
-
-- State Machines are used to respond to incoming events and allows for us to store state between events.
-- Start state - indicated with incoming arrow
-- End state - indicated with double-layered shape (means "reset to start")
-- Transition States - indicated with single-layered shape
-- Event Arrows - indicated with an arrow between states, represent different actions taken up states.
-
-
-<div class="mermaid">
-graph LR
-S((.)) --> A((A))
-A -- "Event1/Callback1()" --> B((B))
-B -- "Event2/Callback2()" --> B
-B -- "Event3/Callback3()" --> C[C]
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-
-class S invisible
-class A start
-class C finish
-class B normal
-</div>
-
-
----
-# Propositional Production System (PPS)
-
-- State machine is just the start, stop and interim states with arrows with nothing on them.
-- PPS is a state machine with extra conditions required to fire on the arrows.
-  - ? predicate (Boolean expr) before event, adds extra conditions required to transition
-  - action calls
-- Typical notation
-
-  event : pred ? action
-
-- Example
-
-  MouseUp:inView?Start_Line()
-
-- Finite State Machine (FSM) augmented with guards is Turing complete
-
-
----
-# PPS Example: Rubber Banding
-
-
-.left-column-half[
-Compare to previous implementation:
-
-```
-Accept the press for endpoint P1; P2 = P1;
-Draw line P1-P2;
-Repeat
-  Erase line P1-P2;
-  P2 = current_position(); Draw line P1-P2;
-Until release event;
-Act on line input;
-```
-]
-.right-column-half[
-
-- Determine the Events (triggers)
-
-- Determine the States
-
-- Determine the Actions
-
-- Determine the Queries
-]
----
-# PPS Example: Rubber Banding
-.left-column40[
-Compare to previous implementation:
-
-```
-Accept the press for endpoint P1; P2 = P1;
-Draw line P1-P2;
-Repeat
-  Erase line P1-P2;
-  P2 = current_position(); Draw line P1-P2;
-Until release event;
-Act on line input;
-```
-]
-
-.right-column50[
-
-<div class="mermaid">
-graph TD
-S((.)) --> A((Start))
-A -- "Mouse Down:inView?Start_Line()" --> B((Drawing))
-B -- "Mouse_Move:inView?Update()" --> B
-B -- "Mouse_Release:inView?Finish_Line()" --> C[Finished]
-
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-
-class S invisible
-class A start
-class C finish
-class B normal
-</div>
-
-]
-
----
-# PPS Example: Rubber Banding
-.left-column40[
-
-Reading a state machine: translates input sequence into action!
-- When you are in Start State, and a Mouse Down event arrives, do
-  the action `Start_line()` and go to Drawing State.
-- Update  the line end point position every time the mouse moves.
-- When it releases (Mouse Release event), finish the line (at this
-  stage a callback to the application might be appropriate)
-]
-
-.right-column50[
-
-<div class="mermaid">
-graph TD
-S((.)) --> A((Start))
-A -- "Mouse Down:?inView/Start_Line()" --> B((Drawing))
-B -- "Mouse_Move:?inView/Update()" --> B
-B -- "Mouse_Release:?inView/Finish_Line()" --> C[Finished]
-
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-
-class S invisible
-class A start
-class C finish
-class B normal
-</div>
-
-]
-
-???
-
-How could we provide a better affordance?
-
-Does it matter if we are using a mouse or a touch screen?
-
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Using Essential Geometry as the basis for state
-
----
-layout:false
-
-# Using Essential Geometry as the basis for state
-
-.left-column-half[
-![:img google doc with scrollbar, 80%](img/pps-geom/window.png)
-
-]
-
-.right-column-half[
-- What is the essence (or nature) of this scrollbar? Where can you interact with it?
-]
-
----
-
-# Using Essential Geometry as the basis for state
-
-.left-column-half[
-![:img google doc with scrollbar, 80%](img/pps-geom/window.png)
-
-]
-
-.right-column-half[
-- What is the essence (or nature) of this scrollbar? Where can you interact with it?
-  - on the thumb
-  - inside the scrollbar above the thumb
-  - inside the scrollbar below the thumb
-  - inside up arrow
-  - inside the down arrow
-]
-
---
-.right-column-half[
-- How do we implement a scroll bar like this?
-]
-
----
-# Scrollbar State machine with Essential Geometry
-
-<div class="mermaid">
-graph LR
-S((.)) --> START((START))
-START -- "MouseDown:InThumb?StartScroll()" --> SCROLLING((SCROLLING))
-START -- "MouseClick:InsideAboveThumb?Scrollup()" --> DONE((DONE))
-START -- "MouseClick:InsideBelowThumb?Scrolldown()" --> DONE((DONE))
-SCROLLING -- "MouseMove:updateThumbDocument()" --> SCROLLING
-SCROLLING -- "MouseUp:KeepLocation()" --> DONE
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-linkStyle 5 stroke-width:4px;
-
-class S invisible
-class START start
-class SCROLLING normal
-class DONE finish
-</div>
-
----
-# Let's try it for a button
-
-.left-column-half[
-Essential geometry is:
-- InsideButton
-- OutsideButton
-
-and methods for
-- `indentButton()` (when button is pressed)
-- `normalButton()` (when button is not pressed)
-- `invokeAction()` (when the user releases in the button)
-- `cancelAction()` (when the user releases outside the button)
-
-]
-
----
-# You should have something like this
-
-.left-column40[
-Essential geometry is:
-- Inside
-- Outside
-
-and methods for
-- `indentButton()` (when button is pressed)
-- `normalButton()` (when button is not pressed)
-- `invokeAction()` (when the user releases in the button)
-- `cancelAction()` (when the user releases outside the button)
-
-]
-.right-column50[
-<div class="mermaid">
-graph TD
-S((.)) --> START((START))
-START -- "DOWN:Inside?indentButton()" --> PRESSED((PRESSED))
-PRESSED -- "MOVE:Outside?normalButton()" --> PRESSED
-PRESSED -- "UP:Outside?cancelAction()" --> END[END]
-PRESSED -- "UP:Inside?invokeAction()" --> END
-PRESSED -- "MOVE:Inside?indentButton()" --> PRESSED
-
-linkStyle 0 stroke-width:2px;
-linkStyle 1 stroke-width:2px;
-linkStyle 2 stroke-width:2px;
-linkStyle 3 stroke-width:2px;
-linkStyle 4 stroke-width:2px;
-linkStyle 5 stroke-width:2px;
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF;
-
-class S invisible
-class START start
-class PRESSED normal
-class END finish
-</div>
-
-]
-
-
----
-# How do we implement this?
-.left-column-half[
-- Implement in `onTouch()` using a switch statement
-- Assume there is an
-`essentialGeometry(MotionEvent event)` method. It returns a enum that tells you what
- part of the geometry you are in for that point.
-- Assume implementations of all the methods
-- Assume a field, `state` which is the current state of the state machine
-- enums `EssentialGeometry` and `State` for comparing against
-]
-.right-column-half[
-
-```java
-@Override
-public boolean onTouch(MotionEvent e) {
-  EssentialGeometry geometry = essentialGeometry(event);
-  switch (state) {
-    case State.START:
-      if (geometry == Geometry.INSIDE && e.getAction() == MotionEvent.ACTION_DOWN) {
-         indentButton();
-         state = State.PRESSED;
-         return true;
-      }
-      break;
-    case PRESSED
-      if (e.getAction() == MotionEvent.ACTION_MOVE) {
-        if (geometry == Geometry.INSIDE) {
-          indentButton();
-    	  } else {
-          normalButton();
-        }
-        return true;
-      }
-      else if (e.getAction() == MotionEvent.ACTION_UP) {
-        state = State.START; // note we don't actually use the END state
-        if (geometry == Geometry.INSIDE) {
-          invokeAction();
-        } else {
-          cancelAction();
-        }
-        return true;
-      }
-      break;
-    default:
-      break;
-  }
-  return false;
-}
-```
-]
-
----
-# Enums
-
-Enums are a group of named constants
-
-- Often used for developing interactions for defining PPS States and Essential Geometry
-- Will be used in ColorPicker and in Menu assignment for interaction *and* for experimental conditions
-- Good code quality: limits choices of what a variable can be.
-
-[Documentation](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)
-
----
-
-.left-column[
-## Harder Button
-
-![:img FB Messenger Animation, 100%](img/pps-geom/messenger-bubble.gif)
-
-]
-.right-column[
-- Determine the Events (triggers)
-
-- Determine the States
-
-- Determine the Queries (essential geometry, context)
-
-- Determine the Actions
-]
-
-???
-What constitutes an “event” varies
-
-- may be just low level events, or
-- higher level (synthesized) events
-- e.g. region-enter, press-inside
-
-What is missing? Query fields
-
----
-.left-column[
-## Facebook Button Solution
-![:img FB Messenger Animation, 100%](img/pps-geom/messenger-bubble.gif)
-]
---
-.right-column[
-
-Press:inside? => highlight(), start_animation(), small, active<br>
-AnimateStep ==> update(), active<br>
-AnimateFinish ==> !small, active<br>
-Release:inside,small => unhighlight(), exit()<br>
-Release:inside,!small => add_to_chat(), small, unhighlight(),
-exit()<br>
-
-__rest is unknowable from this animation__
-
-<div class="mermaid">
-  graph LR
-  S((.)) --> A((Start))
-  A -- "Press:inside?highlight(),start_animation()" --> B((Active))
-  B -- "AnimateStep,update()" --> B
-  B -- "AnimateFinish,!small"--> B
-  B -- "Release,inside:small, unhighlight" -->D(End)
-  B -- "Release,inside:!small,add_to_chat(),unhighlight()" --> D
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:2px;
-linkStyle 1 stroke-width:2px;
-linkStyle 2 stroke-width:2px;
-linkStyle 3 stroke-width:2px;
-linkStyle 4 stroke-width:2px;
-linkStyle 5 stroke-width:2px;
-
-class S invisible
-class A start
-class D finish
-class B normal
-</div>
-
-]
-
----
-# When to use PPSs
-
-You're probably already using them, just not intentionally (and maybe
-less well as a result)
-
-PPSs are a good way to do control flow in event driven systems
-
-Can do (formal or informal) analysis
-- are all possible inputs (e.g. errors) handled from each state
-- what are next legal inputs: can use to enable / disable
-
-Can be automated based on higher level specification
-
----
-
-# Summary
-
-State machines are very good (for this job) but do have limits
-
-State machines don't handle independent actions very well (state explosion)
-
-Mostly useful for smaller things
-
-- Great for individual components
-- Not so great for whole dialogs
-
-Path of least resistance is rigid sequencing
- Ask: is this good for what I am doing?
-
-???
diff --git a/slides/wk05/review.html b/slides/wk05/review.html
deleted file mode 100644
index 5b3d4aec65b5d57848e6124173f0793014f2e771..0000000000000000000000000000000000000000
--- a/slides/wk05/review.html
+++ /dev/null
@@ -1,222 +0,0 @@
----
-layout: presentation
-title: The whole toolkit
-description: Review of what we know about GUI toolkits
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Review slides to help studying
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout:false
-
-.left-column[
-## And Introduced Model View Controller
-]
-.right-column[
-Model
-- Model of a single interactor: Typically a field
-- Application model
- - Separate from view model
- - Typically more persistent (*e.g.,* a database)
-
-View
-- `onDraw()` in a single interactor
-- Interactor hierarchy in an application
-
-Controller
-- state machine in a single interactor
-- callbacks (*e.g.,* custom listeners) in an application
-]
-???
-Different for Interactor and Application
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/whole/callbacks.png)]
-.right-column-half[
-Dispatch Strategies
-- Positional (Bottom-first and top-down)
-- Focus-based
-
-State Machine describes *within-view* response to events
-]
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface and a do_action() call
-happening below the line in response to a button_pressed(), 100%](img/whole/callbacks2.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-
-]
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface with do_action() replaced
-with an actionListener, 100%](img/whole/callbacks3.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-- Best implemented using custom listeners
-
-]
----
-# Value of component abstraction
-
-Each component knows how to draw itself
-
-Based on what it is and its internal state
-
-Includes some common properties (inherited from a base class for all components), E.g.
-
-- position (x,y relative to parent)
-- size (w,h)
-- visible
-- Enabled
-
-Typically includes some specialized properties (declared in
-subclass)
-
----
-# More Output/Drawing Concepts
-
-Drawing primitives – populate a pixel array (*Frame Buffer*)
-
-Coordinate transformations (translate/scale/rotate/shear) & Clipping
-
-Fonts: Archaic origins, Non standardized
-- UI toolkit implications?
-
----
-.left-column[
-## Input/Event Concepts
-]
-.right-column[
-Devices
-
-- Logical: Valuator, Locator, Button, etc
-- Event vs. sampled devices
-- Absolute vs. Relative (and clutched)
-
-Event model to unify event and sampled devices
-- What
-- When
-- Where
-- Value
-- Context
-]
----
-# Review: None-core concepts
----
-layout:false
-
-# How an animation is set up
-
-Need the start and end value of the properties to be
-modified. Typically use a
-[Path](https://developer.android.com/reference/android/graphics/Path)
-for this.
-
-Need a *duration* (total time in ms for the animation)
-
-Need the *pacing function* for animation. Can explore subclasses of
-[Interpolator](https://developer.android.com/reference/android/view/animation/Interpolator)
-(or make your own!) for this
-
----
-.left-column[
-## Example pacing functions
-![:img Picture of for types of interpolation functions provided with
-android, 100%](img/whole/interpolators.gif)
-]
-.right-column[
-<br><br><br><br>
-Slow in slow out (Accelerate/decelerate)
-
-Slow in (Accelerate)
-
-Anticipate (back up slightly, then accelerate)
-
-Anticipate Overshoot (same, then go too far and slow down)
-]
----
-name: inverse
-layout: true
-class: center, middle, inverse
-
-# Understanding People
----
-layout:false
-
-# HSV
-
-RGB matches the eye (rods & cones, red green and blue)
-
-HSV is much better for *people*
-- Hue: Dominant wavelength of light
-- Saturation: Purity (how much white/black mixed in)
-- Value: Luminance or amount of light in color = max(R,G,B)
-
----
-.left-column[
-## Example Short Answer Exam Question
-![:img Darker and lighter red boxes, 80%](img/whole/redcomp.png)
-![:img Red with varying saturation (to white) and value (to black), 80%](img/whole/value-sat.png)
-
-]
-.right-column[
-# Compare the following colors using HSV
-Which is correct?
-
-- A: Top color has different *hue* than bottom color
-- B: Top color has higher *saturation* than bottom color
-- C: Top color has higher *value* than bottom color
-]
-???
-B: Saturation
-
----
-# Know your speeds (order of magnitude is key thing here)
-
-< ~20ms (1/50 sec) discrete images/flashes merge into continuous perception
-
-smooth animation: 24-40  frames per second
-
-< ~100-200ms seems like “instant response”
-- on web a difference of 250 ms can switch people to a competitor
-
-< 1-2 seconds typically “good response time”
-
-More than 10-15 sec is typically “bad response time”
-
----
-# Recap of design tips
-
-- Don't rely on blue for small objects
-- Don't rely on blue for older users
-- Make sure that contrast is high enough
-- Minimize saturated colors
-- Use redundant cues
-- Make things distinct
-- Use small multiples
-- Manage expectations if you can't change response time
-- Replace subtle changes with obvious ones
-- Use well-tested visual grouping strategies
-- Minimize the number of options
-- Rely on recognition rather than recall
diff --git a/slides/wk05/unused-maybe.html b/slides/wk05/unused-maybe.html
deleted file mode 100644
index c18f3c32607cc0f28305f70017f9702f9dcf0663..0000000000000000000000000000000000000000
--- a/slides/wk05/unused-maybe.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
----
-# Summary
-- MVC: Separation of concerns for user interaction
---
-
-- Events: logical input device abstraction
---
-
-- We model everything as events
- - Sampled devices
-   - Handled as “incremental change” events
-   - Each measurable change: a new event with new value
- - Device differences
-   - Handled implicitly by only generating events they can generate
- - Recognition Based Input?
-   - Yes, can generate events for this too
-
-
-
-
-
-# End of Deck
-
-
----
-# Input __Dispatch__ Process
-
-Input Thread
-
-Dispatch thread
-
-Components:
-- Components have to listen for events (callbacks)
-- How do components respond?
-
-???
-- remind them that component/view/interactor are interchangeable in
-  this class
-- Update application state if appropriate
-- Request repaint if needed
diff --git a/slides/wk05/whole-toolkit.html b/slides/wk05/whole-toolkit.html
deleted file mode 100644
index 5d8aab6772e809f3b8cdda521d80b10121f02ac9..0000000000000000000000000000000000000000
--- a/slides/wk05/whole-toolkit.html
+++ /dev/null
@@ -1,459 +0,0 @@
----
-layout: presentation
-title: The whole toolkit
-description: Review of what we know about GUI toolkits
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# The whole toolkit
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout:false
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- Update from Wednesday
-- Last bit about Essential Geometry
-- Let's look at colorpicker
-- Review and summarize core toolkit architecture
-
----
-# Event Dispatch
-
-- Top-down, Bottom-Up, Bubble-out, Focused-based: these are theoretical Event dispatch.
-- Android does it a bit differently.
-- Capture is top-down: start on the in the biggest interactor that contains the event,
- then narrow in on which window actually will use the event
-- Bubbling is bottom-up - start with the window at the front (the last drawn, lowest in the
-interactor tree) - see if the event is consumed by that interactor. If not, go up the tree.
-
----
-# Other comments
-
-- layout varies depending on the specific layout container
-  - ConstraintLayouts don't need multiple passes, it's a top down structure.
-  - LinearLayout is post order for measure (measure the children, who first measure their children)
-  - In general, have to look at implementation to know for sure.
--  `onDraw` is usually pre-order (Intuitively leaf nodes should be 'on top' of parents)
-- *Capture* is rarely used by component developers
-- *Bubbling* is far more common
-- Interface programmers just need to use callbacks, not worry about this stuff
-
----
-# Colorpicker assignment
-
----
-
-.left-column[
-## Have now seen *almost* all the parts of an interface
-]
-.right-column[
-
-Input
-
-- Input models (events)
-- Event dispatch
-- Event handling (state machine)
-- Callbacks to application
-
-Output
-- Interactor Hierarchy design & use
-- Drawing models (`onDraw()`)
-- Layout (`onLayout()` or `XML`)
-- Damage and redraw process
-]
----
-.left-column-half[
-# Core Toolkit Architecture
-
-Wait for *Event*
-
-*Dispatch* may cause change to:
-- interactor state
-- interactor hierarchy
-- application model
-]
-
-???
-What do you need to know though? Mostly only if you are a component developer
-
---
-.right-column-half[
-# Component Developer
-
-Implement event handler (e.g. `onTouch()`)
-
-Handle *Dispatch*
-- Update interactor state & model if needed
-- Notify application if application model should change (with a callback)
-- Call `invalidate()`
-]
-
-???
-What about if you are an app developer? Basically, just use callbacks
-
----
-.left-column-half[
-# Core Toolkit Architecture
-
-If damage do
-- *layout* (may change)
- - position
- - size
-- If damage do *redraw*
-]
-
---
-.right-column-half[
-# Component Developer
-
-- May need to implement `onMeasure()`  and `onLayout()` (if a container)
-- Will always implement `onDraw()` but *never call it* (call `invalidate()` instead)
-]
-
----
-## View Update: .red[Damage/Redraw]
-
-How does the toolkit know what to redraw?
-
-What causes damage?
-???
-concrete example on next slide
----
-.left-column[
-## View Update: .red[Damage/Redraw]
-]
-
-.right-column[
-What should be redrawn?
-
-![:img google doc with scrollbar, 50%](img/whole/window.png)
-]
-
----
-
-.left-column[
-## View Update: .red[Damage/Redraw]
-]
-
-.right-column[
-What should be redrawn?
-
-![:img google doc with scrollbar, 50%](img/whole/window-with-menu.png)
-]
----
-
-.left-column[
-## View Update: .red[Damage/Redraw]
-]
-
-.right-column[
-What should be redrawn?
-
-![:img google doc with scrollbar, 50%](img/whole/combined.png)
-]
-
----
-## View Update: .red[Damage/Redraw]
-
-How does the toolkit know what to redraw?
-
-What causes damage?
-???
-Can you think about other things?
-- Window hidden and re-exposed
-- Resizing
-- redrawing
-
---
-
-<br><br>Naive approach to redraw
-
----
-
-## View Update: .red[Damage/Redraw]
-
-
-![:img pic of original screen and changed screen, 72%](img/whole/original-new.png)
-
-
-???
-XXX TODO ADD pic like this using divs?
-
-- Can be slow (redrawing everything unecessary)
-- Can cause flickering
- - double buffering is better,
- - hence the 'Canvas' abstraction or equivalent
- - can then switch which FB is displayed (very fast)
-
----
-## View Update: .red[Damage/Redraw]
-
-![:img pic of original screen and changed screen, 72%](img/whole/original-new.png)
-![:img pic with double buffering included, 70%](img/whole/full-solution-buffering.png)
-
----
-## View Update: .red[Damage/Redraw]
-
-![:img pic of original screen and changed screen, 72%](img/whole/original-new.png)
-![:img pic with double buffering included, 70%](img/whole/full-solution-buffering.png)
-
-**Never** just draw:  Why not?
-
-
-???
-- Update *state*
-- Report *damage* (by calling 'repaint())
-- Wait for *toolkit to request redraw*
- (also works if damage comes from elsewhere)
-- How does it generalize to any cause of damage (always need state!!)
-
----
-## View Update: .red[Damage/Redraw]
-
-How does the toolkit know what to redraw?
- - Let the component report: Damage/Redraw invoked by `invalidate()` or equivalent
-
-
----
-## View Update: .red[Damage/Redraw]
-
-How does the toolkit know what to redraw?
-- Let the component report (`invalidate()`) **NOTE** we are *not* calling *onDraw()* directly (important for your assignment)
-- Aggregate
-- Usually calculate bounding box
-
-
----
-## View Update: .red[Draw/Redraw]
-
-Virtual device abstraction provided by windowing system
-
-Component abstraction provided by toolkit
-- Enforced using clipping
-- Supported using coordinate system transformations
-
-
-Drawing is recursive
-- Makes it possible for parent to *decorate* kids
-- Parent responsible for making kids think they are the center of the universe (translate)
-- Clipping: intersect parent and child, also handled by parent
-
-???
-
-Allows each program to (mostly) pretend that it has the screen (frame
-buffer) to itself
-
-Allows each component to (mostly) pretend that it has the screen to
-itself
-
-
----
-# Core Toolkit Architecture
-
-If damage do
-- *layout* (may change)
- - position
- - size
-- If damage do *redraw*
- - Union of damage (any of those can cause it) used to trigger redraw of anything inside that union
- - Drawing + clipping – standard drawing order, but only for things damaged; clipped to damage region
- - Clear damage
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Using Essential Geometry as the basis for state
-
----
-layout:false
-
-# Using Essential Geometry as the basis for state
-
-.left-column-half[
-![:img google doc with scrollbar, 80%](img/pps-geom/window.png)
-
-]
-
-.right-column-half[
-- What is the essence (or nature) of this scrollbar? Where can you interact with it?
-]
-
----
-
-# Using Essential Geometry as the basis for state
-
-.left-column-half[
-![:img google doc with scrollbar, 80%](img/pps-geom/window.png)
-
-]
-
-.right-column-half[
-- What is the essence (or nature) of this scrollbar? Where can you interact with it?
-  - on the thumb
-  - inside the scrollbar above the thumb
-  - inside the scrollbar below the thumb
-  - inside up arrow
-  - inside the down arrow
-]
-
---
-.right-column-half[
-- How do we implement a scroll bar like this?
-]
-
----
-# Scrollbar State machine with Essential Geometry
-
-<div class="mermaid">
-graph LR
-S((.)) --> START((START))
-START -- "MouseDown:InThumb?StartScroll()" --> SCROLLING((SCROLLING))
-START -- "MouseClick:InsideAboveThumb?Scrollup()" --> DONE((DONE))
-START -- "MouseClick:InsideBelowThumb?Scrolldown()" --> DONE((DONE))
-SCROLLING -- "MouseMove:updateThumbDocument()" --> SCROLLING
-SCROLLING -- "MouseUp:KeepLocation()" --> DONE
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-linkStyle 5 stroke-width:4px;
-
-class S invisible
-class START start
-class SCROLLING normal
-class DONE finish
-</div>
-
----
-# Let's try it for a button
-
-.left-column-half[
-Essential geometry is:
-- InsideButton
-- OutsideButton
-
-and methods for
-- `indentButton()` (when button is pressed)
-- `normalButton()` (when button is not pressed)
-- `invokeAction()` (when the user releases in the button)
-- `cancelAction()` (when the user releases outside the button)
-
-]
-
----
-# You should have something like this
-
-.left-column40[
-Essential geometry is:
-- Inside
-- Outside
-
-and methods for
-- `indentButton()` (when button is pressed)
-- `normalButton()` (when button is not pressed)
-- `invokeAction()` (when the user releases in the button)
-- `cancelAction()` (when the user releases outside the button)
-
-]
-.right-column50[
-<div class="mermaid">
-graph TD
-S((.)) --> START((START))
-START -- "DOWN:Inside?indentButton()" --> PRESSED((PRESSED))
-PRESSED -- "MOVE:Outside?normalButton()" --> PRESSED
-PRESSED -- "UP:Outside?cancelAction()" --> END[END]
-PRESSED -- "UP:Inside?invokeAction()" --> END
-PRESSED -- "MOVE:Inside?indentButton()" --> PRESSED
-
-linkStyle 0 stroke-width:2px;
-linkStyle 1 stroke-width:2px;
-linkStyle 2 stroke-width:2px;
-linkStyle 3 stroke-width:2px;
-linkStyle 4 stroke-width:2px;
-linkStyle 5 stroke-width:2px;
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF;
-
-class S invisible
-class START start
-class PRESSED normal
-class END finish
-</div>
-
-]
-
-
----
-# How do we implement this?
-.left-column-half[
-- Implement in `onTouch()` using a switch statement
-- Assume there is an
-`essentialGeometry(MotionEvent event)` method. It returns a enum that tells you what
- part of the geometry you are in for that point.
-- Assume implementations of all the methods
-- Assume a field, `state` which is the current state of the state machine
-- enums `EssentialGeometry` and `State` for comparing against
-]
-.right-column-half[
-
-```java
-@Override
-public boolean onTouch(MotionEvent e) {
-  EssentialGeometry geometry = essentialGeometry(event);
-  switch (state) {
-    case State.START:
-      if (geometry == Geometry.INSIDE && e.getAction() == MotionEvent.ACTION_DOWN) {
-         indentButton();
-         state = State.PRESSED;
-         return true;
-      }
-      break;
-    case PRESSED
-      if (e.getAction() == MotionEvent.ACTION_MOVE) {
-        if (geometry == Geometry.INSIDE) {
-          indentButton();
-    	  } else {
-          normalButton();
-        }
-        return true;
-      }
-      else if (e.getAction() == MotionEvent.ACTION_UP) {
-        state = State.START; // note we don't actually use the END state
-        if (geometry == Geometry.INSIDE) {
-          invokeAction();
-        } else {
-          cancelAction();
-        }
-        return true;
-      }
-      break;
-    default:
-      break;
-  }
-  return false;
-}
-```
-]
-
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# END OF DECK
diff --git a/slides/wk06/3dprinting.html b/slides/wk06/3dprinting.html
deleted file mode 100644
index fca37938858c5569c6bcf5068884ed03be27ccf4..0000000000000000000000000000000000000000
--- a/slides/wk06/3dprinting.html
+++ /dev/null
@@ -1,613 +0,0 @@
----
-layout: presentation
-title: Intro to 3D printing
-description: Description of 3D printing value on mobile phones
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Intro to 3D Printing and Physical Computing
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout:false
-
-[//]: # (Outline Slide)
-.title[Today's goals]
-.body[
-- Reminders
-  - Start on ColorPicker if you have not already
-  - Practice quiz on Accessibility/ColorPicker out on Friday - due 5/13
-  - Examlet on Accessibility/ColorPicker on Friday 5/15
-- IMPORTANT
-  - We need you to fill out
-  [this form](https://docs.google.com/forms/d/e/1FAIpQLSdQrpZx-gexgDcKEF1SRp4egObimDP9qqVwLD56w0V2sYJDpw/viewform) so we can plan for our next assignment.
-- Discuss different types of 3D models
-- Talk about how 3D printing works
-- Talk about how 3D models are converted into low level g-code
-]
-
-
-
----
-# Story time...
-
-.left-column40[
-![:img 1997 green subaru station wagon](img/3dprinting/subaru.png)
-]
-
---
-.right-column50[
-<br><br>
-![:img subaru station wagon dome light, 70%](img/3dprinting/subaru-light.png) &nbsp; &nbsp;![:img subaru station wagon dome light switch, 20%](img/3dprinting/subaru-switch.png)
-
-]
-
----
-# Traditional Manufacturing
-
-<div class="mermaid">
-graph LR
-A(Materials) --> B(Factory)
-B --> D(Shipping)
-D --> E(Storage)
-E --> F(Shipping)
-F --> G(You)
-
-classDef blue font-size:14pt;
-classDef green font-size:14pt;
-
-class B,D,E,F blue
-class A,G green
-</div>
-
----
-.left-column[
-# Legacy ... literally
-
-]
-.right-column[
-![:img used part sale for a 1997 subaru legacy dome light, 45%](img/3dprinting/subaru-legacy-part.png)
-
-]
----
-# It worked!
-
-![:img 1997 green subaru station wagon](img/3dprinting/subaru-switch-replaced.png) &nbsp;&nbsp;
-![:img 1997 green subaru station wagon](img/3dprinting/subaru-switch-replaced-on.png)
-
-
-
----
-# The future (is Here)
-<br>
-<div class="mermaid">
-graph LR
-A(3D Modeling, <br> e.g. OpenSCAD) -->|Prepare| B(Geometry <br> e.g. .stl file)
-B -->|Slice| D(Printer instructions<br>G-code file)
-D -->|Printer| E(Printed Object)
-
-class A,B,D blue
-class E green
-</div>
-
-- __Prepare__ for printing
-- __Slice__ the model
-- __Printer__ Controller
-
----
-# Prepare for Printing
-
-- Create a model using any one of a number of 3D modeling packages such as Sketchup, Open SCAD,
-Rhino 3d, Meshmixer, Blender, OnShape, Minecraft, SolidWorks
-  - Some packages reprsent 3D objects as solids, others as shells and boundaries.
-- Or you can find lots of stuff in repositories, like [Thingiverse](http://www.thingiverse.com/)
-
-
-.left-column50[
-__Solids__ (image from [Wikipedia](https://en.wikipedia.org/wiki/Constructive_solid_geometry ))
-
-![:img example of what solid modeling looks like, 40%](img/3dprinting/solid-modeling.png)
-]
-
-.right-column50[
-__Shells/Boundaries__
-
-![:img A 2D nurb plane, 45%](img/3dprinting/shells.png)
-![:img A 3d scan of a male with long hair, 30%](img/3dprinting/bust.png)
-]
-
----
-# .stl File
-
-Almost every software package can save the files as a `.stl` file (stereolithography)
-
-.left-column50[
-
-![:img open cube modeled as with surfaces, 45%](img/3dprinting/cube-shell.png)
-![:img open cube as stl file, 45%](img/3dprinting/cube-stl.png)
-
-]
-.right-column50[
-```
-solid OBJECT
-  facet normal 0 -1 0
-    outer loop
-      vertex 10 -10 0
-      vertex 0 -10 10
-      vertex 0 -10 0
-    endloop
-  endfacet
-  facet normal 0 -1 0
-    outer loop
-      vertex 0 -10 10
-      vertex 10 -10 20
-      vertex 8 -10 20
-    endloop
-  endfacet
-```
-]
-
----
-# Printer Controller
-
-The printer controller converts the `.stl` file into GCode, commands read by the printer
-
-
-.left-column50[
-```
-solid OBJECT
-  facet normal 0 -1 0
-    outer loop
-      vertex 10 -10 0
-      vertex 0 -10 10
-      vertex 0 -10 0
-    endloop
-  endfacet
-  facet normal 0 -1 0
-    outer loop
-      vertex 0 -10 10
-      vertex 10 -10 20
-      vertex 8 -10 20
-    endloop
-  endfacet
-```
-]
-
---
-.right-column50[
-
-![:img colorful magician, 50%](img/3dprinting/magician.png)
-
-]
----
-# Printer Controller
-
-The printer controller converts the `.stl` file into GCode, commands read by the printer
-
-
-.left-column50[
-```
-solid OBJECT
-  facet normal 0 -1 0
-    outer loop
-      vertex 10 -10 0
-      vertex 0 -10 10
-      vertex 0 -10 0
-    endloop
-  endfacet
-  facet normal 0 -1 0
-    outer loop
-      vertex 0 -10 10
-      vertex 10 -10 20
-      vertex 8 -10 20
-    endloop
-  endfacet
-```
-]
-
-.right-column50[
-```
-G1 X-5.87 Y-12.69 Z0.47 F3360.0
-G1 F1200.0
-G1 E1.0
-G1 F3360.0
-M101
-G1 X-5.87 Y12.69 Z0.47 F381.198 E5.799
-G1 X-2.93 Y12.69 Z0.47 F381.198 E6.354
-G1 X-2.93 Y-12.69 Z0.47 F381.198 E11.152
-G1 X0.0 Y-12.69 Z0.47 F381.198 E11.707
-G1 X0.0 Y12.69 Z0.47 F381.198 E16.506
-G1 X2.93 Y12.69 Z0.47 F381.198 E17.06
-G1 X2.93 Y-12.69 Z0.47 F381.198 E21.859
-G1 X5.87 Y-12.69 Z0.47 F381.198 E22.414
-G1 X5.87 Y12.69 Z0.47 F381.198 E27.213
-G1 X8.8 Y12.69 Z0.47 F381.198 E27.768
-
-```
-]
-
----
-# Results
-![:img small grey 3D printed box](img/3dprinting/grey-box.png)
-
-
-
----
-# What do new fabrication technologies provide?
-
-.left-column50[
-New ways to create
-- Faster, easier, sometimes better
-
-New ways to customize
-- Faster iteration
-- Mass customization
-
-New materials
-
-New shapes
-]
-
---
-.right-column50[
-Magic arms
-
-![:youtube Video of child using a 3D printed hand, WoZ2BgPVtA0]
-
-]
-
----
-# What new fabrication technologies are not
-
-Not the startrek replicator
-
-Not as fast as the best manufacturing solutions for bulk manufacturing
-
-Not as fast as your 2d printer
-
-Often expensive
-
-Material range is limited
-
----
-# Additive Vs Subtractive Printing
-
-.left-column50[
-- Additive printing puts down material, building up the object layer by layer
-  - Some are done with extruded plastic or other material
-  - Others are done with powders that are sealed together (powder printers)
-- Subtractive removes materials from around the object
-]
-
-.right-column50[
-![:img three 3D printed lion heads two are subtractive printing one is additive, 80%](img/3dprinting/add-subtract.png)
-
-]
-
-
----
-# Additive Fused Deposition Modeling (FDM)
-
-.left-column50[
-![:img examples of failed additive prints, 100%](img/3dprinting/additive.png)
-
-]
-.right-column50[
-<br>
-![:youtube Time lapse video explaining 3D printing, m_QhY1aABsE]
-
-]
-
----
-# Powder printing (@0:28)
-<br>
-![:youtube Time lapse video of powder printing, kBHsfNDsbCs?t=28]
-
----
-# Liquid printing (@0:23)
-<br>
-![:youtube Time lapse video liquid printing, l3TgmvV2ElQ?t=23]
-
----
-# Laser Sintering (@0:53)
-<br>
-![:youtube Time lapse video laser sintering, 9E5MfBAV_tA?t=53]
-
----
-# Other Materials
-
-- [Lisa Harouni Talk](https://www.ted.com/talks/lisa_harouni_a_primer_on_3d_printing#t-120717) (@2:12)
-- [Powder printer](https://youtu.be/kBHsfNDsbCs?t=29s)
-- [Liquid Based additive printers](https://www.popsci.com/new-liquid-based-3d-printer-takes-minutes-not-hours/) (@1:07)
-- [Candy](https://www.youtube.com/watch?time_continue=5&v=rU6RAM0Wrck&feature=emb_logo),
-[Chocolate](http://youtu.be/BIFi8but3Vw) other [Confections](https://www.youtube.com/watch?v=U3TmrCzVZ6w)
-- [Pancake bot](https://www.youtube.com/watch?v=f3Q8nbtRNT0)
-- Cement for houses [old](https://www.youtube.com/watch?v=WzmCnzA7hnE), [new](https://www.youtube.com/watch?v=8zt_3Gs1ksg)
-- [MIT’s glass printer](https://gizmodo.com/watching-mits-glass-3d-printer-is-absolutely-mesmerizin-1725433454)
-- [Ceramics](https://www.youtube.com/watch?v=1JjaqKUUMMw) (with sound vibrations), [Sample art](https://www.foransuon.com/)
-
----
-# More reasons to learn about it!
-
-.left-column50[
-3d Printed car
-
-![:youtube Video of car being 3D printed, daioWlkH7ZI]
-
-]
-.right-column50[
-<br>
-- [3D Printed Medical Device Saves Baby's Life](https://www.youtube.com/watch?v=zr0HGCZSgE4)
-- [Prosthetic hand](http://youtu.be/CHPuMCshkLU?t=42s) (up to ~2:10)
-- [Lots of examples quickly](https://www.youtube.com/watch?v=X5AZzOw7FwA)
-- [3D printers print ten houses in 24 hours](https://www.youtube.com/watch?v=SObzNdyRTBs)
-- [Printed body parts](http://youtu.be/jSjW-EgKOhk?t=1m8s)
-- [Printed organs](https://www.youtube.com/watch?v=4nqw1yjyKEs)
-- [3D printed pizza](http://youtu.be/dvjqmMfMU7w?t=15s)
-- [3D printed fashion](http://youtu.be/63Xozzh_uHM)
-- [3D Printing a Garden Sprinkler](https://www.youtube.com/watch?v=y9XRD3P2G-E)
-]
-
-
----
-# Printing: Beyond plastic
-
-.left-column50[
-![:img Model for embedding a nut and bolt in a print, 50%](img/3dprinting/embedding.png)
-![:img Fabric taped down and embedded, 70%](img/3dprinting/fabric.png)
-![:img Fabric attached through holes, 50%](img/3dprinting/fabric2.png)
-
-]
-
-.right-column50[
-![:img Shorey designs embedded metal, 40%](img/3dprinting/metal-embed.jpg)&nbsp;&nbsp;
-![:img Shorey designs dragon scales, 40%](https://images.squarespace-cdn.com/content/v1/5cf88c7cc74fa800012045db/1559817320037-GI8H3Y56L8W087DD9CDG/ke17ZwdGBToddI8pDm48kLxnK526YWAH1qleWz-y7AFZw-zPPgdn4jUwVcJE1ZvWEtT5uBSRWt4vQZAgTJucoTqqXjS3CfNDSuuf31e0tVH-2yKxPTYak0SCdSGNKw8A2bnS_B4YtvNSBisDMT-TGt1lH3P2bFZvTItROhWrBJ0/aaezgif.com-video-to-gif.gif?format=1000w)
-
-[Shorey Designs](https://www.shoreydesigns.com/3d-printing-on-fabric)
-
-]
----
-# What else to embed?
-
-.left-column-half[
-![:img Picture of tendon that can be used to bend something, 80%](img/3dprinting/tendon1.png)
-![:img Picture of tendon that has been used to bend something, 80%](img/3dprinting/tendon2.png)
-]
-.right-column-half[
-![:youtube Examples of embedded fabric, 9xqze9csLmY]
-]
-???
-- String or wire (like a tendon)
-
----
-# What else to print?
-
-![:img Gears, 20%](img/3dprinting/gear.png) ![:img Timing wheel, 20%](img/3dprinting/wheel.png) ![:img String Drive Wheel, 20%](img/3dprinting/stringdrive.png)
-
----
-# What not to print
-
-- Food handling articles (unless on a special printer)
-- Safety critical strong things
-- High heat tolerance things
-- Things for chemically harsh environments
-
----
-# How does printing enhance a mobile phone?
-
-.left-column-half[
-[Etch a Sketch!](https://www.thingiverse.com/thing:3251892)
-
-![:youtube Mobile phone case to use the phone like an etch a sketch, dcaErURbyIA]
-]
-
---
-.right-column-half[
-New ways of interacting!
-- Works by combining condutive plastic with custom interactor
-- Looks like touch input to the software
-- Gears control motion options mechanically
-]
----
-# How does printing enhance a mobile phone?
-.left-column-half[
-[Phone trigger buttons](https://www.thingiverse.com/thing:2960274)
-![:youtube Game playing hardware --trigger buttons--,X_C1Qxjg2WI]
-]
-.right-column-half[
-New ways of interacting!
-- Similar approach, also conductive
-]
-
----
-# How does printing enhance a mobile phone?
-.left-column-half[
-XiaoyiZhang, TracyTran, YuqianSun, IanCulhane, ShobhitJain, JamesFogarty, JenniferMankoff: [Interactiles: 3D Printed Tactile Interfaces to Enhance Mobile Touchscreen Accessibility](https://make4all.org/portfolio/interactiles/). ASSETS 2018
-
-![:img A picture of a mobile phone with a tangible scrollbar and number pad built into its case to help improve blind interaction with the phone,40% ](img/3dprinting/interactiles.png)
-]
-
-.right-column-half[
-New ways of interacting!
-- Silicon & sewn conductive thread
-- Nuts and bolts
-]
----
-# How does printing enhance a mobile phone?
-.left-column-half[
-
-Acoustruments
-![:youtube Printed objects whose use can be sensed, C2d1pB1qlvA]
-]
-.right-column-half[
-New ways of interacting!
-- Leverages the phone's microphone
-- Uses flexible plastic with holes
-- Requires machine learning
-]
----
-# How does printing enhance a mobile phone?
-.left-column-half[
-Tactile map for the blind
-
-![:img An interactive map with 6 black conductive touchpoints. The map
-is held in a case with 6 conductive buttons that houses a Samsung Note
-2 with a 5.5-inch screen., 40%](img/3dprinting/tactile-map.png)
-]
-.right-column-half[
-New ways of interacting!
-
-Phone as embedded computer
-- Better solution because reprinting a map is faster than making a whole new portable map for each region
-- Similar to new interaction techniques, uses conductive plastic
-]
-
----
-# Use your phone to control general hardware
-
-[IOIO](https://learn.sparkfun.com/tutorials/ioio-otg-hookup-guide) /
-[IOIO wiki](https://github.com/ytai/ioio/wiki)
-
-![:img a development board specially designed to allow developers to add advanced hardware I/O capabilities to their Android or PC application. It features a PIC microcontroller,which acts like a bridge that connects an app on your PC or Android device to low-level peripherals. An app-level library helps you write control code for these low level peripherals in the same way you’d write any other Java app!](img/3dprinting/ioio.jpg)
-
-
----
-# How does printing enhance a mobile phone?
-.left-column-half[
-![:img (a) 3D printed smartphone adaptor designed for the Samsung
-Galaxy Note II with a black ABS dark box comprising slots for
-droppers. (b) 3D printed cartridge composed of a white ABS piece
-comprising 4 wells and BL substrate reservoirs and a black sliding lid
-with transparent ABS windows. (c) The assembled smartphone-based
-device with running the specifically designed application for BL
-signal acquisition and analysis., 60%](img/3dprinting/biotoxicity.jpg)
-
-Many similar options -- e.g. [Ph
-Meter](https://ieeexplore.ieee.org/abstract/document/6916991);
-[Sensing sweat
-make-up](https://pubs.rsc.org/en/content/articlehtml/2014/an/c4an01612b);
-[Nanosensing by
-Nasa](https://www.nasa.gov/centers/ames/news/features/2009/cell_phone_sensors.html)
-[more examples](https://www.sciencedirect.com/science/article/pii/S0167779914000572)
-]
-.right-column-half[
-New ways of interacting
-
-Phone as embedded computer
-
-New ways of sensing
-
-- [Biotoxicity
-sensing](https://www.sciencedirect.com/science/article/pii/S0925400515305992)
-- Dark box
-- Phone case
-]
-
-???
- By clicking the “start” button (b) the application runs and several
-  tabs can be selected (c). The “Procedure” box (d) provide to the
-  user the instructions to perform the assay, then the Begin button
-  allow to proceed to the “Checklist” box (e) where preset timers
-  guide the user through the correct incubation times before BL image
-  acquisition. The instructions can be also eluded by selecting “Test
-  sample” in the home page, which jumps the user directly to the
-  checklist. At the end of the countdown the smartphone camera is
-  activated and the user can simply touch the “Acquire” button to
-  capture the BL image of both the test and control wells. (f) The
-  acquired images are rapidly analyzed on the smartphone and the
-  sample toxicity result is displayed as “Cell viability” value and a
-  warning message (Safe, Harmful, Highly toxic). BL image and results
-  can be also saved for downstream application (i.e. sending results
-  to a central laboratory).
-
----
-# How does printing enhance a mobile phone?
-
-.left-column50[
-[Phone for potentiostatic
-control](https://ieeexplore.ieee.org/abstract/document/6916991)
-
-![:img Arrangement used for mobile phone based ECL sensing. The audio
-jack supplies the potential to the paper microfluidic sensor while the
-resultant emission is detected by the camera in video mode. Both the
-excitation and detection processes are controlled by a software
-application which can also transmit the results via e-mail. The black
-plastic sleeve surrounding the top of the phone holds the sensor
-adjacent to the camera and blocks ambient light., 40%](img/3dprinting/potentiometric.jpg)
- ]
-.right-column50[
-New ways of interacting
-
-Phone as embedded computer
-
-New ways of sensing
-- exploits ability to play sounds
-- serves basic functions of a potentiostat in controlling an applied
- potential to oxidise ECL-active molecules
-- resultant photonic signal is monitored using the camera in video
- mode.
-- combined with paper microfluidic sensors
-
-]
-???
-
-The audio jack supplies the potential to the paper microfluidic
-sensor, while the resultant emission is detected by the camera in
-video mode. Both the excitation and detection processes are controlled
-by a software application which can also transmit the results via
-e-mail. The black plastic sleeve surrounding the top of the phone
-holds the sensor adjacent to the camera and blocks ambient light.
-
----
-# How does printing enhance a mobile phone?
-
-.left-column50[
-Printed Analytics
-![:youtube Printed objects whose use can be sensed, W1V2AgDbgTQ]
-]
-.right-column-half[
-New ways of interacting
-
-Phone as embedded computer
-
-New ways of sensing
-- uses backscatter technology
-- works in range of a modified wireless router
-]
-
----
-# Summary: What does physical computing offer us?
-
-.left-column-half[
-New ways to interact
-- capacitive sensing facilitate by conductive plastic/thread
-- microphone + machine learning
-
-New ways to sense information
-- fluid properties
-- audio
-- backscatter
-]
-.right-column-half[
-New ways to combine devices (e.g. through bluetooth sensing of physical hardware)
-
-Benefits:
-- modify a device beyond what the manufacturer expected
-- apid prototyping of novel solutions
-]
---
-# END OF DECK
----
-# Moon House Video
-
-![:youtube Video of a robot 3d printing a round house, 8zt_3Gs1ksg]
-
----
-# Accessible Game Control
-
-![:youtube Xbox adaptive controller intro, 9fcK19CAjWM]
diff --git a/slides/wk06/context.html b/slides/wk06/context.html
deleted file mode 100644
index c21f4f1a884b76392b763dbd6a281c727954a1bc..0000000000000000000000000000000000000000
--- a/slides/wk06/context.html
+++ /dev/null
@@ -1,847 +0,0 @@
----
-layout: presentation
-title: The Physical Phone --Week 8, Monday--
-description: What we know about the physical use and abilities of a phone
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-background-image: url(img/context/people-background.png)
-# The Physical Phone
-
-Jennifer Mankoff
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-[//]: # (Outline Slide)
-.left-column[# Today's goals]
-.right-column[
-- Talk about myths about phone use
-- Talk about what a phone can sense
-]
----
-.title[Interface Structure]
-.body[
-
-<div class="mermaid">
-graph TD
-
-I(Input) --Explicit Interaction--> A(Application)
-A --> Act(Action)
-
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-
-class U,C,A,I,S,E,Act,Act2 normal
-</div>
-]
----
-.title[Context Aware Computing Interface Structure]
-.body[
-
-<div class="mermaid">
-graph TD
-
-I(Input) --Explicit Interaction--> A(Application)
-A --> Act(Action)
-
-U(User) --Implicit Sensing--> C(Context-Aware Application)
-S(System) --Implicit Sensing--> C
-E(Environment) --Implicit Sensing--> C
-C --> Act2(Action)
-
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-
-class U,C,A,I,S,E,Act,Act2 normal
-</div>
-]
----
-# Example: COVID-19 Contact Tracing
-
-.left-column-half[
-![:img Picture of a COVID-19 contact tracing app showing motivational text like Join the fight and Get motivated if you come into contact with COVID-19, 100%](img/context/contact-tracing.jpg)
-]
-.right-column-half[
-- Install an app on your phone
-- Turn on bluetooth
-- Keep track of every bluetooth ID you see
-]
-
----
-.left-column[
-![:img Picture of a COVID-19 contact tracing app showing motivational text like Join the fight and Get motivated if you come into contact with COVID-19, 100%](img/context/contact-tracing.jpg)
-]
-.right-column[
-## Context Awareness is about *Human Activity*
-- Useful, and necessary, input to context-aware systems
-- Easier and easier to collect information about human activity
-]
-
-.footnote[[Image credit](https://www.techherd.co/iot-mobile-threats/) ]
-
-???
-Improved software and inferencing
-
-Improved sensors
----
-.left-column[
-## Computational Behavioral Imaging
-]
-.right-column[
-![:img Picture of X-ray scan of body, 30%](img/context/imaging.png)
-]
----
-.left-column[
-## Computational Behavioral Imaging
-]
-.right-column[
-![:img Picture of X-ray scan of body, 30%](img/context/imaging.png)
-![:img Picture of a COVID-19 contact tracing app showing motivational text like Join the fight and Get motivated if you come into contact with COVID-19, 35%](img/context/contact-tracing.jpg)
-]
----
-.left-column[
-## Computational Behavioral Imaging
-]
-.right-column[
-![:img Picture of X-ray scan of body, 30%](img/context/imaging.png) ![:img Internet of things devices, 50%](img/context/IoT.png)
-]
----
-.left-column[
-![:img Smartphone, 100%](img/context/phone.png)
-]
-.right-column[
-## Phones
-
-People already carry them
-
-Capture many aspects of behavior
-- Interactions with information: virtual
-- Social engagement: social
-- Loads of sensors: physical
-]
-
----
-.left-column[
-## Assumptions
-]
-.right-column[
-We have made a number of .red.bold[WRONG] assumptions about:
-- what smartphones are
-- how they are used
-]
-
----
-.left-column[
-## Assumption #1: We all have smart phones
-
-![:img Picture of a bunch of phones (some outdated), 100%](img/context/phones.png)
-]
-.right-column[
-What is a smart phone?
-]
-???
-What do you think?
----
-.left-column[
-## Assumption #1: We all have smart phones
-![:img Picture of a bunch of phones (some outdated), 100%](img/context/phones.png)
-
-]
-.right-column[
-What is a smart phone?
-- Runs a complete mobile OS
-- Offers computing ability and connectivity
-- Includes sensors
-]
----
-
-# Types of Sensors
-
-.left-column-half[
-
-- Not just touches: clicks, key presses
-
-| | | |
-|--|--|--|
-|Accelerometer | Rotation | Screen|
-|Applications | Location | Telephony|
-|Battery | Magnetometer | Temperature|
-|Bluetooth | Network Usage | Traffic|
-|Calls | Orientation | WiFi|
-|Messaging | Pressure | Processor|
-|Gravity | Proximity | Humidity |
-|Gyroscope | Light |  ... Many More |
-]
-.right-column-half[
-Other Kinds of Sensors:
-
-- Microphone
-
-- Camera
-
-- Multi-touch
-
-- Connected Devices?
-
-]
-
-???
-Sampled or event based?
----
-# Which Sensors might be useful for contact tracing? Why?
-.left-column-half[
-
-microphone/camera/multi-touch/IOT PLUS
-
-| | | |
-|--|--|--|
-|Accelerometer | Rotation | Screen|
-|Applications | Location | Telephony|
-|Battery | Magnetometer | Temperature|
-|Bluetooth | Network Usage | Traffic|
-|Calls | Orientation | WiFi|
-|Messaging | Pressure | Processor|
-|Gravity | Proximity | Humidity |
-|Gyroscope | Light |  ... Many More |
-]
-.right-column-half[
-Type your answers in chat!
-]
----
-
-# How do you program with sensors?
-
-  - `Managers` (e.g. `LocationManager`) let us create and register a listener
-
-  - Listeners can receive updates at different intervals, etc.
-
-  - Some Sensor-specific settings
-    [https://source.android.com/devices/sensors/sensor-types.html](https://source.android.com/devices/sensors/sensor-types.html)
-
----
-# Implementing Sensing
-
-Android [Awareness API](https://developers.google.com/awareness/)
-.left-column-half[
-## Turn it on
-
-Must enable it: [Google APIs](https://console.developers.google.com/apis/)
-
-Recent updates to documentation (from 2017): February 2020!
-]
-
-.right-column-half[
-## Set up callbacks
-
-Two types of context sensing: Snapshots/ Fences
-]
-???
-
----
-# Snapshots
-
-Capture sensor data at a moment in time
-
-Require a single callback, to avoid hanging while sensor data is fetched:
-
-`onSnapshot(Response response)`
-
-Seting up the callback  (just like callbacks for other events)
-
-``` java
-setSnapshotListener(Awareness.getSnapshotClient(this).getDetectedActivity(),
-                    new ActivitySnapshotListener(mUpdate, mResources));
-```
-
----
-# Fences
-
-Notify you *every time* a condition is true
-
-Conditional data
-
-3 callbacks: during, starting, stopping
-
-```java
-mActivityFenceListener = new ActivityFenceListener(
-                // during
-                DetectedActivityFence.during(DetectedActivity.WALKING),
-                // starting
-                DetectedActivityFence.starting(DetectedActivity.WALKING),
-                // stopping
-                DetectedActivityFence.stopping(DetectedActivity.WALKING),
-                this, this, mUpdate);
-```
-
-???
-What might we use for a location fence?
-Headphone fence?
-...
-
----
-# Snapshots vs Fences for contact tracing
-
-.left-column40[
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/mdDbVMvvYnDCcu3ugYWzh?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
-
-]
---
-.right-column30[
-Answer: Fence
-
-We want to be notified about *every* contact so we can record it
-]
-
----
-# Using Context-Awareness in Apps
-.left-column[
-![:img Picture of a mobile phone with a text message on screen containing a transcription of recent audio, 100%](img/context/scribe4me.jpeg)
-]
-.right-column[
-
-Capture and Access:
-- .red[Food diarying] and nutritional awareness via receipt analysis [Ubicomp 2002]
-- .bold.red[Audio Accessibility] for deaf people by supporting mobile
-sound transcription [Ubicomp 2006, CHI 2007]
-- .red[Citizen Science] volunteer data collection in the field [CSCW
-  2013, CHI
-  2015]
-- .red[Air quality assessment] and visualization [CHI 2013]
-- .red[Coordinating between patients and doctors] via wearable
-  sensing of in-home physical therapy [CHI 2014]
-]
----
-# What might we do with today's phones?
-.left-column[
-![:img Picture of a mobile phone with an unlock gesture that also labels emails for keeping or discarding, 100%](img/context/proactive.png)
-]
-.right-column[
-
-## Adaptive Services (changing operation or timing)
-
-- .red[Adaptive Text Prediction] for assistive communication devices
-  [TOCHI 2005]
-- .red[Location prediction] based on prior behavior [Ubicomp 2014]
-- .bold.red[Pro-active task access] on lock screen based on predicted user
-  interest [MobileHCI 2014]
-]
----
-# What might we do with today's phones?
-.left-column[
-![:img example interaction above and on the surface of a phone supported by adding a depth camera to the front of the phone -- shows
-interacting with text, 80%](img/context/airtouch.jpg)
-
-![:img example interaction above and on the surface of a phone supported by adding a depth camera to the front of the phone -- shows interacting with an image, 80%](img/context/airtouch2.jpg)
-]
-.right-column[
-## Novel Interaction
-
-- .red[Cord Input] for interacting with mobile devices  [CHI 2010]
-- .red[Smart Watch Intent to Interact] via twist'n'knock gesture [GI
-  2016]
-- .red[VR Intent to Interact] vi sensing body pose, gaze and gesture
-  [CHI 2017]
-- .red[Around Body interaction] through gestures with the phone
-  [Mobile HCI 2014]
-- .red.bold[Around phone interaction] through gestures combining on and
-  above phone surface [UIST 2014]
-
-]
----
-# What might we do with today's phones?
-.left-column[
-![:img example interaction above and on the surface of a phone supported by adding a depth camera to the front of the phone -- shows
-interacting with text, 80%](img/context/airtouch.jpg)
-
-![:img example interaction above and on the surface of a phone supported by adding a depth camera to the front of the phone -- shows interacting with an image, 80%](img/context/airtouch2.jpg)
-]
-.right-column[
-![:youtube Interweaving touch and in-air gestures using in-air
-gestures to segment touch gestures, H5niZW6ZhTk]
-]
-
----
-# What might we do with today's phones?
-.left-column[
-![:img Picture of an interface for simulating driving behavior providing feedback to the user about aggressive driving, 100%](img/context/driving.png)
-
-]
-.right-column[
-
-## Behavioral Imaging
-
-- .red[Detecting and Generating Safe Driving Behavior] by using
-inverse reinforcement learning to create human routine models [CHI 2016,
-2017]
-- .red[Detecting Deviations in Family Routines] such as being late to
-pick up kids [CHI 2016]
-]
----
-# What might we do with today's phones?
-
-.left-column[
-![:img The Momento desktop platform (D) and server (S) communicate with clients (C) via SMS/MMS; HTTP; or the Context Toolkit, 100%](img/context/momento.png)
-
-]
-.right-column[
-## General Solutions for Data Collection and Response
-
-- .red[General solution for studying people in the wild] via mobile
-sensing and interaction [CHI 2007]
-- .red[Minimizing user burden] for generating adaptive services via
-  test-time feature ordering [Ubicomp 2016]
-]
-
----
-
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/pgjVCzFsgUO4RT0yWQJLF?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
-
----
-# Revisiting Assumption #1: We all have smart phones
-
-.left-column[
-![:img Picture of a bunch of phones (some outdated), 100%](img/context/phones.png)
-
-]
-.right-column[
-Does this seem like a smart phone?
-
-No, it just more input devices
-
-You have to do all the work
-]
-
---
-.corner-ribbon.brtl[All Marketing]
----
-background-image: url(img/context/phones-background.png)
-# Dumb (Feature) Phones
-
-We live in a time of dumb phones
-
-Know almost nothing about me
-
-Explicit preferences
-
-Contacts
-
-Running applications
-
-Hardly knows when I’m mobile/fixed, charging/not charging
-
-Doesn’t know me or what I’m doing
-
---
-.corner-ribbon.purple.tlbr[WHY NOT SMARTER???]
----
-# Research Goal: A real smartphone!
-.left-column[
-![:img Smartphone, 100%](img/context/phone.png)
-]
-.right-column[
-Want to build a smart phone that
-
-Collects and learns a model of human behavior with every interaction
-
-From the moment the phone is purchased and turned on
-
-Uses behavior information to improve interaction and the user experience
-
-Do this opportunistically
-
-- Your noise is my signal!
-- Big Data of 1
-]
-???
-How close are we to this?
-
-- Amazing amounts of computation at hand
-- Memory and storage
-- Radios and communication
-- Sensors
-- Software
----
-# Assumption #2: Proximity is standard
-
-We assume that users have their phones with them and turned on 24-7
-
-Which is great for things like health apps and behavior modeling
-- Mobile phone is personal and travels with the user
-- Proxy for user context
-- Proxy for user’s environment context
-- Proxy for user’s attention/display device
-- Provide always-available service
-
----
-# Assumption #2: Proximity is standard
-
-## How much of the day is your phone on?
-
-Average user: 78-81% [Dey, 2011]
-
-- One-fifth of the time, phone is off
-- Can’t sense anything
-- Can’t show anything to the user
-
----
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/eB1wjPW8LGqgpi9X1mhQS?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
----
-
-# Where is your phone right now?
-.left-column-half[
-
-![:img Picture of person holding a phone to their head,10%](img/context/armsreach.png)  Arms Reach
-
-![:img Picture of person in a room with a phone,20%](img/context/roomsreach.png) Same Room
-
-![:img Picture of person near a house with a phone,20%](img/context/AWAY.png) Further
-
-Off
-]
-.right-column-half[
-
-]
-
----
-# When your phone is on, where is it?
-.left-column[
-![:img Picture of person holding a phone to their head,20%](img/context/armsreach.png)
-
-![:img Picture of person in a room with a phone,50%](img/context/roomsreach.png)
-
-![:img Picture of person near a house with a phone,50%](img/context/AWAY.png)
-]
-.right-column[
-- Within arm’s reach (53%)
-- Within the same room (35%)
-- Further away? (12%)
-
-![Bar plot showing 53% within arm’s reach; 35% same room; 12% further away, 100%
-](img/context/phonedist.png)
-]
----
-# Assumption #2: Proximity is standard
-
-.left-column-half[
-## Challenges for interpreting phone data:
-
-***Can't use the phone as a proxy for the user***
-
-It's off about 20% of the time
-
-It's not in the same roomabout 12% of the time
-
-]
---
-.left-column-half[
-***How do we implement contact tracing given this?***
-]
-
----
-# Assumption #2: Proximity is standard
-
-.left-column-half[
-## Challenges for interpreting phone data:
-
-***Can't use the phone as a proxy for the user***
-
-It's off about 20% of the time
-
-It's not in the same roomabout 12% of the time
-
-***How do we implement contact tracing given this?***
-]
-.right-column-half[
-## May need complementary sensors
-
-Smart watch
-
-Fitbit
-
-Room level sensing
- ]
----
-.left-column[
-## Assumption #3: Usage is Notification Driven
-![:img People at a dinner table paying attention to their phones instead of eachother, 100%](img/context/dinner.png)
-]
-.right-column[
-What do we know about how people use their mobile devices?
-
-- “Always on the phone!”
-- “Notifications are ruining my life!”
-
-]
----
-# Characterizing Usage: Glance
-
-.left-column-half[
-![:img Picture of different kinds of usage including glance; review; engage; and phone calls showing that almost all include glancing at the lock screen while others also include the home screen (almost all) and applicaion usage also includes app-specific stuff, 100%](img/context/usage.png)
-]
-.right-column-half[
-![:youtube Glancing at a phone without engaging, 4pXLqDZCFwo]
-]
-
-.footnote[Based on 1 months data from 10 participants]
----
-# Characterizing Usage: Review
-
-.left-column-half[
-![:img Picture of different kinds of usage including glance; review; engage; and phone calls showing that almost all include glancing at the lock screen while others also include the home screen (almost all) and applicaion usage also includes app-specific stuff, 100%](img/context/usage.png)
-]
-.right-column-half[
-![:youtube Reviewing on a phone, vsPkU8fHp-c]
-]
-
-.footnote[Based on 1 months data from 10 participants]
----
-# Characterizing Usage: Engage
-
-.left-column-half[
-![:img Picture of different kinds of usage including glance; review; engage; and phone calls showing that almost all include glancing at the lock screen while others also include the home screen (almost all) and applicaion usage also includes app-specific stuff, 100%](img/context/usage.png)
-]
-.right-column-half[
-![:youtube Reviewing on a phone, NCwj3__BFxQ]
-]
-
-.footnote[Based on 1 months data from 10 participants]
----
-# Characterizing Usage
-
-.left-column-half[
-![:img Histograph of percentage of total device use sessions by
-session duration showing that most sessions are lock screen only and
-less than 60 seconds long, 100%](img/context/usage2.png)
-]
-.right-column-half[
-95% of sessions shorter than 5 minutes; most < 60 secs
-
-Notifications lead to engagement… only 25% of the time!
-
-Self-interruption therefore more common than we would think
-
-Notifications prevent unnecessary engages
-
-No good support for reviews
-]
----
-.left-column[
-## Opportunity: Leverage real knowledge about phone use
-![:img People at a dinner table paying attention to their phones instead of eachother, 100%](img/context/dinner.png)
-]
-.right-column[
-Engage people when appropriate
-
-Avoid interrupting when not
-
-Make short interactions more powerful
-
-]
----
-.left-column[
-![:img Picture of a mobile phone with an unlock gesture that also labels emails for keeping or discarding, 100%](img/context/proactive.png)
-]
-.right-column[
-## Example: pro-active tasks
-
-Provide access to email management, etc right on lock screen
-
-]
----
-.left-column[
-![:img Picture of a mobile phone with an unlock gesture that also labels emails for keeping or discarding, 100%](img/context/proactive.png)
-]
-.right-column[
-## Example: pro-active tasks
-
-Provide access to email management, etc right on lock screen
-
-Study of phone use (10 users, 4 weeks)
-
-95% of sessions shorter than 5 minutes; most < 60 secs
-
-No good support for quick task completion (just viewing things)
-]
----
-.left-column[
-## All users
-
-![:img Picture of a graph showing 3 weeks of use going from 15%
-engagement down to 6.4% engagement, 100%](img/context/proactive-results.png)
-]
-
-.right-column[
-## Results
-
-25 participants
-- 10 nonusers (4% of lockscreen views with a task or less per week)
-- 9 regular users (5-10% of lockscreen views with a task per week)
-- 5 power users (40-60% of lockscreen views!)
-]
-???
-regular users  mostly used the tasks when they had some down time, or
-when bored or nothing better to do.
-
-power users who applied actions to email in more than 1/3 of sessions
-when tasks were present on their lock screen.
-
----
-.left-column[
-## Cleaners
-
-![:img Picture of a graph showing 3 weeks of use going from 39%
-engagement down to 22% and then back up to 50% engagement, 100%](img/context/cleaneruser.png)
-]
-.right-column[
-## Results
-
-25 participants
-- 10 nonusers (4% of lockscreen views with a task or less per week)
-- 9 regular users (5-10% of lockscreen views with a task per week)
-- 5 power users (40-60% of lockscreen views!)
-- 3 'cleaners'
-]
-???
-We also found a special kind of power users called cleaners. They rarely had any unread emails in their inbox and used ProactiveTasks to keep their inbox clear of any unwanted emails.
-
----
-.left-column[
-## Assumption #4: Need is Necessary
-![:img People at a dinner table paying attention to their phones instead of eachother, 100%](img/context/dinner.png)
-]
-.right-column[
-
-.quote[When asked which device or platform they would not be able to
-live without, a majority (65%) chose iPhone, while only a few (1%)
-[...mentioned] facebook. Nearly 15% ...
-]
-]
----
-.left-column[
-## Assumption #4: Need is Necessary
-![:img People at a dinner table paying attention to their phones instead of eachother, 100%](img/context/dinner.png)
-]
-.right-column[
-
-.quote[When asked which device or platform they would not be able to
-live without, a majority (65%) chose iPhone, while only a few (1%)
-[...mentioned] facebook. Nearly 40% ...  .red[said they'd rather give up their laptop
-than go for even a weekend without their iPhone]
-]
-]
-
----
-.left-column[
-## Assumption #4: Need is Necessary
-![:img People at a dinner table paying attention to their phones instead of eachother, 100%](img/context/dinner.png)
-]
-.right-column[
-![:img barplot showing percentage of people would keep their smart
-phone over game console (72%); tablet computer (69%); Dishwasher
-(46%); Laptop computer (40%); TV (32%); Fridge (13%); and care (8%),
-60%](img/context/phone-compare.png)
-]
----
-.left-column[
-## Assumption #4: Need is Necessary
-
-## Should we combat this? How?
-
-]
-.right-column[
-
-[Hinicker](https://www.alexishiniker.com/) (works at UW):
-- Can devices teach self-regulation, rather than trying to regulate children?
-- Why do people compulsively check their phones? Can they change this?
-
-[Burke](http://thoughtcrumbs.com/) (works at Facebook):
-- [Watching silly cat videos is good for
-  you](https://www.wsj.com/articles/why-watching-silly-cat-videos-is-good-for-you-1475602097)
-- [Online social life good for your
-  longevity](https://www.nytimes.com/2016/11/01/science/facebook-longer-life.html)
-   ... but [The Relationship Between Facebook Use and Well-Being
-  Depends on Communication Type and Tie
-  Strength](https://academic.oup.com/jcmc/article/21/4/265/4161784)
-
-
-
-]
----
-.left-column[
-## Assumptions
-
-- Assumption #1: Phones are smart
-- Assumption #2: Proximity is standard
-- Assumption #3: Usage is notification driven
-- Assumption #4: Need is necessary
-]
-
-.right-column[
-By removing assumptions, we can recast:
-
-- the notion of what a smart phone is
-- how we can use them to improve people’s lives
-- how to leverage make (personalized) meaning from (your) big data
-]
-???
----
-# Do you think COVID-19 has challenged the validaty of any of these assumptions?
-
-.left-column[
-## Assumptions
-
-- Assumption #1: Phones are smart
-- Assumption #2: Proximity is standard
-- Assumption #3: Usage is notification driven
-- Assumption #4: Need is necessary
-]
-
-.right-column[
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/Omnf3hdr8zaHvaGCTpemV?controls=none&short_poll=true" width="800" height="600" frameBorder="0"></iframe>
-]
-???
-
----
-.title[Challenges to this vision]
-.body[
-
-- Battery
-- Raw sensors not behavior data
-- Not the sensors we always want
-- Computational complexity
-- Latency in communication
-- Basic software framework to support apps that can adapt to user behavior
-- Apps that drive innovation
-- How people use phones
-]
-
----
-
-# End of Deck
-
----
----
-# Places
-
-Shows you what is nearby
-
-```java
-//In MainActivity:
-setSnapshotListener(Awareness.getSnapshotClient(this).getPlaces(),
-                    new PlacesSnapshotListener(mUpdate, mResources)));
-
-//In PlacesSnapshotListener
-public void onSnapshot(PlacesResponse response) {
-        List<PlaceLikelihood> placeLikelihood = response.getPlaceLikelihoods();
-        if (placeLikelihood != null && !placeLikelihood.isEmpty()) {
-            for (PlaceLikelihood likelihood : placeLikelihood) {
-                addPlace(likelihood.getPlace().getName().toString(), likelihood.getLikelihood());
-            }
-        }
-
-        mUpdate.prependText(placeLikelihood.toString());
-    }
-```
diff --git a/slides/wk06/img/3dprinting/add-subtract.png b/slides/wk06/img/3dprinting/add-subtract.png
deleted file mode 100644
index 6f5b26318d7eef422a90eb445d73cd709a0ad5d5..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/add-subtract.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/additive.png b/slides/wk06/img/3dprinting/additive.png
deleted file mode 100644
index 9c184ca2202e52685fbb1b60c10e089079fa39c4..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/additive.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/biotoxicity.jpg b/slides/wk06/img/3dprinting/biotoxicity.jpg
deleted file mode 100644
index 3c6ed987d21d9a11d7697ba9c64348262c1094bb..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/biotoxicity.jpg and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/bridge-overhang.png b/slides/wk06/img/3dprinting/bridge-overhang.png
deleted file mode 100644
index af254bfc6dc3c8f8528a07c3a77b322d8c3807a6..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/bridge-overhang.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/bridge.png b/slides/wk06/img/3dprinting/bridge.png
deleted file mode 100644
index db7f1d3f5cf02b0e74a22955309e0262ca720562..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/bridge.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/bust.png b/slides/wk06/img/3dprinting/bust.png
deleted file mode 100644
index 4c4ae6d28f2290d297b2a9f2752f617896bade9a..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/bust.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/cube-shell.png b/slides/wk06/img/3dprinting/cube-shell.png
deleted file mode 100644
index 6644e896fe81d890f86cd2cdb325379b20ba6138..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/cube-shell.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/cube-stl.png b/slides/wk06/img/3dprinting/cube-stl.png
deleted file mode 100644
index 2144fa59e8f9f57b2b1b4c846a5ec1447858bcca..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/cube-stl.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/embedding.png b/slides/wk06/img/3dprinting/embedding.png
deleted file mode 100644
index 5b94cfe7fb597578bd1d1be2cbd9c8631730cb4e..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/embedding.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/fabric.png b/slides/wk06/img/3dprinting/fabric.png
deleted file mode 100644
index 7d0bc21fd9085b149aafc40fdb0b3e56ffb55f2d..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/fabric.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/fabric2.png b/slides/wk06/img/3dprinting/fabric2.png
deleted file mode 100644
index 102da43375884c43e33cb2651171fed9df79badd..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/fabric2.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/gear.png b/slides/wk06/img/3dprinting/gear.png
deleted file mode 100644
index 0b3b449368c5bb8b837714458a1df964eb8fa16a..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/gear.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/grey-box.png b/slides/wk06/img/3dprinting/grey-box.png
deleted file mode 100644
index 904cdc8219d7966f0dbeb98bfe340bd8f5b67b99..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/grey-box.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/interactiles.png b/slides/wk06/img/3dprinting/interactiles.png
deleted file mode 100644
index 0d19934e984e9c4e61aef0f7c0c9138bd3ea7bd6..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/interactiles.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/ioio.jpg b/slides/wk06/img/3dprinting/ioio.jpg
deleted file mode 100644
index 3ff69c8a9937bf6c184222b57a5ec17d80401aff..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/ioio.jpg and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/magician.png b/slides/wk06/img/3dprinting/magician.png
deleted file mode 100644
index 6eb9bc0dfe45b89a48c2a2df0ef039b852fad392..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/magician.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/metal-embed.jpg b/slides/wk06/img/3dprinting/metal-embed.jpg
deleted file mode 100644
index 4053fc24a6fab246cd3fd731166058b88251c99e..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/metal-embed.jpg and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/nutbolt.png b/slides/wk06/img/3dprinting/nutbolt.png
deleted file mode 100644
index e86bb2b4fe5fb6940eeb7ecf394c254ccf66dc2f..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/nutbolt.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/overhang.png b/slides/wk06/img/3dprinting/overhang.png
deleted file mode 100644
index 713e58d1c59cb8f4ac1abd5f31d0513d5303ec67..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/overhang.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/phone-sensor.gif b/slides/wk06/img/3dprinting/phone-sensor.gif
deleted file mode 100644
index 418dcb2a5ec1de520e81e135b1ed7889faf78c90..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/phone-sensor.gif and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/potentiometric.jpg b/slides/wk06/img/3dprinting/potentiometric.jpg
deleted file mode 100644
index 1544080a61574922edf3d9943c9dd0e9f1dccd94..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/potentiometric.jpg and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/shells.png b/slides/wk06/img/3dprinting/shells.png
deleted file mode 100644
index 3149f9fe2d45b210d9c8e67e62018fb000c25e7a..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/shells.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/slicing.png b/slides/wk06/img/3dprinting/slicing.png
deleted file mode 100644
index ef83638decfaa0492b23710aa502209c7a0c7e73..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/slicing.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/solid-modeling.png b/slides/wk06/img/3dprinting/solid-modeling.png
deleted file mode 100644
index cb3326c70a5e4643d7442125062c8d1e6608e300..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/solid-modeling.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/stringdrive.png b/slides/wk06/img/3dprinting/stringdrive.png
deleted file mode 100644
index 4cb62f6934901666864e8548e85de906be988561..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/stringdrive.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru-legacy-part.png b/slides/wk06/img/3dprinting/subaru-legacy-part.png
deleted file mode 100644
index 29430ffffff174f26865b9dcdf9cc76da7976098..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru-legacy-part.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru-light.png b/slides/wk06/img/3dprinting/subaru-light.png
deleted file mode 100644
index 5861e18aa8a062d5d2edd544b695a7608498e583..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru-light.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru-switch-iterations.png b/slides/wk06/img/3dprinting/subaru-switch-iterations.png
deleted file mode 100644
index bc285f6be2d46c56483b927d1e989e7bf33c8599..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru-switch-iterations.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru-switch-model.png b/slides/wk06/img/3dprinting/subaru-switch-model.png
deleted file mode 100644
index 5bb1cd88324b8e614af0a7995955fffd33265d97..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru-switch-model.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru-switch-replaced-on.png b/slides/wk06/img/3dprinting/subaru-switch-replaced-on.png
deleted file mode 100644
index dc85bbc0235f95b5ed81539a32713fe2d9f61099..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru-switch-replaced-on.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru-switch-replaced.png b/slides/wk06/img/3dprinting/subaru-switch-replaced.png
deleted file mode 100644
index 0f1d0bc40a06617ec631111d6ab1a33c51c03101..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru-switch-replaced.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru-switch.png b/slides/wk06/img/3dprinting/subaru-switch.png
deleted file mode 100644
index 08001dc1320648cf57a20ef424d736e6626b780d..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru-switch.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/subaru.png b/slides/wk06/img/3dprinting/subaru.png
deleted file mode 100644
index 821622a51b2f3b5603559c2433fd0b80ca46a7f6..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/subaru.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/tactile-map.png b/slides/wk06/img/3dprinting/tactile-map.png
deleted file mode 100644
index 3b1c229976fb0aaf6988914ff6b66e317d07a836..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/tactile-map.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/tendon1.png b/slides/wk06/img/3dprinting/tendon1.png
deleted file mode 100644
index b3ff5353cc4ca3191ab52d7ecba317e3cb23b993..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/tendon1.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/tendon2.png b/slides/wk06/img/3dprinting/tendon2.png
deleted file mode 100644
index 5d9315d5cd919c6de8a08e92c7e7dbb93302cf4b..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/tendon2.png and /dev/null differ
diff --git a/slides/wk06/img/3dprinting/wheel.png b/slides/wk06/img/3dprinting/wheel.png
deleted file mode 100644
index 712f582933956ed5e22501621fc913bd121a41fd..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/3dprinting/wheel.png and /dev/null differ
diff --git a/slides/wk06/img/buttons64dp.png b/slides/wk06/img/buttons64dp.png
deleted file mode 100644
index 691d9215cdec15742198a3e3c43396c8b62d1d04..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/buttons64dp.png and /dev/null differ
diff --git a/slides/wk06/img/buttons80dp.png b/slides/wk06/img/buttons80dp.png
deleted file mode 100644
index 40471bbe182b078f44b2ae52e8ab64a642a4baea..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/buttons80dp.png and /dev/null differ
diff --git a/slides/wk06/img/context/AWAY.png b/slides/wk06/img/context/AWAY.png
deleted file mode 100644
index a4dae68db4b02fe20d03c152abef4b6db8a1eff9..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/AWAY.png and /dev/null differ
diff --git a/slides/wk06/img/context/IoT.png b/slides/wk06/img/context/IoT.png
deleted file mode 100644
index 1c91c492c924bb12030d4722a2bfcd6bbac6fd09..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/IoT.png and /dev/null differ
diff --git a/slides/wk06/img/context/airtouch.jpg b/slides/wk06/img/context/airtouch.jpg
deleted file mode 100644
index 9011cfef75f72996ed1b32a7ddeb12851f7cd9d2..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/airtouch.jpg and /dev/null differ
diff --git a/slides/wk06/img/context/airtouch2.jpg b/slides/wk06/img/context/airtouch2.jpg
deleted file mode 100644
index 1f99e07245b6273cc270a864100675121b7fba37..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/airtouch2.jpg and /dev/null differ
diff --git a/slides/wk06/img/context/armsreach.png b/slides/wk06/img/context/armsreach.png
deleted file mode 100644
index 838c66594b92750af97a4e0631bab3826fa0651c..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/armsreach.png and /dev/null differ
diff --git a/slides/wk06/img/context/cleaneruser.png b/slides/wk06/img/context/cleaneruser.png
deleted file mode 100644
index cb97629f6d0ea7594f7ee64c71c344c6f1ef9469..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/cleaneruser.png and /dev/null differ
diff --git a/slides/wk06/img/context/contact-tracing.jpg b/slides/wk06/img/context/contact-tracing.jpg
deleted file mode 100644
index b43f2d9bded10709c601fd94ca46b47a2af79fe2..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/contact-tracing.jpg and /dev/null differ
diff --git a/slides/wk06/img/context/dinner.png b/slides/wk06/img/context/dinner.png
deleted file mode 100644
index f930464d08d700d56cf93437611ff001b8d2f189..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/dinner.png and /dev/null differ
diff --git a/slides/wk06/img/context/driving.png b/slides/wk06/img/context/driving.png
deleted file mode 100644
index 68c8d71f374bac87964d3252c0255cc38079dcb6..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/driving.png and /dev/null differ
diff --git a/slides/wk06/img/context/engage.png b/slides/wk06/img/context/engage.png
deleted file mode 100644
index 60a7e4e95a9ef146d793165352f1fd2c595ed0c6..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/engage.png and /dev/null differ
diff --git a/slides/wk06/img/context/glance.png b/slides/wk06/img/context/glance.png
deleted file mode 100644
index b16ad77a9d65fd46aca99bcdaf87a5d17c1e0860..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/glance.png and /dev/null differ
diff --git a/slides/wk06/img/context/imaging.png b/slides/wk06/img/context/imaging.png
deleted file mode 100644
index fe6a86ae3ac5363d8e65806be07e26dc405ce6bb..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/imaging.png and /dev/null differ
diff --git a/slides/wk06/img/context/momento.png b/slides/wk06/img/context/momento.png
deleted file mode 100644
index f67ac277b6c40bb28933a2a4fa0e74c29e8aad07..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/momento.png and /dev/null differ
diff --git a/slides/wk06/img/context/nonuser.png b/slides/wk06/img/context/nonuser.png
deleted file mode 100644
index ec5ae26df2dd00a27a28ddcaa8fd347bb17c8211..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/nonuser.png and /dev/null differ
diff --git a/slides/wk06/img/context/people-background.png b/slides/wk06/img/context/people-background.png
deleted file mode 100644
index d22eb0d03a42b0a8d48ef16e9ff7c2119641adb3..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/people-background.png and /dev/null differ
diff --git a/slides/wk06/img/context/phone-compare.png b/slides/wk06/img/context/phone-compare.png
deleted file mode 100644
index 9ebcd8a3ec026d18d7ae24afbc9be33c5f6a3f8f..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/phone-compare.png and /dev/null differ
diff --git a/slides/wk06/img/context/phone.png b/slides/wk06/img/context/phone.png
deleted file mode 100644
index 70dab7055c585ace1ec90a0810a0e41d85cda1a8..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/phone.png and /dev/null differ
diff --git a/slides/wk06/img/context/phonedist.png b/slides/wk06/img/context/phonedist.png
deleted file mode 100644
index 060747e4d1223db055b6a5216e644d236f17a103..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/phonedist.png and /dev/null differ
diff --git a/slides/wk06/img/context/phones-background.png b/slides/wk06/img/context/phones-background.png
deleted file mode 100644
index 995ed4e0f82b4042cd5fc4181940d12e8f5694ce..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/phones-background.png and /dev/null differ
diff --git a/slides/wk06/img/context/phones.png b/slides/wk06/img/context/phones.png
deleted file mode 100644
index 02ebf063e963a10179310823e209c5c21ff160e6..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/phones.png and /dev/null differ
diff --git a/slides/wk06/img/context/poweruser.png b/slides/wk06/img/context/poweruser.png
deleted file mode 100644
index ec5ae26df2dd00a27a28ddcaa8fd347bb17c8211..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/poweruser.png and /dev/null differ
diff --git a/slides/wk06/img/context/proactive-results.png b/slides/wk06/img/context/proactive-results.png
deleted file mode 100644
index f72d4f87c54d6465080c212cff49247d256d9e89..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/proactive-results.png and /dev/null differ
diff --git a/slides/wk06/img/context/proactive.png b/slides/wk06/img/context/proactive.png
deleted file mode 100644
index e029610ac82badc22dd7868951ecce12650638ab..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/proactive.png and /dev/null differ
diff --git a/slides/wk06/img/context/review.png b/slides/wk06/img/context/review.png
deleted file mode 100644
index 04c0113b13ee587f7023f8dbd9a6806b2342df28..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/review.png and /dev/null differ
diff --git a/slides/wk06/img/context/roomsreach.png b/slides/wk06/img/context/roomsreach.png
deleted file mode 100644
index 3f0cd47d1f76d15566870a3461ae185f0366abc5..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/roomsreach.png and /dev/null differ
diff --git a/slides/wk06/img/context/scribe4me.jpeg b/slides/wk06/img/context/scribe4me.jpeg
deleted file mode 100644
index 1f206a2e591bc4af4b4c78311694f21031875264..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/scribe4me.jpeg and /dev/null differ
diff --git a/slides/wk06/img/context/usage.png b/slides/wk06/img/context/usage.png
deleted file mode 100644
index 17ad608616abedceab02535967a24340703b821f..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/usage.png and /dev/null differ
diff --git a/slides/wk06/img/context/usage2.png b/slides/wk06/img/context/usage2.png
deleted file mode 100644
index 7d334162cc4668e80cadb3a891b6ba52dacd546b..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/context/usage2.png and /dev/null differ
diff --git a/slides/wk06/img/pm/body-fitts.png b/slides/wk06/img/pm/body-fitts.png
deleted file mode 100644
index d310a619ce4fee899e78aac5dacbb237a89d5128..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/body-fitts.png and /dev/null differ
diff --git a/slides/wk06/img/pm/bubblekeyboard.mov b/slides/wk06/img/pm/bubblekeyboard.mov
deleted file mode 100644
index f83852db123306ad013c3bc7d7f5da1e2430535a..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/bubblekeyboard.mov and /dev/null differ
diff --git a/slides/wk06/img/pm/buttons.png b/slides/wk06/img/pm/buttons.png
deleted file mode 100644
index 26675f540854d26ee061fb0f9f81a46d9766ca14..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/buttons.png and /dev/null differ
diff --git a/slides/wk06/img/pm/check.png b/slides/wk06/img/pm/check.png
deleted file mode 100644
index 2f14733dd108bcfc41f5a0b773e9b0ed6059d90d..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/check.png and /dev/null differ
diff --git a/slides/wk06/img/pm/common-snapping-cases.png b/slides/wk06/img/pm/common-snapping-cases.png
deleted file mode 100644
index e8382284e1a9d00172908384b357434737a1553b..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/common-snapping-cases.png and /dev/null differ
diff --git a/slides/wk06/img/pm/cursor.png b/slides/wk06/img/pm/cursor.png
deleted file mode 100644
index 38d621bc442c2d815049bc9bf1ed7aa2048b3464..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/cursor.png and /dev/null differ
diff --git a/slides/wk06/img/pm/debugging.png b/slides/wk06/img/pm/debugging.png
deleted file mode 100644
index 9c4134acf8d70b865591c307d5f8d026665b17d2..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/debugging.png and /dev/null differ
diff --git a/slides/wk06/img/pm/dragpop.png b/slides/wk06/img/pm/dragpop.png
deleted file mode 100644
index 015e0aca032107005f5a2662c1bfc361f13d33aa..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/dragpop.png and /dev/null differ
diff --git a/slides/wk06/img/pm/errors.png b/slides/wk06/img/pm/errors.png
deleted file mode 100644
index 80826d598295060fb21eeeeb95f46f79ed472b52..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/errors.png and /dev/null differ
diff --git a/slides/wk06/img/pm/escher.png b/slides/wk06/img/pm/escher.png
deleted file mode 100644
index 0ac5f09e3d238d5d6c1071cd3d6e9e02e4918750..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/escher.png and /dev/null differ
diff --git a/slides/wk06/img/pm/fitts.png b/slides/wk06/img/pm/fitts.png
deleted file mode 100644
index 7b0df624e6613f3dd1f6a38fbf9d6e17e80a5784..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/fitts.png and /dev/null differ
diff --git a/slides/wk06/img/pm/font-selection.png b/slides/wk06/img/pm/font-selection.png
deleted file mode 100644
index 04fa116a613e446c85590d056d154e57b1e05964..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/font-selection.png and /dev/null differ
diff --git a/slides/wk06/img/pm/gmail-snapping.gif b/slides/wk06/img/pm/gmail-snapping.gif
deleted file mode 100644
index 66a17084941a6d03ad02d2dfa7b62446ec755b1d..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/gmail-snapping.gif and /dev/null differ
diff --git a/slides/wk06/img/pm/grab-cursor.png b/slides/wk06/img/pm/grab-cursor.png
deleted file mode 100644
index 69ad61bc226d295712e677589bd0bd6e5ae0f8fe..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/grab-cursor.png and /dev/null differ
diff --git a/slides/wk06/img/pm/hiddensize.png b/slides/wk06/img/pm/hiddensize.png
deleted file mode 100644
index 32c6dd7c59eaa2f87c1e4c29801bca196abcff74..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/hiddensize.png and /dev/null differ
diff --git a/slides/wk06/img/pm/keyboard-mouse.jpg b/slides/wk06/img/pm/keyboard-mouse.jpg
deleted file mode 100644
index 3b9f366194a1832a35fd8c9621dec9bf3eb2958b..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/keyboard-mouse.jpg and /dev/null differ
diff --git a/slides/wk06/img/pm/linear-pie.jpg b/slides/wk06/img/pm/linear-pie.jpg
deleted file mode 100644
index 7b5be577b037ad1996b358bf68265ce8e9171465..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/linear-pie.jpg and /dev/null differ
diff --git a/slides/wk06/img/pm/linear-pie.png b/slides/wk06/img/pm/linear-pie.png
deleted file mode 100644
index 99fa1c9be77105ec9a858423a8bf1bf3f92acba5..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/linear-pie.png and /dev/null differ
diff --git a/slides/wk06/img/pm/mac-expanded.png b/slides/wk06/img/pm/mac-expanded.png
deleted file mode 100644
index a0e0d83d0be9bb0740e8069923da73b1fd25c8eb..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/mac-expanded.png and /dev/null differ
diff --git a/slides/wk06/img/pm/mac-noedge.png b/slides/wk06/img/pm/mac-noedge.png
deleted file mode 100644
index b1c0e0a346e3081e971fda5e4838930f67018f8f..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/mac-noedge.png and /dev/null differ
diff --git a/slides/wk06/img/pm/macvswindows.png b/slides/wk06/img/pm/macvswindows.png
deleted file mode 100644
index 78f6e16b617deec6df270683f2235fa9d37f0ca4..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/macvswindows.png and /dev/null differ
diff --git a/slides/wk06/img/pm/magnification.png b/slides/wk06/img/pm/magnification.png
deleted file mode 100644
index 10228424e733844c88ba076d36f3fc8bdee249bf..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/magnification.png and /dev/null differ
diff --git a/slides/wk06/img/pm/new-zoom-leave.png b/slides/wk06/img/pm/new-zoom-leave.png
deleted file mode 100644
index 4c00cd0546155519467a06cac83f1efb5dca05cc..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/new-zoom-leave.png and /dev/null differ
diff --git a/slides/wk06/img/pm/old-zoom-leave.png b/slides/wk06/img/pm/old-zoom-leave.png
deleted file mode 100644
index 78c133c0e0d3751be92e497c9d6a1cd06f7a3868..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/old-zoom-leave.png and /dev/null differ
diff --git a/slides/wk06/img/pm/old-zoom-leave2.png b/slides/wk06/img/pm/old-zoom-leave2.png
deleted file mode 100644
index be1ba7272ba0bdb898694986e66245149aad7334..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/old-zoom-leave2.png and /dev/null differ
diff --git a/slides/wk06/img/pm/pointer-cursor.png b/slides/wk06/img/pm/pointer-cursor.png
deleted file mode 100644
index 78e12c265671daf592eb68cfcbf6903c63d16191..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/pointer-cursor.png and /dev/null differ
diff --git a/slides/wk06/img/pm/powerpoint-toolbar.png b/slides/wk06/img/pm/powerpoint-toolbar.png
deleted file mode 100644
index ad67beceb109847c530752f3e696a763be9a4436..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/powerpoint-toolbar.png and /dev/null differ
diff --git a/slides/wk06/img/pm/size.png b/slides/wk06/img/pm/size.png
deleted file mode 100644
index f56056be3e8fc5d3b55e2bf2f4845677d899112c..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/size.png and /dev/null differ
diff --git a/slides/wk06/img/pm/size1.png b/slides/wk06/img/pm/size1.png
deleted file mode 100644
index 40da7ad658c54dd0b4a47cd182a7cd089483f9d0..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/size1.png and /dev/null differ
diff --git a/slides/wk06/img/pm/size2.png b/slides/wk06/img/pm/size2.png
deleted file mode 100644
index 6351479cab97a656e0b98d36e141eea51b364358..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/size2.png and /dev/null differ
diff --git a/slides/wk06/img/pm/swype.jpg b/slides/wk06/img/pm/swype.jpg
deleted file mode 100644
index b9ae2648366e5bd4b59aeec898b4316f9c764862..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/swype.jpg and /dev/null differ
diff --git a/slides/wk06/img/pm/timeoverid.png b/slides/wk06/img/pm/timeoverid.png
deleted file mode 100644
index a633d97047b1974ec59e5811c2c768ebac148502..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/timeoverid.png and /dev/null differ
diff --git a/slides/wk06/img/pm/windows-comparison.png b/slides/wk06/img/pm/windows-comparison.png
deleted file mode 100644
index 3dc19639799015d50a9d1152e95e020363c30f2a..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/windows-comparison.png and /dev/null differ
diff --git a/slides/wk06/img/pm/x.png b/slides/wk06/img/pm/x.png
deleted file mode 100644
index 75e39254205b42ab016a06f3381a9a37a799ad20..0000000000000000000000000000000000000000
Binary files a/slides/wk06/img/pm/x.png and /dev/null differ
diff --git a/slides/wk06/people-motor.html b/slides/wk06/people-motor.html
deleted file mode 100644
index 932b22a32c991ae700063e9ce279deb83559b9cb..0000000000000000000000000000000000000000
--- a/slides/wk06/people-motor.html
+++ /dev/null
@@ -1,706 +0,0 @@
----
-layout: presentation
-title: Properties of People II
-description: Deriving Design Principles from Physiology of Motor Control
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Properties of People II: Motor Control & Mental Models
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-# Agenda
-
-- Administrivia
-  - Color Picker is due Monday 5/11 (10pm)
-  - The Accessibility and Color Picker practice quizzes are out.
-  - - **Reminder:** Please fill out this [form](https://docs.google.com/forms/d/e/1FAIpQLSdQrpZx-gexgDcKEF1SRp4egObimDP9qqVwLD56w0V2sYJDpw/viewform) by tonight, so we can plan for our next assignment - Menus.
-- Fitts' Law and implications for interface design
-
----
-
-# Let's try an experiment
-.left-column-half[![:img Image of an interface with a red dot and many grey dots on the left
-and a dialog on right to control randomization and highlight distance
-and width in a Fitts' law experiment., 80%](img/pm/fitts.png)
-]
-.right-column-half[
--  [Fitts' Law Experiment](http://simonwallner.at/ext/fitts/) (simonwallner.at/ext/fitts) Scroll
-   down to just below 'A word of warning'
-- Click the red circles as fast as possible
-]
----
-
-[//]: # (Outline Slide)
-# Today's goals
-
-Experience Fitts' Law
-
-Discuss its implications for design
-
-Introduce Guiard's model of Bi-Manual Control
-
-Discuss its implications for design
----
-.left-column-half[
-# Throughput
-
-![:img Picture of graph of fitts law data collected when I did the
-experiment. Y axis is time and x is index of difficulty (ID). It's fairly
-noisy because fitts law is designed to measure multiple
-people. However it does fit a line., 80%](img/pm/timeoverid.png)
-]
-.right-column-half[
-.jax[$$MT = a + b*log_2({Dist \over Size} + 1)$$
-]
-
-where
-- *MT* is movement time
-- ID is the *Index of Difficulty* (ID, in bits) of a movement
-.jax[$$log_2({Dist \over Size} + 1)$$]
-- *ID/MT* is the *Throughput* of a device in bits/second
-- *a* and *b* are empirically derived constants
-- Note: We will use D for Dist and W for Width throughout the rest of this lecture
-]
-???
-This is just a line
-
-Fitts’ law tells us about difficulty for pointing and selection tasks
-- Time to move the hand depends only on relative precision required
-- MT increases as __distance__ from target increases
-- MT decreases as __size__ of target increases
-- Diagram this
-
----
-# Original Fitts' experiment
-
-.left-column-half[
-![:img Mock up of the original task in Fitt's experiment, 80%](https://upload.wikimedia.org/wikipedia/commons/1/16/Fitts_Task_English.jpg)
-.font-small[[Wikpedia](https://en.wikipedia.org/wiki/Fitts%27s_law)]
-]
-.right-column-half[
-Original experiment from Paul Morris Fitts involved tapping on plates as quickly as possible.
-]
-
----
-
-# Compare Device Performance & Human Performance
-
-.left-column-half[
-![:img Graph of Fitts law lines for various body parts (Neck Arm Wrist
-Finger) with time on the Y axis and bits on the X axis, 100%](img/pm/body-fitts.png)
-
-]
-
-.right-column-half[
-.font-small[
-Device/Part | Study | Throughput (bits/s) | Relative to Optimal
--------|-------|------------ | -----------
-Finger | Langolf (1976) | 38
-Wrist  | Langolf (1976) | 23
-EyeTracker| Ware & Mikaelian (1987) | 13.7 |
-Hand   | Fitts (1954) | 10.6
-Arm    | Langolf (1976) | 9.5
-Xbox 360 | Zaranek (2014) | 5 | **.47** (arm)
-Mouse  | Mackenzie (2001) | 4.9 | .46 (hand)
-Neck      | Pfaff (1985) | 4.2 |
-Trackball | Mackenzie (2001)| 3.0 | .28 (hand)
-Touchpad  | Mackenzie (2001) | 2.9 | .27 (hand)
-Head      | Hansen (2018) | 2.5 | **.51** (neck)
-Gaze      | Hansen (2018) | 2.1 | **.15** (eyetracker)
-Joystick  | Mackenzie (2001)| 1.8 | .17 (hand)
-Playstation Move | Zaranek (2014) | 1.5 | .16 (arm)
-Kinect    | Zaranek (2014) | 1 | .1 (arm)
-]
-]
-.footnote[Card, S. K., Mackinlay, J. D., & Robertson, G. G. (1991). <br>
-A morphological analysis of the design space of input devices. <br> ACM
-Transactions on Information Systems (TOIS), 9(2), 99-122.
-]
-???
-Useful to know if you're designing something like VR
-
-Doesn't have much impact on interface design
-
-Doesn't capture everything; e.g. error rate is higher for eye tracker
-
----
-# Warnings
-
-Applies to *expert, errorless* use
-
-![:img bar chart of Average WPM for error rates of 1% to 20% in a
-study that falsely inserted typing errors is much higher for 1% than
-20%,40%](img/pm/errors.png)
-
-
-.footnote[Error rate was manipulated by faking errors.
-Ahmed Sabbir Arif and Wolfgang Stuerzlinger. CHI 2010. Predicting the cost of error correction in character-based text entry technologies. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, April 2010
-]
-
-???
-Axis: X is faked error rates, Y is the words per minute.
-
-Shows how WPM did change in the study where error rate is being changed.
-If you know you are going to make a lot of errors you slow down your motion
-The underlying way we're designed to move is with small motions, to eliminate jerk
-We accelerate and decelerate smoothly
-Trace of motion for different body parts - after the initial motion, which is a rapid aiming motion,
-then corrective motions if you misss the target.
-Lots of those corrections, that is where you are goign to see people slow down.
-Subtle effects here – like the time to fix errors goes up as the error rate goes up…
-Act of correcting an error also takes time.
-Not worry about in the assignment, but interesting to know.
-
----
-# Example: Arm based input
-
-Student project using a Kinect from 2012.
-Watch the movement of his arm...
-
-![:youtube Bubble keyboard implemented by Chinmay N in 2012. Users swipe with their full arm to select letters in on a keyboard, mQ-pCDr3RCw]
-
-
----
-# Discussion: Implications of Fitts' law
-
-In your breakout groups,
-- Discuss: Why are some things harder than others to click on?
-- Add your thoughts on the bullet line with your group number in this [Google Doc](https://docs.google.com/document/d/162SuMVyuVguaTiv7hSyZUbrDhvYZUbXHJLglHvENRbM/edit?usp=sharing)
-- It's helpful if one of you share your screens.
-
-![:img Picture of mac desktop and windows desktop. Of note is the main menu bar which is at the very top of the mac desktop but at the top of *each* window on the windows desktop, 80%](img/pm/macvswindows.png)
-
-???
-Constantly relevant
-
-Intuitively, things that are closer and/or bigger are faster and
-easier to hit (and vice versa)
-
-What is different about the file location in Mac and Windows?
-
-What is the width at the top of the screen.
-
----
-# Design Tip #1: <br>Make small targets larger
-
-![:img Pet Gallery buttons at 64dp](img/buttons64dp.png)&nbsp;&nbsp;![:img Pet Gallery buttons at 80dp](img/buttons80dp.png)
-
-What does this do to Fitts Law Predictions?
---
-- Maximizes Size (W)
-
-Why should you not maximize all of the targets?
-
---
-
-- Fitts' law involves a logrithmic calculation -- exponentially bigger gains for small targets, not so
-much of a gain for larger targets
-
----
-# Design Tip #2:<br> Put commonly used things close together
-
-![:img Screenshot of the powerpoint toolbar with grouped things,100%](img/pm/powerpoint-toolbar.png)
-
-Is this minimizing Distance (D) or maximizing Size (W)? (zoom poll)
----
-
-# Design Tip #2:<br> Put commonly used things close together
-
-.left-column50[
-![:img Image of the drag'n'pop interface which moves icons to the cursor when they are valid targets,80%](img/pm/dragpop.png)
-]
-.right-column50[
-# ... Or bring them closer to  cursor
-
-Is this minimizing Distance (D) or maximizing Size (W)? (zoom poll)
-
-]
-.footnote[
-Baudisch, P., Cutrell, E., Robbins, D., Czerwinski, M., Tandler,
-P. Bederson, B., and Zierlinger, A. Drag-and-Pop and Drag-and-Pick:
-Techniques for Accessing Remote Screen Content on Touch- and
-Pen-operated Systems. In Proceedings of Interact 2003, Zurich
-Switzerland, August 2003, pp. 57-64.
-]
-
-
-???
-Reduces Distance (D)
-
-Not good design to put everything close together
-
-No space to move all targets (contextual filtering helps)
-
-Could do with a fancy container...
-
----
-# Design Tip #2:<br> Put commonly used things close together
-
-.left-column50[
-![:img Image of the drag'n'pop interface which moves icons to the cursor when they are valid targets,80%](img/pm/dragpop.png)
-]
-
-.right-column50[
-
-Minimizes Distance (D) in Fitts Law Predictions
-
-Why not do this to all targets?
-]
---
-.right-column50[
-- Other usability goals matter too -- e.g. grouping related things
-- It is not good design to put everything close together
-- There is not enough space to move all targets (contextual filtering helps)
-
-How would you implement this?
-
-]
-
-
-
----
-# We can make things *Closer* and *Larger* at the same time
-
-![:img Image of mac with doc icons magnified,100%](img/pm/mac-expanded.png)
-
----
-# We're beating Beating Fitts' Law!
-
-How else can we do this?
---
-
-Just don't use a mouse! Shortcut buttons; scroll wheel
-
-Or CHEAT... manipulate the interface
-- Minimize D
-- Increase W
-
----
-
-# Do these menus minimize Distance (D) or maximize Size (W)?
-
-(zoom poll)
-Select from a menu bar at top of screen
-![Picture of the apple menu opened on a mac,80%](img/pm/mac-noedge.png)
-
-???
-Problems?
-
-- Can be tiring to reach edges of *very* large screens
-- Not all interfaces can do this (e.g. web designers)
----
-# Design Tip #3:<br>Make use of Edges: They are Infinite
-
-.right-column[
-![:img Picture of the Windows menu in Windows 95 Windows XP and Windows 8 showing progressive improvement in the relationship between look (namely a border around the icon) and feel (can click anywhere making it an infinitely large button which is easier to hit from a Fitts law perspective), 100%](img/pm/windows-comparison.png)
-]
-
-???
-- Windows 95 bug: bottom-left corner is offset by a few pixels, can’t click on it
-- Windows XP fixes it by making Start button go all the way to the corner
-- Windows 8 uses styling to make start menu circular, but still makes entire corner clickable
----
-# Recent Example (Zoom)
-
-Which of these do you think is a better button for maximizing size using the infinite edge?
-
-.left-column60[
-![:img Old zoom leave button which looks only like text but really is an infinite edge, 30%](img/pm/old-zoom-leave.png)
-]
-.right-column30[
-<br>
-![:img New zoom leave button which looks bigger but loses the infinite edge, 50%](img/pm/new-zoom-leave.png)
-]
-
----
-# Recent Example (Zoom)
-
-Which of these do you think is a better button for maximizing size using the infinite edge?
-
-.left-column60[
-![:img Old zoom leave button which looks only like text but really is an infinite edge, 30%](img/pm/old-zoom-leave.png) &nbsp;&nbsp;
-![:img Old zoom leave button which displays its infinite edge/larger button when hovered over, 30%](img/pm/old-zoom-leave2.png)
-
-Although it looks like only the text is clickable, it turns out the whole edge was. Now we only have a "smaller" but brighter button to click.
-]
-.right-column30[
-<br>
-![:img New zoom leave button which looks bigger but loses the infinite edge, 50%](img/pm/new-zoom-leave.png)
-]
-
-
-
----
-# Does this minimize Distance (D) or maximize Size (W)?
-
-Right click in place and then select (starting at :19)
-
-![:youtube Illustration of advantages of marking menus,dtH9GdFSQaw?start=19]
-
-.footnote[
-Kittenish, G., & Buxton, W. (1994, April). User learning and performance with marking menus. In CHI (Vol. 94, pp. 258-264).
-]
-???
-Minimizes D
-AND
-increases W
-(only angle matters)
-
-
----
-# Does this minimize Distance (D) or maximize Size (W)?
-
-Why is it so rare & unfamiliar?
-
-![:img Left -- A pie menu consisting of a circle broken into eight
-wedges containing menu items like copy and undo; right-- A picture of
-a standard linear menu ,50%](img/pm/linear-pie.jpg)
-
-.footnote[
-Left example: OneNote 2013, Right example: Firefox. Taken from [Fitts
-law and user experience](https://www.smashingmagazine.com/2012/12/fittss-law-and-user-experience/)
-by
-[https://www.smashingmagazine.com/author/anastasios-karafillis/](Anastasios Karafillis)
-]
-
----
-# Design Tip #4:<br>Use pie menus instead of context menus for expert tasks
---
-
-Under some circumstances only...
-
-- Less than 8 options (Small target areas when too many menu entries are added)
-- Expert user (willing to memorize and gain advantage of marking
-menus)
-- Grouping not important (hard to group radially)
-
-Pie menus are often not implemented in production code
-- Needs to be seen as a high priority feature
-- Managers need to be able to assign staff to the project
-  - Sadly, project constraints define an interface. (**Shouldn't be a thing! Whorfian effects**)
-
-
----
-
-# Does this minimize Distance (D) or maximize Size (W)?
-
-![:img video of someone moving emails into folders with snapping,60%](img/pm/gmail-snapping.gif)
-
-???
-Snapping to a target
-
-- [A] Minimize D?
-- [B] Maximize W?
-
-minimizes D
----
-
-# Design Tip #5:<br>Use snapping to minimize distance<br> when likely targets are known
-
-![:img Picture showing drag snapping in gmail trello and chrome,40%](img/pm/common-snapping-cases.png)
-
-.font-small[
-
-Gmail | Trello | Chrome
------ | ------ | -----
-![:img check, 10%](img/pm/check.png)Drag Handle | ![:img x, 10%](img/pm/x.png)No Handle | ![:img x, 10%](img/pm/x.png) No Handle
-![:img ,10%](img/pm/grab-cursor.png)Grab cursor | ![:img ,10%](img/pm/pointer-cursor.png)Pointer cursor | ![:img ,10%](img/pm/cursor.png)Default cursor
-![:img check, 10%](img/pm/check.png)Drop Shadow | ![:img check, 10%](img/pm/check.png)Drop Shadow | ![:img x, 10%](img/pm/x.png) No Drop Shadow
-![:img check, 10%](img/pm/check.png)Drop Target | ![:img check, 10%](img/pm/check.png)Drop Target | ![:img x, 10%](img/pm/x.png) No Drop Target
-![:img x, 10%](img/pm/x.png) No Natural Movement | ![:img check, 10%](img/pm/check.png)Natural Movement | ![:img check, 10%](img/pm/check.png) Natural Movement
-]
-
-.footnote[Examples courtesy of [Drag and Drop for Design Systems](https://uxdesign.cc/drag-and-drop-for-design-systems-8d40502eb26d)]
-
-???
-Also common in drawing programs
-
-Most sophisticated approach: dynamic semantics: Check legality and
-consequences of each result at every move don’t catch errors, prevent them
----
-# Does this minimize Distance (D) or maximize Size (W)?
-
-Fan Cursor, Area Cursor and Bubble Cursor
-![:youtube Video showing a variety of schemes for making the cursor
-bigger including fan cursor; area cursor; and bubble
-cursor,bq1x5cRqgUc]
-
-.footnote[Su, X., Au, O. K. C., & Lau, R. W. (2014, April). The
-implicit fan cursor: a velocity dependent area cursor. In Proceedings
-of the SIGCHI Conference on Human Factors in Computing Systems
-(pp. 753-762). ACM.]
-
----
-# Design Tip #6:<br>Separate Motor Size from Visible Size
-
-.left-column[
-![:img Picture of two versions of a dialog box; scrollbar; and
-menu, 100%](img/pm/hiddensize.png)
-]
-.right-column[
-- (a) Visual space appearance of buttons in a dialogue
-box.
-- (b) Motor space version of button design in (a) with much larger
-targets for certain buttons.
-- (c) Standard scroll-bar design.
-- (d) Visual space appearance of scroll-bar redesigned to occupy smaller
-screen space.
-- (e) Motor space version of scroll-bar design in (d) with larger targets for active areas.
-- (f) Visual space appearance of menu.
-- (g) Motor space version of the menu design in (f) with the
-distance to more important items reduced by compressing the size of less important items)
-]
-.footnote[Semantic pointing widget designs from Blanch et al. 2004]
-???
-How would you implement this?
-- Manipulate picking
-- Whorfian effects
----
-# Would you ever make something too small virtually?
-
---
-
-How about a cancel button?
-
----
-# How long will this take?
-.right-column-half[
-Select 'Open New Window in Process'
-]
-.left-column[
-![:img Cascading menus. User wants to use "Open New Window" then "Open
-new window in process" -- second option-- but the most direct path takes them over "Open command prompt" which changes the displayed sub-menu causing problems, 200%](img/pm/size.png)
-]
---
-.right-column-half[
-Steering law ... Fitts law integrated over the path you have to follow
-]
---
-.right-column-half[
-But it's not predictive at all. Why?
-]
---
-.right-column-half[
-It doesn't account for actual user behavior
-]
----
-# Actual User Behavior
-
-.left-column50[
-![:img Cascading menus. User wants to use "Open New Window" then "Open
-new window in process" -- second option -- but the most direct path takes them over "Open command prompt" which changes the displayed sub-menu causing problems, 80%](img/pm/size1.png)
-]
---
-.right-column50[
-![:img Cascading menus. User wants to use "Open New Window" then "Open
-new window in process" -- second option -- but the most direct path takes them over "Open command prompt" which changes the displayed sub-menu causing problems, 80%](img/pm/size2.png)
-]
-
-???
-Overly eager cascading menus, wrong submenu
-- Common problem w/ web menus (but not Mac or Win)
-- could brainstorm solutions (e.g. snapping? set focus somehow?)
-- whorfian effects: this is hard to implement
-
----
-# Fitts law has a huge limitation
-
-It is only predictive of **ERROR-FREE, EXPERT** behavior
-
-Related to our discussion of [Interaction Design](people-motor.html#28)
----
-# What else might we want to measure?
-
---
-- Time on Task -- How long does it take people to
-complete basic tasks? (For example, find something to
-buy, create a new account, and order the item.)
-
---
-- Accuracy -- How many mistakes did people make? (And
-were they fatal or recoverable with the right information?)
-
---
-- How strenuous (e.g. gaze has lower throughput but is less strenuous
-than head pointing Mackenzie 2018)
-
---
-- Recall -- How much does the person remember
-afterwards or after periods of non-use?
-
---
-- Emotional Response -- How does the person feel about
-the tasks completed? (Confident? Stressed? Would the
-user recommend this system to a friend?)
-
-Build up a list of good UI design principals from these basics
-- Undo
-- Predictability
-- ...
-What is missing? (e.g. fun)
-
----
-# Two Handed Interaction
-
-![:img Picture by Escher of two hands each drawing the other, 40%](img/pm/escher.png)
-???
-Used to be a norm
-
-Seems we forgotten to include it in our interfaces
----
-# Guiard's model of bimanual control
-
-Hand | Role and Action
----- | ----
-Non-preferred | Leads the preferred hand (in time)
-| Sets the spatial frame of reference for the preferred hand
-| Performs coarse movements
-Preferred | Follows the non-preferred hand
-| Works within established frame of reference set by the non-preferred hand
-| Performs fine movement
-
-Aside: Guiard is assuming right-handed. Tendencies somewhat less clear for left-handers,but we typically assume this still applies
-]
-.footnote[
-Seminal work
-Yves Guiard, “Asymmetric Division of Labor in Human Skilled Bimanual Action: The Kinematic Chain as a Model”, Journal of Motor Behavior, Vol. 19, No. 4, 1987, pp. 486-517.http://cogprints.org/625/
-]
-???
-non-preferred hand sets context for preferred
-coarser, slower movement
-tends to move first
-???
-Applications?
-
-- Mouse+keyboard
-- Lenses
-
----
-# What does theory say about keyboard layout?
-
-![:img Picture of right-handed user typing on keyboard with leftside
-and rightside power keys and mouse on right side (top). Picture of
-user  mousing with same set ups (bottom). Of note is the bad angle for
-the mouse in the keyboard with the right side power keys,
-30%](img/pm/keyboard-mouse.jpg)
-
-.footnote[From [Evoluent keyboard advertisement](https://turningpointtechnology.com/KB/EV/KB1.asp)]
----
-# Analysis of alternative keyboard layout
-
-Task | Leading Movement | Trailing/Overlapping Movement
-----|----|----
-Delete | Right hand — manipulate pointer with mouse; select by double clicking/dragging | Left hand — press DELETE (probably with little finger)
-Select an option in a window (see Figure 15) | Right hand — manipulate pointer with mouse; click option | Left hand — press ENTER (Assumes OK button is default)
-Click on a link in a browser | Left hand — navigate to link via PAGE UP and/or PAGE DOWN keys | Right hand — manipulate pointer with mouse; select link by clicking
-Open file; open folder; launch program | Right  hand — manipulate pointer with mouse; single click on icon | Right hand — press ENTER (avoids error prone double-click operation)
-
----
-# Other Examples: Tool Stone for Magic Lenses
-
-![:youtube By manipulating a mouse and a cube (one in each hand) the user controls a lens and uses it on screen, V32SnUnAe2E]
-
-Inspired by [1994 CHI paper](https://dl.acm.org/citation.cfm?id=166126)
-Published in [UIST 2000](https://lab.rekimoto.org/projects/toolstone/)
-
----
-# Magnification
-
-![:img Picture of a mandelbrot fractal with a lens over part of it magnifying that part, 50%](img/pm/magnification.png)
-
----
-# Font Selection
-
-![:img Picture of a paragraph of text with a lens containing a menu of options for bold italic regular and bold italic, 40%](img/pm/font-selection.png)
-
-???
-Fitts' law implications?
----
-# Debugging Lenses
-
-![:img Picture of a GUI application with a lens showing information about two lines including their coordinates and the option to turn on and off additional features, 40%](img/pm/debugging.png)
-
-.footnote[
-Hudson, S. E., Rodenstein, R., and Smith, I. 1997. Debugging lenses: a new class of transparent tools for user interface debugging. In Proceedings UIST '97, 179-187. http://doi.acm.org/10.1145/263407.263542
-]
----
-# Advantages of Lenses
-
-In context interaction
-- Little or no shift in focus of attention and/or movement
-- Alternate views in context and on demand
-
-???
-- tool is at/near action point
-- can compare in context
-- useful for “detail + context” visualization techniques
---
-
-Structured well for 2 handed input
-- non-dominant hand does course positioning (of the lens)
-- dominant hand does fine work
-
-"Spatial modes"
-- Use “where you click through” to establish meaning
-- Typically has a clear affordance for the meaning
-
----
-# Implementing Lenses
-
-.small[
-<div class="mermaid">
-  graph TD
-  Root(Root) --> LP(Lens Parent)
-  LP --> L[Lens]
-  LP --> I(Interactor 1)
-  LP --> II(Interactor 2)
-  LP --> III(Interactor 3)
-
-</div>
-]
-.footnote[Edwards, Hudson, et al., “Systematic output modification in a 2D user interface toolkit”, UIST ’97. http://doi.acm.org/10.1145/263407.263537 ]
-???
-Can be implemented with special "lens parent" container & lens interactors
-- Lens may need to change results of picking (only positional is affected) in collusion with lens parent
-- Lens parent forwards all damage to all lenses
-- Lenses typically change any damage that overlaps them into damage of whole lens area
-- Can pass a subclass of Drawable to "ambush and modify" drawing for output effects
----
-# Discussion: Should scrolling be dominant or non-dominant?
-
-What tasks is scrolling used for?
-
-Which precedes/follows?
-
-???
-Task | Characteristics
-Scrolling  | precedes/overlaps other tasks
-| sets the frame of reference
-| minimal precision needed (coarse)
-Selecting, editing, reading, drawing, etc. | follows/overlaps scrolling
-| works within frame of reference set by scrolling
-| demands precision (fine)
----
-# Summary Slide
-
-Design tips for motor
-
-- Design Tip #1: Make small targets larger
-- Design Tip #2: Put commonly used things close together
-- Design Tip #3: Use edges. They are infinite in size (W)
-- Design Tip #4: Use pie menus for expert tasks (better yet, marking menus)
-- Design Tip #5: Use snapping to reduce distance (D) when targets are known
-- Design Tip #6: Separate motor and visible size
-
-Two-Handed input principles
-- Non preferred leads
-- Sets frame of reference
-- Preferred does fine movement
diff --git a/slides/wk07/behavior-change.html b/slides/wk07/behavior-change.html
deleted file mode 100644
index 8e7ebc3d1ffb3bf9d6be995782978f39e59890f8..0000000000000000000000000000000000000000
--- a/slides/wk07/behavior-change.html
+++ /dev/null
@@ -1,741 +0,0 @@
----
-layout: presentation
-title: Using Mobile Phones to Persuade
-description: Using Mobile Phones to Persuade--Behavior Change through Mobile Design
----
-layout: normal
-
-# Do this now
-
-.left-column-half[
-<br>
-<iframe src="https://embed.polleverywhere.com/multiple_choice_polls/3oPAa3YORE0gE6uCKe7mq?controls=none&short_poll=true" width="600" height="400" frameBorder="0"></iframe>
-
-]
-
-.right-column-half[
-In chat write down your current "ear worm"
-
-What song is running through your head
-or are you listening to on repeat?
-
-]
-
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# [NOTIFICATIONS](http://sitn.hms.harvard.edu/flash/2018/dopamine-smartphones-battle-time/)
-
-![:img Picture of phone screen with red dots,
-80%](img/behavior-change/dopamine.jpg)
-
-
-.footnote[Picture from [itstimetologoff.com](https://www.itstimetologoff.com/2018/03/22/why-switching-off-your-social-media-and-phone-notifications-is-your-own-mini-digital-detox/)]
-???
-Multiple kinds of notifications on your phone.
-Here's the red dot with the number of messages on it.
-What other kinds are there?
-- Toast - appears within an app only
-- Email? Easy or hard to ignore
-What do you prefer? Which are more interruptive?
-Urge to clear the red dots on the screen?
-They effect your brain the seritonin in your rain (red dots in particular)
----
-# [Dopamine, Smartphones & You: A battle for your time](http://sitn.hms.harvard.edu/flash/2018/dopamine-smartphones-battle-time/)
-
-![:img Picture of brain looking at notification, 40%](img/behavior-change/dopamine2.png)
-
-???
-From a company's perspective, it's trying to get your attention
-Not an altruistic service
-It's not always the case, but incentives are there.
-War between companies to get your attention
-Important to think about how you use notifications if you're doing Mobile app development.
-
----
-layout: false
-
-.left-column[
-## Using Mobile Phones to Persuade
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
-]
-.right-column[
-
-
-![:img Picture of violinist in office with boy and principal with caption; I've hired this musician to play a sad melody while I give you a sob story about why I didn't do my homework. It's actually quite effective, 60%](img/behavior-change/sob.png)
-
-]
-
----
-# Examlet 3
-
-- Examlet 3 will be released after lecture
-- Same process as Examlet 2: copy a google doc, fill it out, make a PDF and upload to gradescope
-- Different: Not as time bound: due by 10pm tonight.
-
-
----
-# What does it take to persuade you?
-
-
-![:youtube Wildebeest arguing about a log and whether it is a crocodile, JMJXvsCLu6s]
-
----
-.left-column[
-## Technology for persuasion
-
-Coercive: negative connotatons, patronizing, paternalistc, "we know
-what’s best for you and you will do it!"
-]
-.right-column[
-![:img Big person leaning on small person, 30%](img/behavior-change/coercion.png)
-]
-
-???
-Persuasion is changing your behavior.
-
----
-.left-column[
-## Technology for persuasion
-
-## Is really about behavior change
-]
-.right-column[
-
-Which do you think is true?
-
-Persuasive = Coercive
-
-Persuasive >= Coercive
-
-Persuasive <= Coercive
-
-Persuasive != Coercive
-
-]
-???
-Technology that is pursuading you to do some kind of action.
-
-If you've bought something like a fitbit, you're buying into the idea of something pursuading
-you to do something.
----
-# What does it take to persuade you?
-
-![:youtube People being persuaded to climb stairs, 2lXh2n0aPyw]
-
-???
-What kind of pursuasion is being applied here.
-Is this coercive or not coercive?
-
----
-# What does it take to persuade you?
-
-
-.left-column50[
-![:youtube Cialdini, cFdCzN7RYbw]
-
-:54 6 shortcuts
-
-]
-???
-Tip example -
-How are they doing the study? What are the conditions?
-What are they measuring? (how much they tip)
-How do they sample?
-Are they consenting the participants like we have to do the  menus study?
-
---
-.right-column50[
-How does this list of shortcuts apply to interface design?
-
-- reciprocity
-- scarcity
-- authority
-- consistency
-- liking
-- consensus
-
-]
-
-???
-Trying to keep people using your app
-
----
-# What’s needed to support positive behavior change?
-.quote[
-If you cannot measure it, you cannot improve it.]
-
-Lord Kelvin
-
-???
-Not using sensor based interfaces, but we'll talk about what can we do with sensor data?
-Almost every app that you download collects data about you. Studies have been done
-about the libraries that are used in seemingly begnin apps.
-Example: Angry birds. Why do they collect location data? (Sales)
-
-Most of the data they're collecting is through third party libraries.
-
----
-# Data Collection Options
-
-![:img Data collection Devices (fitbits; watches; etc), 40%](img/behavior-change/data-collection.png)
-
----
-# Data Collection Options
-
-.left-column[
-
-Or we could just use one...
-
-]
-
-.right-column[
-![:img Samsung Phone, 20%](img/behavior-change/phone.png)
-
-]
-???
-We're carrying this around and letting them collect all this data.
-
----
-.left-column[
-## Making Data Actionable
-
-## Data ]
-.right-column[
-
-![:img Speedometor with dial at 110mph, 80%](img/behavior-change/speedometer.png)
-
-]
-
----
-.left-column[
-## Where is the value?
-
-## Data
-
-]
-.right-column[
-Most of what we get is Data
-
-![:img many graphs, 100%](img/behavior-change/mostlydata.png)
-]
-
-???
-We have to do more to turn the raw into something useful.
-Knowledge instead of just data
-
-
----
-.left-column[
-## Making Data Actionable
-
-## Knowledge ]
-.right-column[
-
-![:img Sign comparing speed (29mph) to speed limit (25mp), 60%](img/behavior-change/sign.png)
-
-]
-
----
-.left-column[
-## Making Data Actionable
-
-## Decision Making ]
-.right-column[
-
-![:img out of focus sign due to speeding, 50%](img/behavior-change/focus.png)
-
-Danger... you have exceded the speed limit of 80kph. <br>
-Slow down immediately or face strict disciplinary action
-
-.footnote[[Meru speed alarms in cabs](https://www.meru.in/about-us/our-philosophy)]
-
-]
-???
-
-This will be influencing based on the data
-
----
-.left-column[
-## Making Data Actionable
-
-### Translating data into behavior change
-
-]
-.right-column[
-![:img Personal Informatics apps, 80%](img/behavior-change/personalinformatics.png)
-
-]
-.footnote[[personalinformatics.org](http://personalinformatics.org/tools)]
-
-???
-Website that has a list of all the APIs that they were aware of at the time that supports behavior change.
-
----
-.left-column[
-## Making Data Actionable
-
-### Translating data into behavior change
-
-]
-.right-column[
-![:img five part model of personal informatics with stages
-preparation; collection; integration; reflection; action ,
-80%](img/behavior-change/personal-informatics-model.png)
-
-Developed with 68 survey participants, 11 follow-up interviews
-
-]
-.footnote[Li, Dey, Forlizzi. A Stage-Based Model of Personal
-Informatics Systems. CHI 2010.]
-
-???
-Study done at the iSchool
-Beyond notifications to get users to use an app
-
-Can't assume that everyone is at the action stage.
-
-
----
-
-.left-column[
-## Preparation
-
-![:img person waving, 100%](img/behavior-change/alice.png)
-]
-.right-column[
-Alice!
-- **Wanted** to become active
-- **Decided** to track her physical activity
-- **Chose** to track step counts using a pedometer
-]
-
-
-.footnote[
-**Preparation**|Collection|Integration|Reflection|Action]
-
-
----
-.left-column[
-## Collection
-
-]
-
-.right-column[
-
-| day | steps | day | steps | day | steps | day | steps | day | steps | day | steps |
-|-----|-------|-----|-------|-----|-------|-----|-------|-----|-------|-----|-------|
-| Mon | 1573  | Mon | 1209  | Mon | 12344 | Mon | ...   | Mon | ...   | Mon | ...   |
-| Tue | 4392  | Tue | 1834  | Tue | 1200  | Tue | ...   | Tue | ...   | Tue | ...   |
-| Wed | 4537  | Wed | 4341  | Wed | 4311  | Wed | ...   | Wed | ...   | Wed | ...   |
-| Thu | 5842  | Thu | 8300  | Thu | 7348  | Thu | ...   | Thu | ...   | Thu | ...   |
-| Fri | 10258 | Fri | 10300 | Fri | 9384  | Fri | ...   | Fri | ...   | Fri | ...   |
-| Sat | 7528  | Sat | 6347  | Sat | 5123  | Sat | ...   | Sat | ...   | Sat | ...   |
-| Sun | 1367  | Sun | 1231  | Sun | 1430  | Sun | ...   | Sun | ...   | Sun | ...   |
-| Mon | 1497  | Mon | 1503  | Mon | 1427  | Mon | ...   | Mon | ...   | Mon | ...   |
-| Tue | 1837  | Tue | 1717  | Tue | 1643  | Tue | ...   | Tue | ...   | Tue | ...   |
-| Wed | 4537  | Wed | 4341  | Wed | 4311  | Wed | ...   | Wed | ...   | Wed | ...   |
-| Thu | 5842  | Thu | 8300  | Thu | 7348  | Thu | ...   | Thu | ...   | Thu | ...   |
-| Fri | 10258 | Fri | 10300 | Fri | 9384  | Fri | ...   | Fri | ...   | Fri | ...   |
-| Sat | 7528  | Sat | 6347  | Sat | 5123  | Sat | ...   | Sat | ...   | Sat | ...   |
-| Sun | 1367  | Sun | 1231  | Sun | 1430  | Sun | ...   | Sun | ...   | Sun | ...   |
-| ... | ...   | ... | ...   | ... | ...   |     | ...   | ... | ...   | ... | ...   |
-]
----
-
-.left-column[
-## Integration
-
-![:img person waving, 100%](img/behavior-change/alice.png)
-]
-.right-column[
-![:img chart of steps, 80%](img/behavior-change/chart.png)
-
-]
-
-
-.footnote[
-Preparation|Collection|**Integration**|Reflection|Action]
-
-???
-bar plot
-
----
-
-.left-column[
-## Reflection
-
-![:img person waving, 100%](img/behavior-change/alice.png)
-]
-.right-column[
-![:img chart of steps, 80%](img/behavior-change/chart-highlights.png)
-
-]
-
-.footnote[
-Preparation|Collection|Integration|**Reflection**|Action]
-
-???
-Days when she's really outside of the mean
-
----
-
-.left-column[
-## Action
-
-![:img person moving, 100%](img/behavior-change/aliceactive.png)
-]
-.right-column[
-
-The stage when people choose what they are going to do with their
-new-found understanding of themselves.
-]
-
-.footnote[
-Preparation|Collection|Integration|Reflection|**Action**]
-
-
-???
-How can we support this with technology?
-
---
-.right-column[
-– Alerts
-
-– Incentives
-
-– Suggestions
-
-]
-
-???
-Context-aware computing...
-
----
-
-.left-column50[
-![:img self tracking in context, 80%](img/behavior-change/full-model.png)
-]
-.right-column50[
-
-# Why Behavior Change is Difficult
-
-
-### Every stage presents distinct barriers
-
-Failures in one stage cascade through later stages, must design for
-entire tracking process
-
-### This occurs in a larger context of deciding to track, selecting a tool, and eventual lapsing
-]
-.footnote[Epstein, Ping, Fogarty, Munson. A Lived Informatics Model of
-Personal Informatics. UbiComp 2015.]
-
-???
-Fitbit users lapse after a time - they don't charge it.
-Not incentivised.
-Have to account for when they're lapsing
-
-
----
-
-# Process of Change
-
-![:img Trans-theoretical change model, 80%](img/behavior-change/ttc.png)
-
-<!--
-| Precont.      | Cont.         | Prep.           | Action                | Maint.           | Adoption              |
-|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|
-| Consciousness-raising | Consciousness-raising | Consciousness-raising |                       |              | Social liberation     | Social liberation     | Social liberation     | Social liberation     |                       |                       |
-         |                       |
-|                       | Self-analysis         | Self-analysis         |                       |                       |                       |
-|                       | Emotional arousal     | Emotional arousal     |                       |                       |                       |
-|                       | Positive outlook      | Positive outlook      |                       |                       |                       |
-|                       |                       | Commitment            | Commitment            | Commitment            | Commitment            |
-|                       |                       | Behavior analysis     | Behavior analysis     |                       |                       |
-|                       |                       | Goal setting          | Goal setting          | Goal setting          |                       |
-|                       |                       | Self-reevaluation     | Self-reevaluation     | Self-reevaluation     |                       |
-|                       |                       |                       | Countering            | Countering            |                       |
-|                       |                       |                       | Monitoring            | Monitoring            | Monitoring            |
-|                       |                       |                       | Environmental control | Environmental control | Environmental control |
-|                       |                       |                       | Helping relationships | Helping relationships | Helping relationships |
-|                       |                       |                       | Rewards               | Rewards               | Rewards               |
-|                       |                       |                       |                       |                       |                       |
-{: .small #small}
--->
-
-
-???
-Using the same plan for every individual who wishes to change a behavior will not work
-
-Timing is important in the process of willful change
-
----
-background-image: url(img/behavior-change/phoneplanet.png)
-
-# Case Study: <BR> Energy Use
----
-# What is the responsibility of technologists to address climate change?
-![:img Picture of unhappy amazon boxes, 40%](img/behavior-change/amazon.jpeg)
-
-.footnote[[Amazon Refuses to Act on Climate Change. So We Employees Are Speaking Out](https://www.yesmagazine.org/planet/amazon-climate-change-action-jeff-bezos-20190530)]
-
----
-# Case Study: UbiGreen - In Class activity
-
-.right-column30[
-![:img Picture of a mobile phone with a car and a tree on the sceren,40%](img/behavior-change/ubigreen.png)
-]
-
-This will be fun - a design activity!
---
-Honest.
---
-Don't leave...
---
-It does involve breakout rooms.
---
-(If you are the only one in a breakout room come back to the main room and I'll put you in another one.)
---
-
-
-Each group will work on a page in the [shared google doc](https://docs.google.com/document/d/1SqvaQyhFYs6AsOPoDcBkG4egCRRq3jEaW17HOi0hSkM/edit?usp=sharing)
---
-
-Case study is explained on the next slide AND in the doc.
---
-
-One person in each breakout room should share the screen with slide, everyone should also
-be in the google doc.
-
----
-# Case Study: UbiGreen - In Class activity
-
-.right-column30[
-![:img Picture of a mobile phone with a car and a tree on the sceren,40%](img/behavior-change/ubigreen.png)
-]
-
-Problem: High Carbon Dioxide emissions from U.S. households from personal transportation (single use
-vehicles).
-
-Goal: To create an app that will encourage users to change their behavior with respect to using
-their cars.
-
---
-
-This was last done in 2006-9... the app needs updating...
-
-.left-column40[
-.footnote[
-based on a [CHI 2009 paper](https://dl.acm.org/doi/10.1145/1518701.1518861) by J. Froehlich,
-T. Dillahunt, P. Klasnja, J. Mankoff, S. Consolvo, B. Harrison, J. A. Landay
-]
-]
----
-# Case Study: UbiGreen - In Class activity
-
-.right-column30[
-![:img Picture of a mobile phone with a car and a tree on the sceren,40%](img/behavior-change/ubigreen.png)
-]
-
-Your task:
-- Design an app that will
-  - Use sensing data to determine a user's behavior (what type of data would you need?)
-  - Pursuade (or coerce?) users of your app to change their behavior
-- Design a user study that will determine if your app is successful.
-  - What is your [hypothesis](https://courses.cs.washington.edu/courses/cse340/20sp/slides/wk07/menus.html#36)?
-  - What is your [method](https://courses.cs.washington.edu/courses/cse340/20sp/slides/wk07/menus.html#40)? What conditions might you have for your experiment?
-  - What might you [measure](https://courses.cs.washington.edu/courses/cse340/20sp/slides/wk07/menus.html#41)?
-  - What [data](https://courses.cs.washington.edu/courses/cse340/20sp/slides/wk07/menus.html#43) would you collect?
-  - How would you [collect the data](https://courses.cs.washington.edu/courses/cse340/20sp/slides/wk07/menus.html#49)?
-  - How would you prove your theories?
-
-
-
-
----
-
-# Case Study: UbiGreen - actual research
-
-Sensed Transportation Behavior
-
-Ever-present Feedback
-
-Two formative studies
-- Online survey
-- In situ experience sampling method (ESM) study
-
-Three week field deployment
-
-.footnote[
-based on a [CHI 2009 paper](https://dl.acm.org/doi/10.1145/1518701.1518861) by J. Froehlich,
-T. Dillahunt, P. Klasnja, J. Mankoff, S. Consolvo, B. Harrison, J. A. Landay
-]
-
-???
-Smartest phone at the time (2006)
-
-
----
-
-![:img Picture of a mobile phone with a car and a tree on the screen, 50%](img/behavior-change/ubigreen-explained.png)
-
----
-
-![:img Picture of a mobile phone with a car and a tree on the screen,60%](img/behavior-change/ubigreen-system.png)
-
----
-![:img Picture of a mobile phone with a car and a tree on the screen,60%](img/behavior-change/ubigreen-sequence.png)
-
----
-.left-column[
-![:img Picture of a mobile phone with a car and a tree on the screen,40%](img/behavior-change/ubigreen.png)
-
-]
-
-.right-column[
-## UbiGreen
-
-2 cities; 14 participants
-
-Obtain preliminary feedback on prototype
-- Engagement
-- Potential for social use
-- Potential for changing behavior
-
-]
-
----
-.left-column[
-![:img Picture of a mobile phone with a car and a tree on the sceren,40%](img/behavior-change/ubigreen.png)
-
-]
-
-.right-column[
-## UbiGreen
-
-
-Engagement
-.quote[It's omnipresent]
-
-Behavior Change:
-.quote[
-“It really encourages you to analyze your own performance”
-]
-
-<!-- Social
-.quote[
-“Some people at work knew about the polar bear and every day they -->
-<!-- asked me about it. ‘Did you get a seal today?’”] -->
-
-]
-???
-Introspection
-
----
-# Personal Informatics
-![:img five part model of personal informatics with stages
-preparation; collection; integration; reflection; action ,
-80%](img/behavior-change/personal-informatics-model.png)
-
-
-???
-Apply it to ubigreen
-
----
-# Aside: Other ways for CS to engage with sustainability
-.left-column50[
-
-## Impact: Direct ways of reducing carbon emissions
-
-- Efficiency (new technologies, new patterns of use, better buildings, etc.)
-- Carbon capture & storage
-- Alternate sources of energy
-- Carbon sinks (e.g. reforestation)
-- Better energy grid
-]
-
-.right-column50[
-
-## Solutions: Indirect ways of reducing carbon emissions
-
-- Population control
-- Economic controls (e.g., taxes)
-- Cross-cultural solutions (culturally-relevant technologies)
-- Education
-- Governmental buy in (Local laws, world treaties, etc)
-- Advancing science
-]
-.footnote[
-[Socolow &
-Pacala](http://ngm.nationalgeographic.com/2007/10/carbon-crisis/img/stabilization_wedges.pdf);
-A. Gore, Earth in the Balance
-]
----
-.right-column[
-## My checklist for mobile ICT impact
-
-*Measure* waste and impact
-   - Example: [what happens to phones when you finish with them?](https://dl.acm.org/citation.cfm?doid=1357054.1357110)
-
-*Monitor, Model & Inform* governments as well as individuals
-  - Example: [Measuring air pollution using a mobile
-    device](https://dl.acm.org/citation.cfm?doid=1978942.1979290)
-]
----
-.left-column[
-
-![:img therml, 100%](img/behavior-change/therml.png)
-
-Simulated impact of multiple algorithms on three month data set
-
-]
-
-.right-column[
-## My checklist for mobile ICT impact
-
-*Encourage environmentality*
-  - example [Automated thermostat  setting](https://dl.acm.org/citation.cfm?doid=2493432.2493441)
-  - automation, efficiency, re-use
-  - people (lived experience)
-  - reduce waste
-]
-.footnote[[some computer science issues in creating a sustainable world](http://www.cs.cmu.edu/~io/publications/ieee08-preprint.pdf)]
-
----
-.left-column[
-![:img cscw, 100%](img/behavior-change/android.png)
-]
-
-.right-column[
-# My checklist for mobile ICT impact
-
-*Relevance across sectors and cultures* (residential: renters, owners, etc), business, ...)
-  - Example: [understanding conflicts between landlords and tenants  around energy use](https://dl.acm.org/citation.cfm?doid=1864349.1864376)
-  - Example: [deploying an android energy monitor to help communities &
-  individuals monitor](https://dl.acm.org/citation.cfm?doid=2531602.2531626)
-
-Goal: *Scale up* to governments, nations or more
-]
-.footnote[
-[Some computer science issues in creating a sustainable world](http://www.cs.cmu.edu/~io/publications/ieee08-preprint.pdf)
-]
----
-
-.title[Why a digression on sustainability in a behavior change lecture?]
-.body[
-![:img five part model of personal informatics with stages
-preparation; collection; integration; reflection; action ,
-80%](img/behavior-change/personal-informatics-model.png)
-
-]
-???
-That's all there is to fix it, we need the will power at a society level
-
-Of course there's other applications of behavior change as well :)
-Health is a big one!
diff --git a/slides/wk07/img/behavior-change/alice.png b/slides/wk07/img/behavior-change/alice.png
deleted file mode 100644
index afca3ba696619e3701d1c19d79050ece03c69c71..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/alice.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/aliceactive.png b/slides/wk07/img/behavior-change/aliceactive.png
deleted file mode 100644
index 31d5c2c28f1aee621909557f9695d2f835484cbe..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/aliceactive.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/amazon.jpeg b/slides/wk07/img/behavior-change/amazon.jpeg
deleted file mode 100644
index 9d713cef9b12ee01424cdb3fb1c07dded5ee2d33..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/amazon.jpeg and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/android.png b/slides/wk07/img/behavior-change/android.png
deleted file mode 100644
index c05abc897a6ba254f4bf90cfa088dfb9de0d2569..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/android.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/chart-highlights.png b/slides/wk07/img/behavior-change/chart-highlights.png
deleted file mode 100644
index aa85ec73c9867b35e533f908213fe010872a4a7e..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/chart-highlights.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/chart.png b/slides/wk07/img/behavior-change/chart.png
deleted file mode 100644
index 48bf2c80d8c82673d08dcd270513bd242f4a94f8..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/chart.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/coercion.html b/slides/wk07/img/behavior-change/coercion.html
deleted file mode 100644
index d04f6b052527ab854bcd2babf3e56c5bc76bc88d..0000000000000000000000000000000000000000
--- a/slides/wk07/img/behavior-change/coercion.html
+++ /dev/null
@@ -1,449 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" prefix="og: http://ogp.me/ns#">
-<head>
-
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<title>Free photo Chef Man Manager Pressure Suppression Superior - Max Pixel</title>
-<meta name="description" content="Chef Man Manager Pressure Suppression Superior photo, resolution 2603×3904 pixel, Image type PNG, free download and free for commercial use.">
-
-
-<meta name="google-site-verification" content="Je-m0JymvkSxpT3DfyirLx1O4vzwjAVMCxgR88P9OYI" />
-
-<link rel="apple-touch-icon" sizes="57x57" href="https://www.maxpixel.net/images/apple-touch-icon-57x57.png">
-<link rel="apple-touch-icon" sizes="60x60" href="https://www.maxpixel.net/images/apple-touch-icon-60x60.png">
-<link rel="apple-touch-icon" sizes="72x72" href="https://www.maxpixel.net/images/apple-touch-icon-72x72.png">
-<link rel="apple-touch-icon" sizes="76x76" href="https://www.maxpixel.net/images/apple-touch-icon-76x76.png">
-<link rel="apple-touch-icon" sizes="114x114" href="https://www.maxpixel.net/images/apple-touch-icon-114x114.png">
-<link rel="apple-touch-icon" sizes="120x120" href="https://www.maxpixel.net/images/apple-touch-icon-120x120.png">
-<link rel="apple-touch-icon" sizes="144x144" href="https://www.maxpixel.net/images/apple-touch-icon-144x144.png">
-<link rel="apple-touch-icon" sizes="152x152" href="https://www.maxpixel.net/images/apple-touch-icon-152x152.png">
-<link rel="apple-touch-icon" sizes="180x180" href="https://www.maxpixel.net/images/apple-touch-icon-180x180.png">
-
-<link rel="icon" type="image/png" href="https://www.maxpixel.net/images/favicon-32x32.png" sizes="32x32">
-<link rel="icon" type="image/png" href="https://www.maxpixel.net/images/android-chrome-192x192.png" sizes="192x192">
-<link rel="icon" type="image/png" href="https://www.maxpixel.net/images/favicon-96x96.png" sizes="96x96">
-<link rel="icon" type="image/png" href="https://www.maxpixel.net/images/favicon-16x16.png" sizes="16x16">
-
-
-<meta name="msapplication-TileColor" content="#4ea64e">
-<meta name="msapplication-TileImage" content="https://www.maxpixel.net/images/mstile-144x144.png">
-<meta name="theme-color" content="#4ea64e">
-
-<link rel="canonical" href="https://www.maxpixel.net/Chef-Man-Manager-Pressure-Suppression-Superior-3026568">
-
-
-
-<meta property="og:image" content="https://www.maxpixel.net/static/photo/640/Chef-Man-Manager-Pressure-Suppression-Superior-3026568.png">
-<meta property="og:type" content="article">
-<meta property="og:title" content="Free photo Chef Man Manager Pressure Suppression Superior - Max Pixel">
-<meta name="twitter:card" content="photo">
-<meta name="twitter:site" content="@fGreatPicture">
-<meta name="twitter:title" content="Free photo Chef Man Manager Pressure Suppression Superior - Max Pixel">
-<meta name="twitter:image" content="https://www.maxpixel.net/static/photo/640/Chef-Man-Manager-Pressure-Suppression-Superior-3026568.png">
-<meta name="twitter:image:width" content="427">
-<meta name="twitter:image:height" content="640">
-
-<link rel="stylesheet" href="https://www.maxpixel.net/css/max-pixel.min.css">
-<link rel="stylesheet" href="https://www.maxpixel.net/css/style.css">
-<!--[if lt IE 9]><script src="https://www.maxpixel.net/js/respond.min.js"></script><![endif]-->
-<style>
-  #header_inner, #footer_inner { max-width: 1620px; }
-</style>
-<script type="text/javascript">
-var base_url = 'https://www.maxpixel.net/';
-</script>
-
-</head>
-<body>
-<div id="wrapper">
-  <div id="header">
-    <div id="header_inner">
-      <div class="pure-menu pure-menu-horizontal pure-menu-open">
-        <ul>
-          <li class="pure-dropdown hide-xs hide-sm hide-md"><a href="https://www.maxpixel.net/Special-Photos" id="special-link">Special Photos</a></li>
-          <li class="pure-dropdown hide-xs hide-sm hide-md"><a><i class="icon icon_menu_dots"></i></a>
-            <ul class="pure-menu-children">
-              <li class="mm_inc"><a href="http://www.freegreatpicture.com/" target="_blank">FreeGreatPicture.com</a></li>
-              <li class="mm_inc"><a href="http://www.freegreatdesign.com/">FreeGreatDesign.com</a></li>
-            </ul>
-          </li>
-          <li class="pure-dropdown hide-lg hide-xl"><a><i class="icon icon_menu_bars"></i></a>
-            <ul id="mobile_menu" class="pure-menu-children">
-              <li><a href="https://www.maxpixel.net/Special-Photos">Special Photos</a></li>
-            </ul>
-          </li>
-        </ul>
-      </div>
-      <a id="logo" href="https://www.maxpixel.net/" class="hover_opacity"><img src="https://www.maxpixel.net/images/logo.png"></a>
-      <form class="media_search header_search" action="https://www.maxpixel.net/search" method="get">
-                <input type="submit" value=" ">
-        <div class="dd_box"><span class="image_type" style="margin-right:5px">Search</span><i class="arrow"></i></div>
-        <div class="pure-form bubble se">
-          <table>
-
-            <tr class="image_option">
-              <th>Orientation</th>
-              <td><label>
-                  <input type="checkbox" name="orientation" value="horizontal">
-                  Horizontal</label>
-                <label>
-                  <input type="checkbox" name="orientation" value="vertical">
-                  Vertical</label></td>
-            </tr>
-            <tr>
-              <th style="vertical-align:middle">Category</th>
-              <td><select name="cat">
-                                  <option value="" selected>All</option>
-                                  <option value="animals">Animals</option>
-                                  <option value="buildings">Architecture/Buildings</option>
-                                  <option value="backgrounds">Backgrounds/Textures</option>
-                                  <option value="fashion">Beauty/Fashion</option>
-                                  <option value="business">Business/Finance</option>
-                                  <option value="computer">Computer/Communication</option>
-                                  <option value="education">Education</option>
-                                  <option value="feelings">Emotions</option>
-                                  <option value="food">Food/Drink</option>
-                                  <option value="health">Health/Medical</option>
-                                  <option value="industry">Industry/Craft</option>
-                                  <option value="music">Music</option>
-                                  <option value="nature">Nature/Landscapes</option>
-                                  <option value="people">People</option>
-                                  <option value="places">Places/Monuments</option>
-                                  <option value="religion">Religion</option>
-                                  <option value="science">Science/Technology</option>
-                                  <option value="sports">Sports</option>
-                                  <option value="transportation">Transportation/Traffic</option>
-                                  <option value="travel">Travel/Vacation</option>
-                                </select></td>
-            </tr>
-            <tr class="image_option">
-              <th style="vertical-align:middle">Larger than</th>
-              <td style="ccolor:#777"><input type="text" name="min_width" value="" placeholder="Width">
-                <span class="times">&times;</span>
-                <input type="text" name="min_height" value="" placeholder="Height">
-                px </td>
-            </tr>
-            <tr class="image_option">
-              <th>Color</th>
-              <td>
-                <label>
-                  <input type="checkbox" name="colors[]" value="transparent"> Transparent
-                </label>
-                <input id="cf_grayscale" class="cf_grayscale" type="checkbox" name="colors[]" value="grayscale" style="float:none">
-                <label style="display:inline" for="cf_grayscale"> Black and white</label>
-                <div class="color_filter bg_colors">
-                                                      <input id="cf_red" type="checkbox" name="colors[]" value="red">
-                  <label for="cf_red" class="red"></label>
-                                    <input id="cf_orange" type="checkbox" name="colors[]" value="orange">
-                  <label for="cf_orange" class="orange"></label>
-                                    <input id="cf_yellow" type="checkbox" name="colors[]" value="yellow">
-                  <label for="cf_yellow" class="yellow"></label>
-                                    <input id="cf_green" type="checkbox" name="colors[]" value="green">
-                  <label for="cf_green" class="green"></label>
-                                    <input id="cf_turquoise" type="checkbox" name="colors[]" value="turquoise">
-                  <label for="cf_turquoise" class="turquoise"></label>
-                                    <input id="cf_blue" type="checkbox" name="colors[]" value="blue">
-                  <label for="cf_blue" class="blue"></label>
-                                    <input id="cf_lilac" type="checkbox" name="colors[]" value="lilac">
-                  <label for="cf_lilac" class="lilac"></label>
-                                    <input id="cf_pink" type="checkbox" name="colors[]" value="pink">
-                  <label for="cf_pink" class="pink"></label>
-                                    <input id="cf_white" type="checkbox" name="colors[]" value="white">
-                  <label for="cf_white" class="white"></label>
-                                    <input id="cf_gray" type="checkbox" name="colors[]" value="gray">
-                  <label for="cf_gray" class="gray"></label>
-                                    <input id="cf_black" type="checkbox" name="colors[]" value="black">
-                  <label for="cf_black" class="black"></label>
-                                    <input id="cf_brown" type="checkbox" name="colors[]" value="brown">
-                  <label for="cf_brown" class="brown"></label>
-                                  </div></td>
-            </tr>
-            <tr>
-              <th style="font-weight:normal"><a href="#" onclick="$('#search_syntax').slideToggle(200);return false;">more...</a></th>
-              <td style="min-width:200px;max-width:250px"><div id="search_syntax" style="display:none;white-space:normal"> You can use AND, OR, NOT and () to refine your search results:
-                  <p style="white-space:nowrap"><i>flower AND (red OR blue) NOT rose</i></p>
-                </div></td>
-            </tr>
-          </table>
-        </div>
-        <div>
-          <input type="text" name="q" value="" placeholder="Typing your keyword..." data-autofocus>
-          <input type="hidden" name="order" value="popular">
-        </div>
-      </form>
-    </div>
-  </div>
-      <div id="content" class="clearfix">
-    <div id="media_show" class="photo">
-      <div class="left">
-        <div class="inside">
-          <div style="text-align:center">
-            <div id="media_container" class="init" itemscope itemtype="schema.org/ImageObject">
-              <meta itemprop="license" content="https://creativecommons.org/licenses/publicdomain/">
-              <img itemprop="contentURL" srcset="https://www.maxpixel.net/static/photo/1x/Chef-Man-Manager-Pressure-Suppression-Superior-3026568.png 1x, https://www.maxpixel.net/static/photo/2x/Chef-Man-Manager-Pressure-Suppression-Superior-3026568.png 2x" src="https://www.maxpixel.net/static/photo/1x/Chef-Man-Manager-Pressure-Suppression-Superior-3026568.png" alt="Pressure, Suppression, Superior, Manager, Chef, Man">
-              <div class="overlay"><em>×</em>
-                <table style="height:100%">
-                  <tr>
-                    <td>
-                      <div id="support_overlay" style="color:#fff;font-size:20px">
-                        <p class="hide_on_small_img" style="margin:0 0 40px;font-size:34px;text-shadow:0 1px 10px rgba(0,0,0,.7)"><b>Support Max Pixel</b></p>
-                        <p style="margin:0 0 8px">Buy us a cup of coffee</p>
-                        <a href="https://www.maxpixel.net/utility/donate/geralt-9301" target="_blank"><span class="pure-button" style="min-width:120px;font-size:18px"><img src="https://www.maxpixel.net/images/paypal.svg" style="vertical-align:middle;height:24px" alt=""> Coffee</span></a>
-                      </div>
-                      <div id="img_click_overlay">
-                        <div id="like_buttons_clone"></div>
-                        <div id="download_menu_clone"></div>
-                      </div>
-                    </td>
-                  </tr>
-                </table>
-              </div>
-              <h3>
-                                                <a href="https://www.maxpixel.net/tag/Pressure">Pressure</a>
-                                <a href="https://www.maxpixel.net/tag/Suppression">Suppression</a>
-                                <a href="https://www.maxpixel.net/tag/Superior">Superior</a>
-                                <a href="https://www.maxpixel.net/tag/Manager">Manager</a>
-                                <a href="https://www.maxpixel.net/tag/Chef">Chef</a>
-                                <a href="https://www.maxpixel.net/tag/Man">Man</a>
-                              </h3>
-            </div>
-            <a style="position:absolute;left:-9999px" rel="license" about="https://www.maxpixel.net/static/photo/1x/Chef-Man-Manager-Pressure-Suppression-Superior-3026568.png" href="https://creativecommons.org/licenses/publicdomain/">Public Domain</a>
-          </div>
-          <h1>Chef Man Manager Pressure Suppression Superior</h1>
-          <div class="mmo mmo-zoom" slot-id="9569266757" slot-name="detail 1"></div>
-
-          <p>You can also exhort them by <a href="https://www.maxpixel.net/utility/donate/geralt-9301" rel="nofollow" target="_blank">inviting our photographers one cup of Coffee</a>. If it is so great, please share with your friends.</p>
-<p>License to use <a href="https://creativecommons.org/publicdomain/zero/1.0/deed.en" target="_blank" rel="nofollow">Creative Commons Zero - CC0</a>. You are free to use for many purposes without worrying issues licenses because this picture is TRUE FREE. We just want you to back a referral link to Max Pixel (optional).</p>
-<p>It was archived in the category "<a href="https://www.maxpixel.net/people"><strong>People</strong></a>", maximum resolution is <em>2603×3904</em> pixels, you can download it to PNG format. We were tagged: Pressure, Suppression, Superior, Manager, Chef, Man.</p>
-
-          <h4>Our team would like to recommend to you a few pictures in the same category:</h4>
-
-                              <p class="related">
-            <a href="https://www.maxpixel.net/Yoke-Forced-Burnout-Pressure-Nanny-Dependency-62283" title="Pressure, Burnout, Dependency, Yoke, Forced, Nanny"><img src="https://www.maxpixel.net/static/photo/640/Yoke-Forced-Burnout-Pressure-Nanny-Dependency-62283.png" alt="Pressure, Burnout, Dependency, Yoke, Forced, Nanny"></a>
-            <span>Pressure, Burnout, Dependency, Yoke, Forced, Nanny</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Pressure-Suppression-Stress-Fear-Professions-65336" title="Pressure, Suppression, Stress, Professions, Fear"><img src="https://www.maxpixel.net/static/photo/640/Pressure-Suppression-Stress-Fear-Professions-65336.png" alt="Pressure, Suppression, Stress, Professions, Fear"></a>
-            <span>Pressure, Suppression, Stress, Professions, Fear</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Violent-Containing-Distress-Shield-Stop-Coercion-144103" title="Containing, Stop, Shield, Violent, Distress, Coercion"><img src="https://www.maxpixel.net/static/photo/640/Violent-Containing-Distress-Shield-Stop-Coercion-144103.png" alt="Containing, Stop, Shield, Violent, Distress, Coercion"></a>
-            <span>Containing, Stop, Shield, Violent, Distress, Coercion</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Violent-Containing-Woman-Stop-Move-Tattoo-144106" title="Woman, Move, Tattoo, Containing, Stop, Violent"><img src="https://www.maxpixel.net/static/photo/640/Violent-Containing-Woman-Stop-Move-Tattoo-144106.png" alt="Woman, Move, Tattoo, Containing, Stop, Violent"></a>
-            <span>Woman, Move, Tattoo, Containing, Stop, Violent</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Abuse-Child-Containing-Person-Torture-Rape-334307" title="Child, Person, Containing, Abuse, Rape, Torture"><img src="https://www.maxpixel.net/static/photo/640/Abuse-Child-Containing-Person-Torture-Rape-334307.png" alt="Child, Person, Containing, Abuse, Rape, Torture"></a>
-            <span>Child, Person, Containing, Abuse, Rape, Torture</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Torture-Person-Containing-Rape-Child-Abuse-334309" title="Child, Person, Containing, Abuse, Rape, Torture"><img src="https://www.maxpixel.net/static/photo/640/Torture-Person-Containing-Rape-Child-Abuse-334309.png" alt="Child, Person, Containing, Abuse, Rape, Torture"></a>
-            <span>Child, Person, Containing, Abuse, Rape, Torture</span>
-          </p>
-                    <div class="mmo mmo-zoom" slot-id="2045999954" slot-name="detail 2"></div>
-          <br>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Bullying-Bully-Aggression-Tease-Abuse-Attack-655659" title="Bully, Attack, Aggression, Bullying, Abuse, Tease"><img src="https://www.maxpixel.net/static/photo/640/Bullying-Bully-Aggression-Tease-Abuse-Attack-655659.png" alt="Bully, Attack, Aggression, Bullying, Abuse, Tease"></a>
-            <span>Bully, Attack, Aggression, Bullying, Abuse, Tease</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Tease-Aggression-Attack-Abuse-Bullying-Bully-655660" title="Bully, Attack, Aggression, Bullying, Abuse, Tease"><img src="https://www.maxpixel.net/static/photo/640/Tease-Aggression-Attack-Abuse-Bullying-Bully-655660.png" alt="Bully, Attack, Aggression, Bullying, Abuse, Tease"></a>
-            <span>Bully, Attack, Aggression, Bullying, Abuse, Tease</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Tool-Screw-Clamp-Person-Terminal-Silhouette-Man-790474" title="Screw Clamp, Terminal, Tool, Silhouette, Man, Person"><img src="https://www.maxpixel.net/static/photo/640/Tool-Screw-Clamp-Person-Terminal-Silhouette-Man-790474.png" alt="Screw Clamp, Terminal, Tool, Silhouette, Man, Person"></a>
-            <span>Screw Clamp, Terminal, Tool, Silhouette, Man, Person</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Rape-Person-Torture-Abuse-Containing-Child-1223678" title="Child, Person, Containing, Abuse, Rape, Torture"><img src="https://www.maxpixel.net/static/photo/640/Rape-Person-Torture-Abuse-Containing-Child-1223678.png" alt="Child, Person, Containing, Abuse, Rape, Torture"></a>
-            <span>Child, Person, Containing, Abuse, Rape, Torture</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Torture-Rape-Abuse-Person-Child-Containing-1223680" title="Child, Person, Containing, Abuse, Rape, Torture"><img src="https://www.maxpixel.net/static/photo/640/Torture-Rape-Abuse-Person-Child-Containing-1223680.png" alt="Child, Person, Containing, Abuse, Rape, Torture"></a>
-            <span>Child, Person, Containing, Abuse, Rape, Torture</span>
-          </p>
-                                        <p class="related">
-            <a href="https://www.maxpixel.net/Suppression-Education-Fear-Terror-Violent-Child-1439468" title="Child, Education, Fear, Terror, Violent, Suppression"><img src="https://www.maxpixel.net/static/photo/640/Suppression-Education-Fear-Terror-Violent-Child-1439468.png" alt="Child, Education, Fear, Terror, Violent, Suppression"></a>
-            <span>Child, Education, Fear, Terror, Violent, Suppression</span>
-          </p>
-                    
-          <p class="tags">
-                        <a href="https://www.maxpixel.net/tag/Pressure">Pressure</a>
-                        <a href="https://www.maxpixel.net/tag/Suppression">Suppression</a>
-                        <a href="https://www.maxpixel.net/tag/Superior">Superior</a>
-                        <a href="https://www.maxpixel.net/tag/Manager">Manager</a>
-                        <a href="https://www.maxpixel.net/tag/Chef">Chef</a>
-                        <a href="https://www.maxpixel.net/tag/Man">Man</a>
-                        <a href="https://www.maxpixel.net/tag/Boss">Boss</a>
-                        <a href="https://www.maxpixel.net/tag/Employer">Employer</a>
-                        <a href="https://www.maxpixel.net/tag/Press">Press</a>
-                        <a href="https://www.maxpixel.net/tag/Keep-It-Small">Keep It Small</a>
-                        <a href="https://www.maxpixel.net/tag/Power">Power</a>
-                        <a href="https://www.maxpixel.net/tag/Authority">Authority</a>
-                        <a href="https://www.maxpixel.net/tag/Employee">Employee</a>
-                        <a href="https://www.maxpixel.net/tag/Subordinate">Subordinate</a>
-                        <a href="https://www.maxpixel.net/tag/The-Exercise-Of-Power">The Exercise Of Power</a>
-                        <a href="https://www.maxpixel.net/tag/Powerful">Powerful</a>
-                        <a href="https://www.maxpixel.net/tag/Violent">Violent</a>
-                        <a href="https://www.maxpixel.net/tag/Silhouette">Silhouette</a>
-                        <a href="https://www.maxpixel.net/tag/Tie">Tie</a>
-                        <a href="https://www.maxpixel.net/">Free Photos</a>
-            <a href="https://www.maxpixel.net/">Free Images</a>
-            <a href="https://www.maxpixel.net/">Max Pixel</a>
-          </p>
-        </div>
-      </div>
-      <div class="right">
-
-                <div style="padding:15px 20px;background:#f7f8fa">
-          <table id="details">
-                        <tr>
-              <th>Category</th>
-              <td><a href="https://www.maxpixel.net/people">People</a></td>
-            </tr>
-                                    <tr>
-              <th style="white-space:nowrap">Image type</th>
-              <td>PNG</td>
-            </tr>
-                                    <tr>
-              <th>Resolution</th>
-              <td>2603×3904</td>
-            </tr>
-                        <tr style="display:none">
-              <th>Downloads</th>
-              <td>0</td>
-            </tr>
-          </table>
-        </div>
-
-        <div class="mmo mmo-zoom" slot-id="8092533553" slot-name="sidebar 1" style="margin-top: 20px;"></div>
-        
-        <div class="download_menu" data-type="photos">
-          <span class="pure-button button-green" style="display:block;max-width:310px;margin:10px 0 0"><i class="icon icon_download"></i> Free Download</span>
-          <div class="bubble">
-            <form action="https://www.maxpixel.net/Chef-Man-Manager-Pressure-Suppression-Superior-3026568" method="post" target="_blank">
-            <table>
-                            <tr>
-                <td><input type="radio" name="download" value="https://cdn.pixabay.com/photo/2017/12/18/17/03/pressure-3026568_640.png">
-                   427×640</td>
-                <td>PNG</td>
-                <td>45 kB</td>
-              </tr>
-                            <tr>
-                <td><input type="radio" name="download" value="pressure-3026568_1280.png">
-                   853×1280</td>
-                <td>PNG</td>
-                <td>148 kB</td>
-              </tr>
-                            <tr>
-                <td><input type="radio" name="download" value="pressure-3026568_1920.png">
-                   1280×1920</td>
-                <td>PNG</td>
-                <td>315 kB</td>
-              </tr>
-                            <tr class="no_default">
-                <td><input type="radio" name="download" value="pressure-3026568.png">
-                   2603×3904</td>
-                <td>PNG</td>
-                <td>382 kB</td>
-              </tr>
-                          </table>
-            <input type="submit" name="submit_view" value="View" class="view_btn pure-button" data-w="300" style="display:inline-block;width:49%;float:right" /> <input type="submit" name="submit_download" value="Download" class="dl_btn pure-button button-green" data-w="300" style="display:inline-block;width:49%;" />
-            </form>
-          </div>
-                  </div>
-
-        <div class="like_buttons">
-          <span data-href="https://www.maxpixel.net/utility/share?photo_id=3026568" class="pure-button button-sm dd_box ajax" data-target=".share_links" title="Share">Share this photo <i class="icon icon_share"></i></span>
-          <div class="share_links" style="width:260px;padding:15px"></div>
-          <!-- <div class="fb-follow" data-href="https://www.facebook.com/freegreatpicture/" data-height="28" data-layout="button" data-size="large" data-show-faces="false"></div> -->
-          <div class="fb-like" data-href="https://www.facebook.com/freegreatpicture/" data-layout="button" data-action="like" data-size="large" data-show-faces="false" data-share="false"></div>
-        </div>
-
-        <div style="margin:20px 0 10px;padding:15px 20px;background:#f7f8fa;line-height:1.5"> <i class="icon icon_cc0"></i> CC0 Public Domain
-          <div style="margin-top:4px;font-size:14px">
-            Free for commercial use <br>
-            Link referral required
-          </div>
-        </div>
-        
-        
-        
-
-                <h4 style="margin-top:15px; margin-bottom:0px; font-size:13px;padding:5px 15px;background:#f7f8fa;border-bottom: 1px solid #eeeff2">Random special photos</h4>
-        <div class="flex_grid related_photos_sidebar" style="margin:0px -6px 15px -5px">
-                              <div class="item" data-w="640" data-h="426"><a href="https://www.maxpixel.net/Choose-Autumn-Large-Cucurbita-Maxima-Fruit-Pumpkin-3678820"> <img title="Pumpkin, Fruit, Autumn, Cucurbita Maxima, Choose, Large" src="https://www.maxpixel.net/images/blank.gif" alt="Choose Autumn Large Cucurbita Maxima Fruit Pumpkin" data-src="https://thumb.maxpixel.net/1314/Choose-Autumn-Large-Cucurbita-Maxima-Fruit-Pumpkin-3678820.jpg"> <em>Pumpkin, Fruit, Autumn, Cucurbita Maxima, Choose, Large</em> </a></div>
-                              <div class="item" data-w="640" data-h="426"><a href="https://www.maxpixel.net/Landscape-Sunset-Desert-Horizon-Sun-Dune-Travel-2774945"> <img title="Desert, Sun, Landscape, Sunset, Dune, Travel, Horizon" src="https://www.maxpixel.net/images/blank.gif" alt="Landscape Sunset Desert Horizon Sun Dune Travel" data-src="https://thumb.maxpixel.net/997/Landscape-Sunset-Desert-Horizon-Sun-Dune-Travel-2774945.jpg"> <em>Desert, Sun, Landscape, Sunset, Dune, Travel, Horizon</em> </a></div>
-                              <div class="item" data-w="640" data-h="427"><a href="https://www.maxpixel.net/Sitting-White-Mammal-Looking-Cat-Animal-Feline-3591348"> <img title="Cat, White, Animal, Mammal, Feline, Sitting, Looking" src="https://www.maxpixel.net/images/blank.gif" alt="Sitting White Mammal Looking Cat Animal Feline" data-src="https://thumb.maxpixel.net/1268/Sitting-White-Mammal-Looking-Cat-Animal-Feline-3591348.jpg"> <em>Cat, White, Animal, Mammal, Feline, Sitting, Looking</em> </a></div>
-                              <div class="item" data-w="426" data-h="640"><a href="https://www.maxpixel.net/Mackerel-Pet-Animal-Domestic-Cat-Cat-Portrait-3523992"> <img title="Cat, Domestic Cat, Mackerel, Pet, Animal, Portrait" src="https://www.maxpixel.net/images/blank.gif" alt="Mackerel Pet Animal Domestic Cat Cat Portrait" data-src="https://thumb.maxpixel.net/1256/Mackerel-Pet-Animal-Domestic-Cat-Cat-Portrait-3523992.jpg"> <em>Cat, Domestic Cat, Mackerel, Pet, Animal, Portrait</em> </a></div>
-                              <div class="item" data-w="640" data-h="254"><a href="https://www.maxpixel.net/Goose-Plumage-Waterfowl-Waterbird-Bird-Animal-3526503"> <img title="Goose, Waterbird, Waterfowl, Bird, Animal, Plumage" src="https://www.maxpixel.net/images/blank.gif" alt="Goose Plumage Waterfowl Waterbird Bird Animal" data-src="https://thumb.maxpixel.net/1256/Goose-Plumage-Waterfowl-Waterbird-Bird-Animal-3526503.jpg"> <em>Goose, Waterbird, Waterfowl, Bird, Animal, Plumage</em> </a></div>
-                              <div class="item" data-w="640" data-h="427"><a href="https://www.maxpixel.net/Herb-Spice-Green-Plant-Basil-Kitchen-Herb-Cook-3532424"> <img title="Basil, Herb, Kitchen Herb, Spice, Cook, Green, Plant" src="https://www.maxpixel.net/images/blank.gif" alt="Herb Spice Green Plant Basil Kitchen Herb Cook" data-src="https://thumb.maxpixel.net/1258/Herb-Spice-Green-Plant-Basil-Kitchen-Herb-Cook-3532424.jpg"> <em>Basil, Herb, Kitchen Herb, Spice, Cook, Green, Plant</em> </a></div>
-                              <div class="item" data-w="640" data-h="426"><a href="https://www.maxpixel.net/About-Time-To-Stumble-Jump-Time-Man-Alarm-Clock-2743994"> <img title="Time, Man, Jump, Alarm Clock, About Time To Stumble" src="https://www.maxpixel.net/images/blank.gif" alt="About Time To Stumble Jump Time Man Alarm Clock" data-src="https://thumb.maxpixel.net/986/About-Time-To-Stumble-Jump-Time-Man-Alarm-Clock-2743994.jpg"> <em>Time, Man, Jump, Alarm Clock, About Time To Stumble</em> </a></div>
-                              <div class="item" data-w="640" data-h="427"><a href="https://www.maxpixel.net/Pumpkin-Vegetables-Orange-Autumn-Food-Hokkaido-3636239"> <img title="Pumpkin, Hokkaido, Orange, Autumn, Vegetables, Food" src="https://www.maxpixel.net/images/blank.gif" alt="Pumpkin Vegetables Orange Autumn Food Hokkaido" data-src="https://thumb.maxpixel.net/1268/Pumpkin-Vegetables-Orange-Autumn-Food-Hokkaido-3636239.jpg"> <em>Pumpkin, Hokkaido, Orange, Autumn, Vegetables, Food</em> </a></div>
-                              <div class="item" data-w="640" data-h="427"><a href="https://www.maxpixel.net/Nature-Flower-Outdoors-Summer-Anemone-Plant-3616880"> <img title="Anemone, Flower, Plant, Nature, Summer, Outdoors" src="https://www.maxpixel.net/images/blank.gif" alt="Nature Flower Outdoors Summer Anemone Plant" data-src="https://thumb.maxpixel.net/1268/Nature-Flower-Outdoors-Summer-Anemone-Plant-3616880.jpg"> <em>Anemone, Flower, Plant, Nature, Summer, Outdoors</em> </a></div>
-                              <div class="item" data-w="640" data-h="426"><a href="https://www.maxpixel.net/Dahlia-Garden-Bud-Dahlia-Dahlias-Bud-Flower-3524115"> <img title="Dahlia, Dahlias Bud, Flower, Bud, Dahlia Garden" src="https://www.maxpixel.net/images/blank.gif" alt="Dahlia Garden Bud Dahlia Dahlias Bud Flower" data-src="https://thumb.maxpixel.net/1255/Dahlia-Garden-Bud-Dahlia-Dahlias-Bud-Flower-3524115.jpg"> <em>Dahlia, Dahlias Bud, Flower, Bud, Dahlia Garden</em> </a></div>
-                              <div class="item" data-w="640" data-h="213"><a href="https://www.maxpixel.net/Air-Dramatic-Sky-Atmosphere-Clouds-Weather-3526558"> <img title="Clouds, Sky, Dramatic, Air, Atmosphere, Weather" src="https://www.maxpixel.net/images/blank.gif" alt="Air Dramatic Sky Atmosphere Clouds Weather" data-src="https://thumb.maxpixel.net/1256/Air-Dramatic-Sky-Atmosphere-Clouds-Weather-3526558.jpg"> <em>Clouds, Sky, Dramatic, Air, Atmosphere, Weather</em> </a></div>
-                              <div class="item" data-w="640" data-h="426"><a href="https://www.maxpixel.net/Pallets-Structure-Texture-Pattern-Background-Wall-3614890"> <img title="Texture, Pattern, Background, Pallets, Wall, Structure" src="https://www.maxpixel.net/images/blank.gif" alt="Pallets Structure Texture Pattern Background Wall" data-src="https://thumb.maxpixel.net/1291/Pallets-Structure-Texture-Pattern-Background-Wall-3614890.jpg"> <em>Texture, Pattern, Background, Pallets, Wall, Structure</em> </a></div>
-                  </div>
-        
-      </div>
-      
-    </div>
-  </div>  <div id="push"></div>
-</div>
-<div id="footer">
-  <div id="footer_inner">
-    <div class="hover_links hide-xs hide-sm" style="float:right;margin:2px 0 0 30px"> <a href="https://www.facebook.com/freegreatpicture/" target="_blank"><i class="icon icon_facebook"></i></a> <a href="https://twitter.com/fGreatPicture" target="_blank"><i class="icon icon_twitter"></i></a> <a href="#" target="_blank" title="Process time: 0.0514 Seconds - Memory: 2.47MB - Sql: 6"><i class="icon icon_google_plus"></i></a> </div>
-    <span style="margin-right:30px">© 2016 MaxPixel.net</span>
-    <a style="margin-right:30px" href="https://www.maxpixel.net/">Max Pixel</a>
-    <a style="margin-right:30px" href="http://www.freegreatpicture.com/about" target="_blank">About</a>
-    <a style="margin-right:30px" href="http://www.freegreatpicture.com/contact" target="_blank">Contact</a>
-    <a style="margin-right:30px" href="http://www.freegreatpicture.com/join" target="_blank">Join</a>
-    <a style="margin-right:30px" href="http://www.freegreatpicture.com/term-of-service" target="_blank">TOS</a>
-    <a href="https://www.maxpixel.net/rid">RID</a>
-  </div>
-</div>
-<div id="fb-root"></div>
-<a id="toTop">â–²</a> 
-<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
-<script>
-    window.jQuery || document.write('<script src="https://www.maxpixel.net/js/jquery.min.js"><\/script>');
-    var LANG = 'en', I18N_DELETE = 'Really delete?';
-    var show_captcha=0;auth_user=1;
-    var show_ga = '1' == '1';
-</script> 
-<script src="https://www.maxpixel.net/js/max-pixel.min.js"></script>
-<script src="https://www.maxpixel.net/js/utility.js"></script>
-<script>
-
-        $('.header_search').find('input[type="text"], input:checked, select, input[type="hidden"]').each(function(){
-            var i = this;
-            $('.add_search_params').each(function(){
-                if (i.value && (!$(this).hasClass('filter') || i.name != 'colors' && i.name != 'min_width' && i.name != 'min_height'))
-                    $(this).append($('<input type="hidden" name="'+i.name+'">').val(i.value));
-            });
-        });
-    
-        if ($(window).innerWidth() > 767) document.write('<script src="//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8&appId=1818229235120698" async defer><\/script>');
-        else $('#fb_like_widget').hide();
-
-  
-  $('#special-link').unbind( "click" );
-</script>
-
-<!-- Global site tag (gtag.js) - Google Analytics -->
-<script async src="https://www.googletagmanager.com/gtag/js?id=UA-17673201-26"></script>
-<script>
-  window.dataLayer = window.dataLayer || [];
-  function gtag(){dataLayer.push(arguments);}
-  gtag('js', new Date());
-
-  gtag('config', 'UA-17673201-26');
-</script>
-
-</body>
-</html>
-<!-- 11:07:04 30/05/2019 -->
\ No newline at end of file
diff --git a/slides/wk07/img/behavior-change/coercion.png b/slides/wk07/img/behavior-change/coercion.png
deleted file mode 100644
index 9329a4a28cae887cf7acdb773a8be917a4268eed..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/coercion.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/data-collection.png b/slides/wk07/img/behavior-change/data-collection.png
deleted file mode 100644
index 053253dc161cfb1617aebba4b576d627a220541d..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/data-collection.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/dopamine.jpg b/slides/wk07/img/behavior-change/dopamine.jpg
deleted file mode 100644
index 9f0170b483fbf5145719c0aad3c6ee674ab95bf3..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/dopamine.jpg and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/dopamine2.png b/slides/wk07/img/behavior-change/dopamine2.png
deleted file mode 100644
index 6b2461b22eb13dd1721bbf22b506b009a76a4e24..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/dopamine2.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/energycost.png b/slides/wk07/img/behavior-change/energycost.png
deleted file mode 100644
index ac66819963e3c9d66b0f4a2d63760e465edce127..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/energycost.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/focus.png b/slides/wk07/img/behavior-change/focus.png
deleted file mode 100644
index 7241d58e49cb8101cfcd19c8172e9a3b61341f1f..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/focus.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/full-model.png b/slides/wk07/img/behavior-change/full-model.png
deleted file mode 100644
index 8379c6e681e3829bc3dc6ae6978cad2d42fef176..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/full-model.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/house-background.png b/slides/wk07/img/behavior-change/house-background.png
deleted file mode 100644
index f34aa9bad1b8985effc10bd20a57faa4ebd38284..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/house-background.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/mostlydata.png b/slides/wk07/img/behavior-change/mostlydata.png
deleted file mode 100644
index c25fbbf622a32fad4d8f7d58d8e5c87e0d77f22d..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/mostlydata.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/personal-informatics-model.png b/slides/wk07/img/behavior-change/personal-informatics-model.png
deleted file mode 100644
index b7ec7714d914b333ceda3cb2146c805e38cd7107..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/personal-informatics-model.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/personalinformatics.png b/slides/wk07/img/behavior-change/personalinformatics.png
deleted file mode 100644
index f4d2f71c3686a00298b88616e41b5b8c8a4ab215..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/personalinformatics.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/phone.png b/slides/wk07/img/behavior-change/phone.png
deleted file mode 100644
index 3d5fe57f8e4f487d780319dcb35e1041143ed733..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/phone.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/phoneplanet.png b/slides/wk07/img/behavior-change/phoneplanet.png
deleted file mode 100644
index a5ee683695016659a255fefce6d78342b0cf781a..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/phoneplanet.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/scalability.png b/slides/wk07/img/behavior-change/scalability.png
deleted file mode 100644
index 71099b41f5e5d7e06c14098df1d61746b6a05fca..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/scalability.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/sign.png b/slides/wk07/img/behavior-change/sign.png
deleted file mode 100644
index 297f165ca97205d17d2a3689cd5dc5826b10d5af..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/sign.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/sob.png b/slides/wk07/img/behavior-change/sob.png
deleted file mode 100644
index 3a26631b30f839f30b4ba441c94d4c9f5c8a036f..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/sob.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/speedometer.png b/slides/wk07/img/behavior-change/speedometer.png
deleted file mode 100644
index 1372078f6fe156475574d114393aaee8dcc9259e..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/speedometer.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/stepcounter.png b/slides/wk07/img/behavior-change/stepcounter.png
deleted file mode 100644
index 8ccae1efa533d286827cd8b1685e25d868824a31..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/stepcounter.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/therml.png b/slides/wk07/img/behavior-change/therml.png
deleted file mode 100644
index 5a9f21011cb1aa7094d2980336e87a517cccdcb5..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/therml.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/ttc.png b/slides/wk07/img/behavior-change/ttc.png
deleted file mode 100644
index 85dbaecb8294e0d57642e8d402a40d88dfa92459..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/ttc.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/ubigreen-explained.png b/slides/wk07/img/behavior-change/ubigreen-explained.png
deleted file mode 100644
index 229ce0bfdc89411a311439c0697cbeacec400678..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/ubigreen-explained.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/ubigreen-sequence.png b/slides/wk07/img/behavior-change/ubigreen-sequence.png
deleted file mode 100644
index 87ba1b88ba963277fc93fbbf467885dee5ffcf2e..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/ubigreen-sequence.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/ubigreen-system.png b/slides/wk07/img/behavior-change/ubigreen-system.png
deleted file mode 100644
index 0883880cf4dc9b90d92e49d815c66ce89bf5febd..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/ubigreen-system.png and /dev/null differ
diff --git a/slides/wk07/img/behavior-change/ubigreen.png b/slides/wk07/img/behavior-change/ubigreen.png
deleted file mode 100644
index 5aac2bf2d689162115ee8c8d0f3565917733c826..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/behavior-change/ubigreen.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/buttons.png b/slides/wk07/img/interaction/buttons.png
deleted file mode 100644
index 26675f540854d26ee061fb0f9f81a46d9766ca14..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/buttons.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/chickens.png b/slides/wk07/img/interaction/chickens.png
deleted file mode 100644
index abe1ac534082651d0413623e7036a5bedd2ca672..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/chickens.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/cnn-small-x.png b/slides/wk07/img/interaction/cnn-small-x.png
deleted file mode 100644
index 7d5ee37abfc88bf5ed09597d3b5105c4b11a3994..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/cnn-small-x.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/desktop-new.png b/slides/wk07/img/interaction/desktop-new.png
deleted file mode 100644
index be7bbd22e62f47e2bca4ed24adaee67f1565ccb8..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/desktop-new.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/desktop.png b/slides/wk07/img/interaction/desktop.png
deleted file mode 100644
index dfc1e2e0dc980cf5aa5068ccc2d444bfdea374a6..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/desktop.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/feedforward.png b/slides/wk07/img/interaction/feedforward.png
deleted file mode 100644
index 20517d5296f0aacc0cd60dfe701fed9cc139ddee..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/feedforward.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/flat-doorknob.png b/slides/wk07/img/interaction/flat-doorknob.png
deleted file mode 100644
index b7fa0fcc0b4a0daed1e12d9f5fdb49318a4aed07..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/flat-doorknob.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/freezer-feedback.png b/slides/wk07/img/interaction/freezer-feedback.png
deleted file mode 100644
index d29834b5265e906ceb85481ad79082036120a25b..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/freezer-feedback.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/fridge-freezer-controls.png b/slides/wk07/img/interaction/fridge-freezer-controls.png
deleted file mode 100644
index 29d878c73d8c7f30e5d4127561505548b96082e5..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/fridge-freezer-controls.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/fridge-freezer-mental-model.png b/slides/wk07/img/interaction/fridge-freezer-mental-model.png
deleted file mode 100644
index 7eca6c06d956b7980b5281e76c1bbb41a27226a5..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/fridge-freezer-mental-model.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/fridge-freezer-valve.png b/slides/wk07/img/interaction/fridge-freezer-valve.png
deleted file mode 100644
index d367548be66857dc1edb0a88f5a0eb5e7307f16b..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/fridge-freezer-valve.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/gmail-snapping.gif b/slides/wk07/img/interaction/gmail-snapping.gif
deleted file mode 100644
index 66a17084941a6d03ad02d2dfa7b62446ec755b1d..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/gmail-snapping.gif and /dev/null differ
diff --git a/slides/wk07/img/interaction/gym-doors.png b/slides/wk07/img/interaction/gym-doors.png
deleted file mode 100644
index 99ffb06c3f14d3adee83426b9a59dc4b1291d8c6..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/gym-doors.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/knurling.png b/slides/wk07/img/interaction/knurling.png
deleted file mode 100644
index fa34dcaa22ec90dab6cab130a5170f94c616178c..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/knurling.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/mental1.png b/slides/wk07/img/interaction/mental1.png
deleted file mode 100644
index a3c23c4e46f70202c6a8117ed0607dc2f8e1f373..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/mental1.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/mental2.png b/slides/wk07/img/interaction/mental2.png
deleted file mode 100644
index 58c9cc1a547ec69cd2652c456c8cb040b5e6a0bd..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/mental2.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/mental3.png b/slides/wk07/img/interaction/mental3.png
deleted file mode 100644
index 07a7d35cca9dbe1309fe9c5809ce3ac2e2e684d6..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/mental3.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/mental4.png b/slides/wk07/img/interaction/mental4.png
deleted file mode 100644
index 1e40a86ffb987d0e45c5420bc8d87f34c46e62e0..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/mental4.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/mental5.png b/slides/wk07/img/interaction/mental5.png
deleted file mode 100644
index e8b861ac7042b4cc0b3bd2ab312ef120c1225564..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/mental5.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/mental6.png b/slides/wk07/img/interaction/mental6.png
deleted file mode 100644
index 5baea3ac170bd237ee0c35101160347918f32c04..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/mental6.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/mental7.png b/slides/wk07/img/interaction/mental7.png
deleted file mode 100644
index 9bb9a6c4bd2bf569e84b6de7d2d7e73f0e9ecc09..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/mental7.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/messenger-bubble.gif b/slides/wk07/img/interaction/messenger-bubble.gif
deleted file mode 100755
index 77defd497891e79a775a6ca3593cf33e02d2c890..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/messenger-bubble.gif and /dev/null differ
diff --git a/slides/wk07/img/interaction/norman-d-human-action-cycle.png b/slides/wk07/img/interaction/norman-d-human-action-cycle.png
deleted file mode 100644
index f5748a294e9e8786e3337bc8404b71364d1db0f9..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/norman-d-human-action-cycle.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/round-doorknob.png b/slides/wk07/img/interaction/round-doorknob.png
deleted file mode 100644
index 8413e79008f7f0537894d637cd1810b0b460239e..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/round-doorknob.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/search.png b/slides/wk07/img/interaction/search.png
deleted file mode 100644
index d5a1729071b75a1d9d7a57a6c7941c8ce6d405bb..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/search.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/sensor-explanation.png b/slides/wk07/img/interaction/sensor-explanation.png
deleted file mode 100644
index 54aabcd68aae660cd58fb7f222bccb24dd1ed0e5..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/sensor-explanation.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/sensor.jpg b/slides/wk07/img/interaction/sensor.jpg
deleted file mode 100644
index 34ae8df13304ec11c0b7739993c0d8f13d27ca90..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/sensor.jpg and /dev/null differ
diff --git a/slides/wk07/img/interaction/virtual-buttons.png b/slides/wk07/img/interaction/virtual-buttons.png
deleted file mode 100644
index 6e7cbd65b1a64b7e9ceec6e3f49a50868aedb17c..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/virtual-buttons.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/virtual-knurling.png b/slides/wk07/img/interaction/virtual-knurling.png
deleted file mode 100644
index c5e89ee2d5efdf43386d3fcdc9ba547592ce3ceb..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/virtual-knurling.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/web-button.png b/slides/wk07/img/interaction/web-button.png
deleted file mode 100644
index 1fa271f4371784721ce8b933ea09c800842ae15c..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/web-button.png and /dev/null differ
diff --git a/slides/wk07/img/interaction/webex.png b/slides/wk07/img/interaction/webex.png
deleted file mode 100644
index 2ab83c87aa26dfdafab3eff2e7e440e1eb574a72..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/interaction/webex.png and /dev/null differ
diff --git a/slides/wk07/img/menus/Edgewrite.png b/slides/wk07/img/menus/Edgewrite.png
deleted file mode 100644
index d667210ad2a378b2158d5ed08c97edb01efec834..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/Edgewrite.png and /dev/null differ
diff --git a/slides/wk07/img/menus/Grafitti.png b/slides/wk07/img/menus/Grafitti.png
deleted file mode 100644
index af6a460e7db587130d59a195b06160ceadbbef9d..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/Grafitti.png and /dev/null differ
diff --git a/slides/wk07/img/menus/alert.jpg b/slides/wk07/img/menus/alert.jpg
deleted file mode 100644
index 4fe4de37301fdc45319402cbaad9136cc8ea14ad..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/alert.jpg and /dev/null differ
diff --git a/slides/wk07/img/menus/alert1.jpg b/slides/wk07/img/menus/alert1.jpg
deleted file mode 100644
index f9a48ff3e25c781d6b98b566f1d325cf0084a514..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/alert1.jpg and /dev/null differ
diff --git a/slides/wk07/img/menus/facebook.png b/slides/wk07/img/menus/facebook.png
deleted file mode 100644
index 92d3ad836dedbe70081798da7ce6287a9097cbc6..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/facebook.png and /dev/null differ
diff --git a/slides/wk07/img/menus/facebook2.png b/slides/wk07/img/menus/facebook2.png
deleted file mode 100644
index f822bd03ce290e60d1f26fac0d3929c049b00958..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/facebook2.png and /dev/null differ
diff --git a/slides/wk07/img/menus/histogram.png b/slides/wk07/img/menus/histogram.png
deleted file mode 100644
index ddd96c9ea5ad7e74414f5bfd39e07df94914bbfd..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/histogram.png and /dev/null differ
diff --git a/slides/wk07/img/menus/menu.png b/slides/wk07/img/menus/menu.png
deleted file mode 100644
index 9116a28ebb90342f5fe20ad2d4f65de129cdd799..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/menu.png and /dev/null differ
diff --git a/slides/wk07/img/menus/menus-data.png b/slides/wk07/img/menus/menus-data.png
deleted file mode 100644
index f302bbe8693d7b7c6b7bee1b86bac38cceef22ac..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/menus-data.png and /dev/null differ
diff --git a/slides/wk07/img/menus/pie.jpg b/slides/wk07/img/menus/pie.jpg
deleted file mode 100644
index c8cf9639f66f1fda66da123cc15ed99b51689da5..0000000000000000000000000000000000000000
Binary files a/slides/wk07/img/menus/pie.jpg and /dev/null differ
diff --git a/slides/wk07/interaction.html b/slides/wk07/interaction.html
deleted file mode 100644
index 62124801a0d5feb3487345e5238559f80085d8a3..0000000000000000000000000000000000000000
--- a/slides/wk07/interaction.html
+++ /dev/null
@@ -1,535 +0,0 @@
----
-layout: presentation
-title: Interactive Application Design
-description: Description of principals for creating an understandable application
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Interactive Application Design
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-# Fitts' Law Revisited
-
-Example of how Marking Menus are used in practice (Maya)
-![:youtube Example of marking menu in Maya, r8PQy8cX9dc]
-
----
-# Fitts' Law Revisited
-
-.left-column-half[
-![:img CNN website marketing using a small x to close the pop up marketing that obscures the screen,85%](img/interaction/cnn-small-x.png)
-]
-
-.right-column-half[
-- Fitts' Law can be employed to help users be more productive by allowing them to interact with items easier.
-- How is the CNN marketing group using Fitts' law in this situation?
-]
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Design Principles and Metaphors
-
----
-layout: false
-
-# Hall of Shame/Hall of Fame
-
-.left-column[
-Is this physical or virtual? Ubicomp!
-
-![:img faucet with IR sensor, 110%](img/interaction/sensor.jpg )
-]
-
-.right-column[
-![:img Sign explaining how to use the sensor, 50%](img/interaction/sensor-explanation.png)
-]
-
-???
-
-- Realworld example, fails to work effectively.
-- Sign found right next to the fountain. Also sign on the fountain.
-- Good or bad example of interface design? Do you normally have to read instructions to use a water fountain?
-- What about an IR faucet?
-- Often, person using the interface feels stupid or that they shouldn't use it
-- Who can use your interface and who can't. As designers you have the power to make an interfaace usable.
-
-
----
-[//]: # (Outline Slide)
-# Today's goals
-
-- Metaphor
-- Creating good mental models
-- Design Tips for Interaction Design
- - Feedback
- - Feedforward
-
----
-# Metaphor
-
-.right-column[
-Lakoff & Johnson, Metaphors We Live By
-
-.quote[“...the way we think, what we experience,and what we do every day
-is very much a matter of metaphor.” ]
-]
----
-# Metaphor
-
-.left-column[
-![:img Picture of 4 chickens in a chicken coop,100%](img/interaction/chickens.png)
-]
-
-.right-column[
-
-Have you ever noticed how many chicken metaphors are in the English language?
-
-.font-small[
-- “A hen is only an egg's way of making another egg.” - Samuel Butler
-- “The key to everything is patience. You get the chicken by hatching the egg, not by smashing it.” - unknown
-- "Regard it as just as desirable to build a chicken house as to build a cathedral." - Frank Lloyd Wright
-- "A chicken in every pot" - 1928 Republican Party campaign slogan
-- "Don't have a pot to put it in" - 1928 Democratic Party response slogan
-- Nest egg - to save a little money each week
-- Scratching out a living - to earn enough to get by on
-- Don't count your chickens before they hatch - don't plan on an outcome before it actually happens.
-- Don't put all your eggs in one basket - don't plan on an outcome before it actually happens.
-- Feather your nest - saving for the future
-- Mother hen - very protective
-- Flew the coop - gone
-- Walking on eggshells- treading softly where certain people are concerned; trying not to upset someone
-- Like a chicken with it's head cut off - running around with no direction
-- You're chicken! - being afraid
-- Hard-boiled - tough attitude
-- Ruffle your feathers - something annoys you
-- No spring chicken - you're old. Plain and simple.
-- Hatch an idea - put a plan into motion
-- Pecking order - finding your place
-- Brood over it - to worry; to hover over a problem
-- Chicken scratch - poor handwriting
-- Stick your neck out - go to bat for someone else
-- Stuck in your craw - upset about something and won't verbalize what's going on inside you; carrying a grudge.
-- Bad egg - less than honest person; poor moral standards
-- In a stew - got yourself in trouble
-- Raise your hackle feathers - visibly annoyed
-- Nesting behavior- preparing a home (especially pregnant women just before a baby is due)
-- Empty nest syndrome - depression and loneliness when children leave home
-- Made from scratch - made from raw materials by hand
-]]
-
----
-# Desktop Metaphor (Magic Cap)
-.body[
-![:img Picture of a very literal desktop metaphor,60%](img/interaction/desktop.png)
-
-Critique!
-
-]
-???
-- Is this a good interface or not?
-- What are some of the challenges of this?
-  - Unwieldy,
-  - Not great use of screen real estate
-  - Other?
----
-# Are these better?
-
-.left-column-half[
-![:img Packard Bell Navigator Workspace interface,80%](http://pbclub.pwcsite.com/wiki/images/b/bd/Navigator_3.5.png)
-]
-
-.right-column-half[
-
-![:img Packard Bell Navigator Kidspace interface, 90%](https://external-preview.redd.it/e_qbSsuqodAhlG0h6C3tS5bRv4WbMrlDAQfwwyQdA8U.jpg?width=960&crop=smart&auto=webp&s=3f1618ae0182d466c146b90c7ff97ff434d4b58a)
-
-]
-
-.footnote[[Packard Bell Planet Wiki](http://pbclub.pwcsite.com/wiki/index.php/Packard_Bell_Navigator),
-[reddit](https://www.reddit.com/r/nostalgia/comments/6w951x/packard_bell_navigators_kidspace/)]
-
-
----
-# Is this a better option?
-
-.right-column-half[
-
-Can use metaphors to leverage existing conceptual models
-
-- Not really an attempt to simulate a real desktop
-- Leverages existing knowledge about files, folders, trash
-- A way to explain why some windows seem blocked
-]
-
-.left-column-half[
-![:img Jens Mac desktop, 90%](img/interaction/desktop-new.png)
-]
-
----
-# How else can we minimize errors?
-???
-Key concept: mental models
----
-.left-column[
-# Every system has at least 3 different models
-]
-
-.right-column[
-<div class="mermaid">
-graph TD
-  S[System Image: <br>Your Implementation&nbsp;] --> |System Feedback&nbsp;| U[User Model: How the user thinks&nbsp; <br>the system works]
-  D[Design Model: How you <br>intend the system to work&nbsp;]-->S
-  U -->|User Feedback&nbsp;| S
-</div>
-
-]
-
----
-# Relating the Human and the Interaction
-
-
-
-.left-column-half[
-
-![img: Gym doors with few affordances of where you can open them and whether there is an accessible way to use the doors,10%](img/interaction/gym-doors.png)
-
-]
-
---
-
-.right-column-half[
-![img: Don Norman's Human Action Cycle,10%](img/interaction/norman-d-human-action-cycle.png)
-]
-
-.footnote[[Don Norman, When Three World Collide: A model of the Tangible Interaction Process, 2009](https://www.researchgate.net/publication/221332102_When_three_worlds_collide_A_model_of_the_tangible_interaction_process)]
-
-???
-Note to instructors: Need to change image  to mermaid
-
-
----
-# Relating the Human and the Interaction
-
-
-.left-column-half[
-<br>
-<br>
-
-**Gulf of Execution** is the user's belief in functions the system _doesn't have_
-  - This is the users 'error' region
-
-**Gulf of Evaluation** is where the user _doesn't realize the system HAS a functionality_.
-]
-
-
-.right-column-half[
-![img: Don Norman's Human Action Cycle,10%](img/interaction/norman-d-human-action-cycle.png)
-]
-
----
-
-# Model of Mental Models
-
-![:img A box showing the design (white),50%](img/interaction/mental1.png)
-
----
-# Model of Mental Models
-
-![:img A box showing the design (white) and actual function (blue missing a little bit of the white),50%](img/interaction/mental2.png)
-
----
-# Model of Mental Models
-
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System Functionality",50%](img/interaction/mental3.png)
-
----
-# Model of Mental Models
-
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System Functionality",50%](img/interaction/mental4.png)
-
-
----
-# Model of Mental Models
-
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System
-Functionality" a dark blue cloud labeled "Occasionally Used Part of
-System Functionality" around the user's well understood region,50%](img/interaction/mental5.png)
-
----
-# Model of Mental Models
-
-.left-column50[
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System
-Functionality" a dark blue cloud labeled "Occasionally Used Part of
-System Functionality" around the user's well understood region and
-another cloud further out with errors (regions outside the blue system
-box) labeled "Users full model of what the system does",100%](img/interaction/mental6.png)
-
-]
-
-.right-column50[
-- Where are the gulf of evaluation and gulf of execution in this
-  image?
-]
-
---
-.right-column50[
-- Gulf of execution is the user 'error' region (user requests
-  function the __system DOESNT HAVE__), gulf of
-  evaluation is when the user __doesn't realize the system HAS a
-  functionality__.
-
-- How does an undo feature help the user bridge them?
-]
----
-# Model of Mental Models
-
-What happens when the user does something they think is core but is really not supported?
-
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System
-Functionality" a cloud further out with errors (regions outside the blue system
-box) and an arrow pointing from the part they really understand to the part outside
-of the application,50%](img/interaction/mental7.png)
-
---
-
-.right-column50[
-- Need to undo!
-]
-
-
----
-# Refridgerator/Freezer Example
-
-.left-column[
-<div class="mermaid">
-  graph LR
-  F[Freezer<br><br>]
-  Fr[Fridge&nbsp;<br><br><br><br><br><br><br><br>]
-
-</div>
-]
-
-.right-column[
-Problem:
-- Freezer too cold
-- Fridge just right
-]
-
----
-# Refridgerator/Freezer Goal
-.left-column-half[
-![img: Freezer controls and instructions on how to set temperatures,70%](img/interaction/fridge-freezer-controls.png)
-]
-
---
-
-.right-column-half[
-Goal:
-- Want to make the freezer warmer
-- Want the refridgerator to stay the same temperature
-]
-
-.footnote[Don Norman, Design of Everyday Things]
-
----
-
-# Refridgerator/Freezer Mental Model
-.left-column-half[
-![img: Mental model of how to set the fridge and freezer temperatures,70%](img/interaction/fridge-freezer-mental-model.png)
-]
-
---
-
-.right-column-half[
-Mental model:
-- Fridge control controls fridge temperature
-- Freezer control controls freezer temperature
-]
-
-.footnote[Don Norman, Design of Everyday Things]
-
----
-# Refridgerator/Freezer System Model
-.left-column-half[
-![img: System model of how to set the fridge and freezer temperatures,70%](img/interaction/fridge-freezer-valve.png)
-]
-
-.right-column-half[
-Valve controls the flow of cold air from one cooling unit.
-]
-
-.footnote[Don Norman, Design of Everyday Things]
----
-# Refridgerator/Freezer Feedback
-.left-column-half[
-![img: It takes 24 hours to get the feedback that new settings worked,70%](img/interaction/freezer-feedback.png)
-]
-
-.right-column-half[
-24 HOURS?!??!
-]
-
-.footnote[Don Norman, Design of Everyday Things]
----
-
-Design Tip #1: Consistency is Critical
-
-.left-column[
-What mental model error is this likely to create?
-]
-
-.right-column[
-![:img a screenshot from WebEx. Weve selected “Do not record a
-teleconference” but to continue we have to hit the “Start Recording”
-button. So we have a conflict in the mental model
-here.,60%](img/interaction/webex.png)
-]
-
----
-# Causes of Gulf of Evaluation
-
-What can cause a user's Gulf of Evaluation?
-
---
-- Hard to understand visual feedback
-- Poor use of colors
-- Bad layout, poor grouping
-- Unfamiliar display of information
-- Unfamiliar design patterns, or doesn’t follow convention
-- Forcing people to remember lots of things
-- Lack of feedback in response to inputs
-- Might not see visual updates
-- Can’t find info on screen
-- Might look same as unimportant
-- Irrelevant info on screen / important info missing
-
-???
-Recall: the user _doesn't realize the system HAS a functionality_.
-
----
-# Causes of Gulf of Execution
-
-What can cause a user's Gulf of Execution?
-
---
-- Unfamiliar devices and inputs
-- Don’t know what is possible
-- Unfamiliar GUI components
-- Solvable with experience
-- Unfamiliar interaction patterns
-- Also solvable with experience
-- Example patterns: Dialogs, Shopping Carts
-
-???
-Recall: the user's belief in functions the system _doesn't have_
-
----
-# Affordances
-
-Good Affordance| Bad Affordance
-----|----
-![:img Picture of a round doorknob, 40%](img/interaction/round-doorknob.png) | ![:img Picture of a flat doorknob, 40%](img/interaction/flat-doorknob.png)
-
-Well-designed objects have affordances
-- Clues to their operation that are readily apparent
-- Often visual, but not always (e.g., speech)
-- Allows and promotes certain actions
-
-
-???
-Opportunities to act which are readily apparent to the user ... and
-appropriate to the user’s abilities
-
-Form “affords” certain actions and makes that apparent
----
-Design Tip #2: Use *Affordances* to minimize errors
-
-Action | Physical Affordance | Virtual Affordance |  Minimal Design
-----|----|----|----
-Gripping | ![:img picture of knurling on a knob,45%](img/interaction/knurling.png) | ![:img Image of lines indicating a grabbable corner by imitating knurling,50%](img/interaction/virtual-knurling.png)
-Pushing | ![:img picture of buttons on a phone,55%](img/interaction/buttons.png) | ![:img Similar buttons on a webpage,55%](img/interaction/virtual-buttons.png)|![:img picture of web buttons on a flat-style page,55%](img/interaction/web-button.png)
-Search | ![:img magnifying glass](https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Magnifying_glass_icon_mgx2.svg/200px-Magnifying_glass_icon_mgx2.svg.png) || ![:img Text area for search. Uses greyed out text to suggest what should go in it, 55%](img/interaction/search.png)
-
-
-???
-Knurling: increases friction/affords gripping
-
-don't kneed to know the word to get it
-
----
-Design Tip #3: Make the Conceptual Model Visible
-
-Explicitly design a conceptual model
-
-Use affordance and feedback (and everything else you have) to reinforce it
-
----
-# Feedback
-
-Response by the system to the actions of the user – Cause and effect
-
-Essential for forming mental models
-
-Makes “system state” visible
-
-Messenger Feedback | and | Gmail Feedback
-----|----|----
-![:img Facebook messenger showing feedback as the user clicks on the thumbs up button](img/interaction/messenger-bubble.gif)||![:img User selecting and dragging two conversations in gmail with feedback,50%](img/interaction/gmail-snapping.gif)
-]
-
----
-# Feed Forward
-
-.right-column[
-What will happen if you execute action
-- Ex. Web page mouseover
-- Ex. Word processing I-bar
-- Ex. Label on a button
-
-Help people predict what will happen
-- Need feedforward at all scales
-- GUI widgets will handle basic feedforward
-- Don’t forget feedforward for screens
-]
-
-.left-column[
-![:img Picture of two icons showing additional visual feedback when the cursor hovers over them, 70%](img/interaction/feedforward.png)
-]
-
----
-# Revisit: What is this an example of?
-
-.left-column[
-Is this physical or virtual? Ubicomp!
-
-![:img faucet with IR sensor, 110%](img/interaction/sensor.jpg )
-]
-
-.right-column[
-![:img Sign explaining how to use the sensor, 50%](img/interaction/sensor-explanation.png)
-]
----
-# Application Design Tips
-
-- Design Tip #1: Consistency is Critical
-- Design Tip #2: Use *Affordances* to minimize errors
-- Design Tip #3: Make the Conceptual Model Visible
diff --git a/slides/wk07/menus.html b/slides/wk07/menus.html
deleted file mode 100644
index e11bc0995ffa85bfb642245384168fa3a13d4823..0000000000000000000000000000000000000000
--- a/slides/wk07/menus.html
+++ /dev/null
@@ -1,872 +0,0 @@
----
-layout: presentation
-title: Interaction Technique Design --Week 7, Wednesday--
-description: Description of Interaction Technique Design
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-layout:false
-
-# Why is selection (and testing) important .red[*]
-.left-column50[
-
-![:img False alarm in hawaii that led everyone to think there wsa a nuclear event, 75%](img/menus/alert1.jpg)
-]
---
-.right-column50[
-![:img Screen showing what led to this error, 85%](img/menus/alert.jpg)
-]
-
-.footnote[.red[*] [Washington Post Article](https://www.washingtonpost.com/news/morning-mix/wp/2018/01/16/that-was-no-wrong-button-in-hawaii-take-a-look/?utm_term=.1848969db923)
-]
----
-class: center, middle, inverse
-
-# Interaction Technique Design
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-[//]: # (Outline Slide)
-# Today's Agenda
-- Administrivia
-  - ColorPicker due at 10pm
-  - Practice quizzes (there are 2) due Wednesday 10pm
-  - Menus to be released tonight
-  - Examlet Friday
-- Introducing key concepts for menus assignment
-- Using key properties of people to predict design outcomes
-
----
-# Menus Assignment
-
-Goal: to compare pie menus, linear menus, and a custom menu you make!
-
-We provide support for running the experiment in MainActivity (and a testing harness in TestActivity)
-
-You implement a variety of menus
-
----
-# Menus Assignment
-
-<div class="mermaid">
-classDiagram
-
-class MenuExperimentView {
-  onTouchEvent()
-  startSelection()
-  endSelection()
-  updateModel()
-  onDraw()
-}
-
-
-AbstractMenuExperimentView <|-- MenuExperimentView
-
-AbstractMainActivity <|-- MainActivity
-AbstractMainActivity <|-- TestActivity
-MenuExperimentView <|-- PieMenuView
-MenuExperimentView <|-- NormalMenuView
-MenuExperimentView <|-- CustomMenuView
-
-
-</div>
-
----
-
-# What is a Menu in theory?
-
-???
-- Supports selection of an item from a fixed set of options
-- Options are set and determined in advance
-- Typically used for “commands” (verbs, things to do)
-- Occasionally for selecting a value (e.g., picking a font)
-
---
-.left-column-half[
-- Supports selection of an item from a fixed set of options
-- Options are set and determined in advance
-- Typically used for “commands” (verbs, things to do)
-- Occasionally for selecting a value <br> (e.g., picking a font)
-]
---
-<div class="mermaid">
-graph TD
-S((.)) --> A(Start)
-A -- "Press?startSelection()" --> I(Selecting)
-I -- "Release:endSelection()" --> E[End]
-I -- "Drag:updateModel()" --> I
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class S invisible
-class A start
-class E finish
-class I normal
-</div>
-
-???
-
-Implemented in MenuExperimentView
-
-Works in all Menus!
-
----
-
-# What is a Menu in theory?
-
-.left-column-half[
-- Supports selection of an item from a fixed set of options
-- Options are set and determined in advance
-- Typically used for “commands” (verbs, things to do)
-- Occasionally for selecting a value <br> (e.g., picking a font)
-
-Implemented in MenuExperimentView
-
-Works in all Menus!
-]
-
-<div class="mermaid">
-graph TD
-S((.)) --> A(Start)
-A -- "Press?startSelection()" --> I(Selecting)
-I -- "Release:endSelection()" --> E[End]
-I -- "Drag:updateModel()" --> I
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-class S invisible
-class A start
-class E finish
-class I normal
-</div>
-
-
----
-# Aside: Enums
-
-.left-column-half[
-Group of named constants
-
-- Used for PPS in ColorPicker (PPS States; Essential Geometry)
-
-- Used for PPS in Menu assignment *and* for experimental conditions
-
-- Easy to inspect if you want to (can use to determine possible states, number items, etc)
-
-[Documentation](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)
-]
-.right-column-half[
-<div class="mermaid">
-classDiagram
-
-class TaskType {
-  LINEAR
-  RELATIVE
-  UNCLASS
-}
-
-class State {
-  START
-  SELECTING
-}
-
-class MenuType {
-  NORMAL
-  PIE
-  CUSTOM
-}
-
-</div>
-
-]
-
----
-# How do we draw a menu?
-
-.left-column30[
-<br>
-<div class="mermaid">
-classDiagram
-
-MenuExperimentView <|.. PieMenuView :  onDraw translates  and calls drawMenu
-
-class PieMenuView {
-  Canvas: 0,0 at first touch point.
-  Clipping rect: Whole screen
-  drawMenu()
-}
-
-class MenuExperimentView {
-   Canvas : 0,0 at top left of screen;
-   Clipping rect: Whole screen
-   onDraw() translate
-}
-</div>
-]
-
-.right-column60[
-- Important! MenuExperimentView set to `MATCH_PARENT`
-  - Makes drawing tricky!
-- Translate (like a parent view does for children)
-- `onDraw` in `MenuExperimentView` calls `drawMenu` in child classes.
-]
-
---
-.right-column60[
-
-Do we have to rotate/translate the `Canvas` back?
-]
-
---
-
-.right-column60[
-We don't strictly have to rotate or translate back because this is
-an inheritance drawing trick, not an interactor hierarchy drawing implementation
-]
-
----
-# Aside: Custom Listeners
-
-- Used in ColorPicker and Menus
-
-- Why create custom listeners?
-
---
- - Lets you execute code when the view's model has changed
- - No other way to know that has happened
-
----
-# Review: How to implement custom listeners
-
-The Custom View needs to
-- define the custom interface
-- keep track of listeners
-
---
-Anything *using* the view needs to
-- implement the interface (specifically, the method in that interface that will be called)
-- register itself as a listener with the view
-
----
-# Example Custom View -- ColorPicker
-
-In ColorPicker, we setup the Custom View side for you
-
-```java
-    // Currently registered ColorListener instance or null.
-    private List<ColorChangeListener> mColorChangeListeners;
-
-    // Class which defines a listener to be called when a new color is selected.
-    public interface ColorChangeListener {
-        void onColorSelected(@ColorInt int color);
-    }
-
-    // Registers a new listener
-    public final void addColorChangeListener(@NonNull ColorChangeListener colorChangeListener) {
-        mColorChangeListeners.add(colorChangeListener);
-    }
-```
-
----
-# Example Custom Listener -- ColorPicker:
-
-You implemented this
-
-.left-column-half[
-```
-// TODO: Register callback to update {color,label}
-// View when color changed.`
-```
-
-What method do we call to register the callback?  <br>`addColorChangeListener()`
-
-]
-.right-column-half[
-<div class="mermaid">
-classDiagram
-MainActivity ..> ColorPickerView : addColorChangeListener()
-MainActivity --> ColorChangeListener : Contains
-class ColorChangeListener {
-  onColorChanged()
-}
-class ColorPickerView {
-  addColorChangeListener()
-}
-class MainActivity {
-  ColorPickerView view
-}
-
-</div>
-]
----
-# Example Custom Listener -- ColorPicker:
-
-You implemented this
-
-.left-column-half[
-```
-// TODO: Register callback to update {color,label}
-// View when color changed.`
-```
-
-What method do we call to register the callback?  `addColorChangeListener()`
-
-What do we usually do in a callback? <br>update application's (`MainActivity`) model
-]
-.right-column-half[
-<div class="mermaid">
-classDiagram
-ColorPickerView ..> ColorChangeListener : onColorChanged()
-ColorChangeListener ..> MainActivity : update model
-
-class ColorChangeListener {
-  onColorChanged()
-}
-
-class MainActivity {
-  ColorPickerView view
-}
-</div>
-]
-
----
-# You will do this yourself in Menus
-
-```java
-// TODO: register a new listener with the menu so that the application knows when a selection is made
-
-// TODO: implement the listener. When the user completes a trial, the menu listener should store
-// the results of the trial, and setup for the next trial
-```
-
----
-class: center, middle, inverse
-
-# Experimenting with Interfaces
-
-Important part of building interfaces is experimenting
-
-Need structured ways to decide what's better
-
----
-# Experiments should be tied to *hypotheses* based on *theories* what will go better
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
-
-???
-why theory and not intuition?
-
----
-# Which is better and which laws explain it?
-.left-column50[
-## A. Pie Menu
-![:img Pie Menu, 80%](img/menus/pie.jpg)
-]
-.right-column50[
-## B. Pull down Menu
-![:img Traditional Menu inside a web browser, 80%](img/menus/menu.png)
-]
-???
-
-What analysis methods can we use to predict?
-
-- Fitts Law (compare distance and size; check for infinite size)
-- *Steering Law* (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
-
----
-# Steering Law (based on Fitts' law)
-.left-column50[
-## A. Pie Menu
-![:img Pie Menu, 80%](img/menus/pie.jpg)
-]
-.right-column50[
-## B. Pull down Menu
-![:img Traditional Menu inside a web browser, 80%](img/menus/menu.png)
-]
-
----
-# Which is better and which law explains it?
-.left-column50[
-## A. Pie Menu
-![:img Pie Menu, 80%](img/menus/pie.jpg)
-]
-.right-column50[
-## B. Marking Menu
-![:youtube Video assigned before class, 8c58bN6ajJ4?t=30]
-]
-???
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - **Does someone have to 'check' something? More than once?**
- - **Do they have to move? More than once**
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
----
-# Cognitive modeling (less double checking)
-
-.left-column50[
-## A. Pie Menu
-![:img Pie Menu, 80%](img/menus/pie.jpg)
-]
-.right-column50[
-## B. Marking Menu
-![:youtube Video assigned before class, 8c58bN6ajJ4?t=30]
-]
-
----
-# Which is better and which laws explain it?
-
-A: Tapping &nbsp;&nbsp; B: Crossing
-![:youtube Video of using crossing for selection, kp2Zl4ONuik]
-
-???
-
-- **Fitts Law (compare distance and size; check for infinite size)**
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- Errors (will they be reduced)
-
----
-# Fitts' Law (infinite width)
-
-A: Tapping &nbsp;&nbsp; B: Crossing
-![:youtube Video of using crossing for selection, kp2Zl4ONuik]
-
----
-# Which is better and which laws explain it?
-.left-column50[
-## A.
-
-![:img Picture of the Graffiti gesture recognition alphabet from the Palm Pilot, 100%](img/menus/Grafitti.png)
-]
-.right-column50[
-## B.
-
-![:img Picture of the Edgewrite gesture recognition alphabet, 50%](img/menus/Edgewrite.png)
-
-]
-???
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- Gestalt Psychology (will they see it at all?)
-- **Errors (will they be reduced)**
----
-# Errors (better physical feedback during motor task)
-
-.left-column50[
-## A.
-
-![:img Picture of the Graffiti gesture recognition alphabet from the Palm Pilot, 100%](img/menus/Grafitti.png)
-]
-.right-column50[
-## B.
-
-![:img Picture of the Edgewrite gesture recognition alphabet, 50%](img/menus/Edgewrite.png)
-
-]
-
----
-# Which is better and which laws explain it?
-
-.left-column50[
-## A.
-![:img Old facebook security page with icons and text mixed
-up,80%](img/menus/facebook.png)
-]
-.right-column50[
-## B.
-
-![:img March 2019 facebook security page with icons and
-text clearly aligned, 80%](img/menus/facebook2.png)
-]
-???
-
-- Fitts Law (compare distance and size; check for infinite size)
-- Steering Law (distance and size over a path)
-- Cognitive modeling (complex multi-step model of expert behavior)
- - Does someone have to 'check' something? More than once?
- - Do they have to move? More than once
-- **Gestalt Psychology (group?)**
-- **Errors (will they be reduced)**
----
-# Gestalt Psychology (better grouping strategies)
-
-.left-column50[
-## A.
-![:img Old facebook security page with icons and text mixed
-up,80%](img/menus/facebook.png)
-]
-.right-column50[
-## B.
-
-![:img March 2019 facebook security page with icons and
-text clearly aligned, 80%](img/menus/facebook2.png)
-]
-
----
-# Back to comparing menus
-
-Kurtenbach: What did they study here?
-
-![:youtube Illustration of advantages of marking menus,dtH9GdFSQaw]
-
----
-# How do we prove our theories? Hypothesis
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis(Hypothesis)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-</div>
-
-Discuss
-
---
-
-Marking Menus are better than Pie Menus
-
---
-Marking Menus are *faster* than Pie Menus
-
---
-Pie Menus are faster than Linear Menus for less than 8 items that have no obvious order
-
----
-.left-column-half[
-# What conditions does this experiment have?
-
-
-`MenuType`
-
-`TaskType` (could be a condition)
-]
-.right-column-half[
-# What might we measure? (from POP-Motor)
-]
---
-.right-column-half[
-- Time on Task
-- Accuracy
-- How strenuous
-- Recall
-- Emotional Response
-
-]
-
-<!-- --- -->
-<!-- # Classes that handle experimentation -->
-
-<!-- We provide most of the implementation for this -->
-
-<!-- <div class="mermaid"> -->
-<!-- classDiagram -->
-
-<!-- class MainActivity { -->
-<!--   showMenuForTrial() -->
-<!-- } -->
-<!-- class AbstractMainActivity { -->
-<!--   clearCSV() -->
-<!-- } -->
-<!-- class MainActivity { -->
-<!--   showMenuForTrial() -->
-<!-- } -->
-<!-- class TestActivity { -->
-<!--   showMenu() -->
-<!-- } -->
-
-<!-- class TrialListener { -->
-<!--   onTrialCompleted() -->
-<!-- } -->
-
-<!-- AbstractMainActivity <|-- MainActivity -->
-<!-- AbstractMainActivity <|-- TestActivity -->
-
-<!-- class ExperimentSession { -->
-<!--  createTrials() -->
-<!--  getNext() -->
-<!--  next() -->
-<!-- } -->
-
-<!-- </div> -->
-
-
----
-# How do we prove our theories? Method
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis(Hypothesis)
-Hypothesis -- "Study Design" --> Method(Method)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-class Method normal
-</div>
-
-Compare specific conditions
-
-| MenuType | 8 items | 12 items |
-|----------|---------|----------|
-| Linear   |         |          |
-| Pie      |         |          |
-| Marking  |         |          |
-
-What if we wanted to do length AND ordered vs not?
-
-Want to consider every combination, or run twice (menuType x length and menuType x ordering)
-
----
-# How do we prove our theories? Data
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis(Hypothesis)
-Hypothesis -- "Study Design" --> Method(Method)
-Method -- "Run Study" --> Data(Data)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-class Method,Data normal
-</div>
-
-What might we want to measure?
-
---
-- Time on task -- how long to complete basic tasks? (For example, find something to buy, create a new account, and order the item.)
-
---
-- Accuracy -- How many mistakes did people make? (And were they fatal or recoverable with the right information?)
-
---
-- How strenuous (e.g. gaze has lower throughput but is less strenuous than head pointing (Mackenzie 2018)
-
---
-- Recall -- How much does the person remember afterwards or after periods of non-use?
-
---
-- Emotional Response -- How does the person feel about the tasks completed? (Confident? Stressed? Would the user recommend this system to a friend?)
-
-???
-Build up a list of good UI design principals from these basics
-
-Undo
-Predictability
-... What is missing? (e.g. fun)
----
-# How to get such data?
-
-- Video
-- Timestamps
-- Notes
-- Can transcribe and analyze interviews with users
-- Can look for patterns across users
-
----
-# How do we prove our theories? Analysis
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis(Hypothesis)
-Hypothesis -- "Study Design" --> Method(Method)
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis start
-class Method,Data,Analysis normal
-</div>
-
-![:img sample data from the menus experiement, 80%](img/menus/menus-data.png)
-
----
-# How do we prove our theories? Conclusions
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis(Hypothesis)
-Hypothesis -- "Study Design" --> Method(Method)
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-
-class S invisible
-class Hypothesis,Conclusions start
-class Method,Data,Analysis normal
-</div>
-
-![:img sample data from the menus experiement, 30%](img/menus/histogram.png)
-
-
-
----
-# Design an experiment
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis(Hypothesis)
-Hypothesis -- "Study Design" --> Method(Method)
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-
-class S invisible
-class Hypothesis,Conclusions start
-class Method,Data,Analysis normal
-</div>
-
-.left-column50[
-## A.
-![:img Picture of the Graffiti gesture recognition alphabet from the Palm Pilot, 100%](img/menus/Grafitti.png)
-]
-.right-column50[
-## B.
-![:img Picture of the Edgewrite gesture recognition alphabet, 50%](img/menus/Edgewrite.png)
-]
-
-???
-Hypothesis: Errors (will they be reduced)
-Method:??
-Data:??
-Analysis??
-Conclusions??
-
----
-# Design an experiment
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis(Hypothesis)
-Hypothesis -- "Study Design" --> Method(Method)
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-
-class S invisible
-class Hypothesis,Conclusions start
-class Method,Data,Analysis normal
-</div>
-
-.left-column50[
-## A. Pie Menu
-![:img Pie Menu, 80%](img/menus/pie.jpg)
-]
-.right-column50[
-## B. Pull down Menu
-![:img Traditional Menu inside a web browser, 80%](img/menus/menu.png)
-]
-
-???
-
-Hypothesis: Errors will be reduced;
-Hypothesis: Motion will be faster due to low level motor things
-Hypothesis: fewer cognitive checks needed
-Method:??
-Data:??
-Analysis??
-Conclusions??
diff --git a/slides/wk07/slides22 - persuasive tech copy.pdf b/slides/wk07/slides22 - persuasive tech copy.pdf
deleted file mode 100644
index 6eaf11a25a0f3b1e404c2eb54823c09b195efdb3..0000000000000000000000000000000000000000
Binary files a/slides/wk07/slides22 - persuasive tech copy.pdf and /dev/null differ
diff --git a/slides/wk08/img/studies/chart.png b/slides/wk08/img/studies/chart.png
deleted file mode 100644
index 51340bdc387fdb4390c0dc45310c8c853a29ea6a..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies/chart.png and /dev/null differ
diff --git a/slides/wk08/img/studies/import.png b/slides/wk08/img/studies/import.png
deleted file mode 100644
index a8e25213ae79c9f00bb100df23d69fa375602803..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies/import.png and /dev/null differ
diff --git a/slides/wk08/img/studies/raw.png b/slides/wk08/img/studies/raw.png
deleted file mode 100644
index 369cb3f5dfd935cc8f5c8bd32592cd67627e3001..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies/raw.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/cagelation.png b/slides/wk08/img/studies2/cagelation.png
deleted file mode 100644
index 2e41c1d7acd62d868f2df55f859d29fd9fb73bfe..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/cagelation.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/chart.png b/slides/wk08/img/studies2/chart.png
deleted file mode 100644
index 51340bdc387fdb4390c0dc45310c8c853a29ea6a..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/chart.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/correlation-cartoon.png b/slides/wk08/img/studies2/correlation-cartoon.png
deleted file mode 100644
index 1242708b466c0531b9effa97b1a572c70e044d2f..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/correlation-cartoon.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/correlation-demo.png b/slides/wk08/img/studies2/correlation-demo.png
deleted file mode 100644
index c28ef774a0faf9eb1501765e37934af5674713b1..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/correlation-demo.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/correlation.png b/slides/wk08/img/studies2/correlation.png
deleted file mode 100644
index c69cafbf23b3485a7c324f03ea4a19ce20e85e4a..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/correlation.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/histogram.png b/slides/wk08/img/studies2/histogram.png
deleted file mode 100644
index 6f7e8740d3aa89ea7208ad05269baf77df275f25..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/histogram.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/normal-only.png b/slides/wk08/img/studies2/normal-only.png
deleted file mode 100644
index a699b9b891468b7eb9e624d6f630908fc60df575..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/normal-only.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/pie-only.png b/slides/wk08/img/studies2/pie-only.png
deleted file mode 100644
index b9ec62ba9f84f0178670efd4e34c5b436b7a4488..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/pie-only.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/pivot1.png b/slides/wk08/img/studies2/pivot1.png
deleted file mode 100644
index bca708fc3cd0e423730c0035e723a48999a08cd7..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/pivot1.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/pivot2.png b/slides/wk08/img/studies2/pivot2.png
deleted file mode 100644
index 097489384473e677bf085338864849c35fcc3300..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/pivot2.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/priors.png b/slides/wk08/img/studies2/priors.png
deleted file mode 100644
index 780996fe4bd6e438d726e9ba3b13f7dcc48ab919..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/priors.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/samples1.png b/slides/wk08/img/studies2/samples1.png
deleted file mode 100644
index 49501eff4390ef68cf89dcc87031daece7975bea..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/samples1.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/samples2.png b/slides/wk08/img/studies2/samples2.png
deleted file mode 100644
index 7964a305be364fdd74536c64219dfdfbc0e281d7..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/samples2.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/samples3.png b/slides/wk08/img/studies2/samples3.png
deleted file mode 100644
index 386bfcdd2dc112661ae57d9f1ea603ddbac4211f..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/samples3.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/samples4.png b/slides/wk08/img/studies2/samples4.png
deleted file mode 100644
index c7964ba49e0f2a6daa9437d6dfb2da9e29ea37e8..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/samples4.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/samples5.png b/slides/wk08/img/studies2/samples5.png
deleted file mode 100644
index 386bfcdd2dc112661ae57d9f1ea603ddbac4211f..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/samples5.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/samples6.png b/slides/wk08/img/studies2/samples6.png
deleted file mode 100644
index a0c4949d6f4f5ef9623036312aaf19f4fb6b718a..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/samples6.png and /dev/null differ
diff --git a/slides/wk08/img/studies2/samples7.png b/slides/wk08/img/studies2/samples7.png
deleted file mode 100644
index c34a788058ea4c3f244c3e7c03684dd6d2b27594..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/studies2/samples7.png and /dev/null differ
diff --git a/slides/wk08/img/undo/callbacks.png b/slides/wk08/img/undo/callbacks.png
deleted file mode 100644
index 72147534bc5ba07de7a95ffe479f5505d65814f4..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/callbacks.png and /dev/null differ
diff --git a/slides/wk08/img/undo/callbacks2.png b/slides/wk08/img/undo/callbacks2.png
deleted file mode 100644
index 37eeff1f958d4f711faf7ce2af0ceb9736121957..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/callbacks2.png and /dev/null differ
diff --git a/slides/wk08/img/undo/callbacks3.png b/slides/wk08/img/undo/callbacks3.png
deleted file mode 100644
index c7c5e1de7d5c73ca13b8e95df99735ce5aeec7fa..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/callbacks3.png and /dev/null differ
diff --git a/slides/wk08/img/undo/flatland-roads.png b/slides/wk08/img/undo/flatland-roads.png
deleted file mode 100644
index 77655503c0c8225654cb4f6422960727363bcfd4..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/flatland-roads.png and /dev/null differ
diff --git a/slides/wk08/img/undo/flatland.png b/slides/wk08/img/undo/flatland.png
deleted file mode 100644
index 60c84737008f5acfa50d6a39be07a439ef2fc372..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/flatland.png and /dev/null differ
diff --git a/slides/wk08/img/undo/gym-doors.png b/slides/wk08/img/undo/gym-doors.png
deleted file mode 100644
index 99ffb06c3f14d3adee83426b9a59dc4b1291d8c6..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/gym-doors.png and /dev/null differ
diff --git a/slides/wk08/img/undo/mental1.png b/slides/wk08/img/undo/mental1.png
deleted file mode 100644
index a3c23c4e46f70202c6a8117ed0607dc2f8e1f373..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/mental1.png and /dev/null differ
diff --git a/slides/wk08/img/undo/mental2.png b/slides/wk08/img/undo/mental2.png
deleted file mode 100644
index 58c9cc1a547ec69cd2652c456c8cb040b5e6a0bd..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/mental2.png and /dev/null differ
diff --git a/slides/wk08/img/undo/mental3.png b/slides/wk08/img/undo/mental3.png
deleted file mode 100644
index 07a7d35cca9dbe1309fe9c5809ce3ac2e2e684d6..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/mental3.png and /dev/null differ
diff --git a/slides/wk08/img/undo/mental4.png b/slides/wk08/img/undo/mental4.png
deleted file mode 100644
index 1e40a86ffb987d0e45c5420bc8d87f34c46e62e0..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/mental4.png and /dev/null differ
diff --git a/slides/wk08/img/undo/mental5.png b/slides/wk08/img/undo/mental5.png
deleted file mode 100644
index e8b861ac7042b4cc0b3bd2ab312ef120c1225564..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/mental5.png and /dev/null differ
diff --git a/slides/wk08/img/undo/mental6.png b/slides/wk08/img/undo/mental6.png
deleted file mode 100644
index 5baea3ac170bd237ee0c35101160347918f32c04..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/mental6.png and /dev/null differ
diff --git a/slides/wk08/img/undo/mental7.png b/slides/wk08/img/undo/mental7.png
deleted file mode 100644
index 9bb9a6c4bd2bf569e84b6de7d2d7e73f0e9ecc09..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/mental7.png and /dev/null differ
diff --git a/slides/wk08/img/undo/norman-d-human-action-cycle.png b/slides/wk08/img/undo/norman-d-human-action-cycle.png
deleted file mode 100644
index f5748a294e9e8786e3337bc8404b71364d1db0f9..0000000000000000000000000000000000000000
Binary files a/slides/wk08/img/undo/norman-d-human-action-cycle.png and /dev/null differ
diff --git a/slides/wk08/studies.html b/slides/wk08/studies.html
deleted file mode 100644
index 3b60f194ba7e79e0ec6cef2c70956897c731079f..0000000000000000000000000000000000000000
--- a/slides/wk08/studies.html
+++ /dev/null
@@ -1,470 +0,0 @@
----
-layout: presentation
-title: Running a Quantitative Study
-description: Description of how to test a hypothesis in a study, all steps
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Running a Quantitative Study
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-# Today's goals
-
-- Review our designs from Friday
-- Discuss steps of running a study
-- Practice onboarding participants
-- Practice data analysis
-- Go over parts 5 & 6 of Menus
-
----
-# Case Study: UbiGreen - In Class activity
-
-Take 2 minutes to go back into our [shared google doc](https://docs.google.com/document/d/1SqvaQyhFYs6AsOPoDcBkG4egCRRq3jEaW17HOi0hSkM/edit?usp=sharing)
-
-Find a design by a different group than you were in. Use the google doc comment feature to leave
-a short critique.
-
-Phrases to get you started
-
-- I like ...
-- I wish ...
-- What if...
-
-.footnote[I like I wish critique method from [Stanford Design School](https://www.youtube.com/watch?v=QkWM2--3TQo)]
-
----
-# Experiment Design
-
-<div class="mermaid">
-graph LR
-S(.) --> Hypothesis(Hypothesis)
-Hypothesis -- "Study Design" --> Method(Method)
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:2.5em;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:3px;
-linkStyle 1 stroke-width:3px;
-linkStyle 2 stroke-width:3px;
-linkStyle 3 stroke-width:3px;
-linkStyle 4 stroke-width:3px;
-
-class S invisible
-class Hypothesis,Conclusions start
-class Method,Data,Analysis normal
-</div>
-
-&zwj;Think: What is the Hypothesis for the Menus assignment
---
-
-&zwj;Pair: We'd chat for a minute in person but I'm not putting you in breakouts for this question...
---
-
-&zwj;Share: Type your thoughts in the chat window
-
----
-# Method
-<div class="mermaid">
-graph LR
-S(.) --> Hypothesis(Hypothesis <br>Decreased seek <br>time and errors)
-Hypothesis -- "Study Design" --> Method(Method)
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:5em;
-classDef startsmall fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:2.5em;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:3px;
-linkStyle 1 stroke-width:3px;
-linkStyle 2 stroke-width:3px;
-linkStyle 3 stroke-width:3px;
-linkStyle 4 stroke-width:3px;
-
-class S invisible
-class Hypothesis start
-class Conclusions startsmall
-class Method,Data,Analysis normal
-</div>
-
-- 3 tasks x 3 menu types = 9 *conditions*
-- Each condition will have a total of totalTrials = `ITEM_MAX` x `NUM_REPEATS`
-  - In each *condition* we test `ITEM_MAX` different menu items
-  - For each menu item, we repeat `NUM_REPEATS` times
-
-| | Normal | Pie | Custom |
-|--|--|--|--|
-| **Linear** | totalTrials | totalTrials | totalTrials |
-| **Relational** | totalTrials | totalTrials  | totalTrials |
-| **Unclassified** | totalTrials | totalTrials | totalTrials |
-
----
-# Other Method considerations
-
-For Menus Part 5-6, an experimental *session* consists of 3 tasks x 3 menu types x
-`ITEM_MAX` items x `NUM_REPEATS` repetitions = 108 *trials*
-
-You have to run at least three participants through a complete session = 108 x 3 or 324 data points.
-
---
-In some experimental designs, participants only do some conditions
-- Called *between subjects design*
-
-Our participants do *all* trials
-- Our study is a *within subjects design*
-
-Order of presentation of conditions and items is randomized (why?)
-
-
-???
-Between subjects design: Person A compared to person B doing different tasks
-
----
-# Document all of this in your [report]({{site.baseurl}}/assignments/menu-report)
-
-Introduce study purpose
-
-`Write two sentences describing the purpose of the experiment. This
-can be the same text you use in your consent form`
-
----
-# Document all of this in your [report]({{site.baseurl}}/assignments/menu-report)
-
-Introduce study method - menus
-
-`Mention that there are three types of menus, Pie, Linear and Custom.
-Then describe your custom menu and include an screenshots of your custom menu in both a selected
-and unselected state. Describe some of the design choices you made when you were conceiving your
-custom menu and how your final product match (or didn’t) your original vision? Be sure to explain
-clearly how your custom menu works and how a user interacts with it?`
-
-Introduce study method - tasks
-
-`Describe the 9 conditions of the study. Explain how many
-items were selected per menu, and how many times each item was
-repeated. Describe how many trials each participant completed.`
-
----
-# Study Ethics
-<div class="mermaid">
-graph LR
-S(.) --> Hypothesis(Hypothesis:<br>Decreased seek <br>time and errors)
-Hypothesis -- "Study Design" --> Method(3 menus x <br> 3 task conditions )
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normalbig fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:4em;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:5em;
-classDef startsmall fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:2.5em;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:3px;
-linkStyle 1 stroke-width:3px;
-linkStyle 2 stroke-width:3px;
-linkStyle 3 stroke-width:3px;
-linkStyle 4 stroke-width:3px;
-
-class S invisible
-class Hypothesis start
-class Conclusions startsmall
-class Method normalbig
-class Data,Analysis normal
-</div>
-
-Ethical Principles for running participants. Driven by
-[Criminal/Racist/Harmful studies](https://www.nytimes.com/2017/05/22/science/social-science-research-institutional-review-boards-common-rule.html)
- - Nazi war crimes
- - Tuskegee Syphilis study
- - Epilepsy studies of institutionalized children
- - [16,000 people involuntarily included in radiation
-   studies](https://www.nytimes.com/1995/08/20/us/count-of-subjects-in-radiation-experiments-is-raised-to-16000.html?module=inline)
- - [Milgram's study of electric shocking](https://www.simplypsychology.org/milgram.html)
- - [Stanford prison experiment](https://www.simplypsychology.org/zimbardo.html)
-
-
-???
-IRB = Institutional Review Board Protocol (and get it approved.)
-
----
-# Study Ethics
-<div class="mermaid">
-graph LR
-S(.) --> Hypothesis(Hypothesis:<br>Decreased seek <br>time and errors)
-Hypothesis -- "Study Design" --> Method(3 menus x <br> 3 task conditions )
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normalbig fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:4em;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:5em;
-classDef startsmall fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:2.5em;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:3px;
-linkStyle 1 stroke-width:3px;
-linkStyle 2 stroke-width:3px;
-linkStyle 3 stroke-width:3px;
-linkStyle 4 stroke-width:3px;
-
-class S invisible
-class Hypothesis start
-class Conclusions startsmall
-class Method normalbig
-class Data,Analysis normal
-</div>
-
-
-Basic ethics ([Belmont Report](https://www.hhs.gov/ohrp/regulations-and-policy/belmont-report/read-the-belmont-report/index.html))
-- Beneficence -->
- - Value of research higher than risks
- - Do no harm
-- Respect for Persons -->
- - Fully informed of intent and purpose
- - Informed consent
- - May opt out at any time, for any reason
-- Justice -->
- - Equitable, representative selection of participants
-
-
----
-# Consent
-
-Write your [consent]({{site.baseurl}}/assignments/consent) form
-
-- Purpose of study (Beneficience)
-- Requirements for participation (Respect for Persons)
-- Study procedures (Respect for Persons)
-- Voluntariness (Respect for Persons)
-- Benefits to Society (Beneficience)
-- Contact (of IRB typically; Me in this case)
-
-
-???
-- Beneficence -->
- - Value of research higher than risks
- - Do no harm
-- Respect for Persons -->
- - Fully informed of intent and purpose
- - Informed consent
- - May opt out at any time, for any reason
-- Justice
- - equitable, representative selection of participants
-
----
-# Choosing and Consenting Participants
-
-For 20sp only, we are assigning you in "groups" to help you find testers.
-- If you can not safely test your app with someone who is co-present you will need to ask your [groupmates](https://docs.google.com/document/d/11nsEWs3TubV5Zy0zOIGguqZJohkS34uizIrDv-bgnYs/edit)
-- Consenting your participants will be very similar whether they are co-present or remote.
-  - Set up a time when can speak to your participant (in real time) - phone or video call
-  - For a co-present tester - print out two copies of the consent form for each participant -- one for them and one for you.
-  - For remote testers - send a copy of the consent form to the participant prior to your phone call
-or video meeting.
-
----
-# Choosing and Consenting Participants
-
-During the consent meeting
-- Briefly explain what your user study is about,
-- Ensure participants understand their participation in the study is voluntary.
-  - Do not *coerce* anyone into participating in your study.
-  - Make sure they know they have a choice, and have read the consent form.
-- Participants must acknowledge their consent by "signing" via the Google form (linked
-at the bottom of the consent form template).
-  - This form should send you an anonymized copy of their
-consent in email, which you can save and turn in with the rest of your report and reflection.
-
----
-# Choosing and Consenting Participants
-
-If you are unable to find 3 partipants from your friends, family, or pre-assigned group
-- Please reach out to a TA during Office Hours or to have them be a partipipant.
-- You may also reach out to other students in the class via Ed.
-
-
----
-# Document your participants in your [report]({{site.baseurl}}/assignments/menu-report)
-
-Method - Participants
-
-`Describe your participants (without identifying
-them). How were they recruited? How many were there?  Were
-they consented? You can also add
-some optional information such as: What was there average age? What
-genders were present? How experienced were they with android?`
-
----
-# Data Collection
-
-<div class="mermaid">
-  graph LR
-  S(.) --> Hypothesis(Hypothesis:<br>Decreased seek <br>time and errors)
-  Hypothesis -- "Study Design" --> Method(3 menus x <br> 3 task conditions )
-  Method -- "Run Study" --> Data(Data)
-  Data -- "Clean and Prep" --> Analysis(Analysis)
-  Analysis --> Conclusions(Conclusions)
-
-  classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-  classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-  classDef normalbig fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:4em;
-  classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:5em;
-  classDef startsmall fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:2.5em;
-  classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-  linkStyle 0 stroke-width:3px;
-  linkStyle 1 stroke-width:3px;
-  linkStyle 2 stroke-width:3px;
-  linkStyle 3 stroke-width:3px;
-  linkStyle 4 stroke-width:3px;
-
-  class S invisible
-  class Hypothesis start
-  class Conclusions startsmall
-  class Method normalbig
-  class Data,Analysis normal
-</div>
-
-If you have co-present users:
-
-1. **Clear your data** file before you start the **first participant
-only**
-2. Have participant read and sign the consent form
-3. Emphasize key points verbally
-4. Be Consistent in how you present the study
-5. Download result (you can use a tool window called `Device File Manager`)
-
----
-# Data Collection
-
-<div class="mermaid">
-  graph LR
-  S(.) --> Hypothesis(Hypothesis:<br>Decreased seek <br>time and errors)
-  Hypothesis -- "Study Design" --> Method(3 menus x <br> 3 task conditions )
-  Method -- "Run Study" --> Data(Data)
-  Data -- "Clean and Prep" --> Analysis(Analysis)
-  Analysis --> Conclusions(Conclusions)
-
-  classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-  classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-  classDef normalbig fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:4em;
-  classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:5em;
-  classDef startsmall fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:2.5em;
-  classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-  linkStyle 0 stroke-width:3px;
-  linkStyle 1 stroke-width:3px;
-  linkStyle 2 stroke-width:3px;
-  linkStyle 3 stroke-width:3px;
-  linkStyle 4 stroke-width:3px;
-
-  class S invisible
-  class Hypothesis start
-  class Conclusions startsmall
-  class Method normalbig
-  class Data,Analysis normal
-</div>
-
-If you have a remote user
-
-1. Generate your APK
-2. Consent your user via phone or video conference.
-3. Send your APK to the participant so they can load it onto their own device or into their own
- emulator
-  - You can't email your APK through UW's servers, so upload the APK to your Google Drive or One Drive and send your participant
- a link to download it for testing.
-4. Have your participant use the hamburger menu to select `Clear Result CSV` before starting
- your study
-5. Have your participant run one experiment session.
-6. When the study is done, your participant will need to download their data
-and send it back for analysis.
-7. Combine the three participants' data into one common .csv file.
-
-
----
-layout: true
-class: center, middle
----
-# Collecting data file (Demo)
----
-layout: false
-
-# Document what all of this in your [report]({{site.baseurl}}/assignments/menu-report)
-
-Method - Setting
-`What device was used? Was it an emulator? Where did the experiment take place?`
-
-Method - Data Collected
-`What information was collected (time, errors, etc)`
-
----
-# Data Collection
-.left-column[
-
-![:img Picture of a dialogue box called Import file showing that you should replace current sheet and automatically detect separator type and convert text to numbers dates and formulas,100%](img/studies/import.png)
-]
-
-.right-column[
-
-Select the 'raw' sheet of your spreadsheet then load your file into the spreadsheet
-
-![:img Picture of a spreadsheet with the tab titled 'Raw' selected](img/studies/raw.png)
-
-]
----
-# Data Collection
-.left-column[
-
-![:img Image of bar chart comparing tasks to menu type showing that
-normal menus get progressively slower as items become nonlinear while
-pie menus are about the same, 100%](img/studies/chart.png)
-]
-.right-column[
-
-
-Now click on `Example Chart`. Here you can
-
-- Analyze and chart data: Simple Statistics
-  - Min, Max, Mean (Sum/#), Median (Middle #), Mode (Most Common #)
-
-Demo
-
-Do this for speed *and* error.
-
-]
-
-
----
-# Document what all of this in your [report]({{site.baseurl}}/assignments/menu-report)
-
-Speed Results
-
-`Describe your thoughts about overall speed in different
-conditions. Use at least one chart to illustrate what you say. Here is
-an example chart generated using our data, when you paste your data
-into the spreadsheet you’ll see that it updates to reflect your data`
-
-Error Results
-
-`Describe what happened in terms of errors -- provide at least one chart showing
-what you learned about errors in different conditions`
diff --git a/slides/wk08/studies2.html b/slides/wk08/studies2.html
deleted file mode 100644
index f3c583a7bb22a054e44f4def6eb18ffba8b9c4ca..0000000000000000000000000000000000000000
--- a/slides/wk08/studies2.html
+++ /dev/null
@@ -1,468 +0,0 @@
----
-layout: presentation
-title: Understanding Quantitative Data
-description: Description of how to analyze study data and draw conclusions
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Analyzing Quantitative Data
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout:false
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- How to use the Menus spreadsheet
-- Dependent and independent variables
-- Discuss how we determine causality
-- Practice onboarding participants
-- Practice data analysis
-
-
----
-# Data Collection
-.left-column[
-
-![:img Image of bar chart comparing tasks to menu type showing that
-normal menus get progressively slower as items become nonlinear while
-pie menus are about the same, 100%](img/studies2/chart.png)
-]
-.right-column[
-
-
-Now click on `Example Chart`. Here you can
-
-- Analyze and chart data: Simple Statistics
-  - Min, Max, Mean (Sum/#), Median (Middle #), Mode (Most Common #)
-
-Demo
-
-Do this for speed *and* error.
-
-]
-
----
-# Document what all of this in your [report]({{site.baseurl}}/assignments/menu-report)
-
-Speed Results
-
-`Describe your thoughts about overall speed in different
-conditions. Use at least one chart to illustrate what you say. Here is
-an example chart generated using our data, when you paste your data
-into the spreadsheet you’ll see that it updates to reflect your data`
-
-Error Results
-
-`Describe what happened in terms of errors -- provide at least one chart showing
-what you learned about errors in different conditions`
-
-
----
-# Use charts to check your assumptions
-
-![:img Image of bar chart comparing tasks to menu type showing that
-normal menus get progressively slower as items become nonlinear while
-pie menus are about the same, 50%](img/studies2/chart.png)
-
-
----
-# Using the right chart matters
-
-.left-column40[
-
-![:img Histogram of data about speed of pie menu selection and linear
-menu selection for each task type, 70%](img/studies2/histogram.png)
-]
-
-.right-column50[
-|Normal | Pie|
-|--|--|
-|![:img Histogram of data about speed of pie menu selection and linear menu selection for each task type,100%](img/studies2/normal-only.png)|![:img Histogram of data about speed of pie menu selection and linear menu selection for each task type, 100%](img/studies2/pie-only.png)|
-
-]
-
-
----
-# Can we determine *causality*?
-
-We'd like to be able to argue the task/menu type influenced the speed and error results.
-
---
-This implies *dependence* between speed/error, task, and menu type
-
---
-And it assumes you have measured the right variables!
-
----
-
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Determining Causality
-
-## thinking theoretically...
-
-
----
-layout:false
-
-
-# Dependence/independence
-
-Events that are independent
-- Flipping heads and then tails
-- Day of week and whether a patient had a heart attack (probably?)
-
-Events that are dependent
-- Vice presidential candidate and presidential nominee
-- Diagnostic test being positive and whether patient has a disease
-
---
-What are some dependent and indepenent relationships in the Menus study?
-
-???
-Think about a coin flip: one flip does not depend on another.
-What if we collect this kind of data, what might be true about it?
-
-
----
-# What might we expect to see is true of dependent variables?
-
-- When one changes, the other changes at the same rate
-- When one changes, the other changes at a faster rate
-- When one changes, the other does the opposite
-
-???
-Called a correlation
-We can see it in a scatter plot
-Go look at data and make one
-
----
-# This is called *Correlation*
-
-We can see it in a *scatterplot*
-
-![:img Example of correlations for heigh vs age (positively correlated) and
-height vs birth month (uncorrelated),60%](img/studies2/correlation.png)
-
----
-# Correlation (active) Demo
-
-[OpenSecrets.org data set on internet privacy resolution](https://www.opensecrets.org/featured-datasets/5)
-
-Active demo:
-
-Open it yourself: [tinyurl.com/cse340-ipdata](https://tinyurl.com/cse340-ipdata)
-
-Make a copy of this sheet to your own drive using File->Make a copy.
-
-(You must be logged into a Google account to make a copy)
----
-# Correlation demo
-
-[OpenSecrets.org data set on internet privacy resolution](https://www.opensecrets.org/featured-datasets/5)
-
-- Select two columns (use command/control click to select 2 columns)
-- Use Insert->Chart - Make sure this is a scatterplot
-
---
-![:img Correlation of company giving,60%](img/studies2/correlation-demo.png)
-
-Is there a correllation?
-
-
----
-# Correlation != Causation
-
-![:img Correlation of number of people who drowned per year and films
-nicolas cage appeared in, 80%](img/studies2/cagelation.png)
-
----
-# Correlation != Causation
-
-![:img Two people talking. Says one: I used to think correlation
-implied causation. Says the other: Then I took a statistics
-course. Now I don't. Says the other: Sounds like the class
-helped. Says the first: Well maybe, 50%](img/studies2/correlation-cartoon.png)
-
-.footnote[[XKCD](https://xkcd.com/552/)]
-
----
-# Grouping for analysis
-
-Pivot Tablest demo
-[tinyurl.com/cse340-ipdata](https://tinyurl.com/cse340-ipdata)
-
---
-![:img Giving vs party for diff votes, 30%](img/studies2/pivot1.png)
-
----
-# Grouping and charting helps you check your assumptions
-
-![:img Image of bar chart  tasks to menu type showing that
-normal menus get progressively slower as items become nonlinear while
-pie menus are about the same, 40%](img/studies2/chart.png)
-
-What do you see in the difference between tasks on each of these menus types?
-
---
-Charting gives you a place to start, what questions you might want to ask.
-
----
-# Grouping and charting helps you check your assumptions
-
-[20sp Sample data](https://docs.google.com/spreadsheets/d/1JqfKhHugIF-kebs_bVztCnkUe0CizXN8PU_Ar3kXtK4/edit?usp=sharing)
-
-Not that different in this sample set (just Jen doing it 3 times).
-
-You likely will get better results with your data
-
-We will get even better results with ALL of the data merged together
-
-(Remember to turn your CSV into the Canvas Assignment)
-
----
-
-# Comparing groups to see if they are different
-
-Bar charts  are not enough to assess difference though. Need to see the *distribution*
-
-A distribution is looking at how the people we are studying distributed over a specific variable we care about.
-
-A histogram graphically shows a distribution.
-
----
-# Histogram shows you a *distribution*
-
-Pivot Tablest demo
-[tinyurl.com/cse340-ipdata](https://tinyurl.com/cse340-ipdata)
-
---
-![:img Histogram of amount vs party, 40%](img/studies2/pivot2.png)
-
-
----
-# But having the right chart matters
-
-![:img Histogram of data about speed of pie menu selection and linear
-menu selection for each task type, 40%](img/studies2/histogram.png)
-
-
----
-# Normal Vs Pie
-
-|Normal | Pie|
-|--|--|
-|![:img Histogram of data about speed of pie menu selection and linear menu selection for each task type,100%](img/studies2/normal-only.png)|![:img Histogram of data about speed of pie menu selection and linear menu selection for each task type, 100%](img/studies2/pie-only.png)|
-
-The cause of the difference only shows here.
-
----
-
-# What do we learn from a histogram?
-
-![:img two distributions, 50%](img/studies2/samples1.png)
-
-???
-- shows a distribution
-- helps us tell if things are INDEPENDENT
-
----
-#  Histograms
-
-What do we learn from a histogram?
-- shows a distribution
-- helps us tell if things are INDEPENDENT
-
----
-# Comparing two groups
-
-![:img two distributions showing overlapping 95% confidence intervals,
-50%](img/studies2/samples2.png)
-
-
----
-# Comparing two groups
-
-![:img two distributions with less overlapping intervals (because more
-data is present), 50%](img/studies2/samples3.png)
-
----
-# Comparing two groups
-
-![:img two distributions with more data but overlapping histograms
-thus hard to differentiate, 50%](img/studies2/samples4.png)
-
----
-# Comparing two groups
-
-![:img two distributions with less overlapping intervals (because more
-data is present), 50%](img/studies2/samples5.png)
-
----
-# Comparing two groups
-
-![:img two distributions not overlapping at all, 50%](img/studies2/samples6.png)
-
----
-# Comparing two groups
-
-![:img same two distributions with difference between means marked as
-effect size, 50%](img/studies2/samples7.png)
-
----
-# Common Statistical Test for comparison: t-test
-
-Tests for difference between two samples
-
-Best used to determine what is ‘worthy of a second look’
-
-Limited in its applicability to normal, independent data
-
-Does not help to document effect size [the actual difference between groups], just effect likelihood
-
----
-.left-column[
-## Problems with t-tests
-
-The more implausible the hypothesis, the greater chance that it is a
-‘false alarm’
-]
-.right-column[
-![:img A picture of the likelihood of a positive t-test as influenced by
-priors (the expected likelihood of an outcome), 80%](img/studies2/priors.png)
-
-]
-???
-Top row: Prior (what's known to be true before the experiment)
-bottom row: Calculated p-value
-
-Notice the middle column, where something that is a toss-up has higher
-plausability than we would expect. This is a "Type 1 error"
-
-Alternatively, a small sample may cause a Type II error (failure to
-detect a true difference) due to random sampling bias
-
----
-.left-column[
-## Problems with t-tests
-]
-.right-column[
-- Doesn’t take prior knowledge into account
-- Susceptible to ‘data dredging’
- - The more tests you conduct the more likely you will find a result
-   even if one is not there
- - Adjustments mid experiment
-- Gives a yes or no answer: Either the null hypothesis is rejected (the result would be unlikely in a world where the null hypothesis was true) or it cannot be rejected
-- Based on assumed ‘average’ sample
-]
----
-# Which problems might affect our study?
-
-???
-Too many comparisons
---
-
-18 separate comparisons (3x3 conditions, 2 measures)
-
-ANOVA (**An**alysis **O**f **Va**riance): Fancy t-test that accounts for the whole group effect before
-doing pairwise comparisons
-
-???
-- Doesn’t take prior knowledge into account
-- Susceptible to ‘data dredging’
- - The more tests you conduct the more likely you will find a result
-   even if one is not there
- - Adjustments mid experiment
-- Gives a yes or no answer: Either the null hypothesis is rejected (the result would be unlikely in a world where the null hypothesis was true) or it cannot be rejected
-- Based on assumed ‘average’ sample
-
----
-# Demo of t-tests in our spreadsheet
-
-[20sp Sample data](https://docs.google.com/spreadsheets/d/1JqfKhHugIF-kebs_bVztCnkUe0CizXN8PU_Ar3kXtK4/edit?usp=sharing)
-
----
-.left-column[
-## Document what all of this in your [report]({{site.baseurl}}/assignments/menu-report)
-]
-.right-column[
-
-- Describe your hypothesis
-- Illustrate with graphs
-- Optional: use Table of results found in `Speed Analysis` and `Error Analysis` to describe Statistical Significance:
-
-`Pie menus were twice as fast as normal menus (M=.48s vs M=.83s), F(1,43)=295.891, p<.05. Unclassified menu items were harder to find than linear and relative ones (M=.84s, .59s, and .59s respectively), F(2,43)=93.778, p<0.5. We also found an interaction effect between menu and task (as illustrated in the chart above), F(5, 43) = 51.945, p<.001.`
-
-]
-
-
----
-# Drawing Conclusions
-
-<div class="mermaid" style="font-size:.5em">
-graph LR
-S(.) --> Hypothesis(Hypothesis:<br>Decreased seek <br>time and errors)
-Hypothesis -- "Study Design" --> Method(3 menus x <br> 3 task conditions )
-Method -- "Run Study" --> Data(Data)
-Data -- "Clean and Prep" --> Analysis(Analysis)
-Analysis --> Conclusions(Conclusions)
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:2.5em;
-classDef normalbig fill:#e6f3ff,stroke:#333,stroke-width:2px,font-size:.7em,height:4em;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:5em;
-classDef startsmall fill:#d1e0e0,stroke:#333,stroke-width:4px,font-size:.7em,height:2.5em;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:3px;
-linkStyle 1 stroke-width:3px;
-linkStyle 2 stroke-width:3px;
-linkStyle 3 stroke-width:3px;
-linkStyle 4 stroke-width:3px;
-
-class S invisible
-class Hypothesis start
-class Conclusions startsmall
-class Method normalbig
-class Data,Analysis normal
-</div>
-
-- Describe your hypothesis
-- Illustrate with graphs
-- Optional: Statistical Significance
-
-Draw Conclusions
-- Were errors less?
-- Was time faster?
-
-`Describe your conclusions. Do you think we should use pie menus more? What can we conclude from your data?`
-
-
----
-# Limitations of Laboratory Studies
-
-???
-Simulate real world environments
-- Location and equipment may be unfamiliar to participant [Coyne & Nielsen 2001]
-- Observation may effect performance - “Hawthorne Effect” [Mayo 1933]
-- Participant may become fatigued and not take necessary rest - “Demand Effect” [Orne 1962]
-- Tasks frequently artificial and repetitive, which may bore participants and negatively effect performance
-Studying real world use removes these limitations
-
---
-
-Simulate real world environments
-- Location and equipment may be unfamiliar to participant [Coyne & Nielsen 2001]
-- Observation may effect performance - “Hawthorne Effect” [Mayo 1933]
-- Participant may become fatigued and not take necessary rest - “Demand Effect” [Orne 1962]
-- Tasks frequently artificial and repetitive, which may bore participants and negatively effect performance
-Studying real world use removes these limitations
diff --git a/slides/wk08/undoSlides.html b/slides/wk08/undoSlides.html
deleted file mode 100644
index b70972746a79053d092664fadeed8c7a6bc968f3..0000000000000000000000000000000000000000
--- a/slides/wk08/undoSlides.html
+++ /dev/null
@@ -1,541 +0,0 @@
----
-layout: presentation
-title: Undo
-description: Why Undo/How Undo/What Undo
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Undo reasoning and implementation
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- Introduce need for Undo by reviewing mental models
-- Introduce Undo conceptually
-- Describe Implementation details for assignment
-
-
----
-.left-column[
-# Review: Every system has at least 3 different models
-]
-
-.right-column[
-<div class="mermaid">
-graph TD
-  S[System Image: <br>Your Implementation&nbsp;] --> |System Feedback&nbsp;| U[User Model: How the user thinks&nbsp; <br>the system works]
-  D[Design Model: How you <br>intend the system to work&nbsp;]-->S
-  U -->|User Feedback&nbsp;| S
-</div>
-
-]
-
----
-# Relating the Human and the Interaction
-
-
-.left-column-half[
-
-![img: Gym doors with few affordances of where you can open them and whether there is an accessible way to use the doors,10%](img/undo/gym-doors.png)
-
-]
-
---
-
-.right-column-half[
-![img: Don Norman's Human Action Cycle,10%](img/undo/norman-d-human-action-cycle.png)
-]
-
-.footnote[[Don Norman, When Three World Collide: A model of the Tangible Interaction Process, 2009](https://www.researchgate.net/publication/221332102_When_three_worlds_collide_A_model_of_the_tangible_interaction_process)]
-
-???
-Note to instructors: Need to change image  to mermaid
-
-
----
-# Relating the Human and the Interaction
-
-
-.left-column-half[
-<br>
-<br>
-
-**Gulf of Execution** is the user's believe in the functions the system _doesn't have_
-  - This is the users 'error' region
-
-**Gulf of Evaluation** is where the user _doesn't realize the system HAS a functionality_.
-]
-
-
-.right-column-half[
-![img: Don Norman's Human Action Cycle,10%](img/undo/norman-d-human-action-cycle.png)
-]
-
----
-
-# Model of Mental Models
-
-.left-column50[
-![:img A box showing the design (white),100%](img/undo/mental1.png)
-]
----
-# Model of Mental Models
-
-.left-column50[
-![:img A box showing the design (white) and actual function (blue missing a little bit of the white),100%](img/undo/mental2.png)
-]
----
-# Model of Mental Models
-
-.left-column50[
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System Functionality",100%](img/undo/mental3.png)
-]
----
-# Model of Mental Models
-
-.left-column50[
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System Functionality",100%](img/undo/mental4.png)
-]
-
----
-# Model of Mental Models
-
-.left-column50[
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System
-Functionality" a dark blue cloud labeled "Occasionally Used Part of
-System Functionality" around the user's well understood region,100%](img/undo/mental5.png)
-]
-
----
-# Model of Mental Models
-
-.left-column50[
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System
-Functionality" a dark blue cloud labeled "Occasionally Used Part of
-System Functionality" around the user's well understood region and
-another cloud further out with errors (regions outside the blue system
-box) labeled "Users full model of what the system does",100%](img/undo/mental6.png)
-]
-
-???
-- Where are the gulf of evaluation and gulf of execution in this
-  image?
-- Gulf of execution is the user 'error' region (user requests
-  function the __system DOESNT HAVE__), gulf of
-  evaluation is when the user __doesn't realize the system HAS a
-  functionality__.
-
-- How does undo help the user bridge them?
-
---
-.right-column50[
-<br>
-<Br>
-**Gulf of Execution** is the user's believe in the functions the system _doesn't have_
-  - This is the users 'error' region
-
-**Gulf of Evaluation** is where the user _doesn't realize the system HAS a functionality_.
-]
-
----
-# Model of Mental Models
-
-
-.left-column50[
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System
-Functionality" a cloud further out with errors (regions outside the blue system
-box) and an arrow pointing from the part they really understand to the part outside
-of the application,100%](img/undo/mental7.png)
-]
-.right-column50[
-What happens when the user does something they think is core but is really not supported?
-]
-
-???
-
-(Undo is needed)
---
-.right-column50[
-Undo helps with this
-]
-
----
-class: center, middle, inverse
-
-# How do we support Undo?
-
----
-layout:false
-
-.left-column-half[
-## Remember this?
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface, 100%](img/undo/callbacks.png)]
-.right-column-half[
-Dispatch Strategies
-- Bottom-first and top-down positional
-- Focus-based
-
-State Machine describes *within-view* response to events
-]
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface and a do_action() call
-happening below the line in response to a button_pressed(), 100%](img/undo/callbacks2.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-
-]
-
----
-.left-column-half[
-## Event Dispatch
-
-![:img Picture of interactor hierarchy connected to an interface and a
-dotted line indicating application interface with do_action() replaced
-with an actionListener, 100%](img/undo/callbacks3.png)]
-.right-column-half[
-Callbacks handle *application* response to events
-- Update Application Model
-- Best implemented using custom listeners
-
-]
----
-# What is `ActionPerformed`?
-`Higher level` input event (`Command` or `Action` object)
- - Puts some  separation between UI and translation objects
- - Application (or UI) can ‘listen’ for these events:
-
-Key advantage: interactors don’t need to know who/what got notification
-
-Same basic flow as simple callbacks
----
-# What should an Action object do?
-`doAction()`
-
-???
-seems like a lot of work when we could just directly do the
-action. Major reason for action objects
---
-`undoAction()`
-
-???
-What additional information do we need to undo an action?
-
----
-.left-column[
-## Advantages of an action object
-- can be stored on an undo stack
-- can create a consistent abstraction for reversing an action
-]
-.right-column[
-<div class="mermaid">
-classDiagram
-
-AbstractAction <|.. AbstractReversibleAction
-AbstractReversibleAction <|.. ChangeColorAction
-AbstractReversibleAction <|.. ChangeThicknessAction
-AbstractReversibleAction <|.. AbstractReversibleViewAction
-AbstractReversibleViewAction <|.. StrokeAction
-
-class AbstractAction {
-  doAction()
-}
-
-class AbstractReversibleAction {
-  +boolean done
-  +undoAction
-}
-
-class AbstractReversibleViewAction  {
-  +invalidate
-}
-
-
-</div>
-]
----
-# Where do we store actions? A stack
-
-.left-column50[
-<div class="mermaid">
-classDiagram
-
-AbstractStackHistory <|.. StackHistory
-class AbstractStackHistory {
-  addAction(AbstractReversibleAction action)
-  undo()
-  redo()
-  canUndo()
-  canRedo()
-}
-
-class StackHistory {
-   +capacity: "Max stack size"
-}
-
-
-</div>
-]
-.right-column50[
-Why a stack?
-]
-
-???
-Consider having some volunteers be actions and have them act it out?
----
-.left-column[
-## Undo and Redo]
-.right-column[
-1) new action object created and `doAction()` called
-
-2) Undo stack updated
-
-3) new action object created and `doAction()` called
-
-4) Undo stack updated
-
-5) `undo()` invoked
-
-6) Undo stack reduced and Redo stack increased
-
-7) `undo()` invoked
-
-8) Undo stack reduced and Redo stack increased
-]
-???
-draw sequence
----
-.left-column[
-## Undo and Redo]
-.right-column[
-9) `redo()` invoked
-
-10) Redo stack decreased and Undo stack increased
-
-11) new action object created and `doAction()` called
-
-12) Redo stack cleared and Undo stack stack increased
-]
----
-.left-column[
-## What if an action can't be undone?]
-.right-column[
-Actions that put system into a totally different context
-
-Clear both `undo` *and* `redo` stacks! Users may hate you]
-???
-example? Saving a file
----
-.left-column[
-## Implementing `undo()`
-]
-.right-column[
-
-System pops action off undo stack
-
-Calls `undoAction()` method on it
-
-Pushes it on redo stack
-]
----
-.left-column[
-## Why is `undoAction()` hard?
-]
-.right-column[
-Two ways to implement:
-
-- *Direct Code* (each action object has custom code)
- - Need parameters of original action
- - Better store in `doAction()` for later
- - This is what we will implement
-]
----
-.left-column[
-## Why is `undoAction()` hard?
-]
-.right-column[
-Two ways to implement:
-
-- *Direct Code* (each action object has custom code)
-- *Change Records* (Keep a record of the “old value” for everything
-changed by the application, then put all those values back to undo)
- - Like some version control systems
- - More general
- - Takes more space
- - `Action` object records `ChangeRecord` (changes which are abstracted into a
- common data format)
- - Application has to provide code to restore from change records
-]
----
-
-.left-column[
-## Implementing `redo()`
-]
-.right-column[
-
-System pops action off redo stack
-
-Calls `doAction()` method
-
-Pushes it on undo stack
-]
----
-.left-column[
-## More sophisticated forms of Undo
-]
-.right-column[
-Explicit visualization of steps
-
-Manipulation of action list
-
-Delete actions from the middle, reorder, etc.
-by undoing back to point of change then redoing forward
-
-But note: doAction() must be able to work in new context
-]
-
----
-.left-column[
-## Flatland: Semantic Undo
-
-![:img Picture of a map with multiple edits including deleting and adding roads,100%](img/undo/flatland-roads.png)
-]
-.right-column[
-![:img Picture of an undo history with a transaction stack that
-represents causality in a timeline, 80%](img/undo/flatland.png)
-]
-.footnote[
-Edwards, W. K. ; Igarashi, T. ; LaMarca, A .; Mynatt, E. D. A temporal model for multi-level undo and redo. UIST 2000, Proceedings of 13th Annual ACM Symposium on User Interface Software and Technology; 2000 November 5-8; San Diego, CA. NY: ACM; 2000; 31-40.
-]
----
-
-# Discussion of assignment
-
-Android Goals:
-- Be able to understand and modify an existing user interface
-  - Learn about floating action buttons
-  - Implement core data structure for Undo
-
-HCI Goals
-  - Modify and existing app in a consistent fashion
-  - Make your modifications accessible
-  - Make your modifications usable
-  - Use heuristic evaluation to assess an app
-
----
-# Discussion of assignment
-
-.left-column-half[
-![:youtube Video of assignment, F5FyW3YJ0x4]
-]
-.right-column-half[
-![:youtube Video of assignment, NhUE7GgH-vc]
-]
----
-
-# Discussion of assignment
-
-.left-column[
-First time you are modifying a fully working program
-
-Lots to explore/understand e.g. FAB buttons)
-]
---
-.right-column[
-<div class="mermaid">
-graph TD
-M[ReversibleDrawingActivity] --> D[DrawingView]
-M --> FUndo[FAB:Undo]
-M --> FRedo[FAB:Redo]
-M --> FColor[FAB:Color]
-M --> FThick[FAB:Thickness]
-FColor --> Red[Red]
-FColor --> Green[Green]
-FColor --> Blue[Blue]
-FThick --> Thin[Thin]
-FThick --> Med[Med]
-FThick --> Thick[Thick]
-
-
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-
-class M,D,FColor,FThick,Vis start
-class Red,Green,Blue,Thin,Med,Thick,Hid normal
-
-</div>
-]
-
----
-
-# Discussion of assignment
-
-.left-column[
-DrawingView: Holds strokes
-
-FABs:
-- Green ones are always visible
-- Purple ones are only visible when active
-]
-.right-column[
-<div class="mermaid">
-graph TD
-M[ReversibleDrawingActivity] --> D[DrawingView]
-M --> FUndo[FAB:Undo]
-M --> FRedo[FAB:Redo]
-M --> FColor[FAB:Color]
-M --> FThick[FAB:Thickness]
-FColor --> Red[Red]
-FColor --> Green[Green]
-FColor --> Blue[Blue]
-FThick --> Thin[Thin]
-FThick --> Med[Med]
-FThick --> Thick[Thick]
-
-
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-
-class M,D,FColor,FThick,Vis start
-class Red,Green,Blue,Thin,Med,Thick,Hid normal
-
-</div>
-]
-
----
-# Code deliverables
-
-There are five parts for the coding part of this assignment:
-- Part 1: Implement `ChangeThicknessAction`
-- Part 2: Implement history
-- Part 3: Add a thickness 0 FAB to the thickness menu
-- Part 4: Integrate colorpicker
-- Part 5: Add a new feature to your app. Make sure it is accessible
-
-Later we will learn how to do a Heuristic Evaluation of the application!
----
diff --git a/slides/wk09/cse340-guestlecture-6mar20.pdf b/slides/wk09/cse340-guestlecture-6mar20.pdf
deleted file mode 100644
index 39501853fe68c732f784a87d25cbdac6eb0305de..0000000000000000000000000000000000000000
Binary files a/slides/wk09/cse340-guestlecture-6mar20.pdf and /dev/null differ
diff --git a/slides/wk09/cse340-guestlecture-june5.pdf b/slides/wk09/cse340-guestlecture-june5.pdf
deleted file mode 100644
index c9fec37970d9b5a6628e2ac6f1f25f9051d1c6f8..0000000000000000000000000000000000000000
Binary files a/slides/wk09/cse340-guestlecture-june5.pdf and /dev/null differ
diff --git a/slides/wk09/cse340-guestlecture-june5.pptx b/slides/wk09/cse340-guestlecture-june5.pptx
deleted file mode 100644
index 5aa95362a0a3a4368955c03c44be87556be67560..0000000000000000000000000000000000000000
Binary files a/slides/wk09/cse340-guestlecture-june5.pptx and /dev/null differ
diff --git a/slides/wk09/cse340-guestlecture-mar20.pptx b/slides/wk09/cse340-guestlecture-mar20.pptx
deleted file mode 100644
index fbc9c5897ac891f951fe38abb89751e8adee3435..0000000000000000000000000000000000000000
Binary files a/slides/wk09/cse340-guestlecture-mar20.pptx and /dev/null differ
diff --git a/slides/wk09/img/ml/Carat.jpg b/slides/wk09/img/ml/Carat.jpg
deleted file mode 100644
index 2d065755d3b2be286049076e52bab07548de114c..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/Carat.jpg and /dev/null differ
diff --git a/slides/wk09/img/ml/aipoly.jpg b/slides/wk09/img/ml/aipoly.jpg
deleted file mode 100644
index 9dcd75d04cd8002753683644bf253bf79fe62270..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/aipoly.jpg and /dev/null differ
diff --git a/slides/wk09/img/ml/bias.png b/slides/wk09/img/ml/bias.png
deleted file mode 100644
index 531eaaacd795fb9587d2d21e8cc58dfff031dbdd..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/bias.png and /dev/null differ
diff --git a/slides/wk09/img/ml/captioning.png b/slides/wk09/img/ml/captioning.png
deleted file mode 100644
index 2397234b76fe9605470d62ff287a2de4eb11d945..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/captioning.png and /dev/null differ
diff --git a/slides/wk09/img/ml/cross-validation.png b/slides/wk09/img/ml/cross-validation.png
deleted file mode 100644
index 8aaa3c2816b91dc8af0605c35eafd004639ea150..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/cross-validation.png and /dev/null differ
diff --git a/slides/wk09/img/ml/decisiontree.png b/slides/wk09/img/ml/decisiontree.png
deleted file mode 100644
index d70048fd94c67ba4dee4947494266980e412b2d8..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/decisiontree.png and /dev/null differ
diff --git a/slides/wk09/img/ml/gma.png b/slides/wk09/img/ml/gma.png
deleted file mode 100644
index 23af5ef8b20de432e227898a9ab4a1009be9ef7e..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/gma.png and /dev/null differ
diff --git a/slides/wk09/img/ml/google.jpg b/slides/wk09/img/ml/google.jpg
deleted file mode 100644
index 9ca6ebdcd0269a225d5f26b29cd3172cab0bc0ec..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/google.jpg and /dev/null differ
diff --git a/slides/wk09/img/ml/imprompdo.jpg b/slides/wk09/img/ml/imprompdo.jpg
deleted file mode 100644
index f13f4a3d85c7c38638cc6dc19db26a873f91b56a..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/imprompdo.jpg and /dev/null differ
diff --git a/slides/wk09/img/ml/leafsnap.jpg b/slides/wk09/img/ml/leafsnap.jpg
deleted file mode 100644
index a2149f1b9c60dd72c85e3444a4a2ede49cadc16e..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/leafsnap.jpg and /dev/null differ
diff --git a/slides/wk09/img/ml/mixed-initiative.png b/slides/wk09/img/ml/mixed-initiative.png
deleted file mode 100644
index 10c04f554bac0b6a8878ef0a7542df53f957a7fe..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/mixed-initiative.png and /dev/null differ
diff --git a/slides/wk09/img/ml/mixed2.png b/slides/wk09/img/ml/mixed2.png
deleted file mode 100644
index 871799ee6f4b116a68e7c0497555ec085f1d3b0e..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/mixed2.png and /dev/null differ
diff --git a/slides/wk09/img/ml/mixed3.png b/slides/wk09/img/ml/mixed3.png
deleted file mode 100644
index c1eca8c22e65eb1b9dd1ee66dd1a21e958147527..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/mixed3.png and /dev/null differ
diff --git a/slides/wk09/img/ml/overfitting.png b/slides/wk09/img/ml/overfitting.png
deleted file mode 100644
index f2ea67e6880780c274e3412b7f55502e93addeb8..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/overfitting.png and /dev/null differ
diff --git a/slides/wk09/img/ml/personal.png b/slides/wk09/img/ml/personal.png
deleted file mode 100644
index 82aa0ec0763dd8ad334e7be7ef83f71320a09d7a..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/personal.png and /dev/null differ
diff --git a/slides/wk09/img/ml/phone-bed.jpg b/slides/wk09/img/ml/phone-bed.jpg
deleted file mode 100644
index a423153082a753ab1aa2339bf9a812425e61b313..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/phone-bed.jpg and /dev/null differ
diff --git a/slides/wk09/img/ml/regression.png b/slides/wk09/img/ml/regression.png
deleted file mode 100644
index 0eae144ec64759e55fd8b06746ec19badc0a6e94..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/regression.png and /dev/null differ
diff --git a/slides/wk09/img/ml/sleep.png b/slides/wk09/img/ml/sleep.png
deleted file mode 100644
index 07a49fdb1c7fc4aefcd1ba7b724119b676406a2b..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/sleep.png and /dev/null differ
diff --git a/slides/wk09/img/ml/training.png b/slides/wk09/img/ml/training.png
deleted file mode 100644
index 14ec13e5b4f92746066ac21d64dd9b1b7546abec..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/training.png and /dev/null differ
diff --git a/slides/wk09/img/ml/wrong.png b/slides/wk09/img/ml/wrong.png
deleted file mode 100644
index 93a3549c8ba3f42058bdb1a81406047116eede35..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/ml/wrong.png and /dev/null differ
diff --git a/slides/wk09/img/web/animated-skeleton.gif b/slides/wk09/img/web/animated-skeleton.gif
deleted file mode 100644
index 366149f29f99f2b3e1d4d54e06c924a311541e9d..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/animated-skeleton.gif and /dev/null differ
diff --git a/slides/wk09/img/web/bones.png b/slides/wk09/img/web/bones.png
deleted file mode 100644
index cc36a5c3f74cd446cf3d07c1161312142397b96e..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/bones.png and /dev/null differ
diff --git a/slides/wk09/img/web/chrome-inspector.png b/slides/wk09/img/web/chrome-inspector.png
deleted file mode 100644
index 3a9aba34636e7d5284d4661e78f990174eaf3e26..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/chrome-inspector.png and /dev/null differ
diff --git a/slides/wk09/img/web/dom.png b/slides/wk09/img/web/dom.png
deleted file mode 100644
index 3dacc41a64334e458ac2f0ada02bc389d5a51718..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/dom.png and /dev/null differ
diff --git a/slides/wk09/img/web/dressed-skeleton.png b/slides/wk09/img/web/dressed-skeleton.png
deleted file mode 100644
index 2b18695ab67f05bf90ea1c599dc776a8f5efd726..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/dressed-skeleton.png and /dev/null differ
diff --git a/slides/wk09/img/web/flexbox.png b/slides/wk09/img/web/flexbox.png
deleted file mode 100644
index 40282210afae036fca7ee7d1fded5d6110b30650..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/flexbox.png and /dev/null differ
diff --git a/slides/wk09/img/web/full-skeleton.png b/slides/wk09/img/web/full-skeleton.png
deleted file mode 100644
index fa79f9691d037b698ac6193350f511b9645b9600..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/full-skeleton.png and /dev/null differ
diff --git a/slides/wk09/img/web/spottheheron-android.gif b/slides/wk09/img/web/spottheheron-android.gif
deleted file mode 100644
index 8cd77214db5c25fd769b05592c908e9040d836f4..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/spottheheron-android.gif and /dev/null differ
diff --git a/slides/wk09/img/web/spottheheron-web.gif b/slides/wk09/img/web/spottheheron-web.gif
deleted file mode 100644
index e47b7cc3794bb9c70009e8f46bbb31a43b893330..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/spottheheron-web.gif and /dev/null differ
diff --git a/slides/wk09/img/web/spottheheronscreen.png b/slides/wk09/img/web/spottheheronscreen.png
deleted file mode 100644
index 95458745f69650794ec867b65ab98cf1eb0747b9..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/spottheheronscreen.png and /dev/null differ
diff --git a/slides/wk09/img/web/viewpagesource.png b/slides/wk09/img/web/viewpagesource.png
deleted file mode 100644
index bf7a54811f5104150016f0773e6d07c7b2170880..0000000000000000000000000000000000000000
Binary files a/slides/wk09/img/web/viewpagesource.png and /dev/null differ
diff --git a/slides/wk09/ml.html b/slides/wk09/ml.html
deleted file mode 100644
index 772a7fbddbb5985f3721fcd2605b3e9d3b196d47..0000000000000000000000000000000000000000
--- a/slides/wk09/ml.html
+++ /dev/null
@@ -1,671 +0,0 @@
----
-layout: presentation
-title: Using Mobile Phones for Machine Learning
-description: Using Mobile Phones for Machine Learning
-class: middle, center, inve
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Google maps
-
-![![:img google maps,100%](img/ml/google.jpg)](img/ml/google.jpg)
-
-
-.footnote[Picture from [Machine Learning on your Phone](https://www.appypie.com/top-machine-learning-mobile-apps)]
-
-???
-fame/shame
-neighborhood traffic...
-shorter commutes...
----
-# Machine Learning and your Phone
-
-Jennifer Mankoff
-
-CSE 340 {{site.quarter}}
-
-.footnote[Slides credit: Jason Hong, Carnegie Mellon University
- [Are my Devices Spying on Me? Living in a World of
-Ubiquitous
-Computing](https://www.slideshare.net/jas0nh0ng/are-my-devices-spying-on-me-living-in-a-world-of-ubiquitous-computing);
-]
-
----
-layout: false
-
-.left-column[
-## Smartphones are Intimate Fun Facts about Millennials
-
-![:fa thumbs-down] 83% sleep with phones
-]
-.right-column[
-![:img Millenial with phone in bed, 100%](img/ml/phone-bed.jpg)
-]
----
-.left-column[
-## Smartphones are Intimate Fun Facts about Millennials
-
-![:fa thumbs-down] 83% sleep with phones
-
-![:fa thumbs-down]  90% check first thing in morning
-]
-.right-column[
-![:img Millenial with phone in bed, 100%](img/ml/phone-bed.jpg)
-]
----
-.left-column[
-## Smartphones are Intimate Fun Facts about Millennials
-
-![:fa thumbs-down] 83% sleep with phones
-
-![:fa thumbs-down] 90% check first thing in morning
-
-![:fa thumbs-down]  1 in 3 use in bathroom
-
-]
-.right-column[
-![:img Millenial with phone in bed, 100%](img/ml/phone-bed.jpg)
-
-]
----
-# Smartphone Data is Intimate
-
-![:img Picture of smart phone screens with phone numbers; map; and sensor data, 60%](img/ml/personal.png)
-
-| Who we know           | Sensors               | Where we go   |
-|-----------------------|-----------------------|---------------|
-| (contacts + call log) | (accel, sound, light) | (gps, photos) |
-
----
-# Some useful applications of this data
-
-![:img Picture of LeafSnap app, 60%](img/ml/leafsnap.jpg)
-
-.footnote[[LeafSnap](http://leafsnap.com/) uses computer vision to
-identify trees by their leaves]
-
----
-# Some useful applications of this data
-
-![:img Picture of Aipoly app, 60%](img/ml/aipoly.jpg)
-
-.footnote[[Vision AI](https://www.aipoly.com/) uses computer vision to
-identify images for the Blind and Visually Impaired]
-
----
-# Some useful applications of this data
-
-![:img Picture of Carat app, 60%](img/ml/Carat.jpg)
-
-.footnote[[Carat: Collaborative Energy
-Diagnosis](http://carat.cs.helsinki.fi/) uses machine learning to save
-battery life]
----
-# Some useful applications of this data
-
-![:img Picture of Imprompdo app, 50%](img/ml/imprompdo.jpg)
-
-.footnote[[Imprompdo](http://imprompdo.webflow.io/
-) uses machine learning to recommend activities to do, both fund and todos]
----
-# How do these systems work?
-
-
-Machine Learning is used to make these kinds of predictions 
-- Machine learning is one area of Artificial Intelligence 
-- This is the kind that’s been getting lots of press 
-
-The goal of machine learning is to develop systems that can improve
-performance with more experience 
-- Can use "example data" as "experience"
-- Uses these examples to discern patterns 
-- And to make predictions
----
-# Two main approaches
-
-![:fa eye] *Supervised learning* (we have lots of examples of what should be
- predicted)
- 
-![:fa eye-slash] *Unsupervised learning* (e.g. clustering into groups and inferring what
-they are about)
-
-![:fa low-vision] Can combine these (semi-supervised)
-
-![:fa history]  Can learn over time or train up front
-
----
-.left-column[
-## In class exercise
-
-![:fa bed, fa-7x] 
-]
-.right-column[
-How might you recognize sleep?
-
-- What recognition question
-- What sensors
-]
-???
-
-(sleep quality? length?...)
-
-How to interpret sensors?
-
----
-.left-column[
-## In class exercise
-
-- What recognition question (sleep quality? length?...)
-- What sensors
-- How to interpret sensors?
-]
-.right-column[
-![:img Sleep trace for accelerometer and sound, 80%](img/ml/sleep.png)
-]
-
----
-# How do we program this?
-
-Write down some rules
-
-Implement them
-
----
-# ML is a major shift in thinking
-
-Old Approach: Create software by hand
-- Use libraries (like JQuery) and frameworks
-- Create content, do layout, code up functionality
-- Deterministic (code does what you tell it to)
-
-New Approach: Collect data and train algorithms
-- Will still do the above, but will also have some functionality based
-on ML 
-- *Collect lots of examples and train a ML algorithm*
-- *Statistical way of thinking*
-
----
-# How Machine Learning is Typically Used
-
-Step 1: Gather lots of data (easy on a phone!)
---
-
-Step 2: Figure out useful features
-- Convert data to information (not knowledge!)
-- (typically) Collect labels
-
----
-# How Machine Learning is Typically Used
-
-Step 1: Gather lots of data (easy on a phone!)
-
-Step 2: Figure out useful features
-
-Step 3: Select and train the ML algorithm to make a prediction
-- Lots of toolkits for this
-- Lots of algorithms to choose from
-- Mostly treat as a "black box" 
-
----
-# Example: Decision tree for predicting premature birth
-
-![:img decision tree, 50%](img/ml/decisiontree.png)
-
-
----
-# Examwple: Deep Learning for Image Captioning
-
-![:img Captioning Images. Note the errors,
-40%](img/ml/captioning.png)
-
-.footnote[[Captioning images. Note the
-errors.](http://cs.stanford.edu/people/karpathy/deepimagesent/) Deep
-learning now
-[available on your phone!](https://www.tensorflow.org/lite)]
-
-???
-Note differences between these: one label vs many
----
-# Training process
-
-![:img ML Training Process, 60%](img/ml/training.png)
-
----
-# How Machine Learning is Typically Used
-
-Step 1: Gather lots of data (easy on a phone!)
-
-Step 2: Figure out useful features
-
-Step 3: Select and train the ML algorithm
-
-Step 4: Evaluate metrics (and iterate)
-
-???
-See how well algorithm does using several metrics
-Error analysis: what went wrong and why
-Iterate: get new data, make new features
----
-# Evaluation Concerns
-
-Accuracy: Might be too error-prone
-
----
-.left-column[
-## Assessing Accuracy]
-.right-column[
-
-Prior probabilities
-- Probability before any observations (ie just guessing)
-- Ex. ML classifier to guess if a person is male or female based on name
- - Just assume all names are female (50% will be right)
-- Your trained model needs to do better than prior
-
-Other baseline approaches
-- Cheap and dumb algorithms
-- Ex. Names that end in vowel are female
-- Your model needs to do better than these too
-]
-
-???
-We did this to study gender's impact on academic authorship; doctors reviews
-
----
-.left-column[
-## Assessing Accuracy]
-
-.right-column[
-Don't just measure accuracy (percent right)
-
-Sometimes we care about *False positives* vs *False negatives*
-]
----
-.left-column[
-## Assessing Accuracy
-
-## Confusion matrix helps show this]
-
-.right-column[
-
-|             |              | .red[Prediction]     |                      |
-|-------------|--------------|----------------------|----------------------|
-|             |              | **Positive**         | **Negative**         |
-| .red[Label] | **Positive** | True Positive (good) | False Negative (bad) |
-|             | **Negative** | False Positive (bad) | True Negative (good) |
-
-Accuracy is (TP + TN) / (TP + FP + TN + FN)
-
-]
----
-.left-column[
-## Assessing Accuracy
-
-## Precision
-]
-
-.right-column[
-
-|             |              | .red[Prediction]           |                      |
-|-------------|--------------|----------------------------|----------------------|
-|             |              | **Positive**               | **Negative**         |
-| .red[Label] | **Positive** | .red[True Positive (good)] | False Negative (bad) |
-|             | **Negative** | .ref[False Positive (bad)] | True Negative (good) |
-
-Precision = TP / (TP+FP)
-
-Intuition: Of the positive items, how many right?
-
-]
-
----
-.left-column[
-## Assessing Accuracy
-
-## Recall
-]
-.right-column[
-
-|        |              | Prediction                 |                            |
-|--------|--------------|----------------------------|----------------------------|
-| Actual |              | **Positive**               | **Negative**               |
-|        | **Positive** | .red[True Positive (good)] | .red[False Negative (bad)] |
-|        | **Negative** | False Positive (bad)       | True Negative (good)       |
-
-Recall = TP / (TP+FN)
-
-Intuition: Of all things that should have been positive, how many actually labeled correctly?
-]
-
----
-# Evaluation Concerns
-
-Accuracy: Might be too error-prone
-
-Overfitting: Your ML model is too specific for data you have
-- Might not generalize well
-
-![:img overfitting, 40%](img/ml/overfitting.png)
-
----
-# Avoiding Overfitting
-
-
-To avoid overfitting, typically split data into training set and test set
-
-Train model on training set, and test on test set
-
-Often do this through cross validation
-
-![:img cross validation, 40%](img/ml/cross-validation.png)
-
-
-
-
----
-# How Machine Learning is Typically Used
-
-Step 1: Gather lots of data (easy on a phone!)
-
-Step 2: Figure out useful features
-
-Step 3: Select and train the ML algorithm
-
-Step 4: Evaluate metrics (and iterate)
-
-Step 5: Deploy
----
-# What makes this work well?
-
-Typically more data is better
-
-Accurate labels important
-
-Quality of features determines quality of results
-
-.red[*NOT* as sophisticated as the media makes out]
---
-
-.red[*BUT* can infer all sorts of things]
----
-# AI / Machine Learning Not As Sophisticated as in Media
-
-
-A lot of people outside of computer science often ascribe human
-behaviors to AI systems 
-- Especially desires and intentions 
-- Works well for sci-fi, but not for today or near future 
-
-These systems only do: 
-- What we program them to do 
-- What they are trained to do (based on the (possibly biased) data) 
----
-# Concerns
-
-Significant Societal Challenges for Privacy
----
-.left-column[
-## Wide Range of Privacy Risks]
-.right-column[
-
-| Everyday Risks     | Medium Risk         | Extreme Risks     |
-|--------------------|---------------------|-------------------|
-| Friends, Family    | Employer/Government | Stalkers, Hackers |
-| Over-protection    | Over-monitoring     | Well-being        |
-| Social obligations | Discrimination      | Personal safety   |
-| Embarrassment      | Reputation          | Blackmail         |
-|                    | Civil Liberties     |                   |
-
-- It's not just Big Brother 
-- It-s not just corporations 
-- Privacy is about our relationships with every other individual and
-  organization out there
-  
-]
----
-# Five Reasons Why Privacy is Hard
-
-### 1 Strong Incentives to for Companies to Collect Data 
-### 2 Low Knowledge, Awareness, Motivation by Devs 
-### 3 Companies Get Little Pushback on Privacy 
-### 4 Unclear What the Right Thing To Do Is 
-### 5 Burden on End-Users is Too High 
-
-???
-- Barriers to collecting data are also really low 
-- More data means better predictive models 
-- Many developers don’t realize how much data their app is collecting (Or that it was collecting data at all)
- - In one study, over 40% of apps collect data only because of these  libraries
-- Lack of info means privacy does not influence customer purchases. Less than 0.1% of reviews on Google Play mention privacy concerns 
-- Individuals also   have to make too many decisions 
----
-# Concerns
-
-Significant Societal Challenges for Privacy
-
-Who should have the initiative?
-
----
-# Mixed-initiative interfaces
-
-Basically, who is in charge?
-- Does person initiate things? Or computer?
-- How much does computer system do on your behalf?
-
-Example: Autonomous vehicles
-- Some people think Tesla autopilot is full autonomous, leads to risky actions
-
-Why initiative matters
-- Potential major shift: instead of direct manipulation, some smarts (intelligent agent) for automation
----
-.left-column50[
-## Mixed-initiative best practices
-- Significant value-added automation
-- Considering uncertainty
-- Socially appropriate interaction w/ agent
-- Consider cost, benefit, uncertainty
-- Use dialog to resolve uncertainty
-- Support direct invocation and termination
-- Remember recent interactions
-]
-.right-column50[
-
-![:img mixed initiative figure, 100%](img/ml/mixed-initiative.png)
-]
----
-.left-column50[
-## Mixed-initiative best practices
-- Significant value-added automation
-- Considering uncertainty
-- Socially appropriate interaction w/ agent
-- Consider cost, benefit, uncertainty
-- Use dialog to resolve uncertainty
-- Support direct invocation and termination
-- Remember recent interactions
-]
-.right-column50[
-
-![:img mixed initiative figure, 100%](img/ml/mixed2.png)
-]
-???
-Can see what agent is suggesting, in terms of scheduling a meeting
-
----
-.left-column50[
-## Mixed-initiative best practices
-- Significant value-added automation
-- Considering uncertainty
-- Socially appropriate interaction w/ agent
-- Consider cost, benefit, uncertainty
-- Use dialog to resolve uncertainty
-- Support direct invocation and termination
-- Remember recent interactions
-]
-.right-column50[
-
-![:img mixed initiative figure, 100%](img/ml/mixed3.png)
-]
-???
-Uses anthropomorphized aganet
-Uses speech for input
-Uses mediation to help resolve conflict
----
-.left-column[
-## Mixed-initiative best practices
-]
-
-.right-column[
-Built-in cost-benefit model in system
-- If perceived benefit >> cost, then do the action
-- Otherwise wait
-
-Note that this is just one point in design space (1999), and still lots of open questions
-- Ex. Should “intelligence” be anthropomorphized?
-- Ex. How to learn what system can and can’t do?
-- Ex. What kinds of tasks should be automated / not?
-- Ex. What are strategies for showing state of system?
-- Ex. What are strategies for preventing errors?
-]
----
-
-# Concerns
-
-Significant Societal Challenges for Privacy
-
-Who should have the initiative?
-
-Bias in Machine Learning
----
-background-image: url(img/ml/gma.png)
-
-
-.quote[Johnson says his jaw dropped when he read one of the reasons American
-Express gave for lowering his credit limit:  
-
-![:fa quote-left] Other customers who have used their card at establishments
-where you recently shopped have a poor repayment history with American
-Express.
-]
----
-.right-column[
-
-![:img bias figure, 60%](img/ml/bias.png)
-]
----
-
-# Concerns
-
-Significant Societal Challenges for Privacy
-
-Who should have the initiative?
-
-Bias in Machine Learning
-
-Understanding ML
----
-# Understanding what is going on: Forming Mental Models
-
-How does a system know I am addressing it?
-
-How do I know a system is attending to me?
-
-When I issue a command/action, how does the system know what it relates to?
-
-How do I know that the system correctly understands my command and correctly executes my intended action?
-
-.footnote[
-Belloti et al., CHI 2002 ‘Making Sense of Sensing’
-]
----
-# Wrong location-based rec
-
-
-![:img wrong, 60%](img/ml/wrong.png)
-???
-Why did it not tell me about the Museum? How does it determine my location? 
-Providing explana7ons to these ques7ons can make Intelligent systems Intelligible 
-
-other examples: caregiving hours by insurance company, etc
-
----
-# Types of feedback
-
-Feedback: crucial to user’s understanding of how a system works and helping guide future action 
-- What did the system do?
-- What if I do W, what will the system do? 
-- Why did the system do X?
-- Why did the system not do Y
-- How do I get the system to do Z? 
----
-# Summary ML and ethics
-
-ML is powerful (but not perfect), often better than heuristics
-
-Basic approach is collect data, train, test, deploy
-
-Hard to understand what algorithms are doing (transparency)
-- ML algorithms just try to optimize, but might end up finding a proxy for race, gender, computer, etc
-- But hard to inspect these algorithms
-- Still a huge open question
-
-Privacy
-- How much data should be collected about people?
-- How to communicate this to people?
-- What kinds of inferences are ok?
-
----
-# End of deck
-
----
-.left-column[
-## Regression
-
-![:img Example of regression, 100%](img/ml/regression.png)
-]
-.right-column[
-Predicting a *continuous value* based on inputs
-- Ex. House price based on #rooms, #bathrooms, etc
-- Ex. #views based on page content
-
-Simple example: linear regression
-- Same as in statistics
-- Seeks to minimize errorin predictions
-
-Lots of algorithms
-- See Wikipedia
-]
-
----
-
-.left-column[
-## Example classification algorithms]
-.right-column[
-Naïve Bayes (probabilities)
-
-Neural Networks / Deep Learning (human brain)
-
-**Decision Tree (workflow)**
-
-Support Vector Machine (analogy / similarity)
-
-]
-
----
-.left-column[
-## Classification
-]
-.right-column[
-Predicting from a *set of categories*
-- Ex. {Spam, Ham}?
-- Ex. {Chalupa, Taco, Burrito}?
-
-Lots of variants
-- Multi-class (the examples above)
-- One-class (identifies all objects in that class)
-- Multi-label (it’s both a Chalupa and a Burrito)
-
-Also lots of algorithms
-- See Wikipedia
-]
-
diff --git a/slides/wk09/web.html b/slides/wk09/web.html
deleted file mode 100644
index f1b9ad651bf758d2e98857cc036b0c847a506743..0000000000000000000000000000000000000000
--- a/slides/wk09/web.html
+++ /dev/null
@@ -1,337 +0,0 @@
----
-layout: presentation
-title: Web Programming
-description: Interaction Programming in Web Development
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Interaction Programming in Web Development
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- Interaction Programming in Web Development
-  - Crash course on Web Programming
-  - Spot The Heron: web version
-
----
-# Spot The Heron review
-
-Code for the [Spot The Heron](https://gitlab.cs.washington.edu/cse340-20sp-students/cse340-spottheheron) case study.
-- Layout was achieved with high level tool which generated XML
-- Images were stored in the "drawable" directory
-- When app started the `AppCompatActivity#onCreate(Bundle savedInstanceState)` was called. This method:
-  - Set the app to use the XML defined layout
-  - Initialized some variables
-  - Registered callbacks for the three buttons - previous, slideshow, and next
-  - Used the `loadImage(int image)` to load the first image (0th index) in the list of file names
-- The `loadImage(int image)` method
-  - Got a handle on the image view interactor using an id `findViewById(R.id.heronView)`
-  - Set the image view's source to be the new image.
-  - Set the content description of the image view to be in line with the new image.
-- If the previous or next button was pressed, the `switchImage(boolean forward)` method is called.
-- If the slideshow button was pressed, a timer would start that changes the image every 1500 ms
-
----
-# Spot The Heron Comparison
-
-|Android Version | Web Version |
-| :--: | :--: |
-|![:img Spot The Heron Android Version, 32%](img/web/spottheheron-android.gif)|![:img Spot the Heron Web Version, 35%](img/web/spottheheron-web.gif)|
-
----
-# Interlude: What is a web page really?
-
-| Content | Structure | Style | Behavior |
-| :--: | :--: | :--: | :--: |
-|![:img bones, 20%](img/web/bones.png)|
-| Words and Images | HTML | CSS | JavaScript |
-
----
-# Interlude: What is a web page really?
-
-| Content | Structure | Style | Behavior |
-| :--: | :--: | :--: | :--: |
-|![:img bones, 40%](img/web/bones.png)|![:img Skeleton, 40%](img/web/full-skeleton.png)|
-| Words and Images | HTML | CSS | JavaScript |
-
----
-# Interlude: What is a web page really?
-
-| Content | Structure | Style | Behavior |
-| :--: | :--: | :--: | :--: |
-|![:img bones, 50%](img/web/bones.png)|![:img Skeleton, 50%](img/web/full-skeleton.png)|![:img Boundless Skeleton, 50%](img/web/dressed-skeleton.png)|
-| Words and Images | HTML | CSS | JavaScript |
-
-
----
-# Interlude: What is a web page really?
-
-| Content | Structure | Style | Behavior |
-| :--: | :--: | :--: | :--: |
-|![:img bones, 60%](img/web/bones.png)|![:img Skeleton, 60%](img/web/full-skeleton.png)|![:img Boundless Skeleton, 60%](img/web/dressed-skeleton.png)|![:img Animated Boundless Skeleton, 60%](img/web/animated-skeleton.gif)|
-| Words and Images | HTML | CSS | JavaScript |
-
----
-# Vocabulary
-
-- **Internet** - Hardware infrastructure of connected computers and wires
-- **World Wide Web (WWW) (http)** - The information on the Internet made up of files and folders stored on computers
-- **Hyper Text Markup Language (HTML), Cascading Style Sheets (CSS), & JavaScript (JS)** - The languages that we use to program our webpages
-- **Web Browser** An application (Chrome, Netscape, Safari) that interprets our web languages and renders it visually
-
----
-# Languages
-
-Java != JavaScript
-
-| Java | JavaScript | HTML/CSS |
-| -- | -- | -- |  |
-| Compiled &nbsp;&nbsp;  | Interpreted  | Rendered Data |
-| Type safe | Not type safe &nbsp;&nbsp;  | N/A |
-
----
-# Lifecycle of a browser* loading a page
-
-1. Fetch the page
-2. Parse the page
-3. Build up an internal representation of the web page
-4. Display the page
-
-.footnote[*: As seen by Chrome]
-
----
-# Fetch the Page
-
-1. Connect to the **Internet** and ask for the URL
-2. As a **DNS** (Domain name service) to find the machine with the appropriate resources
-3. Ask the machine with the resources for the web page with a **GET request**
-4. Transfer file(s) the internet using the **TCP/IP** protocol back to your machine.
-
----
-.left-column[# View Page Source
-
-[Spot The Heron Solution](webpages/spottheheron-solution.html)
-]
-
-.right-column[
-![:img Viewing the page source for the spot the heron app, 90%](img/web/viewpagesource.png)
-]
-
-
----
-# Parse and Display the Page
-
-.left-column[
-![:img Initial screen for the spot the heron app, 90%](img/web/spottheheronscreen.png)
-
-]
-
-.right-column[
-1. First line: <!DOCTYPE html>
-   -  Ok: need to build an internal representation of the page
-2. Line-by-line, go through the HTML
-   - If one of the tags links to a cascading style sheet (CSS) file, load and parse it
-   - If one of the tags links to Javascript (JS) for behavior, load and parse it
-3. FINALLY display the page…
-]
-
----
-# Hypertext Markup Language (HTML)
-
-- A subset of XML
-- Keywords that are surrounded by the ‘<‘ and ‘>’ (“alligators”) are Tags
-- Tags label the structure of parts of your web page
-  - You put the associated content within the tags
-- There are two types of tags
-  - Open and closing pairs
-    - Ex: <body>This is some text for my body</body>
-    - Most content tags will be of this type
-  - Self-closing tags
-    - `<img />`, `<hr />`, `<br />`, `<link />`
-- Every tag must be a pair or self-closing!
-- Tags can be nested!
-
-
----
-# Basic HTML Skeleton
-
-```html
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title></title>
-  </head>
-  <body>
-
-  </body>
-</html>
-```
-
-
----
-# Adding content
-
-- There are 100s of tags! See [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/HTML/Element)!
-- Some simple tags include
-  - Title `<title></title>` (which nests inside your `<head></head>`)
-  - Headings `<h1></h1>` .. `<h6></h6>`
-  - Paragraphs `<p>`
-  - Ordered or unordered lists: `<ol></ol>`, `<ul></ul>`, with list elements `<li></li>`
-  - Horizontal rules `<hr />`
-  - Strong `<strong></strong>` which defaults to a bold style and emphasis `<em></em>` which defaults to italicized in most browsers.
-- Some tags add semantic context
-  - `<header></header>`: The header or banner that displays the title of the page
-  - `<main></main>`: The bulk of the content of the page
-  - `<footer></footer>`: The footer is optional but you can put contact info and copyright date in there.
-- Some tags need additional information, added to a tag with attributes
-  - Links to other pages `&lt;a href="filename"&gt;&lt;/a&gt;`
-  - Links to other pages `<img src="img.jpg" alt="Description!"/>`
-- Some tags (comments) are important for documentation `<!-- -->`
-
-
-
----
-# Document Object Model (DOM)
-
-.left-column[
-![:img DOM Example](img/web/dom.png)
-
-]
-
-.right-column[
-- This builds a hierarchy of document elements in what we call the **Document Object Model**
-- Looks very much like the Android Interactor Hierarchy
-
-
-]
-
----
-# Cascading Style Sheets (CSS)
-
-- Allows us to change the look and feel of the content on the page
-- Style is separated into a .css file
-  - Makes styling multiple pages easier
-  - Allows changing multiple pages easier
-- Style sheets must be linked to an html page in the <head> for the styles to work
-     `&lt;link href=“style.css” rel=“stylesheet” /&gt;`
-- Great example is [CSS Zen Garden](http://www.csszengarden.com/)
-
----
-# CSS
-
-.left-column[
-- Files consist of one or more rule sets
-- Each rule set has a selector which chooses which HTML elements you want to style
-- Style properties are set with rules which are  property/value pairs
-- Syntax is important
-- More on [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS)
-
-]
-
-.right-column[
-![:img CSS rules description](https://code.makery.ch/library/html-css/part3/css-rule.png)
-
-From [W3Schools](https://code.makery.ch/library/html-css/part3/)
-]
-
----
-# Layout in CSS
-
-Layout can be [complicated](https://www.amazon.com/CSS-Awesome-Mug-Programmer-Developer/dp/B06Y13QC8N),
-fortunately there is CSS [Flexbox](https://courses.cs.washington.edu/courses/cse154/flexboxducky/) or Grid!!
-
-![:img Sample screen from flexbox ducky game, 50%](img/web/flexbox.png)
-
-
----
-# Spot The Heron Conversion
-.left-column[
-Mind blowing demo time!
-]
-
-.right-column[
-![:img Goole chrome with the pet gallery loaded on the left and the element view on the right, 80%](img/web/chrome-inspector.png)
-]
-
----
-# Some Comparisons
-
-| Android | Web |
-| --- | --- |
-| Java | HTML/CSS/JS |
-| Layouts | CSS Flexbox or Grid |
-| Interactor Hierarchy   | Document Object Model (DOM) |
-| Content Description | alt text |
-| Paint objects on a canvas | CSS |
-| `onCreate`   | `window.addEventListener("load", init);` |
-| `View.OnClickListener#onClick`   | `domElement.addEventListener("click", callback);` |
-
----
-# The Application Stack for Devices - Review
-.left-column[.font-smaller[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-class ap,w,o,h yellow
-class hlt,t green
-
-</div>
-]]
-
-.right-column[
-- **Application Program** - An application designed for an end user to perform specific tasks.
-- **High Level Tools** - Graphical interfaces that that let you specify parts of your interface (such as layout). Subject to Worfian Effects
-- **Toolkit** - A set of libraries and tools you use to develop applications.
-- **Window System** - Manages window size and visibility across applications
-- **OS** - The operating system that is running on the device, providing system services such as acceess to displays, input devices, file I/O
-- **Hardware** - The device that is running software, such as an Android Phone
-
-High level tools and the the Toolkit are generally packaged as part of a toolkit but really should be thought of as separate things. (You can program the toolkit without the tools. )
-]
----
-# The Application Stack for Web Programming
-.left-column[.font-smaller[
-<div class="mermaid">
-  graph LR
-  ap[Application Program]
-  hlt[High Level Tools]
-  t[Toolkit]
-  w[Window System]
-  o[OS]
-  h[Hardware]
-
-class ap,w,o,h yellow
-class hlt,t green
-
-</div>
-]]
-
-.right-column[
-- **Application Program** - A web page
-- **High Level Tools** - Dream Weaver, Adobe XD, Google Web Designer, etc
-- **Toolkit** - HTML/CSS/JavaScript, jQuery, React, etc. Browser tools.
-- **Window System** - Browser running in a Windowing system.
-- **OS** - The web browser itself? Or the browser and the OS combined?
-- **Hardware** - The device that is running OS and browser, such as a Mac, PC or Phone.
-
-You can do web programming with a notepad editor and a browser, nothing more.
-]
----
-# End of Deck
diff --git a/slides/wk09/webpages/img/after.svg b/slides/wk09/webpages/img/after.svg
deleted file mode 100644
index ec2fa420965037676613a51722eeb6d321a0c630..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/img/after.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-<svg
-    xmlns="http://www.w3.org/2000/svg"
-    viewBox="0 0 24 24"
-    id="vector">
-    <path
-        id="path"
-        d="M 10 6 L 8.59 7.41 L 13.17 12 L 8.59 16.59 L 10 18 L 16 12 Z"
-        fill="#000000"/>
-    <path
-        id="path_1"
-        d="M 0 0 L 24 0 L 24 24 L 0 24 Z"
-        fill="none"/>
-</svg>
diff --git a/slides/wk09/webpages/img/before.svg b/slides/wk09/webpages/img/before.svg
deleted file mode 100644
index fb07fa0cf6f2d3392cdb144a64311b7c87e0e5cc..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/img/before.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-<svg
-    xmlns="http://www.w3.org/2000/svg"
-    viewBox="0 0 24 24"
-    id="vector">
-    <path
-        id="path"
-        d="M 15.41 7.41 L 14 6 L 8 12 L 14 18 L 15.41 16.59 L 10.83 12 Z"
-        fill="#000000"/>
-    <path
-        id="path_1"
-        d="M 0 0 L 24 0 L 24 24 L 0 24 Z"
-        fill="none"/>
-</svg>
diff --git a/slides/wk09/webpages/img/cold.jpg b/slides/wk09/webpages/img/cold.jpg
deleted file mode 100644
index 9b13846a9d5450f4b1cae09f1282440dfcac9b71..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/cold.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/dontcare.jpg b/slides/wk09/webpages/img/dontcare.jpg
deleted file mode 100644
index 7a0cdf895ad662528c4aafe1019e4dfd3659a982..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/dontcare.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/fishing.jpg b/slides/wk09/webpages/img/fishing.jpg
deleted file mode 100644
index a7dfe9604be5f6275fba6782f1c3b5e8476e9615..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/fishing.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/flying.jpg b/slides/wk09/webpages/img/flying.jpg
deleted file mode 100644
index e92fe38845efa6affa4ade9b96479488e3fc12c3..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/flying.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/gru.jpg b/slides/wk09/webpages/img/gru.jpg
deleted file mode 100644
index 0d1372fe6cdebfea639355a7d57158372cff3b31..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/gru.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/hidden.jpg b/slides/wk09/webpages/img/hidden.jpg
deleted file mode 100644
index 0fd03f0b2224951780af489ae16e8d25a54895ac..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/hidden.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/ic_navigate_next.xml b/slides/wk09/webpages/img/ic_navigate_next.xml
deleted file mode 100644
index 932261b4e108eaa248b3a65ab554e36c3aa640ef..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/img/ic_navigate_next.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-   <path
-        android:fillColor="#000000"
-        android:pathData="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
-    <path
-        android:pathData="M0 0h24v24H0z"
-        />
-</vector>
\ No newline at end of file
diff --git a/slides/wk09/webpages/img/ic_slideshow.xml b/slides/wk09/webpages/img/ic_slideshow.xml
deleted file mode 100644
index 47e37eb4105558fd5cc0b1226853fd7cd2be44f4..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/img/ic_slideshow.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="#000000"
-        d="M0 0h24v24H0z" />
-    <path
-        android:fillColor="#000000"
-        android:pathData="M10 8v8l5-4-5-4zm9-5H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>
-</vector>
\ No newline at end of file
diff --git a/slides/wk09/webpages/img/log.jpg b/slides/wk09/webpages/img/log.jpg
deleted file mode 100644
index f68258248cd9496190a27722af1b4ec1efae5b8a..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/log.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/lonely.jpg b/slides/wk09/webpages/img/lonely.jpg
deleted file mode 100644
index 7b0c82a3d832979bfda248b5563f5bf1eb78d24c..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/lonely.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/reeds.jpg b/slides/wk09/webpages/img/reeds.jpg
deleted file mode 100644
index 6b11581e06ddddebda2dcc506bc141bcca2a55e3..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/reeds.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/reflection.jpg b/slides/wk09/webpages/img/reflection.jpg
deleted file mode 100644
index 18ded76e174597bf106d016612373a34e919c9c1..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/reflection.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/slideshow.svg b/slides/wk09/webpages/img/slideshow.svg
deleted file mode 100644
index d187b03ac8f66c779b8fed1f892f4955ffdd0cab..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/img/slideshow.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-<svg
-    xmlns="http://www.w3.org/2000/svg"
-    viewBox="0 0 24 24"
-    id="vector">
-    <path
-        id="path_1"
-        d="M 10 8 L 10 16 L 15 12 L 10 8 Z M 19 3 L 5 3 C 3.9 3 3 3.9 3 5 L 3 19 C 3 20.1 3.9 21 5 21 L 19 21 C 20.1 21 21 20.1 21 19 L 21 5 C 21 3.9 20.1 3 19 3 Z M 19 19 L 5 19 L 5 5 L 19 5 L 19 19 Z"
-        fill="#000000"/>
-</svg>
diff --git a/slides/wk09/webpages/img/sunrise.jpg b/slides/wk09/webpages/img/sunrise.jpg
deleted file mode 100644
index d1b3e5f482a4e88c9de234695fe7eef91c0f73f6..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/sunrise.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/treebird.jpg b/slides/wk09/webpages/img/treebird.jpg
deleted file mode 100644
index 582e5d677d4da1b9b5846f7d8be2b7b5bc03fa3f..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/treebird.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/img/wading.jpg b/slides/wk09/webpages/img/wading.jpg
deleted file mode 100644
index 38198c303fe104efa44a10059419b43129e7c54a..0000000000000000000000000000000000000000
Binary files a/slides/wk09/webpages/img/wading.jpg and /dev/null differ
diff --git a/slides/wk09/webpages/spottheheron-solution.html b/slides/wk09/webpages/spottheheron-solution.html
deleted file mode 100644
index 7206ed583167fa1319d332d16419892f665c3e7f..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/spottheheron-solution.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Lauren Bricker
-   Interaction Programming in Web Programming Lecture
-  Spot the Heron as a web page
--->
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>Spot the Heron</title>
-    <link rel="stylesheet" href="spottheheron.css">
-    <!-- <script src="spottheheron.js"></script> -->
-    <script src="spottheheron-solution.js"></script>
-  </head>
-  <body>
-    <section>
-      <h1>Spot The Heron</h1>
-      <img id="heron-pic" src="img/cold.jpg" alt="A very cold heron">
-      <div>
-        <button id="prev-btn"><img src="img/before.svg" alt="Go to previous pet"></button>
-        <button id="play-btn"><img src="img/slideshow.svg" alt="Run slideshow"></button>
-        <button id="next-btn"><img src="img/after.svg" alt="Go to next pet"></button>
-      </div>
-    </section>
-  </body>
-</html>
diff --git a/slides/wk09/webpages/spottheheron-solution.js b/slides/wk09/webpages/spottheheron-solution.js
deleted file mode 100644
index 607fab3619e6c456267d3e01155025ae22eb6c41..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/spottheheron-solution.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-  Lauren Bricker
-  Interaction Programming in Web Programming Lecture
-  Spot the Heron as a web page
-  Javascript to add the behavior to the static web page.
-*/
-
-"use strict";
-(function() {
-
-  /** List of images in the img directory */
-  let images = ["cold", "dontcare", "fishing", "flying",
-            "gru", "hidden", "log", "lonely", "reeds", "reflection", "sunrise",
-            "treebird", "wading"];
-
-  /** Index of currently selected Image */
-  let whichImage;
-
-
-  /** Whether we're in the slideshow or not */
-  let inSlideshow = false;
-
-  /** How many seconds between flipping images in the image view */
-  const SLIDESHOW_TIME = 1500;
-
-  let timer = null;
-
-  window.addEventListener("load", init);
-
-  // Note: This function is called as soon as the window is loaded (and the browser
-  // has created the HTML DOM for the page)
-  function init() {
-    // Add event listeners for clicking the #prev-btn, #next-btn, and #play-btn.
-    id("prev-btn").addEventListener("click", function() {switchImage(false);} );
-    id("next-btn").addEventListener("click", function() {switchImage(true);} );
-    id("play-btn").addEventListener("click", doSlideshow);
-    inSlideshow = false;
-    whichImage = 0;
-    loadImage(whichImage);
-  }
-
-  // Callback to handle the slideshow button
-  function doSlideshow () {
-      if (!inSlideshow) {
-          //sets image to flip in SLIDESHOW_TIME ms.
-          timer = setInterval(intervalImage, SLIDESHOW_TIME);
-      }
-      else {
-          //turns off auto flipping
-          clearInterval(timer);
-          timer = null;
-      }
-      inSlideshow = !inSlideshow;
-  }
-
-
-  // Add the rest of the functions here!
-  /** Method to load an image from the images array into the heronView ImageView interactor
-   *
-   * @param img the number of the image to load, assumes 0 <= img < images.length
-   */
-  function loadImage(img) {
-      let heronView = id("heron-pic");
-      heronView.src = "img/" + images[img] + ".jpg";
-      heronView.alt = images[img];
-  }
-
-  /** Method to move onto the next or previous image, depending on the flag passed in
-   *
-   * @param forward true if you are to go to the next image, false if not.
-   */
-  function switchImage(forward) {
-      if (forward) {
-          if (whichImage == images.length - 1)
-              whichImage = 0;
-          else
-              whichImage++;
-      }
-      else {
-          if (whichImage == 0)
-              whichImage = images.length - 1;
-          else
-              whichImage--;
-      }
-      loadImage(whichImage);
-  }
-
-  /** Method to keep flipping the images.
-    *
-    */
-  function intervalImage() {
-    // Switches image
-    switchImage(true);
-
-  }
-
-  /** -------------------------- Helper functions -------------------------- */
-  /**
-   * Returns the element that has the ID attribute with the specified value.
-   * @param {string} idName - element ID
-   * @returns {object} DOM object associated with id.
-   */
-  function id(idName) {
-    return document.getElementById(idName);
-  }
-
-})();
diff --git a/slides/wk09/webpages/spottheheron.css b/slides/wk09/webpages/spottheheron.css
deleted file mode 100644
index 5f83d96865f934651ac9933e9283917ddd970148..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/spottheheron.css
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  Lauren Bricker
-   Interaction Programming in Web Programming Lecture
-  Spot the Heron as a web page
-  Styles to make the Spot the Heron app look purty.
-*/
-
-body {
-  /* simulating the screen size */
-  width: 540px;
-  height: 960px;
-  border-radius: 10px;
-  border: 2px solid black;
-  margin: 1em auto 0 auto;
-}
-
-
-section {
-  margin: 1.5em;
-  display: flex;
-  flex-direction: column;
-  justify-content: flex-start;
-  height: 95%;
-}
-
-h1 {
-  background-color: #c0FFEE;
-  font-size: 2em;
-  color: #303F9F;
-  text-align: center;
-  font-weight: bold;
-  font-family: roboto, sans-serif;
-  margin: 0;
-  padding: .1em;
-  margin-bottom: .8em;
-}
-
-img {
-  margin: 0;
-}
-
-div {
-  display: flex;
-  justify-content: space-between;
-  margin-top: auto;
-  margin-bottom:
-}
-
-button {
-  height: 100px;
-  width: 100px;
-  text-align: center;
-  vertical-align: center;
-  border: 0;
-  padding: 0;
-}
diff --git a/slides/wk09/webpages/spottheheron.html b/slides/wk09/webpages/spottheheron.html
deleted file mode 100644
index 1dd9ba0d63f24b04eae09ed79b958c4e22b95e33..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/spottheheron.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  Lauren Bricker
-   Interaction Programming in Web Programming Lecture
-  Spot the Heron as a web page
--->
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>Spot the Heron</title>
-  </head>
-  <body>
-    <section>
-      <h1>Spot The Heron</h1>
-      <img id="heron-pic" src="img/cold.jpg" alt="A very cold heron">
-      <div>
-        <button id="prev-btn"><img src="img/before.svg" alt="Go to previous pet"></button>
-        <button id="play-btn"><img src="img/slideshow.svg" alt="Run slideshow"></button>
-        <button id="next-btn"><img src="img/after.svg" alt="Go to next pet"></button>
-      </div>
-    </section>
-  </body>
-</html>
diff --git a/slides/wk09/webpages/spottheheron.js b/slides/wk09/webpages/spottheheron.js
deleted file mode 100644
index fe18db8747228e56ce1a333372956dc967e3a968..0000000000000000000000000000000000000000
--- a/slides/wk09/webpages/spottheheron.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  Lauren Bricker
-  Interaction Programming in Web Programming Lecture
-  Spot the Heron as a web page
-  Javascript to add the behavior to the static web page.
-*/
-
-"use strict";
-(function() {
-
-  window.addEventListener("load", init);
-
-  // Note: This function is called as soon as the window is loaded (and the browser
-  // has created the HTML DOM for the page)
-  function init() {
-    // Add event listeners for clicking the #prev-btn, #next-btn, and $play-btn.
-  }
-
-  // Add the rest of the functions here!
-
-
-
-  /** -------------------------- Helper functions -------------------------- */
-  /**
-   * Returns the element that has the ID attribute with the specified value.
-   * @param {string} idName - element ID
-   * @returns {object} DOM object associated with id.
-   */
-  function id(idName) {
-    return document.getElementById(idName);
-  }
-
-})();
diff --git a/slides/wk10/final.html b/slides/wk10/final.html
deleted file mode 100644
index 9d263d283d741332158ac48bac06ce280de83920..0000000000000000000000000000000000000000
--- a/slides/wk10/final.html
+++ /dev/null
@@ -1,446 +0,0 @@
----
-layout: presentation
-title: Final Exam Review
-description: Final Exam Review
-class: middle, center, inverse
----
-name: inverse
-layout: true
-class: center, middle, inverse
----
-# Final Exam Review
-
-Jennifer Mankoff
-
-CSE 340 Spring 2019 
-
----
-layout: false
-
-.title[Plan for Final (Monday 8:30-10)]
-.body[
-Will cover material from whole course
-
-Emphasis on second half
-
-Same basic structure, more questions
-- Long answer questions
-- Short answer questions
-- Coding questions
-- 'Cheat Sheet' allowed (2 sided, hand written)
-
-Nothing on sustainability; augmented reality
-
-
-]
----
-.title[Subjective exam question advice]
-.body[
-Study by synthesizing and summarizing material
-
-An adequate answer can get you around 85%
-Ex:
-Human eyes have cones that can see red green and blue. Yellow is just
-a mix of these. 
-
-A complete, deeper answer can get you an A 
-Ex:
-Our eyes can only detect red, green and blue wavelengths of light
-(with cones) and greyscale (with rods). They see color as a
-combination of these wavelengths. Thus, displaying “true” yellow
-pixels won’t make a difference since our eyes will see them as a
-combination of red and green anyway. 
-
-
-When writing: Aim to stay within 10% of suggested length, make a point
-and then provide support for it. A verbose answer may get you back to
-B (if redundant or wrong)  
-
-
-Show your work extra important 
-]
-
----
-.title[Core concepts from first half]
-.body[
-
-Input
-- Input models (events)
-- Event dispatch
-- Event handling (PPS) likely coding problem
-- Callbacks to application likely coding problem
-
-Output
-- Interactor Hierarchy design & use
-- Drawing models (`onDraw()`) likely coding problem
-- Layout (`onLayout()` or `XML`) likely coding problem
-- Damage and redraw process
-]
----
-.title[And Introduced Model View Controller]
-.body[
-Model
-- Model of a single interactor: Typically a field
-- Application model
- - Separate from view model
-- Typically more persistent (e.g., saved with bundler)
-
-View
-- `onDraw()` in a single interactor
-- Interactor hierarchy in an application
-
-Controller
-- PPS in a single interactor
-- callbacks (e.g., custom listeners) in an application
-]
----
-.left-column50[
-## 2D Drawing -> 3D modeling
-
-Same core concepts
-
-Now in OpenSCAD
-
-Key ideas:
-- 3D
- - `cube (size)`
- - `cylinder (h, r|d, center)`
- - `polyhedron (points, triangles, convexity)`
- - `sphere (radius | d=diameter)`
- ]
- 
-.right-column50[
-## Similar Transformations
-
-- Transformations
- - `translate ([x, y, z])`
- - `rotate ([x, y, z])`
- - `scale ([x, y, z])`
- - `resize ([x, y, z], auto)`
-- Boolean operations
- - `union()`
- - `difference()` (subtract second from first)
- - `intersection()`
-]
-
-???
-Limitations of 3D printing?
-
-cost for large scale manufacturing
-
-
----
-.title[Studies]
-
-.body[
-
-<div class="mermaid">
-graph LR
-S((.)) --> Hypothesis((Hypothesis:<br>Decreased seek <br>time and errors))
-Hypothesis -- "Study Design" --> Method((2 menu x <br> 3 task conditions ))
-Method -- "Run Study" --> Data((Consent<br>Consistency))
-Data -- "Clean and Prep" --> Analysis((Clean<br>Compute))
-Analysis --> Conclusions((Conclusions))
-
-classDef finish outline-style:double,fill:#d1e0e0,stroke:#333,stroke-width:2px;
-classDef normal fill:#e6f3ff,stroke:#333,stroke-width:2px;
-classDef start fill:#d1e0e0,stroke:#333,stroke-width:4px;
-classDef invisible fill:#FFFFFF,stroke:#FFFFFF,color:#FFFFFF
-
-linkStyle 0 stroke-width:4px;
-linkStyle 1 stroke-width:4px;
-linkStyle 2 stroke-width:4px;
-linkStyle 3 stroke-width:4px;
-linkStyle 4 stroke-width:4px;
-
-
-class S invisible
-class Hypothesis,Conclusions start
-class Method,Data,Analysis normal
-</div>
-
-method:
-conditions | sessions | trials
-
-ethics:
-beneficence | respect for persons | justice
-
-- Which is violated by a coercive statement in a consent form?
-- Which is violated by an inequitable selection of participants?
-- Which is violated by risky, pointless research?
-
-analysis:
-How do we determine causality?
-   - correlation
-   - intervention
-]
-
----
-.title[Accessibility]
-.body[
-**Disability** is a
-mismatched interaction
-between someone and
-their context
-]
----
-.title[Example Q1: Which is true about disability?]
-.body[
-A personal attribute
-Context dependent
-Permanent
-]
----
-.title[Example Q2: Is using a phone while holding a dog leash]
-.body[
-Temporary impairment
-Permanent impairment
-Situational impairment?
-]
----
-.title[Example Q3: List three examples of Assistive technologies]
-
-???
-Screen reader
-Zooming
-Speech input
-Sticky keys
-Xbox adaptive controller
-High contrast interaction
-
----
-.title[Accessibility Testing]
-.body[
-
-| Error                | Description                                                                                                                   |
-|----------------------|-------------------------------------------------------------------------------------------------------------------------------|
-| Clickable Items      | Overlapping clickable items                                                                                                   |
-| Editable Image Label | TextView has a content description. This might interfere with a screen reader’s ability to read the content of the text field |
-| Image Contrast       | Low contrast in image or icon                                                                                                 |
-| Item Descriptions    | Items with identical speakable text                                                                                           |
-| Item Label           | Missing element label                                                                                                         |
-| Item Type Label      | Item label ends with type, e.g., “Play Button.” TalkBack automatically announces item type, so information is redundant       |
-| Link                 | URL in link may be invalid                                                                                                    |
-| Text Contrast        | Low text contrast between foreground and background                                                                           |
-| Touch Target         | Item is too small|
-
-]
-???
-minimum to fix each problem (legal accessibility)
-
-true accessibility
-
----
-.title[Affordances & Feedback
-]
-.body[
-Good Affordance| Bad Affordance
-----|----
-![:img Picture of a round doorknob, 40%](img/final/round-doorknob.png) | ![:img Picture of a flat doorknob, 40%](img/final/flat-doorknob.png) 
-
-Well-designed objects have affordances
-- Clues to their operation that are readily apparent
-- Often visual, but not always (e.g., speech)
-- Allows and promotes certain actions
-]
-???
-Opportunities to act which are readily apparent to the user ... and
-appropriate to the user’s abilities 
-
-relationship of affordence and feedback
-
-Form “affords” certain actions and makes that apparent
-
----
-.title[# Model of Mental Models]
-.body[
-![:img A box showing the design (white) and actual function (blue missing
-a little bit of the white) with a grey circle added in the center
-labeled "Frequently Used (Well understood) Part of System
-Functionality" a dark blue cloud labeled "Occasionally Used Part of
-System Functionality" around the user's well understood region and
-another cloud further out with errors (regions outside the blue system
-box) labeled "Users full model of what the system does",100%](img/final/mental6.png)
-]
-
-???
-- Where are the gulf of evaluation and gulf of execution in this
-  image?  Gulf of execution is the user 'error' region (user requests
-  function the __system DOESNT HAVE__), gulf of
-  evaluation is when the user __doesn't realize the system HAS a
-  functionality__. 
-  
-- How does undo help the user bridge them? 
-
----
-
-.title[Undo Sample Q]
-.body[
-Something other than drawing! Let's try text
-
-What should be the "action"? Characters or words?
-]
---
-.body[
-
-- type "helo"
-- type "world"
-- undo
-- undo
-- type "hello"
-- redo
-- type "world"
-]
-
----
-.left-column[
-### Heuristic Evaluation
-- H1: Visibility of system status
-- H2: Match between system and the real world
-- H3: User control and freedom
-- H4: Consistency and standards
-- H5: Error prevention
-- H6: Recognition vs. recall
-- H7: Flexibility and efficiency of use
-- H8: Aesthetic and minimalist design
-- H9: Error recovery
-- H10: Help and Documentation
-]
-.right-column[
-## UAR
-- Which heuristic
-- Explanation
-- Severity
- - Frequency
- - Impact
- - Persistence
-- Scale: 
- - 0 - Not a problem at all
- - 1 - Cosmetic problem only
- - 2 - Minor usability problem (fix with low priority)
- - 3 - Major usability problem (fix with high priority)
- - 4 - Usability catastrophe (imperative to fix before release)
-
-]
-.upper_right[![:img Four dialogue boxes with different locations for
-ok; cancel and help (inconsistent), 80%](img/final/consistency.png)]
----
-.title[HE pros and cons?]
----
-.left-column50[
-## Pros
-
-Discount usability engineering
-
-Intimidation low
-
-Don't need to identify tasks, activities
-
-Can identify some fairly obvious fixes
-
-Can expose problems user testing doesn’t expose
-
-Provides a language for justifying usability recommendations
-]
-.right-column50[
-## Cons
-
-Un-validated
-
-Unreliable
-
-Should use usability experts
-
-Problems unconnected with tasks
-
-Heuristics may be hard to apply to new technology
-
-Coordination costs]
----
-.title[Sensing and context-awareness]
-.body[
-What makes an app context-aware?
-
-]
-???
-*use of implicit input*
----
-.title[Sensing and context-awareness]
-.body[
-What makes an app context-aware?
-
-
-*use of implicit input*
-]
----
-.title[Types of context-aware apps]
---
-.body[
-Capture and Access
-
-Adaptive Services (changing operation or timing)
-
-Novel Interaction
-
-Behavioral Imaging
-
-General Solutions for Data Collection and Response
-
-Challenges?
-]
-???
-- Battery
-- Raw sensors not behavior data
-- Not the sensors we always want
-- Computational complexity
-- Latency in communication
-- Basic software framework to support apps that can adapt to user behavior
-- Apps that drive innovation
-- How people use phones
-
----
-.title[Fences and snapshots]
-.body[
-When to use each?]
-
----
-.left-column[
-## Behavior Change
-
-![:img five part model of personal informatics with stages
-preparation; collection; integration; reflection; action ,
-150%](img/final/personal-informatics-model.png)
-]
-.right-column[
-- Example Q: What stage does the leader board engage with?
-- Example Q: What stage do the icons support 
-- Example Q: What aspect of this interface supports action?
-
-![:img cscw, 70%](img/final/android.png)
-
-]
----
-.left-column[
-## Machine Learning
-
-![:img decision tree, 80%](img/ml/decisiontree.png)
-]
-
-.right-column[
-
-<div class="mermaid">
-graph TD
-  T[Time] -- "10pm-8am" -->  N[Noise]
-  T[Time] -- "8am-10pm" --> Aw2[Awake y=35,n=2]
-  N -- "Low" --> As[Asleep y=20,n=5]
-  N -- "High" --> Aw3[Awake y=10,n=2]
-  
-</div>
-
-- Q1: What is this recognizing
-- Q2: What features are being used?
-- Q3: What are the labels?
-- Q4: What will be predicted if there is noise between 10am and noon?
-- Q5: What is the accuracy of this decision tree?
-]
----
diff --git a/slides/wk10/heuristic.html b/slides/wk10/heuristic.html
deleted file mode 100644
index e480672b76a9eba90217d235a195d3b0e295dce6..0000000000000000000000000000000000000000
--- a/slides/wk10/heuristic.html
+++ /dev/null
@@ -1,695 +0,0 @@
----
-layout: presentation
-title: Heuristic Evaluation --Week 7, Friday--
-description: Heuristic Evaluation for Analyzing Interfaces
-class: middle, center, inverse
----
-
-layout: false
-
-# Hall of Shame?
-
-What do you think happened here?
-.left-column50[
-![:img Funimation web page with a large image and an interface to add items to a queue and remove items from a queue, 100%](img/heuristic/funimation1.png)
-]
-.right-column40[
-![:img Large red remove from queue button, 50%](img/heuristic/funimation2.png)
-![:img Large red add to queue button, 80%](img/heuristic/funimation3.png)
-
-]
-
-???
-Thanks to Jeremy Zhang for the find.
-
-
----
-
-name: inverse
-layout: true
-class: center, middle, inverse
-
-# Heuristic Evaluation for Analyzing Interfaces
-
-{{site.author.name}}
-
-CSE 340 {{site.quarter}}
----
-layout: false
-
-[//]: # (Outline Slide)
-# Today's goals
-
-- [Combined data from Menus](https://docs.google.com/spreadsheets/d/1neu_22-YTI3TsP5uHKMsiEs4yxxz4xtghk69bYIgoJo/edit?usp=sharing)
-- Introduce Heuristic Evaluation
-- Describe UARs
-- Time at the end to fill out the [course eval](https://uw.iasystem.org/survey/227053)
-
----
-.left-column[
-## Introducing Heuristic Evaluation]
-.right-column[
-.quote[Discount usability engineering methods]
-
--- Jakob Nielsen
-
-Involves a small team of evaluators to evaluate an interface based on recognized usability principles
-
-Heuristics–”rules of thumb”
-
-]
-???
-"serving to discover or find out," 1821, irregular formation from Gk. heuretikos "inventive," related to heuriskein "to find" (cognate with O.Ir. fuar "I have found"). Heuristics "study of heuristic methods," first recorded 1959.
-
----
-.left-column[
-## Introducing Heuristic Evaluation]
-.right-column[
-
-First introduced in 1990 by Nielsen & Molich
-
-Quick, inexpensive, popular technique
-
-~5 experts find 70-80% of problems
-n
-Based on 10 heuristics
-
-Does not require working interface
-]
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-	Designer conducts synthesis and analysis :synthesis, 28, 5d
-	Designer writes report :30, 5d
-</div>
-
----
-.left-column[
-## So what are the heuristics?]
---
-.right-column[
-- H1: Visibility of system status
-- H2: Match between system and the real world
-- H3: User control and freedom
-- H4: Consistency and standards
-- H5: Error prevention
-- H6: Recognition vs. recall
-- H7: Flexibility and efficiency of use
-- H8: Aesthetic and minimalist design
-- H9: Error recovery
-- H10: Help and documentation
-]
-???
-These should not be hugely surprising after everything we've talked about...
----
-.left-column[
-## H1: Visibility of System Status
-
-Keep users informed about what is going on
-
-]
-.right-column[
-
-What does this interface tell you?
-
-![:img feedback being shown about how much time is left until a
-database search returns, 80%](img/heuristic/visibility.png)
-
-]
---
-.right-column[
-- What input has been received--Does the interface above say what the search input was?
-- What processing it is currently doing--Does it say what it is currently doing?
-- What the results of processing are--Does it give the results of processing?
-
-Feedback allows user to monitor progress towards solution of their
-task, allows the closure of tasks and reduces user anxiety (Lavery et
-al)
-]
-
----
-.left-column[
-## H2: Match between system and real world
-
-Speak the users’ language
-
-Follow real world conventions
-]
-.right-column[
-![:img two error messages returned by a bank machine-- one in terms the
-user can understand relating to dollars available and the other
-uninterpretable, 80%](img/heuristic/match.png)
-
-- Use concepts, language and real-world conventions that are familiar to the user.
-- Developers will need to understand the task from the point of view of users.
-- Cultural issues relevant for the design of systems that are expected to be used globally.
-
-A good match minimizes the extra knowledge required to use the system,
-simplying all task action mappings (re-expression of users’ intuitions
-into system concepts)
-]
-
-
----
-.left-column[
-## H2: Match between system and real world
-
-Example of a huge violation of this H2
-
-]
-.right-column[
-
-| | |
-|--|--|
-| ![:img Picture of macintosh desktop with old style floppy disk to be dragged over trash to be ejected, 100%](img/heuristic/mactrash.png) |Possibly the biggest usability in problem in the Macintosh. Heuristic violation--people want to get their disk out of the machine--not discard it.|
-
-]
----
-.left-column[
-## H2: Match between system and real world
-
-Example of a mismatch depends on knowledge about users
-]
-.right-column[
-
-Would an icon with a red flag for new mail be appropriate in all cultures?
-
-![:img Picture of a mailbox with red flag raised, 50%](img/heuristic/mailbox.png)
-]
----
-.left-column[
-## H3: User Control and Freedom
-“Exits” for mistaken choices, undo, redo
-
-Don’t force down fixed paths
-
-]
-.right-column[
-![:img Dialog box with lots of exits for mistaken choices--
-undo;redo;Don’t force down fixed paths, 60%](img/heuristic/control.png)
-
-Users choose actions by mistake
-
-]
-
-
----
-.left-column[
-## H4: Consistency and Standards
-]
-
-.right-column[
-![:img Four dialogue boxes with different locations for ok; cancel and help (inconsistent), 50%](img/heuristic/consistency.png)
-
-Same words, situations, actions, should mean the same thing in similar
-situations; same things look the same, be located in the same place.
-
-Different things should be different
-]
----
-.left-column[
-## H4: Consistency and Standards
-]
-
-.right-column[
-- Both H2 (Match between system and the real world) and H4 related to user’s prior knowledge. The difference is
-  - H2 is knowledge of world
-  - H4 of knowledge others parts of application and other applications on the same platform.
-- Consistency within an application and within a platform. Developers need to know platform conventions.
-- Consistency with old interface
-
-Consistency maximizes the user knowledge required to use the systems
-by letting users generalize from existing experience of the system to
-other systems
-]
----
-.left-column[
-## H4: Consistency and Standards
-]
-.right-column[
-
-Evidence: Should include at least
-- two inconsistent elements in the same interface, or
-- an element that is inconsisten with a platform guideline
-
-Explanation: What inconsistent element is and what it is inconsistent with
-
-![:img Four dialogue boxes with different locations for ok; cancel and help (inconsistent), 50%](img/heuristic/consistency.png)
-]
----
-.left-column[
-## H5: Error Prevention
-
-Careful design which prevents a problem from occurring in the first place
-]
-
-.right-column[
-![:img Picture of a calendar entry interface with text entry (error
-prone) vs data selection (less error prone), 65%](img/heuristic/error.png)
-
-- Help users select among legal actions (e.g., greying out inappropirate
-buttons) rather than letting them select and then telling them that
-they have made an error (gotcha!).
-- Subset of H1 (Visibility of system status) but so important it gets a separate heuristic.
-
-Motivation: Errors are a main source of frustration, inefficiency and
-ineffectiveness during system usage (Lavery et al)
-
-Explanation in terms of tasks and system details such as adjacency of
-function keys and menu options, discriminability of icons and labels.
-]
----
-.left-column[
-## H6: Recognition Rather than Recall
-
-Make objects, actions and options visible or easily retrievable
-
-]
-.right-column[
-
-![:img Compuserve connect old school interface, 30%](img/heuristic/recognition.png)
-
-- Classic examples:
-  - command line interfaces  (`rm *`)
-  - Arrows on keys that people can’t map to functions
-- Much easier for people to remember what to do if there are cues in the environment
-
-Goes into working memory through perceptions
-]
----
-.left-column[
-## H7: Flexibility and Efficiency of Use
-
-Accelerators for experts (e.g., gestures, keyboard shortcuts)
-
-Allow users to tailor frequent actions (e.g., macros)
-
-]
-.right-column[
-![:img ,40%](img/heuristic/flexibility.png)
-
-- Typing single keys is typically faster than continually switching the
-hand between the keyboard and the mouse and point to things on the
-screen.
-- Skilled users develop plans of action, which they will want
-to execute frequently, so tailoring can capture these plans in the
-interface.
-]
----
-.left-column[
-## H8: Aesthetic and Minimalist design
-
-Dialogs should not contain irrelevant or rarely needed information
-
-]
-.right-column[
-
-![:img ,80%](img/heuristic/minimalist.png)
-
-- Visual search--eyes must search through more. More (irrelevant info) interferes with Long Term Memory (LTM)
-retrieval of information that is relevant to task.
-- Cluttered displays have the effect of increasing search times for commands or users missing features on the screen (Lavery et al)
-
-_Chartjunk_ (Tufte): "The interior decoration of graphics generates a lot of ink that does not tell
-the viewer anything new."
-
-]
----
-.left-column[
-## H9: Help users recognize, diagnose, and recover from errors
-
-]
-.right-column[
-
-![:img ,40%](img/heuristic/error2.png)
-
-- Error messages in language user will understand
-- Precisely indicate the problem
-- Constructively suggest a solution
-
-]
-
----
-.left-column[
-## H10: Help and Documentation
-
-Easy to search
-
-Focused on the user’s task
-
-List concrete steps to carry out
-
-Always available
-]
-
-.right-column[
-![:img ,40%](img/heuristic/help.png)
-
-Allow search by gist--people do not remember exact system terms
-
-]
-
-???
-If user ever even knew system terms.
-
-
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-
-Why 5 or more people?
-
--4 or 5 are recommended by Nielsen (this is a point of contention. I
-aim for *saturation*).
-- A single person will not be able to find all usability problems
-- Different people find different usability problems
-- Successful evaluators may find both easy and hard problems
-
-
-???
-You can estimate how many you need (see NM book, pp 32-35).
-
-4 or 5 are recommended by Nielsen
-
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-
-How should the Designer "provide a setting"? How should the evaluator evaluate?
-
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-.left-column[
-## What does the evaluator do?]
-.right-column[
-
-Designer: Briefing (HE method, Domain, Scenario)
-
-Evaluator:
-- Two passes through interface (video in our case)
-- Inspect flow
-- Inspect each screen, one at a time against heuristics
-- Fill out a *Usability Action Report* (we'll keep this simple in peer review)
-]
-???
-
-NOT a single-user empirical test that is, do not say “I tried it and
-it didn’t work therefore I’ll search for a heuristic this violates”
-
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-
-.left-column[
-## Usability Action Report
-]
-.right-column[
-UAR rather than “Problem report” because you report good aspects as
-well as problems -- you want to preserve them in the next iteration of
-the system!
-
-- **UAR Identifier** (Type-Number) Problem or Good Aspect
-- *Describe:* Succinct description of the usability aspect
-- *Heuristics:* What heuristics are violated
-- **Evidence:** support material for the aspect
-- **Explanation:** your own interpretation
-- *Severity:* your reasoning about importance
-- **Solution:** if the aspect is a problem, include a possible solution and potential trade-offs
-- **Relationships:** to other usability aspects (if any)
-]
-???
-
-We'll ask you to do the things in italics in peer grading
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-.left-column[
-## Writing a description]
-.right-column[
-Should be *A PROBLEM*, not a solution
-
-Don't be misleading (e.g., “User couldn’t find state in the list” when
-the state wasn’t in the list)
-
-Don't be overly narrow (e.g., “PA not listed” when there is nothing
-special about PA and other states are not listed)
-
-Don't be too broad, not distinctive (e.g., “User can’t find item”)
-]
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-.left-column[
-## Picking a Heuristic]
-.right-column[
-Ok to list more than one
-
-This is subjective. Use your best judgement
-]
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-.left-column[
-## Deciding on a severity]
-.right-column[
-- Make a claim about factors and support it with reasons
-- Consider *Frequency* (e.g., All
-users would probably experience this problem because…)
-- Consider *Impact*  Will it be easy or hard to overcome. NOT is the task the user
-is doing important (put importance of task in explanation and in
-justification of weighting, if relevant).
-- Consider *Persistence* Once the problem is known, is it a one-time problem or
-will the user be continually bothered? NOT low persistence because the
-user abandons goal (that is impact--can’t overcome it.  If can’t
-detect and can’t overcome, problem persists).
-
-]
-???
-Why? Make claim (All users would PROBABLY experience this problem BECAUSE…) and IMMEDIATELY
----
-<div class="mermaid">
-gantt
-	title Typical Heuristic Evaluation Process
-	section Evaluation
-	dateFormat DD
-	Designer Provides Setting (Description of Interface and List of Tasks) :list, 22, 5d
-	5ish evaluators Try tasks and record problems     :evals, after list, 5d
-</div>
-.left-column[
-## Rating Severity
-
-5-point scale
-
-]
-.right-column[
-
-0 - Not a problem at all (or a good feature)
-
-1 - Cosmetic problem only
-
-2 - Minor usability problem (fix with low priority)
-
-3 - Major usability problem (fix with high priority)
-
-4 - Usability catastrophe (imperative to fix before release)
-
-]
-
----
-<div class="mermaid">
-gantt
-	title Heuristic Evaluation Process
-	section Evaluation
-	dateFormat MM-DD
-	Designer Provides Setting (>Description of Interface and List of Tasks) :list, 03-02, 9d
-	Videos distributed  :vids, after list, 1d
-	Tasks--5 evaluators     :evals, after vids, 2d
-	Section Problems
-	E1--Problem1...        :after vids, 2d
-    E1--Problem2...        :after vids, 2d
-    E2--Problem3...        :after vids, 2d
-		...                :after vids, 2d
-	Section Synthesis and Analysis
-    Group like problems :analysis, 03-14, 2d
-	Summarize problems :summarize, after analysis, 2d
-	Write report :after summarize, 1d
-</div>
-
-Group like problems
-- Important thing is whether they have similar description
-- This is for you to decide
-- Similarity may be conceptual (e.g. the same problem may show up in multiple parts of your interface)
-
----
-<div class="mermaid">
-gantt
-	title Heuristic Evaluation Process
-	section Evaluation
-	dateFormat MM-DD
-	Designer Provides Setting (>Description of Interface and List of Tasks) :list, 03-02, 9d
-	Videos distributed  :vids, after list, 1d
-	Tasks--5 evaluators     :evals, after vids, 2d
-	Section Problems
-	E1--Problem1...        :after vids, 2d
-    E1--Problem2...        :after vids, 2d
-    E2--Problem3...        :after vids, 2d
-		...                :after vids, 2d
-	Section Synthesis and Analysis
-    Group like problems :analysis, 03-14, 2d
-	Summarize problems :summarize, after analysis, 2d
-	Write report :after summarize, 1d
-</div>
-
-Summarize problems
-- Average severities
-- List all relevant heuristics
-- List all areas of website affected
-- Also prioritize at this point
-
----
-<div class="mermaid">
-gantt
-	title Heuristic Evaluation Process
-	section Evaluation
-	dateFormat MM-DD
-	Designer Provides Setting (>Description of Interface and List of Tasks) :list, 03-02, 9d
-	Videos distributed  :vids, after list, 1d
-	Tasks--5 evaluators     :evals, after vids, 2d
-	Section Problems
-	E1--Problem1...        :after vids, 2d
-    E1--Problem2...        :after vids, 2d
-    E2--Problem3...        :after vids, 2d
-		...                :after vids, 2d
-	Section Synthesis and Analysis
-    Group like problems :analysis, 03-14, 2d
-	Summarize problems :summarize, after analysis, 2d
-	Write report :after summarize, 1d
-</div>
-
-Write report
-
-We've provided a [template](../../assignments/undo-report)
-
----
-.left-column[
-## Advantages of HE]
-.right-column[
-
-“Discount usability engineering”
-
-Intimidation low
-
-Don’t need to identify tasks, activities
-
-Can identify some fairly obvious fixes
-
-Can expose problems user testing doesn’t expose
-
-Provides a language for justifying usability recommendations
-
-]
----
-.left-column[
-## Disadvantages of HE]
-.right-column[
-Un-validated
-
-Unreliable
-
-Should use usability experts
-
-Problems unconnected with tasks
-
-Heuristics may be hard to apply to new technology
-
-Coordination costs
-]
-
----
-.left-column[
-## Summary]
-.right-column[
-Heuristic Evaluation can be used to evaluate & improve user interfaces
-
-10 heuristics
-
-Heuristic Evaluation process
-
-Individual: Flow & screens
-
-Group: Consensus report, severity
-
-Usability Aspect Reports
-
-Structured way to record good & bad
-]
----
-
-# Hall of Shame?
-
-Cycling back: What would you say in your HE of this interface?
-
-![:youtube Video of funimation problems, 1zDMh3NHDjw]
-
-
----
-# Hall of Shame?
-
-Cycling back: What would you say in your HE of this interface?
-
-.left-column50[
-![:img Funimation web page with a large image and an interface to add items to a queue and remove items from a queue, 100%](img/heuristic/funimation1.png)
-]
-.right-column40[
-![:img Large red remove from queue button, 50%](img/heuristic/funimation2.png)
-![:img Large red add to queue button, 80%](img/heuristic/funimation3.png)
-
-]
diff --git a/slides/wk10/img/final/android.png b/slides/wk10/img/final/android.png
deleted file mode 100644
index c05abc897a6ba254f4bf90cfa088dfb9de0d2569..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/final/android.png and /dev/null differ
diff --git a/slides/wk10/img/final/consistency.png b/slides/wk10/img/final/consistency.png
deleted file mode 100644
index 0ff8ff37943bd763d0afc16950d27425276161fd..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/final/consistency.png and /dev/null differ
diff --git a/slides/wk10/img/final/decisiontree.png b/slides/wk10/img/final/decisiontree.png
deleted file mode 100644
index d70048fd94c67ba4dee4947494266980e412b2d8..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/final/decisiontree.png and /dev/null differ
diff --git a/slides/wk10/img/final/flat-doorknob.png b/slides/wk10/img/final/flat-doorknob.png
deleted file mode 100644
index b7fa0fcc0b4a0daed1e12d9f5fdb49318a4aed07..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/final/flat-doorknob.png and /dev/null differ
diff --git a/slides/wk10/img/final/mental6.png b/slides/wk10/img/final/mental6.png
deleted file mode 100644
index 5baea3ac170bd237ee0c35101160347918f32c04..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/final/mental6.png and /dev/null differ
diff --git a/slides/wk10/img/final/personal-informatics-model.png b/slides/wk10/img/final/personal-informatics-model.png
deleted file mode 100644
index b7ec7714d914b333ceda3cb2146c805e38cd7107..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/final/personal-informatics-model.png and /dev/null differ
diff --git a/slides/wk10/img/final/round-doorknob.png b/slides/wk10/img/final/round-doorknob.png
deleted file mode 100644
index 8413e79008f7f0537894d637cd1810b0b460239e..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/final/round-doorknob.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/consistency.png b/slides/wk10/img/heuristic/consistency.png
deleted file mode 100644
index 0ff8ff37943bd763d0afc16950d27425276161fd..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/consistency.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/control.png b/slides/wk10/img/heuristic/control.png
deleted file mode 100644
index 7f0ffd0ff7430cfeb48ee48dfb8fecb497e97aba..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/control.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/error.png b/slides/wk10/img/heuristic/error.png
deleted file mode 100644
index ad009d6088f7c37219f73da52c210ecb0e76eb0a..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/error.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/error2.png b/slides/wk10/img/heuristic/error2.png
deleted file mode 100644
index 5cdddd5a43b172eaa38e99e774110ef02a171278..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/error2.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/flexibility.png b/slides/wk10/img/heuristic/flexibility.png
deleted file mode 100644
index 0c21d4ffc1261db1092157291bbee76d9437bbdc..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/flexibility.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/funimation1.png b/slides/wk10/img/heuristic/funimation1.png
deleted file mode 100644
index 046f837cf7661e7f3fb1c6d19fe1284570068981..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/funimation1.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/funimation2.png b/slides/wk10/img/heuristic/funimation2.png
deleted file mode 100644
index 3440a441f71940bb3ca4dc03a433fb734c1a6f1a..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/funimation2.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/funimation3.png b/slides/wk10/img/heuristic/funimation3.png
deleted file mode 100644
index 7ace94a18212ae587673e3426735fa04f4c80fde..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/funimation3.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/help.png b/slides/wk10/img/heuristic/help.png
deleted file mode 100644
index 26ee35f713c90875590da8eb098cfc590dc9eaae..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/help.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/mactrash.png b/slides/wk10/img/heuristic/mactrash.png
deleted file mode 100644
index c08482003ca9e3c4bf641b7bf5d6918471ab5759..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/mactrash.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/mailbox.png b/slides/wk10/img/heuristic/mailbox.png
deleted file mode 100644
index 0c75a10406b3976cce65d0262d6833905814305b..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/mailbox.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/match.png b/slides/wk10/img/heuristic/match.png
deleted file mode 100644
index 6b84fb7c1706daca865c35504c624abd62d9308a..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/match.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/minimalist.png b/slides/wk10/img/heuristic/minimalist.png
deleted file mode 100644
index c32b6646c92c7761fdc83b830cb9e095fa2d0f8b..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/minimalist.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/recognition.png b/slides/wk10/img/heuristic/recognition.png
deleted file mode 100644
index d1fb5cd5ddf8b92fe1acd7f9a0b82c9115bd9213..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/recognition.png and /dev/null differ
diff --git a/slides/wk10/img/heuristic/visibility.png b/slides/wk10/img/heuristic/visibility.png
deleted file mode 100644
index 21dae906da003a422d64c43fb8fc1fe538d989d6..0000000000000000000000000000000000000000
Binary files a/slides/wk10/img/heuristic/visibility.png and /dev/null differ
diff --git a/slides/wk10/pui2016-slides-23-usable-privacy-and-security.pptx b/slides/wk10/pui2016-slides-23-usable-privacy-and-security.pptx
deleted file mode 100644
index f3995476ae662f9c8779ae5de169ca642d0bf336..0000000000000000000000000000000000000000
Binary files a/slides/wk10/pui2016-slides-23-usable-privacy-and-security.pptx and /dev/null differ